about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/python-modules
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules')
-rw-r--r--nixpkgs/pkgs/development/python-modules/absl-py/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/accelerate/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/accessible-pygments/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/accupy/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/acquire/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/adafruit-platformdetect/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/adal/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/adext/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/aeppl/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/aesara/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/ago/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/ailment/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioairq/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioairzone-cloud/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioamqp/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioautomower/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioazuredevops/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiobiketrax/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiobotocore/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiocache/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiocoap/default.nix107
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioconsole/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiocontextvars/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiodhcpwatcher/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiodns/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioesphomeapi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiogram/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohttp-isal/default.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohttp-jinja2/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohttp-openmetrics/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohttp-session/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohttp/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiokafka/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiomcache/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiomisc-pytest/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiomisc/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiomqtt/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiomysql/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiorpcx/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiorun/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioshelly/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiosmtpd/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiounifi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/airthings-ble/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/albumentations/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/alembic/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/aliyun-python-sdk-kms/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/allure-behave/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/allure-pytest/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/allure-python-commons-test/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/allure-python-commons/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/android-backup/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/androidtvremote2/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/angr/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansible-compat/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansible-kernel/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansible-runner/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansiwrap/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/anthropic/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/anyascii/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/anywidget/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/apipkg/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/app-model/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/apprise/default.nix62
-rw-r--r--nixpkgs/pkgs/development/python-modules/apscheduler/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/archinfo/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/argcomplete/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/argilla/default.nix278
-rw-r--r--nixpkgs/pkgs/development/python-modules/argostranslate/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/art/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/asana/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/asciitree/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/asdf/default.nix65
-rw-r--r--nixpkgs/pkgs/development/python-modules/ase/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/aspell-python/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/astropy-healpix/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/astroquery/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/asyncio-dgram/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/asyncssh/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/asyncwhois/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/atomman/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/atpublic/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/atsim-potentials/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/attacut/default.nix73
-rw-r--r--nixpkgs/pkgs/development/python-modules/aubio/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/audiotools/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/augmax/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/autobahn/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/av/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/avro/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/avwx-engine/default.nix84
-rw-r--r--nixpkgs/pkgs/development/python-modules/awkward-cpp/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/awkward/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/aws-lambda-builders/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ax/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-cosmos/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-identity/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-cdn/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservices/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/b2sdk/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/bash-kernel/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/bash-kernel/test.ipynb26
-rw-r--r--nixpkgs/pkgs/development/python-modules/bayespy/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/bc-detect-secrets/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/bdffont/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/beancount-black/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/beancount-parser/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/beanhub-cli/default.nix78
-rw-r--r--nixpkgs/pkgs/development/python-modules/beanhub-extract/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/beanhub-forms/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/beanhub-import/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/bellows/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/betterproto/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/bids-validator/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/bimmer-connected/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/binance-connector/default.nix61
-rw-r--r--nixpkgs/pkgs/development/python-modules/biom-format/default.nix71
-rw-r--r--nixpkgs/pkgs/development/python-modules/biopython/close_parser_on_time.patch18
-rw-r--r--nixpkgs/pkgs/development/python-modules/biopython/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/bitbox02/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/black/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/blackjax/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/bleak/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/bloodyad/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/bluetooth-adapters/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/bluetooth-auto-recovery/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/bokeh/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch11
-rw-r--r--nixpkgs/pkgs/development/python-modules/boto3-stubs/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/botocore/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/botorch/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/boxx/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/breathe/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/bsddb3/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/bthome-ble/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/btrfs/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/buienradar/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/build/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cadquery/default.nix100
-rw-r--r--nixpkgs/pkgs/development/python-modules/cartopy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/casa-formats-io/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/cbor2/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/celery/default.nix65
-rw-r--r--nixpkgs/pkgs/development/python-modules/cepa/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/cgen/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/chai/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/character-encoding-utils/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/chart-studio/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cheroot/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/chromadb/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/clarifai/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/claripy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cle/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/click-didyoumean/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/click-spinner/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/cliff/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cloudflare/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cnvkit/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/coffea/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/cohere/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/comicon/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/command-runner/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/conda/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/contexttimer/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/contourpy/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/controku/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/coordinates/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/cornice/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/courlan/default.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/coverage/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/craft-application/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cramjam/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/croniter/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cryptacular/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/cryptodatahub/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/cryptoparser/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/css-inline/Cargo.lock683
-rw-r--r--nixpkgs/pkgs/development/python-modules/css-inline/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/curl-cffi/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/curl-cffi/use-system-libs.patch23
-rw-r--r--nixpkgs/pkgs/development/python-modules/customtkinter/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/cvelib/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/cvxpy/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/cyclonedx-python-lib/default.nix68
-rw-r--r--nixpkgs/pkgs/development/python-modules/cypari2/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/cypherpunkpay/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/cysignals/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/cython/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/dash/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask-awkward/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask-expr/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask-glm/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask-jobqueue/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask-ml/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask-yarn/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/databricks-connect/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dataclasses-json/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/dataprep-ml/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/datasets/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/datashader/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/datauri/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/dbt-bigquery/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dbt-core/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dbus-fast/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/dbus-python/default.nix94
-rw-r--r--nixpkgs/pkgs/development/python-modules/dbus-python/fix-includedir.patch8
-rw-r--r--nixpkgs/pkgs/development/python-modules/dbutils/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/dcmstack/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/deebot-client/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/desktop-notifier/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/devito/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/diffusers/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/dirigera/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-archive/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-btrfs/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-cim/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-clfs/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-cobaltstrike/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-cstruct/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-esedb/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-etl/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-eventlog/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-evidence/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-executable/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-extfs/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-fat/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-ffs/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-hypervisor/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-jffs/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-ntfs/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-ole/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-regf/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-shellitem/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-sql/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-squashfs/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-target/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-thumbcache/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-util/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-vmfs/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-volume/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect-xfs/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/dissect/default.nix84
-rw-r--r--nixpkgs/pkgs/development/python-modules/distributed/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/dj-rest-auth/default.nix67
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-allauth/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-auditlog/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-auth-ldap/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-bootstrap3/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-bootstrap4/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-bootstrap5/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-configurations/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-extensions/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-hierarkey/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-import-export/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-ipware/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-model-utils/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-mysql/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-otp/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-statici18n/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/django/4.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/django/5.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/dkimpy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dm-control/default.nix98
-rw-r--r--nixpkgs/pkgs/development/python-modules/dnfile/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/docformatter/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/docplex/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/docstr-coverage/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/docutils/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/dogpile-cache/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dogtail/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/domeneshop/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/dramatiq/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/drawsvg/default.nix61
-rw-r--r--nixpkgs/pkgs/development/python-modules/drf-spectacular/default.nix74
-rw-r--r--nixpkgs/pkgs/development/python-modules/dronecan/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/dropbox/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/dtlssocket/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/duckdb/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/duckduckgo-search/default.nix96
-rw-r--r--nixpkgs/pkgs/development/python-modules/duecredit/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/dugong/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/dulwich/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/dvclive/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dwdwfsapi/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/dynalite-panel/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/ecdsa/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/einops/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/elastic-transport/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/elasticsearch/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/elasticsearch8/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/emv/default.nix61
-rw-r--r--nixpkgs/pkgs/development/python-modules/env-canada/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/equinox/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/exchangelib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/execnb/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/execnet/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/faker/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/fakeredis/default.nix68
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastai/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastapi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastbencode/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastcore/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/faster-fifo/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/faster-whisper/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/ffmpy/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/file-read-backwards/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/filedate/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/filelock/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-appbuilder/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/flax/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/flexmock/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/flow-record/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/fontbakery/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/fontbakery/tests.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/fontmake/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/fonttools/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/foobot-async/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/fpdf2/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/fpylll/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/frozendict/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/functools32/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/fuzzytm/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/fyta-cli/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/gamble/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/gcal-sync/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/gcovr/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/gdown/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/gemfileparser/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/gensim/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/geventhttpclient/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/gflanguages/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/gguf/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/gipc/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/glean-parser/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/glob2/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/globre/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/globus-sdk/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/glymur/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/glymur/set-lib-paths.patch16
-rw-r--r--nixpkgs/pkgs/development/python-modules/glyphsets/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/glyphslib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/gmpy/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/gmpy2/default.nix78
-rw-r--r--nixpkgs/pkgs/development/python-modules/goodwe/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-ai-generativelanguage/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-auth/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-storage/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-bigquery/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-dlp/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-iam/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-kms/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-netapp/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-generativeai/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/gotailwind/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/govee-local-api/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/gpapi/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/gpaw/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/gradio/client.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/gradio/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/gremlinpython/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/griffe/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/grpcio-channelz/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/grpcio-status/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/grpcio-testing/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/grpcio-tools/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/grpcio/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/gst-python/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/gurobipy/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/h5py/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/h5py/mpi4py-requirement.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/habluetooth/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/hass-nabucasa/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/hatchling/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/hawkauthlib/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/hcs-utils/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/heatzypy/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/heudiconv/default.nix62
-rw-r--r--nixpkgs/pkgs/development/python-modules/hickle/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/hid/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/hikari-lightbulb/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/hikari/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/hikvision/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/hiyapyco/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/hjson/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/holidays/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/homematicip/default.nix113
-rw-r--r--nixpkgs/pkgs/development/python-modules/hstspreload/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/html-text/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/html2text/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/htseq/default.nix72
-rw-r--r--nixpkgs/pkgs/development/python-modules/http-parser/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/httpcore/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/httpserver/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/httpx-ws/default.nix68
-rw-r--r--nixpkgs/pkgs/development/python-modules/humanfriendly/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/hurry-filesize/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/hvac/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/hypercorn/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/hypothesis/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/iapws/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ibis-framework/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ical/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/icoextract/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/idna/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/ifcopenshell/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/igraph/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ihm/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/imgtool/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/importlib-metadata/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/importlib-resources/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/indexed-zstd/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/inflect/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/influxdb/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/influxdb3-python/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/inform/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/intbitset/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/internetarchive/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipykernel/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipympl/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipynbname/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipython/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipyvue/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/isal/default.nix67
-rw-r--r--nixpkgs/pkgs/development/python-modules/islpy/default.nix74
-rw-r--r--nixpkgs/pkgs/development/python-modules/isoweek/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/iterable-io/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/itsdangerous/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaraco-collections/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaraco-functools/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/jax/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaxlib/bin.nix67
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaxlib/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaxopt/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/jenkins-job-builder/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jinja2/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/jiwer/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/joblib/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/jpylyzer/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/json-logging/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/json-schema-for-humans/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/json-stream-rs-tokenizer/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonpickle/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter-collaboration/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter-core/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyterlab-git/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyterlab/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupytext/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/justext/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/kaggle/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/kasa-crypt/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/kazoo/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/keras/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/keyrings-alt/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/kombu/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/kornia-rs/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/lacuscore/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/langchain-community/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/langchain-core/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/langchain-text-splitters/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/langchain/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/langsmith/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/language-data/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/latex2mathml/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/ldappool/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/ledgerblue/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/lib4sbom/default.nix61
-rw-r--r--nixpkgs/pkgs/development/python-modules/libarcus/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/libgravatar/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/libretranslate/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/librosa/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/lightning-utilities/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/limnoria/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/line-profiler/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/linknlink/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/litellm/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-agent-openai/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-core/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-llms-openai/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-readers-database/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-readers-file/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-vector-stores-chroma/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-parse/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/llm/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/lmfit/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/loadcredential/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/localzone/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/lockfile/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/logilab/common.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/logutils/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/loopy/default.nix61
-rw-r--r--nixpkgs/pkgs/development/python-modules/looseversion/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/losant-rest/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/lsassy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/m2crypto/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/maestral/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/magic-wormhole-mailbox-server/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/magic-wormhole-transit-relay/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/magic-wormhole/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/magika/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mahotas/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/mako/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/malduck/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/mandown/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/manim-slides/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/marimo/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/markdown/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/marshmallow-dataclass/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/marshmallow-enum/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/mat2/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/matlink-gpapi/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/matplotlib-inline/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/matplotlib/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/maxminddb/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mayavi/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/mdformat-mkdocs/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mdtraj/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/mecab-python3/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/mechanize/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/meilisearch/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/memestra/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/memory-allocator/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/meraki/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/meson-python/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/miasm/0001-setup.py-use-valid-semver.patch26
-rw-r--r--nixpkgs/pkgs/development/python-modules/miasm/0002-core-remove-IDAPython-dependency.patch65
-rw-r--r--nixpkgs/pkgs/development/python-modules/miasm/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/minari/default.nix88
-rw-r--r--nixpkgs/pkgs/development/python-modules/mindsdb-evaluator/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/minidb/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/mizani/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/mkdocs-git-authors-plugin/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mkdocs-git-revision-date-localized-plugin/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mkdocs-rss-plugin/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mkdocs-swagger-ui-tag/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mkdocstrings-python/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mkdocstrings/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mlflow/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mock-open/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/mocket/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/monty/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mortgage/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/moviepy/default.nix106
-rw-r--r--nixpkgs/pkgs/development/python-modules/mpegdash/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/mplhep/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mpmath/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/msgraph-core/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/msgraph-sdk/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mujoco/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mypy-protobuf/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/myst-docutils/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/myst-parser/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/nanobind/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/nanomsg-python/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/nanotime/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/napari-console/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/napari/default.nix94
-rw-r--r--nixpkgs/pkgs/development/python-modules/nats-python/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/naturalsort/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbconvert/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbdev/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbmake/default.nix74
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbsphinx/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/neo/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/netcdf4/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/nethsm/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/nettigo-air-monitor/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/netutils/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/networkx/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/niaaml/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/niapy/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/nidaqmx/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/nilearn/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/nocasedict/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/nocaselist/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/noiseprotocol/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/normality/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/nose-xunitmp/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/notebook/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/numexpr/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/numpy/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/numpyro/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/objax/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/objax/replace-deprecated-device_buffers.patch14
-rw-r--r--nixpkgs/pkgs/development/python-modules/oci/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/oelint-parser/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/oemthermostat/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/okta/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ollama/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ome-zarr/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/open-clip-torch/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/openai-triton/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/openai-whisper/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/openai/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/opencensus-ext-azure/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/openhomedevice/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/openrazer/daemon.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/openusd/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/openwrt-ubus-rpc/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/opower/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/optimum/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/optree/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/opuslib/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/oracledb/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/orange-canvas-core/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/orange-widget-base/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/orange3/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/orjson/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/osc-sdk-python/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/outcome/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/owslib/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/paddle2onnx/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pandas-datareader/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/panel/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/parametrize-from-file/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/parsedmarc/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/parsel/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/parso/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/paste/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/path/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pathlib/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pathlib2/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/paypalhttp/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/pcffont/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/pdm-backend/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/peaqevcore/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/peco/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/peewee/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/pefile/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pettingzoo/default.nix135
-rw-r--r--nixpkgs/pkgs/development/python-modules/pexpect/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/pg8000/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/pgspecial/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/phe/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/phik/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/phonenumbers/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/phonopy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/phunspell/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/pickleshare/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/piep/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pikepdf/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pikepdf/paths.patch16
-rw-r--r--nixpkgs/pkgs/development/python-modules/pillow/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/pinecone-client/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/pipdeptree/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/pipenv-poetry-migrate/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pipetools/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pixel-font-builder/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/plaid-python/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/plantuml-markdown/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/playwright/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/playwrightcapture/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/plexapi/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/plotly/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/plotnine/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/plugwise/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/portion/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/pplpy/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/pretty-errors/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/primecountpy/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/private-gpt/default.nix119
-rw-r--r--nixpkgs/pkgs/development/python-modules/prometrix/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/proxy-py/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/psycopg2cffi/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/publicsuffixlist/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pubnub/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pure-cdb/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/puremagic/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pvlib/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/pwkit/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/pxml/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/py-libzfs/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/py-multihash/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/py-synologydsm-api/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/py-zabbix/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/py65/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyTelegramBotAPI/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyais/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyannote-core/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyannote-database/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyannote-pipeline/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyasn1/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyathena/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybids/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybrowserid/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycaption/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycognito/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycomm3/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycparser/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycrdt-websocket/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycrdt/Cargo.lock141
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycrdt/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyct/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycups/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydeck/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyduotecno/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyelftools/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyenphase/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyerfa/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyexploitdb/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyezviz/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyfaidx/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyfakefs/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyftpdlib/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyfxa/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygame-gui/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygame-sdl2/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyglet/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygobject/3.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygount/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygraphviz/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygsl/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyinsteon/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyipp/default.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyjet/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyjson5/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykalman/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykdtree/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykrakenapi/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylint/default.nix121
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylutron/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymarshal/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymatgen/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymc/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymdown-extensions/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymilter/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymongo/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymysql/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynetbox/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynetdicom/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynmea2/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynmeagps/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynvml/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynws/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyomo/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyopenssl/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypass/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyphen/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypng/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypng/setup-cfg-pngsuite.patch12
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyproject-metadata/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyqt-builder/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyqtgraph/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyrad/default.nix66
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyrainbird/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyramid-beaker/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyrisco/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyscard/default.nix70
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyscss/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysendfile/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyserial/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysigma-backend-insightidr/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysigma-backend-opensearch/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysimplegui/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyslurm/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysqlcipher3/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysqlitecipher/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pystatgrab/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pystemd/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytado/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytapo/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-ansible/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-fixture-config/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-markdown-docs/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-mock/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-mpl/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-mypy/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-order/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-playwright/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-postgresql/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-server-fixtures/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-shutil/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-virtualenv/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-creole/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-dbusmock/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-ecobee-api/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-glanceclient/default.nix73
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-homeassistant-analytics/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-hosts/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-ironicclient/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-jose/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-jsonrpc-server/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-keycloak/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-ldap/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-manilaclient/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-matter-server/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-musicpd/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-roborock/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-tado/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-telegram-bot/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python3-gnutls/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytools/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytorch-lightning/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytransportnswv2/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytrydan/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyvex/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyvista/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywavelets/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywbem/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywlroots/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyzufall/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/qcs-api-client/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/qcs-sdk-python/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/qdldl/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/qdrant-client/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/qrcode/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/qreactor/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/qtconsole/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/qtile/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/quantile-forest/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/queuelib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/quil/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/raincloudy/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/rarfile/default.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/readme-renderer/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/redis-om/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/redis/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/referencing/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/relatorio/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/reolink-aio/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/reportengine/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/reportlab-qrcode/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/reportlab/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/reproject/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests-mock/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/requirements-detector/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/resend/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/rich-rst/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/riscv-config/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/rlcard/default.nix77
-rw-r--r--nixpkgs/pkgs/development/python-modules/rnginline/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/rns/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/roadlib/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/roadtx/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/rokuecp/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/rotary-embedding-torch/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpy2/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/rq/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/rst2pdf/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/rtsp-to-webrtc/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/rules/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/s3fs/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/s3transfer/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sacn/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/safety/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/sagemaker/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/samplerate/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/sarif-tools/default.nix69
-rw-r--r--nixpkgs/pkgs/development/python-modules/scalene/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/schemdraw/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/schwifty/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-bio/default.nix85
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-build/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-learn/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-posthocs/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-rf/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/scipy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/scooby/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/scrapy/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/sdkmanager/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/setuptools-gettext/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/setuptools/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/setuptools/setuptools-distutils-C++.patch32
-rw-r--r--nixpkgs/pkgs/development/python-modules/shap/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/shimmy/default.nix92
-rw-r--r--nixpkgs/pkgs/development/python-modules/shiv/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sigstore-protobuf-specs/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sigtools/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/simple-term-menu/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/skein/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/skorch/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/skytemple-ssb-debugger/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/slack-bolt/default.nix83
-rw-r--r--nixpkgs/pkgs/development/python-modules/slack-sdk/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/slackclient/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/slicedimage/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/slicer/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/smart-meter-texas/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/smart-open/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/smtpdfix/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/snitun/default.nix100
-rw-r--r--nixpkgs/pkgs/development/python-modules/snowflake-sqlalchemy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/soco/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/softlayer/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/solax/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/speechrecognition/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/spglib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx-autoapi/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx-autobuild/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx-autodoc-typehints/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx-intl/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx-jupyterbook-latex/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx-pytest/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx-rtd-theme/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib-jquery/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/spsdk/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlalchemy-utils/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlalchemy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlbag/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlite-anyio/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlmap/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlparse/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlsoup/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/srt/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/stack-data/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/starlette-wtf/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/stashy/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/statsmodels/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/stdlibs/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/stem/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/stickytape/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/stim/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/stix2-patterns/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/stone/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/strct/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/streamlit/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/streamz/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/stripe/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/succulent/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/summarytools/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/sunpy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/superqt/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/sympy/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/tablib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/tabula-py/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensordict/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow/bin.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow/binary-hashes.nix116
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow/default.nix19
-rwxr-xr-xnixpkgs/pkgs/development/python-modules/tensorflow/prefetcher.sh33
-rw-r--r--nixpkgs/pkgs/development/python-modules/tesla-fleet-api/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/testcontainers/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/textdistance/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/theano/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/thriftpy2/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/tidalapi/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/tifffile/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/timm/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/tinytuya/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/torch/bin.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/torch/binary-hashes.nix107
-rw-r--r--nixpkgs/pkgs/development/python-modules/torch/default.nix14
-rwxr-xr-xnixpkgs/pkgs/development/python-modules/torch/prefetch.sh7
-rw-r--r--nixpkgs/pkgs/development/python-modules/torchaudio/bin.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/torchaudio/binary-hashes.nix107
-rw-r--r--nixpkgs/pkgs/development/python-modules/torchaudio/default.nix58
-rwxr-xr-xnixpkgs/pkgs/development/python-modules/torchaudio/prefetch.sh7
-rw-r--r--nixpkgs/pkgs/development/python-modules/torchgpipe/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/torchmetrics/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/torchrl/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/torchsnapshot/default.nix71
-rw-r--r--nixpkgs/pkgs/development/python-modules/torchvision/bin.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/torchvision/binary-hashes.nix103
-rw-r--r--nixpkgs/pkgs/development/python-modules/torchvision/default.nix4
-rwxr-xr-xnixpkgs/pkgs/development/python-modules/torchvision/prefetch.sh11
-rw-r--r--nixpkgs/pkgs/development/python-modules/total-connect-client/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/tpm2-pytss/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/trafilatura/default.nix72
-rw-r--r--nixpkgs/pkgs/development/python-modules/traitlets/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/transformers/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/transitions/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/trio-asyncio/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/trio-websocket/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/trio/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/trove-classifiers/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/truncnorm/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/trytond/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/tubes/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/type-infer/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/typer/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-beautifulsoup4/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-pillow/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-protobuf/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-pyopenssl/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-python-dateutil/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-pytz/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-pyyaml/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-s3transfer/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-setuptools/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-toml/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-ujson/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/typing-extensions/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ucsmsdk/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ufo2ft/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/unittest-xml-reporting/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/unstructured/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/uproot/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/uptime/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/uqbar/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/uvicorn/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/uxsim/add-qt-plugin-path-to-env.patch24
-rw-r--r--nixpkgs/pkgs/development/python-modules/uxsim/default.nix69
-rw-r--r--nixpkgs/pkgs/development/python-modules/validator-collection/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/validators/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/versioningit/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/virt-firmware/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/virtualenv-clone/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/virtualenv/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/waybackpy/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/wcmatch/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/weasel/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/weaviate-client/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/webauthn/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/webdataset/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/webexteamssdk/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/werkzeug/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/wheel-inspect/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/wheel/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/wheezy-template/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/willow/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/winacl/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/wktutils/default.nix66
-rw-r--r--nixpkgs/pkgs/development/python-modules/wled/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/woob/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/wsgidav/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/wsgitools/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/wurlitzer/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/wxpython/4.2.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/xarray-dataclasses/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/xcffib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/xdot/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/xiaomi-ble/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/xmldiff/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/xmlsec/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/xmltodict/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/yalexs/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/yamale/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/yapf/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/ydiff/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/yolink-api/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/youless-api/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/yq/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ytmusicapi/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/zarr/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/zdaemon/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/zephyr-python-api/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/zha-quirks/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/zha/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/ziafont/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/ziamath/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/zigpy/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/zipp/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/zlib-ng/default.nix4
1055 files changed, 13291 insertions, 8205 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/absl-py/default.nix b/nixpkgs/pkgs/development/python-modules/absl-py/default.nix
index eb412275a882..99271645f19a 100644
--- a/nixpkgs/pkgs/development/python-modules/absl-py/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/absl-py/default.nix
@@ -1,10 +1,8 @@
 { buildPythonPackage
 , lib
-, pythonOlder
 , fetchPypi
 , setuptools
 , six
-, enum34
 }:
 
 buildPythonPackage rec {
@@ -23,8 +21,6 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     six
-  ] ++ lib.optionals (pythonOlder "3.4") [
-    enum34
   ];
 
   # checks use bazel; should be revisited
diff --git a/nixpkgs/pkgs/development/python-modules/accelerate/default.nix b/nixpkgs/pkgs/development/python-modules/accelerate/default.nix
index eecbd37a9063..b32cadab4b2d 100644
--- a/nixpkgs/pkgs/development/python-modules/accelerate/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/accelerate/default.nix
@@ -2,7 +2,9 @@
 , lib
 , buildPythonPackage
 , fetchFromGitHub
+, pythonAtLeast
 , pythonOlder
+, llvmPackages
 , pytest7CheckHook
 , setuptools
 , numpy
@@ -20,21 +22,25 @@
 
 buildPythonPackage rec {
   pname = "accelerate";
-  version = "0.27.0";
+  version = "0.30.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "huggingface";
-    repo = pname;
+    repo = "accelerate";
     rev = "refs/tags/v${version}";
-    hash = "sha256-7rnI8UXyAql8fLMKoSRrWzVw5CnyYVE2o6dJOzSgWxw=";
+    hash = "sha256-E20pI5BrcTrMYrhriuOUl5/liSaQQy6eqRyCoauwb9Q=";
   };
 
-  nativeBuildInputs = [ setuptools ];
+  buildInputs = [
+    llvmPackages.openmp
+  ];
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     packaging
     psutil
@@ -71,11 +77,20 @@ buildPythonPackage rec {
     "test_remote_code"
     "test_transformers_model"
 
+    # nondeterministic, tests GC behaviour by thresholding global ram usage
+    "test_free_memory_dereferences_prepared_components"
+
     # 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_send_to_device_compiles"
   ] ++ lib.optionals (stdenv.isLinux && stdenv.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"
@@ -96,6 +111,8 @@ buildPythonPackage rec {
     "accelerate"
   ];
 
+  __darwinAllowLocalNetworking = true;
+
   meta = with lib; {
     homepage = "https://huggingface.co/docs/accelerate";
     description = "A simple way to train and use PyTorch models with multi-GPU, TPU, mixed-precision";
diff --git a/nixpkgs/pkgs/development/python-modules/accessible-pygments/default.nix b/nixpkgs/pkgs/development/python-modules/accessible-pygments/default.nix
index 9c516a5f6e85..2686ff12ecf0 100644
--- a/nixpkgs/pkgs/development/python-modules/accessible-pygments/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/accessible-pygments/default.nix
@@ -2,13 +2,14 @@
 , buildPythonPackage
 , fetchPypi
 , pythonOlder
+, setuptools
 , pygments
 }:
 
 buildPythonPackage rec {
   pname = "accessible-pygments";
   version = "0.0.4";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -17,7 +18,11 @@ buildPythonPackage rec {
     hash = "sha256-57V6mxWVjpYBx+nrB6RAyBMoNUWiCXPyV0pfRT0OlT4=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     pygments
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/accupy/default.nix b/nixpkgs/pkgs/development/python-modules/accupy/default.nix
index 6c2906fcb7ee..ee8e3c80a945 100644
--- a/nixpkgs/pkgs/development/python-modules/accupy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/accupy/default.nix
@@ -3,6 +3,7 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pythonOlder
+, setuptools
 , mpmath
 , numpy
 , pybind11
@@ -18,17 +19,19 @@
 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
   ];
 
@@ -36,7 +39,7 @@ buildPythonPackage rec {
     eigen
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     mpmath
     numpy
     pyfma
@@ -51,7 +54,7 @@ buildPythonPackage rec {
 
   postConfigure = ''
    substituteInPlace setup.py \
-     --replace "/usr/include/eigen3/" "${eigen}/include/eigen3/"
+     --replace-fail "/usr/include/eigen3/" "${eigen}/include/eigen3/"
   '';
 
   preBuild = ''
@@ -66,10 +69,12 @@ buildPythonPackage rec {
   # 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" ];
+
   pythonImportsCheck = [ "accupy" ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/acquire/default.nix b/nixpkgs/pkgs/development/python-modules/acquire/default.nix
index 555a60412bf4..d03aa8456bec 100644
--- a/nixpkgs/pkgs/development/python-modules/acquire/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/acquire/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "acquire";
-  version = "3.13";
+  version = "3.14";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -26,15 +26,15 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "acquire";
     rev = "refs/tags/${version}";
-    hash = "sha256-Z85bHM3MtS2MLX9BaKi8VqA13QjO9KdrgqhuyBzjILQ=";
+    hash = "sha256-QW5+npgjrIzyI2hztFovA5s6TMzgCCEiZx9aZREmYII=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     defusedxml
     dissect-cstruct
     dissect-target
diff --git a/nixpkgs/pkgs/development/python-modules/adafruit-platformdetect/default.nix b/nixpkgs/pkgs/development/python-modules/adafruit-platformdetect/default.nix
index bee4d68d5d73..3e220a23092f 100644
--- a/nixpkgs/pkgs/development/python-modules/adafruit-platformdetect/default.nix
+++ b/nixpkgs/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.63.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    pname = "Adafruit-PlatformDetect";
+    pname = "adafruit_platformdetect";
     inherit version;
-    hash = "sha256-L2CbqWqyOo4mq+KsO8FYAyHClRKFXMLWWtfYEg0SD34=";
+    hash = "sha256-bntcP/P0eoQsjIQQcJLtsXsPcSylKVNUp+f/RC/U5m4=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/adal/default.nix b/nixpkgs/pkgs/development/python-modules/adal/default.nix
index cbce5d2af148..926f1696dfa8 100644
--- a/nixpkgs/pkgs/development/python-modules/adal/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/adal/default.nix
@@ -6,12 +6,13 @@
 , pytestCheckHook
 , python-dateutil
 , requests
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "adal";
   version = "1.2.7";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "AzureAD";
@@ -24,7 +25,11 @@ buildPythonPackage rec {
     sed -i '/cryptography/d' setup.py
   '';
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     pyjwt
     python-dateutil
     requests
diff --git a/nixpkgs/pkgs/development/python-modules/adext/default.nix b/nixpkgs/pkgs/development/python-modules/adext/default.nix
index c5a05d19bee8..8a7345613de7 100644
--- a/nixpkgs/pkgs/development/python-modules/adext/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/aeppl/default.nix b/nixpkgs/pkgs/development/python-modules/aeppl/default.nix
index 1633be12bb97..514e585d6033 100644
--- a/nixpkgs/pkgs/development/python-modules/aeppl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aeppl/default.nix
@@ -1,29 +1,34 @@
 { lib
-, aesara
 , buildPythonPackage
+, pythonOlder
 , fetchFromGitHub
-, numdifftools
+, setuptools
+, aesara
 , numpy
-, pytestCheckHook
-, pythonOlder
 , 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
@@ -47,6 +52,14 @@ buildPythonPackage rec {
     "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/nixpkgs/pkgs/development/python-modules/aesara/default.nix b/nixpkgs/pkgs/development/python-modules/aesara/default.nix
index 589799c1b848..edf3f989ecbc 100644
--- a/nixpkgs/pkgs/development/python-modules/aesara/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aesara/default.nix
@@ -16,6 +16,7 @@
 , numba-scipy
 , numpy
 , pytestCheckHook
+, pythonAtLeast
 , pythonOlder
 , scipy
 , typing-extensions
@@ -24,9 +25,10 @@
 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 +37,13 @@ buildPythonPackage rec {
     hash = "sha256-aO0+O7Ts9phsV4ghunNolxfAruGBbC+tHjVkmFedcCI=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cython
     hatch-vcs
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cons
     etuples
     filelock
@@ -62,7 +64,8 @@ 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 = ''
@@ -81,12 +84,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; {
diff --git a/nixpkgs/pkgs/development/python-modules/ago/default.nix b/nixpkgs/pkgs/development/python-modules/ago/default.nix
index ad095c441db2..59aaf184a6fc 100644
--- a/nixpkgs/pkgs/development/python-modules/ago/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ago/default.nix
@@ -1,11 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-
-, pythonOlder
-
 , pytestCheckHook
-
 , setuptools
 }:
 
@@ -14,8 +10,6 @@ buildPythonPackage rec {
   version = "0.0.95";
   pyproject = true;
 
-  disabled = pythonOlder "3.3";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-0gEPXqw99UTsSOwRYQLgaFkaNFsaWA8ylz24pQX8p0Q=";
diff --git a/nixpkgs/pkgs/development/python-modules/ailment/default.nix b/nixpkgs/pkgs/development/python-modules/ailment/default.nix
index 5b496bf9c45d..c64eece601c5 100644
--- a/nixpkgs/pkgs/development/python-modules/ailment/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ailment/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "ailment";
-  version = "9.2.101";
+  version = "9.2.102";
   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-xHxWP16XbVcsT+UIyouqyhbnxPBNx7oH1unBhJU44fI=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/aioairq/default.nix b/nixpkgs/pkgs/development/python-modules/aioairq/default.nix
index 5be97a3d9c9d..274b25202a3a 100644
--- a/nixpkgs/pkgs/development/python-modules/aioairq/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/aioairzone-cloud/default.nix b/nixpkgs/pkgs/development/python-modules/aioairzone-cloud/default.nix
index c6c6e11e293f..63815d39e47a 100644
--- a/nixpkgs/pkgs/development/python-modules/aioairzone-cloud/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioairzone-cloud/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "aioairzone-cloud";
-  version = "0.4.7";
+  version = "0.5.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "Noltari";
     repo = "aioairzone-cloud";
     rev = "refs/tags/${version}";
-    hash = "sha256-DIWRYGDdK/wq1TrPSo9I1oZv5jX4rY4z+u7CTwJtyts=";
+    hash = "sha256-L5Gb+V0W+9duGV6lRc01jrAfh4U+MS77Y238EeXe0TU=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/aioamqp/default.nix b/nixpkgs/pkgs/development/python-modules/aioamqp/default.nix
index 8bdc72a019ed..a23d248bbd41 100644
--- a/nixpkgs/pkgs/development/python-modules/aioamqp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioamqp/default.nix
@@ -3,23 +3,28 @@
 , 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 = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     pamqp
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/aioautomower/default.nix b/nixpkgs/pkgs/development/python-modules/aioautomower/default.nix
index 99d8175b62ed..9cb79bf9d2fa 100644
--- a/nixpkgs/pkgs/development/python-modules/aioautomower/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioautomower/default.nix
@@ -1,21 +1,21 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, freezegun
-, mashumaro
-, poetry-core
-, pyjwt
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, syrupy
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  freezegun,
+  mashumaro,
+  poetry-core,
+  pyjwt,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  syrupy,
 }:
 
 buildPythonPackage rec {
   pname = "aioautomower";
-  version = "2024.4.0";
+  version = "2024.4.4";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -24,21 +24,19 @@ buildPythonPackage rec {
     owner = "Thomas55555";
     repo = "aioautomower";
     rev = "refs/tags/${version}";
-    hash = "sha256-W6aZdvg+EZKv0pmIaPOBaJaWipq3AENTVAVon/lFuI4=";
+    hash = "sha256-/mwKomgY+yifN27bpCK9FjhbZRdllr471Ku+Kn2rUPM=";
   };
 
   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
     mashumaro
     pyjwt
@@ -51,13 +49,9 @@ buildPythonPackage rec {
     syrupy
   ];
 
-  pythonImportsCheck = [
-    "aioautomower"
-  ];
+  pythonImportsCheck = [ "aioautomower" ];
 
-  pytestFlagsArray = [
-    "--snapshot-update"
-  ];
+  pytestFlagsArray = [ "--snapshot-update" ];
 
   disabledTests = [
     # File is missing
diff --git a/nixpkgs/pkgs/development/python-modules/aioazuredevops/default.nix b/nixpkgs/pkgs/development/python-modules/aioazuredevops/default.nix
index 377c96798629..aaab9a1a4cc5 100644
--- a/nixpkgs/pkgs/development/python-modules/aioazuredevops/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioazuredevops/default.nix
@@ -1,30 +1,56 @@
 { lib
 , buildPythonPackage
-, isPy27
-, fetchPypi
+, pythonOlder
+, fetchFromGitHub
+
+# build-system
+, setuptools
+
+# dependencies
 , aiohttp
-, click
+, incremental
+
+# tests
+, aioresponses
+, pytest-aiohttp
+, pytest-asyncio
+, pytest-socket
+, pytestCheckHook
+, syrupy
 }:
 
 buildPythonPackage rec {
   pname = "aioazuredevops";
-  version = "1.4.3";
-  format = "setuptools";
+  version = "2.0.0";
+  pyproject = true;
 
-  disabled = isPy27;
+  disabled = pythonOlder "3.11";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-vNTvSQYjjptdPsHz0zM9paq3iodZrhcEralPm6YRZJE=";
+  src = fetchFromGitHub {
+    owner = "timmo001";
+    repo = "aioazuredevops";
+    rev = "refs/tags/${version}";
+    hash = "sha256-QEIVAcBoTvuOeLN2kfDa3uYfrUm5Qu1TLp9C0uU+mW4=";
   };
 
-  propagatedBuildInputs = [
+  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"
@@ -33,6 +59,7 @@ buildPythonPackage rec {
   ];
 
   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";
diff --git a/nixpkgs/pkgs/development/python-modules/aiobiketrax/default.nix b/nixpkgs/pkgs/development/python-modules/aiobiketrax/default.nix
index 93333448ad11..9d6d7ab52114 100644
--- a/nixpkgs/pkgs/development/python-modules/aiobiketrax/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiobiketrax/default.nix
@@ -14,34 +14,37 @@
 
 buildPythonPackage rec {
   pname = "aiobiketrax";
-  version = "1.1.2";
-  format = "pyproject";
+  version = "1.3.0";
+  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-6hSSPanagYKZxoyU8mp/1bWRcpJJkhNw3Rh82ogKGr4=";
   };
 
   postPatch = ''
     # https://github.com/basilfx/aiobiketrax/pull/63
     substituteInPlace aiobiketrax/api.py \
-      --replace "auth0.v3" "auth0"
+      --replace-fail "auth0.v3" "auth0"
   '';
 
   pythonRelaxDeps = [
     "auth0-python"
   ];
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
+  ];
+
+  nativeBuildInputs = [
     pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     auth0-python
     python-dateutil
diff --git a/nixpkgs/pkgs/development/python-modules/aiobotocore/default.nix b/nixpkgs/pkgs/development/python-modules/aiobotocore/default.nix
index 525e482a42f7..5c421c99f6d0 100644
--- a/nixpkgs/pkgs/development/python-modules/aiobotocore/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiobotocore/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "aiobotocore";
-  version = "2.12.1";
+  version = "2.12.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = "aio-libs";
     repo = "aiobotocore";
     rev = "refs/tags/${version}";
-    hash = "sha256-+CXKDk6crCPTVpVfcDWy+1UzS05oTu1RtIvDcVrEmFU=";
+    hash = "sha256-Us94kT7UhTTwMxF63iLLczXZhfr/Z8cJr12DKEphkog=";
   };
 
   # Relax version constraints: aiobotocore works with newer botocore versions
diff --git a/nixpkgs/pkgs/development/python-modules/aiocache/default.nix b/nixpkgs/pkgs/development/python-modules/aiocache/default.nix
index fd4e5f3a154a..5d78252791b3 100644
--- a/nixpkgs/pkgs/development/python-modules/aiocache/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiocache/default.nix
@@ -1,8 +1,15 @@
 { lib
+, aiohttp
+, aiomcache
 , buildPythonPackage
 , fetchFromGitHub
+, marshmallow
 , msgpack
+, pkgs
 , pythonOlder
+, pytest-asyncio
+, pytest-mock
+, pytestCheckHook
 , redis
 , setuptools
 }:
@@ -21,21 +28,60 @@ buildPythonPackage rec {
     hash = "sha256-yvXDNJL8uxReaU81klVWudJwh1hmvg5GeeILcNpm/YA=";
   };
 
-  nativeBuildInputs = [
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace-fail "--cov=aiocache --cov=tests/ --cov-report term" ""
+  '';
+
+  build-system = [
     setuptools
   ];
 
-  passthru.optional-dependencies = {
+  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-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 = [
+    # calls apache benchmark and fails, no usable output
+    "test_concurrency_error_rates"
+  ];
+
+  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"
diff --git a/nixpkgs/pkgs/development/python-modules/aiocoap/default.nix b/nixpkgs/pkgs/development/python-modules/aiocoap/default.nix
index af2b220a21c2..5aff82034bcc 100644
--- a/nixpkgs/pkgs/development/python-modules/aiocoap/default.nix
+++ b/nixpkgs/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.8";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "chrysn";
-    repo = pname;
+    repo = "aiocoap";
     rev = "refs/tags/${version}";
-    hash = "sha256-4iwoPfmIwk+PlWUp60aqA5qZgzyj34pnZHf9uH5UhnY=";
+    hash = "sha256-jBRxorHr5/CgAR6WVXBUycZpJ6n1DYVFQk6kqVv8D1Q=";
   };
 
-  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,29 @@ 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"
+    ]
+    ++ 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/nixpkgs/pkgs/development/python-modules/aioconsole/default.nix b/nixpkgs/pkgs/development/python-modules/aioconsole/default.nix
index 8cb67f32a920..0c5346eebd67 100644
--- a/nixpkgs/pkgs/development/python-modules/aioconsole/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioconsole/default.nix
@@ -17,7 +17,7 @@
 # wrapped to be able to find aioconsole and any other packages.
 buildPythonPackage rec {
   pname = "aioconsole";
-  version = "0.7.0";
+  version = "0.7.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "vxgmichel";
     repo = "aioconsole";
     rev = "refs/tags/v${version}";
-    hash = "sha256-SKJLc1Tauwpmh2xtFFyHqKRaaQAK99SpbbGLFmAbKcQ=";
+    hash = "sha256-c8zeKebS04bZS9pMIKAauaLPvRrWaGoDKbnF906tFzQ=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/aiocontextvars/default.nix b/nixpkgs/pkgs/development/python-modules/aiocontextvars/default.nix
index 24f6f1b2e488..d1048db7de98 100644
--- a/nixpkgs/pkgs/development/python-modules/aiocontextvars/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiocontextvars/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, setuptools
 , pytestCheckHook
 , pytest-asyncio
 , isPy27
@@ -9,21 +10,24 @@
 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/nixpkgs/pkgs/development/python-modules/aiodhcpwatcher/default.nix b/nixpkgs/pkgs/development/python-modules/aiodhcpwatcher/default.nix
index 5c8adc9b4b99..1cdc26eead5d 100644
--- a/nixpkgs/pkgs/development/python-modules/aiodhcpwatcher/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiodhcpwatcher/default.nix
@@ -52,5 +52,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/nixpkgs/pkgs/development/python-modules/aiodns/default.nix b/nixpkgs/pkgs/development/python-modules/aiodns/default.nix
index 1da999978b58..95b17ac6a25a 100644
--- a/nixpkgs/pkgs/development/python-modules/aiodns/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/aioesphomeapi/default.nix b/nixpkgs/pkgs/development/python-modules/aioesphomeapi/default.nix
index 282e27f3f8af..fff33bbb6aca 100644
--- a/nixpkgs/pkgs/development/python-modules/aioesphomeapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioesphomeapi/default.nix
@@ -25,7 +25,7 @@
 
 buildPythonPackage rec {
   pname = "aioesphomeapi";
-  version = "23.2.0";
+  version = "24.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -34,7 +34,7 @@ buildPythonPackage rec {
     owner = "esphome";
     repo = "aioesphomeapi";
     rev = "refs/tags/v${version}";
-    hash = "sha256-GFQ87Ic0xHXs8ZgmzH7kOFbDSNmtj0hx+YHKnrz/sG0=";
+    hash = "sha256-wQR3dwN5O++TdtQh+Wcj7c7TNMaRj2lMlOuXOAPVU0Q=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/aiogram/default.nix b/nixpkgs/pkgs/development/python-modules/aiogram/default.nix
index 74d9f070a721..e15d1a993dcc 100644
--- a/nixpkgs/pkgs/development/python-modules/aiogram/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiogram/default.nix
@@ -25,7 +25,7 @@
 
 buildPythonPackage rec {
   pname = "aiogram";
-  version = "3.5.0";
+  version = "3.6.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -34,7 +34,7 @@ buildPythonPackage rec {
     owner = "aiogram";
     repo = "aiogram";
     rev = "refs/tags/v${version}";
-    hash = "sha256-NOaI01Lb969Lp/v38u2UipN9UbOQNJQEbN2JS3lmFno=";
+    hash = "sha256-8hbB6/j9mWONFNpQuC3p91xnHR/74TWA9Cq8E+Gsnlw=";
   };
 
   build-system = [ hatchling ];
diff --git a/nixpkgs/pkgs/development/python-modules/aiohttp-isal/default.nix b/nixpkgs/pkgs/development/python-modules/aiohttp-isal/default.nix
new file mode 100644
index 000000000000..dbaac3028777
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiohttp-isal/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+
+# build-system
+, poetry-core
+
+# dependencies
+, aiohttp
+, isal
+
+# tests
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "aiohttp-isal";
+  version = "0.3.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "bdraco";
+    repo = "aiohttp-isal";
+    rev = "v${version}";
+    hash = "sha256-rSXV5Z5JdznQGtRI83UIbaSfbIYkUHphJTVK/LM2V4U=";
+  };
+
+  build-system = [
+    poetry-core
+  ];
+
+  dependencies = [
+    aiohttp
+    isal
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    sed -i '/addopts/d' pyproject.toml
+  '';
+
+  pythonImportsCheck = [
+    "aiohttp_isal"
+  ];
+
+  meta = with lib; {
+    changelog = "https://github.com/bdraco/aiohttp-isal/blob/${src.rev}/CHANGELOG.md";
+    description = "Isal support for aiohttp";
+    homepage = "https://github.com/bdraco/aiohttp-isal";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiohttp-jinja2/default.nix b/nixpkgs/pkgs/development/python-modules/aiohttp-jinja2/default.nix
index 8e78784457ca..9584316d8554 100644
--- a/nixpkgs/pkgs/development/python-modules/aiohttp-jinja2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiohttp-jinja2/default.nix
@@ -6,12 +6,13 @@
 , pytest-aiohttp
 , pytestCheckHook
 , pythonOlder
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "aiohttp-jinja2";
   version = "1.6";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -20,7 +21,11 @@ buildPythonPackage rec {
     hash = "sha256-o6f/UmTlvKUuiuVHu/0HYbcklSMNQ40FtsCRW+YZsOI=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     aiohttp
     jinja2
   ];
@@ -31,8 +36,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 = [
@@ -44,10 +49,6 @@ buildPythonPackage rec {
     "aiohttp_jinja2"
   ];
 
-  # Tests are outdated (1.5)
-  # pytest.PytestUnhandledCoroutineWarning: async def functions...
-  doCheck = false;
-
   meta = with lib; {
     description = "Jinja2 support for aiohttp";
     homepage = "https://github.com/aio-libs/aiohttp_jinja2";
diff --git a/nixpkgs/pkgs/development/python-modules/aiohttp-openmetrics/default.nix b/nixpkgs/pkgs/development/python-modules/aiohttp-openmetrics/default.nix
index 11b979c4f6c2..871b9e33bded 100644
--- a/nixpkgs/pkgs/development/python-modules/aiohttp-openmetrics/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiohttp-openmetrics/default.nix
@@ -4,12 +4,13 @@
 , aiohttp
 , prometheus-client
 , pythonOlder
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "aiohttp-openmetrics";
   version = "0.0.12";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -18,7 +19,11 @@ buildPythonPackage rec {
     hash = "sha256-/ZRngcMlroCVTvIl+30DR4SI8LsSnTovuzg3YduWgWA=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     aiohttp
     prometheus-client
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/aiohttp-session/default.nix b/nixpkgs/pkgs/development/python-modules/aiohttp-session/default.nix
new file mode 100644
index 000000000000..31acba3ebd52
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiohttp-session/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+
+# build-system
+, setuptools
+
+# dependencies
+, aiohttp
+
+# optional-dependencies
+, aiomcache
+, cryptography
+, pynacl
+, redis
+}:
+
+buildPythonPackage rec {
+  pname = "aiohttp-session";
+  version = "2.12.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "aio-libs";
+    repo = "aiohttp-session";
+    rev = "v${version}";
+    hash = "sha256-7MNah4OIQnoxLoZkLOdeu5uCwSyPMhc6Wsht8dFconc=";
+  };
+
+  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/nixpkgs/pkgs/development/python-modules/aiohttp/default.nix b/nixpkgs/pkgs/development/python-modules/aiohttp/default.nix
index e46b5989dd76..a84a54e2c6fa 100644
--- a/nixpkgs/pkgs/development/python-modules/aiohttp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiohttp/default.nix
@@ -5,6 +5,7 @@
 , fetchFromGitHub
 , substituteAll
 , llhttp
+, python
 # build_requires
 , cython
 , setuptools
@@ -29,7 +30,7 @@
 
 buildPythonPackage rec {
   pname = "aiohttp";
-  version = "3.9.3";
+  version = "3.9.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -38,7 +39,7 @@ buildPythonPackage rec {
     owner = "aio-libs";
     repo = "aiohttp";
     rev = "refs/tags/v${version}";
-    hash = "sha256-dEeMHruFJ1o0J6VUJcpUk7LhEC8sV8hUKXoKcd618lE=";
+    hash = "sha256-FRtirmwgU8v+ee3db7rOFsmy0rNW8A7+yRZC5d6uYNA=";
   };
 
   patches = [
@@ -57,7 +58,7 @@ buildPythonPackage rec {
     touch .git  # tools/gen.py uses .git to find the project root
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     cython
     setuptools
   ];
@@ -66,7 +67,7 @@ buildPythonPackage rec {
     make cythonize
   '';
 
-  propagatedBuildInputs = [
+  dependencies = [
     attrs
     multidict
     async-timeout
@@ -77,6 +78,11 @@ 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
@@ -96,14 +102,6 @@ buildPythonPackage rec {
     "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 [
diff --git a/nixpkgs/pkgs/development/python-modules/aiokafka/default.nix b/nixpkgs/pkgs/development/python-modules/aiokafka/default.nix
index 45f79d81948c..cddfbc9295d4 100644
--- a/nixpkgs/pkgs/development/python-modules/aiokafka/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiokafka/default.nix
@@ -9,6 +9,7 @@
 , packaging
 , python-snappy
 , pythonOlder
+, setuptools
 , zlib
 , zstandard
 }:
@@ -16,32 +17,33 @@
 buildPythonPackage rec {
   pname = "aiokafka";
   version = "0.10.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "aio-libs";
-    repo = pname;
+    repo = "aiokafka";
     rev = "refs/tags/v${version}";
     hash = "sha256-G9Q77nWUUW+hG/wm9z/S8gea4U1wHZdj7WdK2LsKBos=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cython
+    setuptools
   ];
 
   buildInputs = [
     zlib
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     async-timeout
     kafka-python
     packaging
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     snappy = [
       python-snappy
     ];
diff --git a/nixpkgs/pkgs/development/python-modules/aiomcache/default.nix b/nixpkgs/pkgs/development/python-modules/aiomcache/default.nix
new file mode 100644
index 000000000000..c5349ce13fc2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiomcache/default.nix
@@ -0,0 +1,49 @@
+{ 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/nixpkgs/pkgs/development/python-modules/aiomisc-pytest/default.nix b/nixpkgs/pkgs/development/python-modules/aiomisc-pytest/default.nix
index 674aef1d02ef..01230505b2b6 100644
--- a/nixpkgs/pkgs/development/python-modules/aiomisc-pytest/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiomisc-pytest/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, aiomisc
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, pytest
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  aiomisc,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  pytest,
+  pythonOlder,
+  pythonRelaxDepsHook,
 }:
 
 buildPythonPackage rec {
   pname = "aiomisc-pytest";
-  version = "1.1.2";
+  version = "1.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,29 +19,20 @@ 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"
-  ];
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
-  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/nixpkgs/pkgs/development/python-modules/aiomisc/default.nix b/nixpkgs/pkgs/development/python-modules/aiomisc/default.nix
index 9182859bb90e..0b4bf7483d84 100644
--- a/nixpkgs/pkgs/development/python-modules/aiomisc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiomisc/default.nix
@@ -22,14 +22,14 @@
 
 buildPythonPackage rec {
   pname = "aiomisc";
-  version = "17.5.6";
+  version = "17.5.19";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-oq4z+ULN6VYkXX4Oz/JqKZSIh55AHOxFJVLyaNGqaNA=";
+    hash = "sha256-0tcWfi4zxqDDMknDPOLNm+S+K1qmHQ5n/PqNFyNbwZg=";
   };
 
   build-system = [ poetry-core ];
diff --git a/nixpkgs/pkgs/development/python-modules/aiomqtt/default.nix b/nixpkgs/pkgs/development/python-modules/aiomqtt/default.nix
index 16450a8758b9..3a5321198edf 100644
--- a/nixpkgs/pkgs/development/python-modules/aiomqtt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiomqtt/default.nix
@@ -13,7 +13,7 @@
 buildPythonPackage rec {
   pname = "aiomqtt";
   version = "2.0.1";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -24,12 +24,12 @@ buildPythonPackage rec {
     hash = "sha256-bV1elEO1518LVLwNDN5pzjxRgcG34K1XUsK7fTw8h+8=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
     poetry-dynamic-versioning
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     paho-mqtt
     typing-extensions
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/aiomysql/default.nix b/nixpkgs/pkgs/development/python-modules/aiomysql/default.nix
index acd3cc56e4a8..140ddfd0e517 100644
--- a/nixpkgs/pkgs/development/python-modules/aiomysql/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiomysql/default.nix
@@ -4,6 +4,7 @@
 , fetchpatch
 , pymysql
 , pythonOlder
+, setuptools
 , setuptools-scm
 , wheel
 }:
@@ -11,13 +12,13 @@
 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,6 +34,7 @@ buildPythonPackage rec {
   ];
 
   nativeBuildInputs = [
+    setuptools
     setuptools-scm
     wheel
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/aiorpcx/default.nix b/nixpkgs/pkgs/development/python-modules/aiorpcx/default.nix
index 09a2bfb8562d..5686a7dafd12 100644
--- a/nixpkgs/pkgs/development/python-modules/aiorpcx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiorpcx/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "aiorpcx";
-  version = "0.22.1";
+  version = "0.23.1";
   format = "setuptools";
 
   src = fetchPypi {
     inherit version;
     pname = "aiorpcX";
-    sha256 = "0lx54bcinp44fmr8q4bbffsqbkg8kdcwykf9i5jj0bj3sfzgf9k0";
+    sha256 = "sha256-WyMALxpNXTCF4xVVoHUZxe+NTEAHHrSZVW/9qBFIYKI=";
   };
 
   propagatedBuildInputs = [ attrs ];
diff --git a/nixpkgs/pkgs/development/python-modules/aiorun/default.nix b/nixpkgs/pkgs/development/python-modules/aiorun/default.nix
index f0e63e0ae374..1d181dc7cf4f 100644
--- a/nixpkgs/pkgs/development/python-modules/aiorun/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiorun/default.nix
@@ -12,13 +12,13 @@
 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=";
   };
@@ -31,11 +31,11 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [
+  build-system = [
     flit-core
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pygments
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/aioshelly/default.nix b/nixpkgs/pkgs/development/python-modules/aioshelly/default.nix
index 55c60d8e921a..8011abb1882c 100644
--- a/nixpkgs/pkgs/development/python-modules/aioshelly/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioshelly/default.nix
@@ -1,34 +1,33 @@
-{ lib
-, aiohttp
-, bluetooth-data-tools
-, buildPythonPackage
-, fetchFromGitHub
-, habluetooth
-, orjson
-, pythonOlder
-, setuptools
-, yarl
+{
+  lib,
+  aiohttp,
+  bluetooth-data-tools,
+  buildPythonPackage,
+  fetchFromGitHub,
+  habluetooth,
+  orjson,
+  pythonOlder,
+  setuptools,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "aioshelly";
-  version = "8.2.0";
+  version = "9.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "home-assistant-libs";
-    repo = pname;
+    repo = "aioshelly";
     rev = "refs/tags/${version}";
-    hash = "sha256-ZJ6lb3pd8DhNagaVq1uFwadtviuHCg44YZkh29ipu5U=";
+    hash = "sha256-yVjQlP4vIs3Nk94ZcafpLzxVMIJfLsPGee5G5IdnCRs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     bluetooth-data-tools
     habluetooth
@@ -39,9 +38,7 @@ buildPythonPackage rec {
   # Project has no test
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aioshelly"
-  ];
+  pythonImportsCheck = [ "aioshelly" ];
 
   meta = with lib; {
     description = "Python library to control Shelly";
diff --git a/nixpkgs/pkgs/development/python-modules/aiosmtpd/default.nix b/nixpkgs/pkgs/development/python-modules/aiosmtpd/default.nix
index 2f3c5e3b836c..39050153be2e 100644
--- a/nixpkgs/pkgs/development/python-modules/aiosmtpd/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiosmtpd/default.nix
@@ -6,23 +6,28 @@
 , pytest-mock
 , pytestCheckHook
 , pythonOlder
+, setuptools
 , typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "aiosmtpd";
   version = "1.4.5";
-  format = "setuptools";
+  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=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     atpublic
     attrs
@@ -53,6 +58,7 @@ buildPythonPackage rec {
     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/nixpkgs/pkgs/development/python-modules/aiounifi/default.nix b/nixpkgs/pkgs/development/python-modules/aiounifi/default.nix
index e36d82b521c5..1bf95b718742 100644
--- a/nixpkgs/pkgs/development/python-modules/aiounifi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiounifi/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "aiounifi";
-  version = "76";
+  version = "78";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "Kane610";
     repo = "aiounifi";
     rev = "refs/tags/v${version}";
-    hash = "sha256-N9N7sMHBiEhYUFok4bTSJZyp5pkJzj9pMxahY6FTx+I=";
+    hash = "sha256-fY3VsXJfs/uqqQjR6Sp03XlkCOk+8GvXq476dgagJQ8=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/airthings-ble/default.nix b/nixpkgs/pkgs/development/python-modules/airthings-ble/default.nix
index 1f9458541065..9e84b10802f9 100644
--- a/nixpkgs/pkgs/development/python-modules/airthings-ble/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/airthings-ble/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, async-interrupt
-, async-timeout
-, bleak
-, bleak-retry-connector
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  async-interrupt,
+  async-timeout,
+  bleak,
+  bleak-retry-connector,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "airthings-ble";
-  version = "0.7.1";
+  version = "0.9.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -21,7 +22,7 @@ buildPythonPackage rec {
     owner = "vincegio";
     repo = "airthings-ble";
     rev = "refs/tags/${version}";
-    hash = "sha256-BeOrGRVxvfQR1xqIpOp4tOTvlqTKCZHUjVKDqVjVnYM=";
+    hash = "sha256-920Vgk8kY5NsjYrOGYoRtcdHl4KKO7ytieH8cJ0S3RE=";
   };
 
   postPatch = ''
@@ -29,30 +30,22 @@ buildPythonPackage rec {
       --replace-fail "-v -Wdefault --cov=airthings_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     async-interrupt
     bleak
     bleak-retry-connector
-  ]  ++ lib.optionals (pythonOlder "3.11") [
-    async-timeout
-  ];
+  ] ++ lib.optionals (pythonOlder "3.11") [ async-timeout ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "airthings_ble"
-  ];
+  pythonImportsCheck = [ "airthings_ble" ];
 
   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/nixpkgs/pkgs/development/python-modules/albumentations/default.nix b/nixpkgs/pkgs/development/python-modules/albumentations/default.nix
index 17e9c7fc7974..7e15fcf6c116 100644
--- a/nixpkgs/pkgs/development/python-modules/albumentations/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/albumentations/default.nix
@@ -1,31 +1,35 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , setuptools
+, deepdiff
 , numpy
 , opencv4
 , pyyaml
-, qudida
 , scikit-image
+, scikit-learn
 , scipy
-, deepdiff
+, pydantic
 , pytestCheckHook
 , pythonOlder
 , pythonRelaxDepsHook
 , torch
 , torchvision
+, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "albumentations";
-  version = "1.4.2";
+  version = "1.4.4";
   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-7t1+22zzFtkZaAyOo6xjk+MXT9N44PmQ/NRRfvLeRVk=";
   };
 
   nativeBuildInputs = [
@@ -34,6 +38,7 @@ buildPythonPackage rec {
 
   pythonRemoveDeps = [
     "opencv-python"
+    "pydantic"
   ];
 
   build-system = [
@@ -43,10 +48,12 @@ buildPythonPackage rec {
   dependencies = [
     numpy
     opencv4
+    pydantic
     pyyaml
-    qudida
     scikit-image
+    scikit-learn
     scipy
+    typing-extensions
   ];
 
   nativeCheckInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/alembic/default.nix b/nixpkgs/pkgs/development/python-modules/alembic/default.nix
index cd7b0696afd4..47c6a22ea181 100644
--- a/nixpkgs/pkgs/development/python-modules/alembic/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/alembic/default.nix
@@ -22,7 +22,7 @@
 buildPythonPackage rec {
   pname = "alembic";
   version = "1.13.1";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
@@ -31,11 +31,11 @@ buildPythonPackage rec {
     hash = "sha256-STLIVYv2jy7pK5u8uCGGccYnBk1bCJOUN69td9wF5ZU=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     mako
     sqlalchemy
     typing-extensions
diff --git a/nixpkgs/pkgs/development/python-modules/aliyun-python-sdk-kms/default.nix b/nixpkgs/pkgs/development/python-modules/aliyun-python-sdk-kms/default.nix
index 55288c2b6d2a..7364654c8322 100644
--- a/nixpkgs/pkgs/development/python-modules/aliyun-python-sdk-kms/default.nix
+++ b/nixpkgs/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.3";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-+HI0qLZNRXyiM4+HZQ2xijzn99vJv+9x7+jyiUre09Y=";
+    hash = "sha256-wxt9JOFTJxowQ+gB57a2s/DbR+lag8jRDNq4wRZi/Dk=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/allure-behave/default.nix b/nixpkgs/pkgs/development/python-modules/allure-behave/default.nix
index 8f39c1fb628e..ef9e8fc2bf20 100644
--- a/nixpkgs/pkgs/development/python-modules/allure-behave/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/allure-behave/default.nix
@@ -9,14 +9,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/allure-pytest/default.nix b/nixpkgs/pkgs/development/python-modules/allure-pytest/default.nix
index ba86e0723a5d..504f118bc3a7 100644
--- a/nixpkgs/pkgs/development/python-modules/allure-pytest/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/allure-pytest/default.nix
@@ -9,14 +9,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/allure-python-commons-test/default.nix b/nixpkgs/pkgs/development/python-modules/allure-python-commons-test/default.nix
index 4a75e18835a4..2e08bef31d70 100644
--- a/nixpkgs/pkgs/development/python-modules/allure-python-commons-test/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/allure-python-commons-test/default.nix
@@ -1,7 +1,6 @@
 { lib
 , fetchPypi
 , buildPythonPackage
-, pythonOlder
 , attrs
 , pluggy
 , six
@@ -12,14 +11,12 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/allure-python-commons/default.nix b/nixpkgs/pkgs/development/python-modules/allure-python-commons/default.nix
index 2e6a38e51341..c63466ce8e25 100644
--- a/nixpkgs/pkgs/development/python-modules/allure-python-commons/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/allure-python-commons/default.nix
@@ -12,14 +12,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/android-backup/default.nix b/nixpkgs/pkgs/development/python-modules/android-backup/default.nix
index 647a36f78b33..e958e853b046 100644
--- a/nixpkgs/pkgs/development/python-modules/android-backup/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/android-backup/default.nix
@@ -2,8 +2,6 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pycrypto
-, pythonOlder
-, enum34
 , python
 }:
 
@@ -21,7 +19,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     pycrypto
-  ] ++ lib.optional (pythonOlder "3.4") enum34;
+  ];
 
   checkPhase = ''
     ${python.interpreter} -m android_backup.tests
diff --git a/nixpkgs/pkgs/development/python-modules/androidtvremote2/default.nix b/nixpkgs/pkgs/development/python-modules/androidtvremote2/default.nix
index a0c066c4d975..df179dab636b 100644
--- a/nixpkgs/pkgs/development/python-modules/androidtvremote2/default.nix
+++ b/nixpkgs/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.1";
+  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-Zem2IWBUWmyVdBjqoVKFk+/lg5T7CPXCKFXhFusQFLY=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/angr/default.nix b/nixpkgs/pkgs/development/python-modules/angr/default.nix
index b47510fcc4b1..b7f04cace729 100644
--- a/nixpkgs/pkgs/development/python-modules/angr/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/angr/default.nix
@@ -37,7 +37,7 @@
 
 buildPythonPackage rec {
   pname = "angr";
-  version = "9.2.101";
+  version = "9.2.102";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -46,7 +46,7 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "angr";
     rev = "refs/tags/v${version}";
-    hash = "sha256-btj1bGpS/t1uQxmMiZ+PTBqiIb7eigg1vGTPjzr4/p4=";
+    hash = "sha256-NZO4aQQfp+P9nbVr+cFd5Z2Ziz9cYzuLUi6nVY+Czr0=";
   };
 
   pythonRelaxDeps = [ "capstone" ];
diff --git a/nixpkgs/pkgs/development/python-modules/ansible-compat/default.nix b/nixpkgs/pkgs/development/python-modules/ansible-compat/default.nix
index b3455fac82f4..0461bf66d805 100644
--- a/nixpkgs/pkgs/development/python-modules/ansible-compat/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ansible-compat/default.nix
@@ -6,6 +6,7 @@
 , pytest-mock
 , pytestCheckHook
 , pyyaml
+, setuptools
 , setuptools-scm
 , subprocess-tee
 , pythonOlder
@@ -14,7 +15,7 @@
 buildPythonPackage rec {
   pname = "ansible-compat";
   version = "4.1.11";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -24,10 +25,11 @@ buildPythonPackage rec {
   };
 
   nativeBuildInputs = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pyyaml
     subprocess-tee
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/ansible-kernel/default.nix b/nixpkgs/pkgs/development/python-modules/ansible-kernel/default.nix
index dda1fe09fad4..4bc9f89aec35 100644
--- a/nixpkgs/pkgs/development/python-modules/ansible-kernel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ansible-kernel/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , writeText
+, setuptools
 , ipywidgets
 , six
 , docopt
@@ -25,14 +26,16 @@ 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
diff --git a/nixpkgs/pkgs/development/python-modules/ansible-runner/default.nix b/nixpkgs/pkgs/development/python-modules/ansible-runner/default.nix
index e4cb4c205d25..b0145a3113ee 100644
--- a/nixpkgs/pkgs/development/python-modules/ansible-runner/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ansible-runner/default.nix
@@ -18,13 +18,14 @@
 , pythonOlder
 , python-daemon
 , pyyaml
+, setuptools
 , six
 }:
 
 buildPythonPackage rec {
   pname = "ansible-runner";
   version = "2.3.6";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -40,13 +41,19 @@ buildPythonPackage rec {
       hash = "sha256-eTnQkftvjK0YHU+ovotRVSuVlvaVeXp5SvYk1DPCg88=";
       excludes = [ ".github/workflows/ci.yml" "tox.ini" ];
     })
+    (fetchpatch {
+      # python 3.12 compat
+      url = "https://github.com/ansible/ansible-runner/commit/dc248497bb2375a363222ce755bf3a31f21d5f64.patch";
+      hash = "sha256-QT28Iw0uENoO35rqZpYBcmJB/GNDEF4m86SKf6p0XQU=";
+    })
   ];
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     pbr
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     ansible-core
     psutil
     pexpect
diff --git a/nixpkgs/pkgs/development/python-modules/ansiwrap/default.nix b/nixpkgs/pkgs/development/python-modules/ansiwrap/default.nix
index 8dbfa99687c8..66ff581b9ba5 100644
--- a/nixpkgs/pkgs/development/python-modules/ansiwrap/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ansiwrap/default.nix
@@ -5,38 +5,39 @@
 , 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"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/anthropic/default.nix b/nixpkgs/pkgs/development/python-modules/anthropic/default.nix
index 5eef6a51010a..bfa36713ca09 100644
--- a/nixpkgs/pkgs/development/python-modules/anthropic/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/anthropic/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "anthropic";
-  version = "0.25.6";
+  version = "0.25.8";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     owner = "anthropics";
     repo = "anthropic-sdk-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-83TufOgu6W9UvoCEUgDiw6gXDAdwyIKEALVF0hjj6wk=";
+    hash = "sha256-CBe5rzO2+m1AGfDbAqxCzZ+Rm1Er4e0JuxtFRzgHV/Q=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/anyascii/default.nix b/nixpkgs/pkgs/development/python-modules/anyascii/default.nix
index d781a552cca1..3e001d5a1874 100644
--- a/nixpkgs/pkgs/development/python-modules/anyascii/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/anyascii/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, pythonOlder
 , fetchPypi
 , pytestCheckHook
 }:
@@ -9,7 +8,6 @@ buildPythonPackage rec {
   pname = "anyascii";
   version = "0.3.2";
   format = "setuptools";
-  disabled = pythonOlder "3.3";
 
   src = fetchPypi {
     inherit pname version;
diff --git a/nixpkgs/pkgs/development/python-modules/anywidget/default.nix b/nixpkgs/pkgs/development/python-modules/anywidget/default.nix
index 767fc775851d..51f6131ae5e6 100644
--- a/nixpkgs/pkgs/development/python-modules/anywidget/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/anywidget/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "anywidget";
-  version = "0.9.10";
+  version = "0.9.11";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-OQpigkCYHAmBPHUjJ53cq4L/T9Moet1UM7eLE2kIkGg=";
+    hash = "sha256-WN3tjobsJ84odgyUVzF2YxE9mvYIlH7mqNDstSiyLNw=";
   };
 
   # We do not need the jupyterlab build dependency, because we do not need to
@@ -48,6 +48,11 @@ buildPythonPackage rec {
     watchfiles
   ];
 
+  disabledTests = [
+    # requires package.json
+    "test_version"
+  ];
+
   pythonImportsCheck = [ "anywidget" ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/apipkg/default.nix b/nixpkgs/pkgs/development/python-modules/apipkg/default.nix
index b37c1b11fe6f..7fa8bdf06f58 100644
--- a/nixpkgs/pkgs/development/python-modules/apipkg/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/apipkg/default.nix
@@ -9,16 +9,16 @@
 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
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/app-model/default.nix b/nixpkgs/pkgs/development/python-modules/app-model/default.nix
index 7dc1c65349ea..bf2130e22417 100644
--- a/nixpkgs/pkgs/development/python-modules/app-model/default.nix
+++ b/nixpkgs/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.7";
   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-ISMSt7c8CoxffMhg7XC/ebKkgXFTBihDr1fGkqMCBoc=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/apprise/default.nix b/nixpkgs/pkgs/development/python-modules/apprise/default.nix
index 4d65c1babd19..e079703d17a0 100644
--- a/nixpkgs/pkgs/development/python-modules/apprise/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/apprise/default.nix
@@ -1,39 +1,44 @@
-{ lib
-, babel
-, buildPythonPackage
-, click
-, cryptography
-, fetchPypi
-, gntp
-, installShellFiles
-, markdown
-, paho-mqtt
-, pytest-mock
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, requests
-, requests-oauthlib
+{
+  lib,
+  babel,
+  buildPythonPackage,
+  click,
+  cryptography,
+  fetchPypi,
+  gntp,
+  installShellFiles,
+  markdown,
+  paho-mqtt,
+  pytest-mock,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  requests,
+  requests-oauthlib,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "apprise";
-  version = "1.7.6";
-  format = "setuptools";
+  version = "1.8.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-B38JMJzIpskGPb1hSzQ4B9Un1UZpO3/o/FpEM1Av6mw=";
+    hash = "sha256-6PWM6/6ho09WnLTGiAmjF1voDsBvCi7Ec1IrkgIyEsU=";
   };
 
-  nativeBuildInputs = [
-    installShellFiles
+  nativeBuildInputs = [ installShellFiles ];
+
+  build-system = [
+    babel
+    setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     cryptography
     markdown
@@ -43,7 +48,6 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    babel
     gntp
     paho-mqtt
     pytest-mock
@@ -53,7 +57,11 @@ 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 `AssertionError`
+    "test_plugin_xbmc_kodi_urls"
   ];
 
   disabledTestPaths = [
@@ -65,16 +73,14 @@ buildPythonPackage rec {
     installManPage packaging/man/apprise.1
   '';
 
-  pythonImportsCheck = [
-    "apprise"
-  ];
+  pythonImportsCheck = [ "apprise" ];
 
   meta = with lib; {
     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; [ ];
+    maintainers = with maintainers; [ getchoo ];
     mainProgram = "apprise";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/apscheduler/default.nix b/nixpkgs/pkgs/development/python-modules/apscheduler/default.nix
index 771d9a3d0200..7de46a521651 100644
--- a/nixpkgs/pkgs/development/python-modules/apscheduler/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/apscheduler/default.nix
@@ -19,7 +19,7 @@
 buildPythonPackage rec {
   pname = "apscheduler";
   version = "3.10.4";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -29,11 +29,12 @@ buildPythonPackage rec {
     hash = "sha256-5t8HGyfZvomOSGvHlAp75QtK8unafAjwdEqW1L1M70o=";
   };
 
-  buildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pytz
     setuptools
     six
@@ -51,7 +52,7 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.cfg \
-      --replace " --cov --tb=short" ""
+      --replace-fail " --cov --tb=short" ""
   '';
 
   disabledTests = [
diff --git a/nixpkgs/pkgs/development/python-modules/archinfo/default.nix b/nixpkgs/pkgs/development/python-modules/archinfo/default.nix
index fe6ca55ad91b..47eef407bcb7 100644
--- a/nixpkgs/pkgs/development/python-modules/archinfo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/archinfo/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "archinfo";
-  version = "9.2.101";
+  version = "9.2.102";
   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-aZwU/i1tBT6M5+PNR77vYzPKklWERXhvG1kknwC0RQQ=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/argcomplete/default.nix b/nixpkgs/pkgs/development/python-modules/argcomplete/default.nix
index 4427e75089fa..363b07758a2a 100644
--- a/nixpkgs/pkgs/development/python-modules/argcomplete/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/argcomplete/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "argcomplete";
-  version = "3.2.3";
+  version = "3.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "kislyuk";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-sGXHRHmzapJM/c4D4j3QWhkTNzPNZPLO7JOptnTXuR8=";
+    hash = "sha256-ekTmT6jYkC36X2e0ukwHfDGwdPg3jK8jML2naBCgNI8=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/argilla/default.nix b/nixpkgs/pkgs/development/python-modules/argilla/default.nix
index d3b87ca99f44..2d2e25a83ed5 100644
--- a/nixpkgs/pkgs/development/python-modules/argilla/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/argilla/default.nix
@@ -1,145 +1,98 @@
-{ 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,
+  peft,
+  pgmpy,
+  plotly,
+  prodict,
+  psutil,
+  psycopg2,
+  pydantic,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  python-jose,
+  python-multipart,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  pyyaml,
+  rich,
+  schedule,
+  scikit-learn,
+  sentence-transformers,
+  seqeval,
+  setuptools,
+  smart-open,
+  snorkel,
+  spacy,
+  spacy-transformers,
+  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.28.0";
+  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-gQpJ2umi3IE5BhRu3bM7ONPIP0hb2YG37jGvDKQHZWA=";
   };
 
   pythonRelaxDeps = [
-    "typer"
-    "rich"
+    "httpx"
     "numpy"
+    "rich"
+    "typer"
+    "wrapt"
   ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     httpx
     deprecated
     packaging
@@ -154,7 +107,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 +176,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/nixpkgs/pkgs/development/python-modules/argostranslate/default.nix b/nixpkgs/pkgs/development/python-modules/argostranslate/default.nix
index 57ea8db15a3d..f631da6ea800 100644
--- a/nixpkgs/pkgs/development/python-modules/argostranslate/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/argostranslate/default.nix
@@ -18,13 +18,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=";
+    sha256 = "sha256-3YzBMnqmcTIpn5UOFg3SDTFLjPSE9UDw0i8fB8LYh2s=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/art/default.nix b/nixpkgs/pkgs/development/python-modules/art/default.nix
index c1fbd475bc07..3b64d927324e 100644
--- a/nixpkgs/pkgs/development/python-modules/art/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/art/default.nix
@@ -5,14 +5,14 @@
 
 buildPythonPackage rec {
   pname = "art";
-  version = "6.1";
+  version = "6.2";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "sepandhaghighi";
     repo = "art";
-    rev = "v${version}";
-    hash = "sha256-RJexYOGWwAwxQ7lWGgXzFSR2aly1twB9pC4QFs5m7k8=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-lFe6J3R+A1WE+LGywupjOGwhOcrUH5JE26Cit0DaT/4=";
   };
 
   pythonImportsCheck = [ "art" ];
diff --git a/nixpkgs/pkgs/development/python-modules/asana/default.nix b/nixpkgs/pkgs/development/python-modules/asana/default.nix
index a37a70844d6e..bdad7887ba7a 100644
--- a/nixpkgs/pkgs/development/python-modules/asana/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/asana/default.nix
@@ -1,18 +1,19 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, pytestCheckHook
 , pythonOlder
-, requests
-, requests-oauthlib
-, responses
+, setuptools
+, certifi
 , six
+, python-dateutil
+, urllib3
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "asana";
   version = "5.0.3";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -23,15 +24,17 @@ buildPythonPackage rec {
     hash = "sha256-9F63DvwMh9NwlTqFuhiXfgRRRxAFjjRYmYzsuOhlQJ0=";
   };
 
-  propagatedBuildInputs = [
-    requests
-    requests-oauthlib
+  build-system = [ setuptools ];
+
+  dependencies = [
+    certifi
     six
+    python-dateutil
+    urllib3
   ];
 
   nativeCheckInputs = [
     pytestCheckHook
-    responses
   ];
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/asciitree/default.nix b/nixpkgs/pkgs/development/python-modules/asciitree/default.nix
index 323e1fbf8739..206793653665 100644
--- a/nixpkgs/pkgs/development/python-modules/asciitree/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/asciitree/default.nix
@@ -1,28 +1,29 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, pytest
+, 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/nixpkgs/pkgs/development/python-modules/asdf/default.nix b/nixpkgs/pkgs/development/python-modules/asdf/default.nix
index a6508229a3f0..43fa7ae2fdca 100644
--- a/nixpkgs/pkgs/development/python-modules/asdf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/asdf/default.nix
@@ -1,98 +1,73 @@
 { lib
 , asdf-standard
 , asdf-transform-schemas
-, astropy
+, attrs
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
-, importlib-resources
+, fsspec
+, importlib-metadata
 , jmespath
-, jsonschema
 , lz4
 , numpy
 , packaging
-, pytest-astropy
+, 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"
-  ];
-
   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;
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/ase/default.nix b/nixpkgs/pkgs/development/python-modules/ase/default.nix
index ed3c019146e5..087e7415b58b 100644
--- a/nixpkgs/pkgs/development/python-modules/ase/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ase/default.nix
@@ -2,18 +2,24 @@
 , fetchPypi
 , buildPythonPackage
 , isPy27
+, pythonAtLeast
+, setuptools
 , numpy
 , scipy
 , matplotlib
 , flask
 , pillow
 , psycopg2
+, pytestCheckHook
+, pytest-mock
+, pytest-xdist
 }:
 
 buildPythonPackage rec {
   pname = "ase";
   version = "3.22.1";
-  format = "setuptools";
+  pyproject = true;
+
   disabled = isPy27;
 
   src = fetchPypi {
@@ -21,14 +27,28 @@ buildPythonPackage rec {
     hash = "sha256-AE32sOoEsRFMeQ+t/kXUEl6w5TElxmqTQlr4U9gqtDI=";
   };
 
-  propagatedBuildInputs = [ numpy scipy matplotlib flask pillow psycopg2 ];
+  build-system = [ setuptools ];
 
-  checkPhase = ''
-    $out/bin/ase test
-  '';
+  dependencies = [ numpy scipy matplotlib flask pillow psycopg2 ];
+
+  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
+  ]
+  ++ lib.optionals (pythonAtLeast "3.12") [
+    "test_info_calculators"
+  ];
+
+  preCheck = ''
+    export PATH="$out/bin:$PATH"
+  '';
 
   pythonImportsCheck = [ "ase" ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/aspell-python/default.nix b/nixpkgs/pkgs/development/python-modules/aspell-python/default.nix
index 1af34b43fc29..1f66b49869e0 100644
--- a/nixpkgs/pkgs/development/python-modules/aspell-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aspell-python/default.nix
@@ -6,12 +6,13 @@
 , isPy27
 , pytestCheckHook
 , pythonAtLeast
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "aspell-python";
   version = "1.15";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = isPy27;
 
@@ -22,6 +23,10 @@ buildPythonPackage rec {
     hash = "sha256-IEKRDmQY5fOH9bQk0dkUAy7UzpBOoZW4cNtVvLMcs40=";
   };
 
+  build-system = [
+    setuptools
+  ];
+
   buildInputs = [
     aspell
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/astropy-healpix/default.nix b/nixpkgs/pkgs/development/python-modules/astropy-healpix/default.nix
index 23db660f951b..26be3405964c 100644
--- a/nixpkgs/pkgs/development/python-modules/astropy-healpix/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/astropy-healpix/default.nix
@@ -14,17 +14,22 @@
 
 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=";
+    hash = "sha256-3l0qfsl7FnBFBmlx8loVDR5AYfBxWb4jZJY02zbnl0Y=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml --replace "numpy>=2.0.0rc1" "numpy"
+  '';
+
   nativeBuildInputs = [
     astropy-extension-helpers
+    numpy
     setuptools
     setuptools-scm
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/astroquery/default.nix b/nixpkgs/pkgs/development/python-modules/astroquery/default.nix
index 610238559a2c..79bb6b03c243 100644
--- a/nixpkgs/pkgs/development/python-modules/astroquery/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/astroquery/default.nix
@@ -10,6 +10,8 @@
 , pillow
 , pytest
 , pytest-astropy
+, pytest-dependency
+, pytest-rerunfailures
 , pytestCheckHook
 , pyvo
 , astropy-helpers
@@ -19,12 +21,12 @@
 
 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;
@@ -46,11 +48,16 @@ buildPythonPackage rec {
   '';
 
   nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  checkInputs = [
     matplotlib
     pillow
     pytest
     pytest-astropy
-    pytestCheckHook
+    pytest-dependency
+    pytest-rerunfailures
   ];
 
   pytestFlagsArray = [
diff --git a/nixpkgs/pkgs/development/python-modules/asyncio-dgram/default.nix b/nixpkgs/pkgs/development/python-modules/asyncio-dgram/default.nix
index f999cd3b3b34..cdd6ac9b9781 100644
--- a/nixpkgs/pkgs/development/python-modules/asyncio-dgram/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/asyncio-dgram/default.nix
@@ -1,32 +1,33 @@
-{ 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
@@ -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/nixpkgs/pkgs/development/python-modules/asyncssh/default.nix b/nixpkgs/pkgs/development/python-modules/asyncssh/default.nix
index 735e831c0324..993947d5d7ea 100644
--- a/nixpkgs/pkgs/development/python-modules/asyncssh/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/asyncssh/default.nix
@@ -1,5 +1,4 @@
 { lib
-, stdenv
 , bcrypt
 , buildPythonPackage
 , cryptography
@@ -15,13 +14,14 @@
 , pytestCheckHook
 , python-pkcs11
 , pythonOlder
+, setuptools
 , typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "asyncssh";
   version = "2.14.2";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
@@ -30,14 +30,19 @@ buildPythonPackage rec {
     hash = "sha256-6Va/iYjQega6MwX2YE4mH0ygFMSiMvCHPxx2kvvjz8I=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cryptography
-    libsodium
     nettle
     typing-extensions
   ];
 
-  passthru.optional-dependencies = {
+  buildInputs = [
+    libsodium
+  ];
+
+  optional-dependencies = {
     bcrypt = [
       bcrypt
     ];
@@ -64,7 +69,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
diff --git a/nixpkgs/pkgs/development/python-modules/asyncwhois/default.nix b/nixpkgs/pkgs/development/python-modules/asyncwhois/default.nix
index 084c9ee8d306..938ff02ce7e8 100644
--- a/nixpkgs/pkgs/development/python-modules/asyncwhois/default.nix
+++ b/nixpkgs/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.2";
   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-ESVgK4Z26OAamdHPEVxysnlJ0rEUlr8KNd24fawHuEg=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/atomman/default.nix b/nixpkgs/pkgs/development/python-modules/atomman/default.nix
index a245c93e3618..fca4cd88e48c 100644
--- a/nixpkgs/pkgs/development/python-modules/atomman/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/atomman/default.nix
@@ -22,10 +22,10 @@
 , pythonRelaxDepsHook
 }:
 
-buildPythonPackage rec {
-  version = "unstable-2023-07-28";
+buildPythonPackage {
   pname = "atomman";
-  format = "pyproject";
+  version = "1.4.6-unstable-2023-07-28";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -36,14 +36,16 @@ buildPythonPackage rec {
     hash = "sha256-WfB+OY61IPprT6OCVHl8VA60p7lLVkRGuyYX+nm7bbA=";
   };
 
-  nativeBuildInputs = [
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
+
+  build-system = [
     setuptools
     wheel
-    pythonRelaxDepsHook
+    numpy
+    cython
   ];
 
-  propagatedBuildInputs = [
-    cython
+  dependencies = [
     datamodeldict
     matplotlib
     numericalunits
diff --git a/nixpkgs/pkgs/development/python-modules/atpublic/default.nix b/nixpkgs/pkgs/development/python-modules/atpublic/default.nix
index 41cbe28b8a26..616581ffc6f5 100644
--- a/nixpkgs/pkgs/development/python-modules/atpublic/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/atpublic/default.nix
@@ -3,25 +3,25 @@
 , fetchPypi
 , pytestCheckHook
 , pythonOlder
-, pdm-backend
+, hatchling
 , sybil
 , typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "atpublic";
-  version = "4.0";
+  version = "4.1.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-D0BDMhnhJO3xFcbDY4CMpvDhz6fRYNhrL7lHkwhtEpQ=";
+    hash = "sha256-0cjNkxr3Rh9tGLxgYzg+hlTZ6e8Z1Y7m3AHoUVu/Vd8=";
   };
 
   nativeBuildInputs = [
-    pdm-backend
+    hatchling
   ];
 
   propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
diff --git a/nixpkgs/pkgs/development/python-modules/atsim-potentials/default.nix b/nixpkgs/pkgs/development/python-modules/atsim-potentials/default.nix
index b06ef867c21f..d391ef74539e 100644
--- a/nixpkgs/pkgs/development/python-modules/atsim-potentials/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/atsim-potentials/default.nix
@@ -1,6 +1,8 @@
 { lib
 , buildPythonPackage
+, pythonAtLeast
 , fetchFromGitHub
+, setuptools
 , configparser
 , pyparsing
 , pytestCheckHook
@@ -14,23 +16,22 @@
 }:
 
 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 +47,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/nixpkgs/pkgs/development/python-modules/attacut/default.nix b/nixpkgs/pkgs/development/python-modules/attacut/default.nix
new file mode 100644
index 000000000000..70e8a98ccfd4
--- /dev/null
+++ b/nixpkgs/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 = "A 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/nixpkgs/pkgs/development/python-modules/aubio/default.nix b/nixpkgs/pkgs/development/python-modules/aubio/default.nix
index b810544e4043..7ce07795bc5f 100644
--- a/nixpkgs/pkgs/development/python-modules/aubio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aubio/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, setuptools
 , numpy
 , pytestCheckHook
 , stdenv
@@ -10,18 +11,22 @@
 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 = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     numpy
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/audiotools/default.nix b/nixpkgs/pkgs/development/python-modules/audiotools/default.nix
index 427faa4fe37b..6d85e2b18483 100644
--- a/nixpkgs/pkgs/development/python-modules/audiotools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/audiotools/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, setuptools
 , stdenv
 , AudioToolbox
 , AudioUnit
@@ -10,7 +11,9 @@
 buildPythonPackage rec {
   pname = "audiotools";
   version = "3.1.1";
-  format = "setuptools";
+  pyproject = true;
+
+  build-system = [ setuptools ];
 
   buildInputs = lib.optionals stdenv.isDarwin [
     AudioToolbox
diff --git a/nixpkgs/pkgs/development/python-modules/augmax/default.nix b/nixpkgs/pkgs/development/python-modules/augmax/default.nix
index 2ab159cfc6f8..3be4c4713600 100644
--- a/nixpkgs/pkgs/development/python-modules/augmax/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/augmax/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "augmax";
-  version = "0.3.1";
+  version = "0.3.2";
   pyproject = true;
 
   disbaled = pythonOlder "3.6";
@@ -19,14 +19,17 @@ buildPythonPackage rec {
     owner = "khdlr";
     repo = "augmax";
     rev = "refs/tags/v${version}";
-    hash = "sha256-hDNNoE7KVaH3jrXZA4A8f0UoQJPl6KHA3XwMc3Ccohk=";
+    hash = "sha256-xz6yJiVZUkRcRa2rKZdytfpP+XCk/QI4xtKlNaS9FYo=";
   };
 
-  nativeBuildInputs = [
+  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 +40,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/nixpkgs/pkgs/development/python-modules/autobahn/default.nix b/nixpkgs/pkgs/development/python-modules/autobahn/default.nix
index 2bfbc16e8f91..238dbd8bba95 100644
--- a/nixpkgs/pkgs/development/python-modules/autobahn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/autobahn/default.nix
@@ -34,6 +34,7 @@
   # , pytrie
 , rlp
 , service-identity
+, setuptools
 , spake2
 , twisted
 , txaio
@@ -49,7 +50,7 @@
 buildPythonPackage rec {
   pname = "autobahn";
   version = "23.6.2";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
@@ -60,10 +61,14 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "pytest>=2.8.6,<3.3.0" "pytest"
+      --replace-fail "pytest>=2.8.6,<3.3.0" "pytest"
   '';
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     cryptography
     hyperlink
     pynacl
@@ -74,9 +79,9 @@ buildPythonPackage rec {
     mock
     pytest-asyncio_0_21
     pytestCheckHook
-  ] ++ passthru.optional-dependencies.scram
-  ++ passthru.optional-dependencies.serialization
-  ++ passthru.optional-dependencies.xbr;
+  ] ++ optional-dependencies.scram
+  ++ optional-dependencies.serialization
+  ++ optional-dependencies.xbr;
 
   preCheck = ''
     # Run asyncio tests (requires twisted)
@@ -91,7 +96,7 @@ buildPythonPackage rec {
     "autobahn"
   ];
 
-  passthru.optional-dependencies = rec {
+  optional-dependencies = rec {
     all = accelerate ++ compress ++ encryption ++ nvx ++ serialization ++ scram ++ twisted ++ ui ++ xbr;
     accelerate = [ /* wsaccel */ ];
     compress = [ python-snappy ];
diff --git a/nixpkgs/pkgs/development/python-modules/av/default.nix b/nixpkgs/pkgs/development/python-modules/av/default.nix
index b57472867005..7d2f6c14a7ee 100644
--- a/nixpkgs/pkgs/development/python-modules/av/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/av/default.nix
@@ -3,6 +3,7 @@
 , buildPythonPackage
 , cython
 , fetchFromGitHub
+, fetchpatch
 , ffmpeg_5-headless
 , numpy
 , pillow
@@ -26,6 +27,15 @@ buildPythonPackage rec {
     hash = "sha256-pCKP+4ZmZCJcG7/Qy9H6aS4svQdgaRA9S1QVNWFYhSQ=";
   };
 
+  patches = [
+    # merged upstream PR: https://github.com/PyAV-Org/PyAV/pull/1387
+    (fetchpatch {
+      name = "use-pkg-config-env-var-fix-cross.patch";
+      url = "https://github.com/PyAV-Org/PyAV/commit/ba7a2c9f716af506838d399e6ed27ed6d64d2435.patch";
+      sha256 = "sha256-oH+g8sVoVCQe6DimRN38VT2GdziriwHYRAhldNxz9/E=";
+    })
+  ];
+
   nativeBuildInputs = [
     cython
     pkg-config
diff --git a/nixpkgs/pkgs/development/python-modules/avro/default.nix b/nixpkgs/pkgs/development/python-modules/avro/default.nix
index 21246fae4743..4b1f85e7d203 100644
--- a/nixpkgs/pkgs/development/python-modules/avro/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/avro/default.nix
@@ -12,6 +12,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 {
diff --git a/nixpkgs/pkgs/development/python-modules/avwx-engine/default.nix b/nixpkgs/pkgs/development/python-modules/avwx-engine/default.nix
new file mode 100644
index 000000000000..ccaaa09e5b09
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/avwx-engine/default.nix
@@ -0,0 +1,84 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  geopy,
+  httpx,
+  numpy,
+  poetry-core,
+  pytestCheckHook,
+  pytest-asyncio,
+  python-dateutil,
+  pythonOlder,
+  rapidfuzz,
+  scipy,
+  shapely,
+  time-machine,
+  xmltodict,
+}:
+
+buildPythonPackage rec {
+  pname = "avwx-engine";
+  version = "1.8.28";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "avwx-rest";
+    repo = "avwx-engine";
+    rev = "refs/tags/${version}";
+    hash = "sha256-sxOLhcmTJg/dTrtemr9BcfcBoHTP1eGo8U1ab8iSvUM=";
+  };
+
+  postPatch = ''
+    sed -i -e "/--cov/d" -e "/--no-cov/d" pyproject.toml
+  '';
+
+  build-system = [ poetry-core ];
+
+  dependencies = [
+    geopy
+    httpx
+    python-dateutil
+    xmltodict
+  ];
+
+  passthru.optional-dependencies = {
+    all = [
+      numpy
+      rapidfuzz
+      scipy
+      shapely
+    ];
+    fuzz = [ rapidfuzz ];
+    scipy = [
+      numpy
+      scipy
+    ];
+    shape = [ shapely ];
+  };
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    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/nixpkgs/pkgs/development/python-modules/awkward-cpp/default.nix b/nixpkgs/pkgs/development/python-modules/awkward-cpp/default.nix
index bd5c3197a097..e7d43e5cfae3 100644
--- a/nixpkgs/pkgs/development/python-modules/awkward-cpp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/awkward-cpp/default.nix
@@ -11,24 +11,24 @@
 
 buildPythonPackage rec {
   pname = "awkward-cpp";
-  version = "32";
+  version = "33";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-rYxa+GIG+w9DSxZ0nMXMppoVqI4WykPpHlbFzKd0IfA=";
+    hash = "sha256-VQrevM0ynRjQLpUibQuJaYGI/TPkTwdFCULGkogZJ9g=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     cmake
     ninja
     pybind11
     scikit-build-core
   ] ++ scikit-build-core.optional-dependencies.pyproject;
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/awkward/default.nix b/nixpkgs/pkgs/development/python-modules/awkward/default.nix
index d347b623d407..31e92178427a 100644
--- a/nixpkgs/pkgs/development/python-modules/awkward/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/awkward/default.nix
@@ -24,7 +24,7 @@
 
 buildPythonPackage rec {
   pname = "awkward";
-  version = "2.6.3";
+  version = "2.6.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -33,15 +33,15 @@ buildPythonPackage rec {
     owner = "scikit-hep";
     repo = "awkward";
     rev = "refs/tags/v${version}";
-    hash = "sha256-zII5TZ0bzVEo5hTrLr45N7oL3lYhkCyNfZif+0vkEo4=";
+    hash = "sha256-hoNxNxWfoSlBg6CsKvgEknM4vd+rN/9EFD5nC2y45OA=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-fancy-pypi-readme
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     awkward-cpp
     fsspec
     importlib-metadata
diff --git a/nixpkgs/pkgs/development/python-modules/aws-lambda-builders/default.nix b/nixpkgs/pkgs/development/python-modules/aws-lambda-builders/default.nix
index 9e32768ee18d..561942aa79ce 100644
--- a/nixpkgs/pkgs/development/python-modules/aws-lambda-builders/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aws-lambda-builders/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "aws-lambda-builders";
-  version = "1.48.0";
+  version = "1.49.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "awslabs";
     repo = "aws-lambda-builders";
     rev = "refs/tags/v${version}";
-    hash = "sha256-g1f0OL41lvs8OLyLcBk6XJk9wZO/oWluUj5sUcXlUIE=";
+    hash = "sha256-14qG3AuIlQI6n2XouPfUx7LNZqR0gSnI4OlkiYS62jA=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/ax/default.nix b/nixpkgs/pkgs/development/python-modules/ax/default.nix
index f0bba36c3c2f..91da12fc1f73 100644
--- a/nixpkgs/pkgs/development/python-modules/ax/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ax/default.nix
@@ -20,14 +20,14 @@
 
 buildPythonPackage rec {
   pname = "ax";
-  version = "0.3.7";
+  version = "0.4.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "facebook";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-UOX8Q7F5c9J1KSfQUy8aoL5CNb9YmEI4X7Fd5B16UqQ=";
+    hash = "sha256-dj6Gig8N4oLtcZLwPl4QDHG/FwA2nFBtYxSARnWiJJU=";
   };
 
   nativeBuildInputs = [
@@ -73,6 +73,8 @@ 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" ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/azure-cosmos/default.nix b/nixpkgs/pkgs/development/python-modules/azure-cosmos/default.nix
index df687eb52ac5..3b593399469e 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-cosmos/default.nix
+++ b/nixpkgs/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 ];
diff --git a/nixpkgs/pkgs/development/python-modules/azure-identity/default.nix b/nixpkgs/pkgs/development/python-modules/azure-identity/default.nix
index add836eee03f..18e21134a8db 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-identity/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-identity/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "azure-identity";
-  version = "1.15.0";
+  version = "1.16.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-TCj8JGt/kmVhDrUmHWWTEYPQGaI9Sw6ZNX+ssubCJ8g=";
+    hash = "sha256-b/HWZ83Ngdoc6rQvgKC+Y8qEZin1GKki9zF6fjyEThs=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-cdn/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-cdn/default.nix
index 3b6c5fd88b7b..7c53f86ca6c4 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-cdn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-cdn/default.nix
@@ -9,14 +9,15 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-cdn";
-  version = "13.0.0";
+  version = "13.1.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-yJ8jTeT4Gu23YSHl5GZ0+zdlC3s+GIxS4ir8z/HBkA4=";
+    pname = "azure_mgmt_cdn";
+    inherit version;
+    hash = "sha256-Igpr2snnXkwAyEGlnY3j7JAQ4LnhQS3snmwka2GeO/I=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix
index 94417bc47ec7..c03cf2582452 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix
+++ b/nixpkgs/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,
+  azure-mgmt-nspkg,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-containerservice";
-  version = "29.1.0";
+  version = "30.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-RohxeLsQNZM/BvpjEhwaydTFhx8gKuK4a8Svbh47NU8=";
+    hash = "sha256-bGLmrFkONP7dc5/iSzGzdQcToBRhZpbqjUTHvMgcBrc=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix
index 7f760eecf397..9bbf7cec42ee 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-datafactory";
-  version = "6.1.0";
+  version = "7.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-9WMsfVh9ca/nbbTPVuj1BwhIv6kGZlPbTzqzhvadBps=";
+    hash = "sha256-99uvyPwzRnUxp4ePA5Xa19QVTRvkAjvHDVIGgbcBP7o=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservices/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservices/default.nix
index 5f6377d54edd..5399eef058a8 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservices/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservices/default.nix
@@ -10,14 +10,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/b2sdk/default.nix b/nixpkgs/pkgs/development/python-modules/b2sdk/default.nix
index 266443af70f0..aa5fa2e2c40d 100644
--- a/nixpkgs/pkgs/development/python-modules/b2sdk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/b2sdk/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "b2sdk";
-  version = "2.1.0";
+  version = "2.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     owner = "Backblaze";
     repo = "b2-sdk-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-/TuPT+Y0asGGtfRNxxvpX0WkS4O4asFmIuqSdQ4I9fQ=";
+    hash = "sha256-ENEAynUd66sjS+/Qoy9qyffPpSvxdnY1Nwdi+JTE96I=";
   };
 
   build-system = [ pdm-backend ];
diff --git a/nixpkgs/pkgs/development/python-modules/bash-kernel/default.nix b/nixpkgs/pkgs/development/python-modules/bash-kernel/default.nix
index c3ab6083ba1d..57f28860fca9 100644
--- a/nixpkgs/pkgs/development/python-modules/bash-kernel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bash-kernel/default.nix
@@ -6,7 +6,7 @@
 , ipykernel
 , python
 , pexpect
-, bash
+, bashInteractive
 , substituteAll
 }:
 
@@ -24,7 +24,7 @@ buildPythonPackage rec {
   patches = [
     (substituteAll {
       src = ./bash-path.patch;
-      bash = lib.getExe bash;
+      bash = lib.getExe bashInteractive;
     })
   ];
 
@@ -45,8 +45,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/nixpkgs/pkgs/development/python-modules/bash-kernel/test.ipynb b/nixpkgs/pkgs/development/python-modules/bash-kernel/test.ipynb
new file mode 100644
index 000000000000..4d061381b96d
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/bayespy/default.nix b/nixpkgs/pkgs/development/python-modules/bayespy/default.nix
index ef82df7dfb95..7768dd5a8d7c 100644
--- a/nixpkgs/pkgs/development/python-modules/bayespy/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/bc-detect-secrets/default.nix b/nixpkgs/pkgs/development/python-modules/bc-detect-secrets/default.nix
index df19afca09d5..7e2a162df53f 100644
--- a/nixpkgs/pkgs/development/python-modules/bc-detect-secrets/default.nix
+++ b/nixpkgs/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.10";
   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-b0t5xv4fWiErQsYvDKTJuweiGLqS2WpR9ECGo/cpvQ8=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/bdffont/default.nix b/nixpkgs/pkgs/development/python-modules/bdffont/default.nix
index baa20facc81f..29cbe658db4d 100644
--- a/nixpkgs/pkgs/development/python-modules/bdffont/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bdffont/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "bdffont";
-  version = "0.0.17";
+  version = "0.0.24";
 
   disabled = pythonOlder "3.11";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-JBPo5tmwnXRzPpZbBrcW2wEC/XNd8M+mi58CRIpOVL0=";
+    hash = "sha256-3HJwtBV78zsMUlmwJrPj74Vd5cru1zflvies5mNGcy4=";
   };
 
   format = "pyproject";
diff --git a/nixpkgs/pkgs/development/python-modules/beancount-black/default.nix b/nixpkgs/pkgs/development/python-modules/beancount-black/default.nix
index f1e1ee3a4b02..0b4eb2ba6996 100644
--- a/nixpkgs/pkgs/development/python-modules/beancount-black/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/beancount-black/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "beancount-black";
-  version = "0.2.1";
+  version = "1.0.2";
 
   disabled = pythonOlder "3.9";
   format = "pyproject";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "LaunchPlatform";
     repo = "beancount-black";
     rev = version;
-    hash = "sha256-wvAQnwnyHn5Koc/UN4zpJ3JDmFbDoUrpCTmJCpSP7Mg=";
+    hash = "sha256-SoAic9UYKE9lhMpl44VosJmmjKJjDrKOyMeUO931Ztg=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/beancount-parser/default.nix b/nixpkgs/pkgs/development/python-modules/beancount-parser/default.nix
index b7fe986209fb..f3319a58b06e 100644
--- a/nixpkgs/pkgs/development/python-modules/beancount-parser/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/beancount-parser/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "beancount-parser";
-  version = "0.2.0";
+  version = "1.2.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "LaunchPlatform";
     repo = "beancount-parser";
     rev = "refs/tags/${version}";
-    hash = "sha256-VSl+Jde/mDSUpICXjmPKID6qZiKUUaK8ixztP1qaoDM=";
+    hash = "sha256-8YcrsLdSRTixKXU/IM821kNcBo0jB/8DXA1/KiedsBY=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/beanhub-cli/default.nix b/nixpkgs/pkgs/development/python-modules/beanhub-cli/default.nix
new file mode 100644
index 000000000000..25c003e19292
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/beanhub-cli/default.nix
@@ -0,0 +1,78 @@
+{ 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.1.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
+
+  src = fetchFromGitHub {
+    owner = "LaunchPlatform";
+    repo = "beanhub-cli";
+    rev = "refs/tags/${version}";
+    hash = "sha256-vYBbaUVJAs+aIp6aQpJb62DEDxe/sQTzgOkjPq6ADoc=";
+  };
+
+  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/nixpkgs/pkgs/development/python-modules/beanhub-extract/default.nix b/nixpkgs/pkgs/development/python-modules/beanhub-extract/default.nix
new file mode 100644
index 000000000000..c0c623b88f30
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/beanhub-extract/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, pythonOlder
+, pytestCheckHook
+, poetry-core
+, pytz
+}:
+
+buildPythonPackage rec {
+  pname = "beanhub-extract";
+  version = "0.0.7";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "LaunchPlatform";
+    repo = "beanhub-extract";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Wt8ZCyCaERNXEd0/Q89QWUW/wGFSHAP2RZLhnv5xkgY=";
+  };
+
+  build-system = [
+    poetry-core
+  ];
+
+  dependencies = [
+    pytz
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "beanhub_extract"
+  ];
+
+  meta = {
+    description = "The 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/nixpkgs/pkgs/development/python-modules/beanhub-forms/default.nix b/nixpkgs/pkgs/development/python-modules/beanhub-forms/default.nix
new file mode 100644
index 000000000000..27cf644b96f0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/beanhub-forms/default.nix
@@ -0,0 +1,55 @@
+{ 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/nixpkgs/pkgs/development/python-modules/beanhub-import/default.nix b/nixpkgs/pkgs/development/python-modules/beanhub-import/default.nix
new file mode 100644
index 000000000000..7097c45356a1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/beanhub-import/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, pythonOlder
+, pytestCheckHook
+, beancount-black
+, beancount-parser
+, beanhub-extract
+, jinja2
+, poetry-core
+, pydantic
+, pytz
+, pyyaml
+}:
+
+buildPythonPackage rec {
+  pname = "beanhub-import";
+  version = "0.1.5";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "LaunchPlatform";
+    repo = "beanhub-import";
+    rev = "refs/tags/${version}";
+    hash = "sha256-BH+d7cKC83b7T2Z1Xlwpsv3KACo1vDn6v65tElhir/c=";
+  };
+
+  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/nixpkgs/pkgs/development/python-modules/bellows/default.nix b/nixpkgs/pkgs/development/python-modules/bellows/default.nix
index 38c938bb7424..5d4c38803383 100644
--- a/nixpkgs/pkgs/development/python-modules/bellows/default.nix
+++ b/nixpkgs/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.38.4";
   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-IyJQgKTRrff/LqY14IaATrJTkmVDEv0JFHAxCydNk7Y=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/betterproto/default.nix b/nixpkgs/pkgs/development/python-modules/betterproto/default.nix
index a20daf344f06..5f42d46b1e58 100644
--- a/nixpkgs/pkgs/development/python-modules/betterproto/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/bids-validator/default.nix b/nixpkgs/pkgs/development/python-modules/bids-validator/default.nix
index 7512515c706d..6779e42c580d 100644
--- a/nixpkgs/pkgs/development/python-modules/bids-validator/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bids-validator/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "bids-validator";
-  version = "1.14.4";
+  version = "1.14.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Q0pghEFmK5qJ3sWgrxs4jWUm+Ox7LO5sDR8GUJWBr/o=";
+    hash = "sha256-TXIb1ff7D6aM+8L5F47O5Dvupp1Sn4Rnl+GQaUdEgno=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/bimmer-connected/default.nix b/nixpkgs/pkgs/development/python-modules/bimmer-connected/default.nix
index 48ddcc9e7d62..39c8874f7f3f 100644
--- a/nixpkgs/pkgs/development/python-modules/bimmer-connected/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bimmer-connected/default.nix
@@ -18,26 +18,26 @@
 
 buildPythonPackage rec {
   pname = "bimmer-connected";
-  version = "0.14.6";
+  version = "0.15.2";
   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-UCzPD+3v74eB32q0/blsyHAsN0yNskGky5nrBKzFFaE=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     pbr
     setuptools
   ];
 
   PBR_VERSION = version;
 
-  propagatedBuildInputs = [
+  dependencies = [
     httpx
     pycryptodome
     pyjwt
diff --git a/nixpkgs/pkgs/development/python-modules/binance-connector/default.nix b/nixpkgs/pkgs/development/python-modules/binance-connector/default.nix
new file mode 100644
index 000000000000..c8d3b044b558
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/binance-connector/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pycryptodome
+, pythonOlder
+, requests
+, websocket-client
+# dependencies for tests
+, pytest-cov
+, pytest
+, sure
+, responses
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "binance-connector";
+  version = "3.7.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "binance";
+    repo = "${pname}-python";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-hmn8WKr+krzOzHNJ/aynXAbf+rHxDfyKDgycdQQU3xk=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+    pycryptodome
+    websocket-client
+  ];
+
+  nativeCheckInputs = [
+    pytest-cov
+    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/nixpkgs/pkgs/development/python-modules/biom-format/default.nix b/nixpkgs/pkgs/development/python-modules/biom-format/default.nix
new file mode 100644
index 000000000000..ca5ff3a83fb7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/biom-format/default.nix
@@ -0,0 +1,71 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  setuptools,
+  cython,
+  click,
+  numpy,
+  scipy,
+  pandas,
+  h5py,
+  pytestCheckHook,
+}:
+
+buildPythonPackage rec {
+  pname = "biom-format";
+  version = "2.1.15";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "biocore";
+    repo = "biom-format";
+    rev = "refs/tags/${version}";
+    hash = "sha256-WRBc+C/UWme7wYogy4gH4KTIdIqU3KmBm2jWzGNxGQg=";
+  };
+
+  patches = [
+    # fixes a test, can be removed in next version after 2.1.15
+    (fetchpatch {
+      name = "fix-dataframe-comparison.patch";
+      url = "https://github.com/biocore/biom-format/commit/5d1c921ca2cde5d7332508503ce990a7209d1fdc.patch";
+      hash = "sha256-nyHi469ivjJSQ01yIk/6ZMXFdoo9wVuazJHnFdy2nBg=";
+    })
+  ];
+
+  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/nixpkgs/pkgs/development/python-modules/biopython/close_parser_on_time.patch b/nixpkgs/pkgs/development/python-modules/biopython/close_parser_on_time.patch
new file mode 100644
index 000000000000..05d22e22ed9e
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/biopython/default.nix b/nixpkgs/pkgs/development/python-modules/biopython/default.nix
index 2ec814f56aef..051f66845dec 100644
--- a/nixpkgs/pkgs/development/python-modules/biopython/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/bitbox02/default.nix b/nixpkgs/pkgs/development/python-modules/bitbox02/default.nix
index 7d6f89175608..0217979d31da 100644
--- a/nixpkgs/pkgs/development/python-modules/bitbox02/default.nix
+++ b/nixpkgs/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,9 +40,7 @@ buildPythonPackage rec {
   # does not contain tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "bitbox02"
-  ];
+  pythonImportsCheck = [ "bitbox02" ];
 
   meta = with lib; {
     description = "Firmware code of the BitBox02 hardware wallet";
diff --git a/nixpkgs/pkgs/development/python-modules/black/default.nix b/nixpkgs/pkgs/development/python-modules/black/default.nix
index ec11de747c1e..48f1c3305558 100644
--- a/nixpkgs/pkgs/development/python-modules/black/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/black/default.nix
@@ -24,14 +24,14 @@
 
 buildPythonPackage rec {
   pname = "black";
-  version = "24.3.0";
+  version = "24.4.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-oMnEoHca/GkZV4zscc6Co+MeBUkE5xl96svJOCZxxB8=";
+    hash = "sha256-8Htp/aIFeDZ+rrvWcP+PxlOrGB4f+V2ESX+fog59BkE=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/blackjax/default.nix b/nixpkgs/pkgs/development/python-modules/blackjax/default.nix
index 7ecc4eda9519..4a0807cd7c49 100644
--- a/nixpkgs/pkgs/development/python-modules/blackjax/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/blackjax/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , buildPythonPackage
 , pythonOlder
 , fetchFromGitHub
@@ -15,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "blackjax";
-  version = "1.1.1";
+  version = "1.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -24,12 +25,14 @@ buildPythonPackage rec {
     owner = "blackjax-devs";
     repo = "blackjax";
     rev = "refs/tags/${version}";
-    hash = "sha256-6+ElY1F8oRCtWT4a/LIG6hYMthlq5mDx2baKAc6zIns=";
+    hash = "sha256-VoWBCjFMyE5LVJyf7du/pKlnvDHj22lguiP6ZUzH9ak=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
+  build-system = [
+    setuptools-scm
+  ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     fastprogress
     jax
     jaxlib
@@ -42,10 +45,21 @@ buildPythonPackage rec {
     pytestCheckHook
     pytest-xdist
   ];
-  disabledTestPaths = [ "tests/test_benchmarks.py" ];
+
+  disabledTestPaths = [
+    "tests/test_benchmarks.py"
+  ] ++ lib.optionals (stdenv.isLinux && stdenv.isAarch64) [
+    # Assertion errors on numerical values
+    "tests/mcmc/test_integrators.py"
+  ];
+
   disabledTests = [
     # too slow
     "test_adaptive_tempered_smc"
+  ] ++ lib.optionals (stdenv.isLinux && stdenv.isAarch64) [
+    # Numerical test (AssertionError)
+    # https://github.com/blackjax-devs/blackjax/issues/668
+    "test_chees_adaptation"
   ];
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/bleak/default.nix b/nixpkgs/pkgs/development/python-modules/bleak/default.nix
index f53f614867ec..7fad7492d704 100644
--- a/nixpkgs/pkgs/development/python-modules/bleak/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bleak/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "bleak";
-  version = "0.21.1";
+  version = "0.22.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "hbldh";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-T0im8zKyNLbskAEDeUUFS/daJtvttlHlttjscqP8iSk=";
+    hash = "sha256-kBKNBVbEq1xHLu/gKUL2SwlA2WKjzqFVC5o4N+qnqLM=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/bloodyad/default.nix b/nixpkgs/pkgs/development/python-modules/bloodyad/default.nix
index 11d26f32fbae..47ff7565a297 100644
--- a/nixpkgs/pkgs/development/python-modules/bloodyad/default.nix
+++ b/nixpkgs/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.3";
   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-+Lw9Apm+zzUlM19fGgxOb2bTmmKQ1Nd7dUjF9rhHXKQ=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/bluetooth-adapters/default.nix b/nixpkgs/pkgs/development/python-modules/bluetooth-adapters/default.nix
index cf6924f2f3d6..c41d87173529 100644
--- a/nixpkgs/pkgs/development/python-modules/bluetooth-adapters/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bluetooth-adapters/default.nix
@@ -13,12 +13,13 @@
 , pythonOlder
 , sphinx-rtd-theme
 , sphinxHook
+, uart-devices
 , usb-devices
 }:
 
 buildPythonPackage rec {
   pname = "bluetooth-adapters";
-  version = "0.18.0";
+  version = "0.19.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -27,7 +28,7 @@ buildPythonPackage rec {
     owner = "Bluetooth-Devices";
     repo = "bluetooth-adapters";
     rev = "refs/tags/v${version}";
-    hash = "sha256-KPmCOPCK7muT0qptJMKQwWU/6tvepkdHwlNYcrvpRLg=";
+    hash = "sha256-hPs6YnmndJ2Z5RotcIRIYWPdvMyX56ul84l1Cs8kqH0=";
   };
 
   postPatch = ''
@@ -40,20 +41,21 @@ 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
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/bluetooth-auto-recovery/default.nix b/nixpkgs/pkgs/development/python-modules/bluetooth-auto-recovery/default.nix
index a3e137cae493..861aaab2d138 100644
--- a/nixpkgs/pkgs/development/python-modules/bluetooth-auto-recovery/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/bokeh/default.nix b/nixpkgs/pkgs/development/python-modules/bokeh/default.nix
index 63fa524f9fa3..8f052c4b5b17 100644
--- a/nixpkgs/pkgs/development/python-modules/bokeh/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bokeh/default.nix
@@ -1,5 +1,4 @@
 { lib
-, stdenv
 , buildPythonPackage
 , fetchPypi
 , fetchFromGitHub
@@ -8,7 +7,6 @@
 , colorama
 , contourpy
 , jinja2
-, mock
 , numpy
 , nodejs
 , packaging
@@ -48,14 +46,14 @@
 buildPythonPackage rec {
   pname = "bokeh";
   # update together with panel which is not straightforward
-  version = "3.3.4";
+  version = "3.4.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-c7eYLcK43xW/Zgzd3I04JegpGVxDgBWl0Jgk8acCg2g=";
+    hash = "sha256-2CSWHkJlNnsHUM5YsH5WStC4PKZLM1UhzTQh6bnxDYk=";
   };
 
   src_test = fetchFromGitHub {
diff --git a/nixpkgs/pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch b/nixpkgs/pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch
index 4ebfc7e3f2d6..6dcec9ae5177 100644
--- a/nixpkgs/pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/boto3-stubs/default.nix b/nixpkgs/pkgs/development/python-modules/boto3-stubs/default.nix
index 1d7e839665c9..c4a35e42730f 100644
--- a/nixpkgs/pkgs/development/python-modules/boto3-stubs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/boto3-stubs/default.nix
@@ -366,7 +366,7 @@
 
 buildPythonPackage rec {
   pname = "boto3-stubs";
-  version = "1.34.96";
+  version = "1.34.108";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -374,7 +374,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "boto3_stubs";
     inherit version;
-    hash = "sha256-gkpimXGE45wP34h7JCxEodaauH4hVMKzHVDGSvqKT8U=";
+    hash = "sha256-4T5VsYHuwOwZD0qpHgxKuZ7KTBxBdOFq7cVLuygOYXk=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/botocore/default.nix b/nixpkgs/pkgs/development/python-modules/botocore/default.nix
index f956687016ef..0c9dfaa7920a 100644
--- a/nixpkgs/pkgs/development/python-modules/botocore/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/botocore/default.nix
@@ -14,14 +14,14 @@
 
 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.87"; # 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-o6TYV/CUHZih5c6M1kw5BiJx/qC+TZ89DWr/bLWBI7k=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/development/python-modules/botorch/default.nix b/nixpkgs/pkgs/development/python-modules/botorch/default.nix
index e81609908758..bddf584fa91b 100644
--- a/nixpkgs/pkgs/development/python-modules/botorch/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/botorch/default.nix
@@ -16,14 +16,14 @@
 
 buildPythonPackage rec {
   pname = "botorch";
-  version = "0.10.0";
+  version = "0.11.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "pytorch";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-IaFtQWrgOhVHDOiPQ4oG8l+Q0igWamYVWEReGccbVoI=";
+    hash = "sha256-eL0buwqrGt4qcwdzCwD85IyiWjAFuP1n8aUb2pvvIKw=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/boxx/default.nix b/nixpkgs/pkgs/development/python-modules/boxx/default.nix
index a42cc2c0ee55..67d862941c8e 100644
--- a/nixpkgs/pkgs/development/python-modules/boxx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/boxx/default.nix
@@ -19,14 +19,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/breathe/default.nix b/nixpkgs/pkgs/development/python-modules/breathe/default.nix
index ca6c66261660..35bc0b698675 100644
--- a/nixpkgs/pkgs/development/python-modules/breathe/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/breathe/default.nix
@@ -1,5 +1,6 @@
 { lib
 , buildPythonPackage
+, defusedxml
 , docutils
 , fetchFromGitHub
 , fetchpatch
@@ -40,6 +41,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  checkInputs = [
+    defusedxml
+  ];
+
   pythonImportsCheck = [
     "breathe"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/bsddb3/default.nix b/nixpkgs/pkgs/development/python-modules/bsddb3/default.nix
index 4edc9e1524b4..4e617c546985 100644
--- a/nixpkgs/pkgs/development/python-modules/bsddb3/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bsddb3/default.nix
@@ -1,22 +1,30 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, setuptools
 , pkgs
 , python
+, pythonOlder
 }:
 
 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 ];
 
+  doCheck = pythonOlder "3.12"; # distutils usage
+
   checkPhase = ''
     ${python.interpreter} test.py
   '';
diff --git a/nixpkgs/pkgs/development/python-modules/bthome-ble/default.nix b/nixpkgs/pkgs/development/python-modules/bthome-ble/default.nix
index cc99d7696c5b..f0f92ec11904 100644
--- a/nixpkgs/pkgs/development/python-modules/bthome-ble/default.nix
+++ b/nixpkgs/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.9.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-umRPB0eUdFL4kIvqSfbw/Jzh7NZMY6WR4dK+1cyK3EI=";
   };
 
-  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,18 +41,9 @@ 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";
diff --git a/nixpkgs/pkgs/development/python-modules/btrfs/default.nix b/nixpkgs/pkgs/development/python-modules/btrfs/default.nix
index a534257c6dbe..66a7a05676a9 100644
--- a/nixpkgs/pkgs/development/python-modules/btrfs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/btrfs/default.nix
@@ -5,12 +5,12 @@
 
 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)
diff --git a/nixpkgs/pkgs/development/python-modules/buienradar/default.nix b/nixpkgs/pkgs/development/python-modules/buienradar/default.nix
index 23a19f89f279..3a0c5fbd3dd1 100644
--- a/nixpkgs/pkgs/development/python-modules/buienradar/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/buienradar/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, pythonOlder
 , fetchFromGitHub
 , docopt
 , pytz
@@ -16,8 +15,6 @@ buildPythonPackage rec {
   version = "1.0.5";
   format = "setuptools";
 
-  disabled = pythonOlder "3.4";
-
   src = fetchFromGitHub {
     owner = "mjj4791";
     repo = "python-buienradar";
diff --git a/nixpkgs/pkgs/development/python-modules/build/default.nix b/nixpkgs/pkgs/development/python-modules/build/default.nix
index 7d56257a377d..4f30c8f18629 100644
--- a/nixpkgs/pkgs/development/python-modules/build/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/build/default.nix
@@ -19,7 +19,7 @@
 
 buildPythonPackage rec {
   pname = "build";
-  version = "1.1.1";
+  version = "1.2.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -28,7 +28,7 @@ buildPythonPackage rec {
     owner = "pypa";
     repo = "build";
     rev = "refs/tags/${version}";
-    hash = "sha256-SGWpm+AGIfqKMpDfmz2aMYmcs+XVREbHIXSuU4R7U/k=";
+    hash = "sha256-G0g+1v19sQMUuQlZKGELZOwwX07i7TIdEdaYzr8bKtI=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/cadquery/default.nix b/nixpkgs/pkgs/development/python-modules/cadquery/default.nix
deleted file mode 100644
index 5db0b6ae2c99..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/development/python-modules/cartopy/default.nix b/nixpkgs/pkgs/development/python-modules/cartopy/default.nix
index 05529a9c00da..17d6b014caef 100644
--- a/nixpkgs/pkgs/development/python-modules/cartopy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cartopy/default.nix
@@ -23,7 +23,7 @@
 
 buildPythonPackage rec {
   pname = "cartopy";
-  version = "0.22.0";
+  version = "0.23.0";
 
   disabled = pythonOlder "3.8";
 
@@ -32,7 +32,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     inherit version;
     pname = "Cartopy";
-    hash = "sha256-swD5ASCTHUPxHvh8Bk6h2s7BtZpJQKp26/gs8JVIu0k=";
+    hash = "sha256-Ix83s1cB8rox2UlZzKdebaBMLuo6fxTOHHXuOw6udnY=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/casa-formats-io/default.nix b/nixpkgs/pkgs/development/python-modules/casa-formats-io/default.nix
index 4e4d10bd2731..49f1b18dc8bd 100644
--- a/nixpkgs/pkgs/development/python-modules/casa-formats-io/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/cbor2/default.nix b/nixpkgs/pkgs/development/python-modules/cbor2/default.nix
index 73f994cce5a8..c9d2ecbaca4f 100644
--- a/nixpkgs/pkgs/development/python-modules/cbor2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cbor2/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "cbor2";
-  version = "5.6.2";
+  version = "5.6.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-t1E8LeqIaJkfrX74iZiQ68+LGZubRGHDwR160670gg0=";
+    hash = "sha256-5vCuJ1HC0zOpYOCAfAYRSU6xJFYxoWeWWsvBAFCUVdM=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/celery/default.nix b/nixpkgs/pkgs/development/python-modules/celery/default.nix
index a787e1fce4ea..f62840490908 100644
--- a/nixpkgs/pkgs/development/python-modules/celery/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/celery/default.nix
@@ -1,45 +1,57 @@
 { stdenv
 , lib
-, backports-zoneinfo
-, billiard
-, boto3
 , buildPythonPackage
-, case
+, fetchPypi
+, pythonOlder
+
+# build-system
+, setuptools
+
+# dependencies
+, billiard
+, kombu
+, vine
 , click
 , click-didyoumean
-, click-plugins
 , click-repl
-, dnspython
-, fetchPypi
-, kombu
+, click-plugins
+, tzdata
+, python-dateutil
+
+# optional-dependencies
+, google-cloud-storage
 , moto
+, msgpack
 , pymongo
+, pyyaml
+
+# tests
 , pytest-celery
 , pytest-click
 , pytest-subtests
 , pytest-timeout
 , pytest-xdist
 , pytestCheckHook
-, python-dateutil
-, pythonOlder
-, tzdata
-, vine
 , nixosTests
 }:
 
 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 +61,29 @@ buildPythonPackage rec {
     python-dateutil
     tzdata
     vine
-  ]
-  ++ lib.optionals (pythonOlder "3.9") [
-    backports-zoneinfo
   ];
 
+  optional-dependencies = {
+    gcs = [ google-cloud-storage ];
+    mongodb = [ pymongo ];
+    msgpack = [ msgpack ];
+    yaml = [ pyyaml ];
+  };
+
   nativeCheckInputs = [
-    boto3
-    case
-    dnspython
     moto
-    pymongo
     pytest-celery
     pytest-click
     pytest-subtests
     pytest-timeout
     pytest-xdist
     pytestCheckHook
-  ];
+  ]
+  # based on https://github.com/celery/celery/blob/main/requirements/test.txt
+  ++ optional-dependencies.yaml
+  ++ optional-dependencies.msgpack
+  ++ optional-dependencies.mongodb
+  ++ optional-dependencies.gcs;
 
   disabledTestPaths = [
     # test_eventlet touches network
diff --git a/nixpkgs/pkgs/development/python-modules/cepa/default.nix b/nixpkgs/pkgs/development/python-modules/cepa/default.nix
deleted file mode 100644
index 1b12ea1e5efb..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/development/python-modules/cgen/default.nix b/nixpkgs/pkgs/development/python-modules/cgen/default.nix
index 966a6b7ff159..d2a4878f240f 100644
--- a/nixpkgs/pkgs/development/python-modules/cgen/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cgen/default.nix
@@ -30,6 +30,6 @@ buildPythonPackage rec {
     description = "C/C++ source generation from an AST";
     homepage = "https://github.com/inducer/cgen";
     license = licenses.mit;
-    maintainers = [ ];
+    maintainers = with lib.maintainers; [ sigmanificient ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/chai/default.nix b/nixpkgs/pkgs/development/python-modules/chai/default.nix
index 6146ec692c75..7fb8e6d3489f 100644
--- a/nixpkgs/pkgs/development/python-modules/chai/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/chai/default.nix
@@ -10,6 +10,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/nixpkgs/pkgs/development/python-modules/character-encoding-utils/default.nix b/nixpkgs/pkgs/development/python-modules/character-encoding-utils/default.nix
index dd0e3b60fe1f..a677d8999e37 100644
--- a/nixpkgs/pkgs/development/python-modules/character-encoding-utils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/character-encoding-utils/default.nix
@@ -1,40 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, pythonOlder
-, nix-update-script
-, hatch-vcs
-, hatchling
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  hatch-vcs,
+  hatchling,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "character-encoding-utils";
-  version = "0.0.6";
+  version = "0.0.8";
+  pyproject = true;
 
   disabled = pythonOlder "3.11";
 
   src = fetchPypi {
     pname = "character_encoding_utils";
     inherit version;
-    hash = "sha256-ugzWiSpa/xxlraVyVPTSq/uxPg11kOyePgb1cmzX3ug=";
+    hash = "sha256-UXX4L/x7fP37ZEFDCPc0KRNyx47xvwY0Jz+lfxzUulg=";
   };
 
-  format = "pyproject";
-
-  nativeBuildInputs = [
+  build-system = [
     hatch-vcs
     hatchling
   ];
 
-  checkInputs = [ pytestCheckHook ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  passthru.updateScript = nix-update-script { };
+  pythonImportsCheck = [ "character_encoding_utils" ];
 
   meta = {
-    homepage = "https://github.com/TakWolf/character-encoding-utils";
     description = "Some character encoding utils";
-    platforms = lib.platforms.all;
+    homepage = "https://github.com/TakWolf/character-encoding-utils";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ h7x4 ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/chart-studio/default.nix b/nixpkgs/pkgs/development/python-modules/chart-studio/default.nix
index 4f78d8728120..b61091ca69a9 100644
--- a/nixpkgs/pkgs/development/python-modules/chart-studio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/chart-studio/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "chart-studio";
-  version = "5.20.0";
+  version = "5.22.0";
   pyproject = true;
 
   # chart-studio was split from plotly
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "plotly";
     repo = "plotly.py";
     rev = "refs/tags/v${version}";
-    hash = "sha256-i//LKTNmoIrusBnpfSGc9cDijPxg/dY/7fumV3kfTAY=";
+    hash = "sha256-cEm0vLQ4PAVxvplqK+yayxLpNCvyfZtjZva0Bl2Sdfs=";
   };
 
   sourceRoot = "${src.name}/packages/python/chart-studio";
diff --git a/nixpkgs/pkgs/development/python-modules/cheroot/default.nix b/nixpkgs/pkgs/development/python-modules/cheroot/default.nix
index 602afd0f755f..72a85ffab1c2 100644
--- a/nixpkgs/pkgs/development/python-modules/cheroot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cheroot/default.nix
@@ -19,14 +19,14 @@
 
 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
diff --git a/nixpkgs/pkgs/development/python-modules/chromadb/default.nix b/nixpkgs/pkgs/development/python-modules/chromadb/default.nix
index 2042758efd8a..471b6111a93d 100644
--- a/nixpkgs/pkgs/development/python-modules/chromadb/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/chromadb/default.nix
@@ -132,6 +132,7 @@ buildPythonPackage rec {
   pytestFlagsArray = [ "-x" ];
 
   preCheck = ''
+    (($(ulimit -n) < 1024)) && ulimit -n 1024
     export HOME=$(mktemp -d)
   '';
 
diff --git a/nixpkgs/pkgs/development/python-modules/clarifai/default.nix b/nixpkgs/pkgs/development/python-modules/clarifai/default.nix
index b1085bdc5b99..3130098a6cca 100644
--- a/nixpkgs/pkgs/development/python-modules/clarifai/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/clarifai/default.nix
@@ -25,7 +25,7 @@
 
 buildPythonPackage rec {
   pname = "clarifai";
-  version = "10.3.1";
+  version = "10.3.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -34,7 +34,7 @@ buildPythonPackage rec {
     owner = "Clarifai";
     repo = "clarifai-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-KCJ1Ev0fgww0JU1tDp9X/A9EIcXQRaFKeA/MRNnp5ng=";
+    hash = "sha256-M0OrBqjNjrpxVM/A7NVqarcP8S+VqunYGI4C+Wis6UI=";
   };
 
   pythonRelaxDeps = [ "clarifai-grpc" ];
diff --git a/nixpkgs/pkgs/development/python-modules/claripy/default.nix b/nixpkgs/pkgs/development/python-modules/claripy/default.nix
index c10d32e6b189..d7e3079efdc3 100644
--- a/nixpkgs/pkgs/development/python-modules/claripy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/claripy/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "claripy";
-  version = "9.2.101";
+  version = "9.2.102";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "claripy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ecYyoFtCIsrlzcraqL8X4cZgqc243E9WXZix/70eksY=";
+    hash = "sha256-U7aN6MOptGjW61HDfZDM7Vit5G+rm1LujgHoo6oRX3s=";
   };
 
   # z3 does not provide a dist-info, so python-runtime-deps-check will fail
diff --git a/nixpkgs/pkgs/development/python-modules/cle/default.nix b/nixpkgs/pkgs/development/python-modules/cle/default.nix
index 4457c6586796..d1d719e370f8 100644
--- a/nixpkgs/pkgs/development/python-modules/cle/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cle/default.nix
@@ -18,14 +18,14 @@
 
 let
   # The binaries are following the argr projects release cycle
-  version = "9.2.101";
+  version = "9.2.102";
 
   # 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-6FVxlQ1MiJP2mtu4V/mPAyaeCRdBp/sk+u4fdFqxTyA=";
   };
 in
 buildPythonPackage rec {
@@ -39,7 +39,7 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "cle";
     rev = "refs/tags/v${version}";
-    hash = "sha256-cG9j3cMDwjm2DGvvgJgYfigf5e/61HKWFudgezE2zz8=";
+    hash = "sha256-BPKNrFBEKV8UuSdrl+HIgBqFClHTvRsGidz+X81bBLI=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/click-didyoumean/default.nix b/nixpkgs/pkgs/development/python-modules/click-didyoumean/default.nix
index 8c1bf6f26e94..110855c60a42 100644
--- a/nixpkgs/pkgs/development/python-modules/click-didyoumean/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/click-spinner/default.nix b/nixpkgs/pkgs/development/python-modules/click-spinner/default.nix
index 0c281c29ab4c..dd9ee1c021f2 100644
--- a/nixpkgs/pkgs/development/python-modules/click-spinner/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/click-spinner/default.nix
@@ -1,30 +1,48 @@
-{ 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; [ ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/cliff/default.nix b/nixpkgs/pkgs/development/python-modules/cliff/default.nix
index f36ccba9718f..5830b2ec1b8f 100644
--- a/nixpkgs/pkgs/development/python-modules/cliff/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cliff/default.nix
@@ -17,12 +17,12 @@
 
 buildPythonPackage rec {
   pname = "cliff";
-  version = "4.6.0";
+  version = "4.7.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-LzjOi9HqSVjWbxWwZqxH5l1h9gC5MZuSHhLp6cvNmdA=";
+    hash = "sha256-bKRfjfUZu8ByLGEEnee35EKkZfp/P1Urltc1+ib9WyY=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/cloudflare/default.nix b/nixpkgs/pkgs/development/python-modules/cloudflare/default.nix
index 1bfdafaba5a4..34ca3c05bdcd 100644
--- a/nixpkgs/pkgs/development/python-modules/cloudflare/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cloudflare/default.nix
@@ -12,14 +12,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/cnvkit/default.nix b/nixpkgs/pkgs/development/python-modules/cnvkit/default.nix
index 35195b1db529..f705cfbeff9f 100644
--- a/nixpkgs/pkgs/development/python-modules/cnvkit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cnvkit/default.nix
@@ -22,7 +22,7 @@
 
 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 = ''
diff --git a/nixpkgs/pkgs/development/python-modules/coffea/default.nix b/nixpkgs/pkgs/development/python-modules/coffea/default.nix
index 86090e3b2556..2f390d3bab16 100644
--- a/nixpkgs/pkgs/development/python-modules/coffea/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/coffea/default.nix
@@ -4,6 +4,7 @@
 , fetchFromGitHub
 , hatchling
 , hatch-vcs
+, aiohttp
 , awkward
 , cachetools
 , cloudpickle
@@ -21,6 +22,7 @@
 , packaging
 , pandas
 , pyarrow
+, requests
 , scipy
 , toml
 , tqdm
@@ -32,7 +34,7 @@
 
 buildPythonPackage rec {
   pname = "coffea";
-  version = "2024.4.1";
+  version = "2024.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -41,20 +43,16 @@ buildPythonPackage rec {
     owner = "CoffeaTeam";
     repo = "coffea";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Iu1GHnLUqdhYO7hoHaf+O/S6KO0P+dvl0wgfRA5vtGI=";
+    hash = "sha256-FHE7/VL0mnf0eBPzCsrr8ISr7OmfFvI9xuV0CPa7JdU=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace-fail "numba>=0.58.1" "numba"
-  '';
-
-  nativeBuildInputs = [
+  build-system = [
     hatchling
     hatch-vcs
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    aiohttp
     awkward
     cachetools
     cloudpickle
@@ -72,6 +70,7 @@ buildPythonPackage rec {
     packaging
     pandas
     pyarrow
+    requests
     scipy
     toml
     tqdm
@@ -88,6 +87,14 @@ buildPythonPackage rec {
     "coffea"
   ];
 
+  disabledTests = [
+    # Requires internet access
+    # https://github.com/CoffeaTeam/coffea/issues/1094
+    "test_lumimask"
+  ];
+
+  __darwinAllowLocalNetworking = true;
+
   meta = with lib; {
     description = "Basic tools and wrappers for enabling not-too-alien syntax when running columnar Collider HEP analysis";
     homepage = "https://github.com/CoffeaTeam/coffea";
diff --git a/nixpkgs/pkgs/development/python-modules/cohere/default.nix b/nixpkgs/pkgs/development/python-modules/cohere/default.nix
index 26deb98e3d45..73af79e3c589 100644
--- a/nixpkgs/pkgs/development/python-modules/cohere/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cohere/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "cohere";
-  version = "5.3.3";
+  version = "5.3.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-+/WcC6sN7U0oCR+gwZOhFtgwPEwLCaQnId2KEjDqJ8M=";
+    hash = "sha256-tFoshbAl3RU2fWm/knSN5KMOyCq7Swj6UwG3LokFH+I=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/comicon/default.nix b/nixpkgs/pkgs/development/python-modules/comicon/default.nix
index 04382d3ee340..c13234b85d28 100644
--- a/nixpkgs/pkgs/development/python-modules/comicon/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/comicon/default.nix
@@ -3,22 +3,25 @@
 , fetchFromGitHub
 , poetry-core
 , pythonRelaxDepsHook
+, pythonOlder
 , ebooklib
 , lxml
 , pillow
 , pypdf
+, python-slugify
 }:
 
 buildPythonPackage rec {
   pname = "comicon";
-  version = "1.0.1";
+  version = "1.1.0";
   pyproject = true;
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "potatoeggy";
     repo = "comicon";
     rev = "v${version}";
-    hash = "sha256-e9YEr8IwttMlj6FOxk+/kw79qiF1N8/e2qusfw3WH00=";
+    hash = "sha256-VP4n2pWXHge2gJ67O2nErJ30gI0vaAMn0VOpX8sLkfs=";
   };
 
   nativeBuildInputs = [
@@ -27,8 +30,7 @@ buildPythonPackage rec {
   ];
 
   pythonRelaxDeps = [
-    "lxml"
-    "pillow"
+    "pypdf"
   ];
 
   propagatedBuildInputs = [
@@ -36,6 +38,7 @@ buildPythonPackage rec {
     lxml
     pillow
     pypdf
+    python-slugify
   ];
 
   pythonImportsCheck = [ "comicon" ];
diff --git a/nixpkgs/pkgs/development/python-modules/command-runner/default.nix b/nixpkgs/pkgs/development/python-modules/command-runner/default.nix
index fb8fd94f8030..f50e32abd5f3 100644
--- a/nixpkgs/pkgs/development/python-modules/command-runner/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/command-runner/default.nix
@@ -1,17 +1,36 @@
-{ lib, buildPythonPackage, fetchPypi, psutil }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  psutil,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "command-runner";
   version = "1.6.0";
-  format = "setuptools";
+  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-QzqkcF2/YExK/dz+b0Uk0Af/rAXRMuRIeEynyFgDql8=";
   };
 
-  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 +38,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/nixpkgs/pkgs/development/python-modules/conda/default.nix b/nixpkgs/pkgs/development/python-modules/conda/default.nix
index e2ec8bd2d46e..adebce0b2377 100644
--- a/nixpkgs/pkgs/development/python-modules/conda/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/conda/default.nix
@@ -27,15 +27,15 @@
 }:
 buildPythonPackage rec {
   pname = "conda";
-  version = "24.1.2";
+  version = "24.4.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     inherit pname version;
     owner = "conda";
     repo = "conda";
-    rev = version;
-    hash = "sha256-L/Y7Bb3R5YqXbjTN4CRPFnkgymVLrxuFmjVzpvt28dE=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-LdoBlR5EFYd2mQIjOgp1MH3w6osfRfurPq+N5Y1iaFw=";
   };
 
   nativeBuildInputs = [ pythonRelaxDepsHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/contexttimer/default.nix b/nixpkgs/pkgs/development/python-modules/contexttimer/default.nix
index f908783fb0b6..422ac17fb3de 100644
--- a/nixpkgs/pkgs/development/python-modules/contexttimer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/contexttimer/default.nix
@@ -1,5 +1,6 @@
 { lib
 , buildPythonPackage
+, pythonAtLeast
 , fetchFromGitHub
 , mock
 , fetchpatch
@@ -11,6 +12,8 @@ buildPythonPackage rec {
   version = "unstable-2019-03-30";
   format = "setuptools";
 
+  disabled = pythonAtLeast "3.12";
+
   src = fetchFromGitHub {
     owner = "brouberol";
     repo = "contexttimer";
diff --git a/nixpkgs/pkgs/development/python-modules/contourpy/default.nix b/nixpkgs/pkgs/development/python-modules/contourpy/default.nix
index 5e12a4531b33..1f606a932d2e 100644
--- a/nixpkgs/pkgs/development/python-modules/contourpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/contourpy/default.nix
@@ -23,7 +23,7 @@
 , pytestCheckHook
 }:
 
-let countourpy = buildPythonPackage rec {
+let contourpy = buildPythonPackage rec {
   pname = "contourpy";
   version = "1.2.0";
   format = "pyproject";
@@ -61,7 +61,7 @@ let countourpy = buildPythonPackage rec {
   ];
 
   passthru.tests = {
-    check = countourpy.overridePythonAttrs (_: { doCheck = true; });
+    check = contourpy.overridePythonAttrs (_: { doCheck = true; });
   };
 
   pythonImportsCheck = [
@@ -76,4 +76,4 @@ let countourpy = buildPythonPackage rec {
     maintainers = with maintainers; [ ];
   };
 };
-in countourpy
+in contourpy
diff --git a/nixpkgs/pkgs/development/python-modules/controku/default.nix b/nixpkgs/pkgs/development/python-modules/controku/default.nix
index e2dd1d32b76a..80c4505175f2 100644
--- a/nixpkgs/pkgs/development/python-modules/controku/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/controku/default.nix
@@ -8,7 +8,7 @@
 , pygobject3
 , gobject-introspection
 , gtk3
-, wrapGAppsHook
+, wrapGAppsHook3
 , buildApplication ? false
 }:
 
@@ -28,7 +28,7 @@ python3Packages.buildPythonPackage rec {
     setuptools
   ] ++ lib.optionals buildApplication [
     gobject-introspection
-    wrapGAppsHook
+    wrapGAppsHook3
   ];
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/coordinates/default.nix b/nixpkgs/pkgs/development/python-modules/coordinates/default.nix
index e699e1b9a015..454a2b7083cb 100644
--- a/nixpkgs/pkgs/development/python-modules/coordinates/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/coordinates/default.nix
@@ -1,33 +1,37 @@
-{ 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 = [ ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/cornice/default.nix b/nixpkgs/pkgs/development/python-modules/cornice/default.nix
index ff6ede5dcf20..6484e549daf7 100644
--- a/nixpkgs/pkgs/development/python-modules/cornice/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cornice/default.nix
@@ -1,26 +1,42 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
+, setuptools
+, setuptools-scm
 , pyramid
-, simplejson
-, six
-, venusian
+, 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/nixpkgs/pkgs/development/python-modules/courlan/default.nix b/nixpkgs/pkgs/development/python-modules/courlan/default.nix
index bd73aad1977d..fd2cfc01b6e8 100644
--- a/nixpkgs/pkgs/development/python-modules/courlan/default.nix
+++ b/nixpkgs/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.1.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-PDVRHDZSXLL5Qc1nCbejp0LtlfC55WyX7sDBb9wDUYM=";
+    hash = "sha256-1wZoQzTxi+StofvVfyaArfADZkj22ECFL3pIItOt/Y0=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/coverage/default.nix b/nixpkgs/pkgs/development/python-modules/coverage/default.nix
index 4e4c86ae1063..43919f97fc2f 100644
--- a/nixpkgs/pkgs/development/python-modules/coverage/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/coverage/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "coverage";
-  version = "7.4.3";
+  version = "7.4.4";
   pyproject = true;
 
   # uses f strings
@@ -16,7 +16,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-J29gd6XGFEekjRM+0T51nAnmKv8NyEJ0po3BhmAQTVI=";
+    hash = "sha256-yQHfg9CXZJ4lfoA74iWSrt/VGC8Hs8yH1kC7ua/VD0k=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/craft-application/default.nix b/nixpkgs/pkgs/development/python-modules/craft-application/default.nix
index 03753c8c35b8..998be770d518 100644
--- a/nixpkgs/pkgs/development/python-modules/craft-application/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/craft-application/default.nix
@@ -27,7 +27,7 @@
 
 buildPythonPackage rec {
   pname = "craft-application";
-  version = "2.6.1";
+  version = "2.6.3";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -36,7 +36,7 @@ buildPythonPackage rec {
     owner = "canonical";
     repo = "craft-application";
     rev = "refs/tags/${version}";
-    hash = "sha256-mWXEc54JsZAl6KD33RF8juzDhFheQOLviJbM1B8RPSo=";
+    hash = "sha256-ZhZoR8O5oxcF8+zzihiIbiC/j3AkDL7AjaJSlZ0N48s=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/cramjam/default.nix b/nixpkgs/pkgs/development/python-modules/cramjam/default.nix
index 7a799429907e..e61e75da117f 100644
--- a/nixpkgs/pkgs/development/python-modules/cramjam/default.nix
+++ b/nixpkgs/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";
@@ -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/nixpkgs/pkgs/development/python-modules/croniter/default.nix b/nixpkgs/pkgs/development/python-modules/croniter/default.nix
index 8db83b619969..86786baa2ee8 100644
--- a/nixpkgs/pkgs/development/python-modules/croniter/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/croniter/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "croniter";
-  version = "2.0.3";
+  version = "2.0.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-KHY605xAThWRQIdPCAEM/YoY9MKnzqHOc+lQakOAz8E=";
+    hash = "sha256-8fjKCvZCEvvpmxvuEl7lobU6nBtDOWjYvKiBe3nSN/M=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/cryptacular/default.nix b/nixpkgs/pkgs/development/python-modules/cryptacular/default.nix
deleted file mode 100644
index 977de2396f2c..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/development/python-modules/cryptodatahub/default.nix b/nixpkgs/pkgs/development/python-modules/cryptodatahub/default.nix
index e19a4137e4f3..0a42e56d405a 100644
--- a/nixpkgs/pkgs/development/python-modules/cryptodatahub/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cryptodatahub/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "cryptodatahub";
-  version = "0.12.2";
+  version = "0.12.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -25,19 +25,19 @@ buildPythonPackage rec {
     owner = "coroner";
     repo = "cryptodatahub";
     rev = "refs/tags/v${version}";
-    hash = "sha256-zVHHBQYcl26zTtXPAs/AgKOojKQORu08rpkfY0l1zjM=";
+    hash = "sha256-+IGzXYSaeZjN5AxBu7jXgrnGtrtaSveFiVeNQRBZMNg=";
   };
 
   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 = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     asn1crypto
     attrs
     pathlib2
diff --git a/nixpkgs/pkgs/development/python-modules/cryptoparser/default.nix b/nixpkgs/pkgs/development/python-modules/cryptoparser/default.nix
index fc18fadc3a3a..61efe59f0637 100644
--- a/nixpkgs/pkgs/development/python-modules/cryptoparser/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cryptoparser/default.nix
@@ -1,36 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, attrs
-, asn1crypto
-, cryptodatahub
-, python-dateutil
-, urllib3
-, pytestCheckHook
+{
+  lib,
+  asn1crypto,
+  attrs,
+  buildPythonPackage,
+  cryptodatahub,
+  fetchPypi,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
+  unittestCheckHook,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "cryptoparser";
-  version = "0.12.3";
+  version = "0.12.4";
   pyproject = true;
 
+  disabled = pythonOlder "3.7";
+
   src = fetchPypi {
-    pname = "CryptoParser";
-    inherit version;
-    hash = "sha256-1A0VEpUPsYtEu2aT+ldt/Z/PtV8lvD+9jSx75yGB6Ao=";
+    inherit pname version;
+    hash = "sha256-y5rpc0tn5JJQr4xdRUJbsq8XT/YqqJqZr3CXjqN7k7I=";
   };
 
   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 +40,7 @@ buildPythonPackage rec {
     urllib3
   ];
 
-  pythonImportsCheck = [
-    "cryptoparser"
-  ];
+  pythonImportsCheck = [ "cryptoparser" ];
 
   meta = with lib; {
     description = "Security protocol parser and generator";
diff --git a/nixpkgs/pkgs/development/python-modules/css-inline/Cargo.lock b/nixpkgs/pkgs/development/python-modules/css-inline/Cargo.lock
index 429622a63cb8..cbd1794e6994 100644
--- a/nixpkgs/pkgs/development/python-modules/css-inline/Cargo.lock
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/css-inline/default.nix b/nixpkgs/pkgs/development/python-modules/css-inline/default.nix
index 41caa34dedac..a265fcafeb97 100644
--- a/nixpkgs/pkgs/development/python-modules/css-inline/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/css-inline/default.nix
@@ -18,14 +18,14 @@
 
 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 +42,7 @@ buildPythonPackage rec {
       ln -s ${./Cargo.lock} Cargo.lock
     '';
     name = "${pname}-${version}";
-    hash = "sha256-noYBSwCfdpuwb55toyx4K/16Z4A0NWjnMuzwTi5g8AU=";
+    hash = "sha256-ogzj8JxiFX2VWEeEnKACycd2Bud9VUpLuF4h35eUls0=";
   };
 
   nativeBuildInputs = [
@@ -67,6 +67,7 @@ buildPythonPackage rec {
 
   disabledTests = [
     # fails to connect to local server
+    "test_cache"
     "test_remote_stylesheet"
   ] ++ lib.optionals (stdenv.isDarwin) [
     # pyo3_runtime.PanicException: event loop thread panicked
diff --git a/nixpkgs/pkgs/development/python-modules/curl-cffi/default.nix b/nixpkgs/pkgs/development/python-modules/curl-cffi/default.nix
new file mode 100644
index 000000000000..00b87dff252e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/curl-cffi/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, curl-impersonate-chrome
+, cffi
+, certifi
+}:
+
+buildPythonPackage rec {
+  pname = "curl-cffi";
+  version = "0.6.4";
+
+  src = fetchFromGitHub {
+    owner = "yifeikong";
+    repo = "curl_cffi";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-bNBpZAIdfub2osByo827RBw/gouCmNt8uVN0y1KdcUk=";
+  };
+
+  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/nixpkgs/pkgs/development/python-modules/curl-cffi/use-system-libs.patch b/nixpkgs/pkgs/development/python-modules/curl-cffi/use-system-libs.patch
new file mode 100644
index 000000000000..1d044873e461
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/customtkinter/default.nix b/nixpkgs/pkgs/development/python-modules/customtkinter/default.nix
new file mode 100644
index 000000000000..2aa4364816b7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/customtkinter/default.nix
@@ -0,0 +1,53 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchPypi,
+  setuptools,
+  wheel,
+  tkinter,
+  darkdetect,
+}:
+let
+  pname = "customtkinter";
+  version = "5.2.2";
+in
+buildPythonPackage {
+  inherit pname version;
+  pyproject = true;
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-/Y2zuvqWHJgu5gMNuoC0wuJYWGMHVrUTmG2xkRPY0gc=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+    wheel
+  ];
+  buildInputs = [ tkinter ];
+  propagatedBuildInputs = [ darkdetect ];
+
+  # No tests
+  doCheck = false;
+  pythonImportsCheck = [ "customtkinter" ];
+
+  meta = {
+    description = "A 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/nixpkgs/pkgs/development/python-modules/cvelib/default.nix b/nixpkgs/pkgs/development/python-modules/cvelib/default.nix
index c269c351c1da..b51d4ea6f64f 100644
--- a/nixpkgs/pkgs/development/python-modules/cvelib/default.nix
+++ b/nixpkgs/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.4.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-nj5bkep8jYJE1qh2zNxivjKOpHj93UZ8bU+qNs2On8s=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/cvxpy/default.nix b/nixpkgs/pkgs/development/python-modules/cvxpy/default.nix
index 16a5adbf1594..d3b057401eb0 100644
--- a/nixpkgs/pkgs/development/python-modules/cvxpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cvxpy/default.nix
@@ -1,7 +1,6 @@
 { lib
 , stdenv
 , buildPythonPackage
-, fetchpatch
 , clarabel
 , cvxopt
 , ecos
@@ -20,26 +19,16 @@
 
 buildPythonPackage rec {
   pname = "cvxpy";
-  version = "1.4.2";
+  version = "1.4.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-CjhqV4jb14t7IN0HFSTsY2yPpys2KOafGrxxTI+YEeU=";
+    hash = "sha256-sbB4yMBZI60Sjn2BSwvhwzesBSYqeLdXqOb5V2SK2VM=";
   };
 
-  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
diff --git a/nixpkgs/pkgs/development/python-modules/cyclonedx-python-lib/default.nix b/nixpkgs/pkgs/development/python-modules/cyclonedx-python-lib/default.nix
index 10cd64f83e62..4a2318693bec 100644
--- a/nixpkgs/pkgs/development/python-modules/cyclonedx-python-lib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cyclonedx-python-lib/default.nix
@@ -1,29 +1,30 @@
-{ 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,
+  pythonRelaxDepsHook,
+  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.3.4";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -32,15 +33,14 @@ buildPythonPackage rec {
     owner = "CycloneDX";
     repo = "cyclonedx-python-lib";
     rev = "refs/tags/v${version}";
-    hash = "sha256-PNacp16WZHNblFyA117hSL87IKGMrW0OYNXCSoBoO8Q=";
+    hash = "sha256-rFxCeQTCQSpg0LQYyOxhk150KOUyV9PXdXo1mOA0KPw=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     importlib-metadata
     license-expression
     packageurl-python
@@ -61,21 +61,15 @@ buildPythonPackage rec {
     xmldiff
   ];
 
-  pythonImportsCheck = [
-    "cyclonedx"
-  ];
+  pythonImportsCheck = [ "cyclonedx" ];
 
-  pythonRelaxDeps = [
-    "py-serializable"
-  ];
+  pythonRelaxDeps = [ "py-serializable" ];
 
   preCheck = ''
     export PYTHONPATH=tests''${PYTHONPATH+:$PYTHONPATH}
   '';
 
-  pytestFlagsArray = [
-    "tests/"
-  ];
+  pytestFlagsArray = [ "tests/" ];
 
   disabledTests = [
     # These tests require network access
diff --git a/nixpkgs/pkgs/development/python-modules/cypari2/default.nix b/nixpkgs/pkgs/development/python-modules/cypari2/default.nix
index 025692de1f74..315492e38ee3 100644
--- a/nixpkgs/pkgs/development/python-modules/cypari2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cypari2/default.nix
@@ -7,6 +7,9 @@
 , gmp
 , cython
 , cysignals
+
+# Reverse dependency
+, sage
 }:
 
 buildPythonPackage rec {
@@ -53,6 +56,8 @@ buildPythonPackage rec {
     make check
   '';
 
+  passthru.tests = { inherit sage; };
+
   meta = with lib; {
     description = "Cython bindings for PARI";
     license = licenses.gpl2Plus;
diff --git a/nixpkgs/pkgs/development/python-modules/cypherpunkpay/default.nix b/nixpkgs/pkgs/development/python-modules/cypherpunkpay/default.nix
index 9bf5e8fcd85d..4f562c00a444 100644
--- a/nixpkgs/pkgs/development/python-modules/cypherpunkpay/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cypherpunkpay/default.nix
@@ -44,6 +44,7 @@ buildPythonPackage rec {
     "pypng"
     "tzlocal"
     "yoyo-migrations"
+    "waitress"
   ];
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/cysignals/default.nix b/nixpkgs/pkgs/development/python-modules/cysignals/default.nix
index 62cc3dd30d8a..fc53c5c9f168 100644
--- a/nixpkgs/pkgs/development/python-modules/cysignals/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cysignals/default.nix
@@ -4,6 +4,9 @@
 , buildPythonPackage
 , cython
 , pariSupport ? true, pari # for interfacing with the PARI/GP signal handler
+
+# Reverse dependency
+, sage
 }:
 
 assert pariSupport -> pari != null;
@@ -46,6 +49,8 @@ buildPythonPackage rec {
 
   enableParallelBuilding = true;
 
+  passthru.tests = { inherit sage; };
+
   meta = with lib; {
     description = "Interrupt and signal handling for Cython";
     mainProgram = "cysignals-CSI";
diff --git a/nixpkgs/pkgs/development/python-modules/cython/default.nix b/nixpkgs/pkgs/development/python-modules/cython/default.nix
index 2062ae03863b..fecb9cad26ce 100644
--- a/nixpkgs/pkgs/development/python-modules/cython/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cython/default.nix
@@ -8,6 +8,9 @@
 , gdb
 , numpy
 , ncurses
+
+# Reverse dependency
+, sage
 }:
 
 let
@@ -24,13 +27,13 @@ let
 
 in buildPythonPackage rec {
   pname = "cython";
-  version = "3.0.9";
+  version = "3.0.10";
   pyproject = true;
 
   src = fetchPypi {
     pname = "Cython";
     inherit version;
-    hash = "sha256-otNU8FnR8FXTTPqmLFtovHisLOq2QHFI1H+1CM87pPM=";
+    hash = "sha256-3MlnOTMfuFTc9QP5RgdXbP6EiAZsYcpQ39VYNvEy3pk=";
   };
 
   build-system = [
@@ -57,6 +60,8 @@ in buildPythonPackage rec {
   doCheck = false;
   # doCheck = !stdenv.isDarwin;
 
+  passthru.tests = { inherit sage; };
+
   # force regeneration of generated code in source distributions
   # https://github.com/cython/cython/issues/5089
   setupHook = ./setup-hook.sh;
diff --git a/nixpkgs/pkgs/development/python-modules/dash/default.nix b/nixpkgs/pkgs/development/python-modules/dash/default.nix
index 89601f3f482d..61fbeb9ae6b7 100644
--- a/nixpkgs/pkgs/development/python-modules/dash/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dash/default.nix
@@ -36,7 +36,7 @@
 
 buildPythonPackage rec {
   pname = "dash";
-  version = "2.16.1";
+  version = "2.17.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -45,7 +45,7 @@ buildPythonPackage rec {
     owner = "plotly";
     repo = "dash";
     rev = "refs/tags/v${version}";
-    hash = "sha256-IPyGQXrC2FTTSIC4IFGwKTceyzPYAe4jwDoO5C9YeF0=";
+    hash = "sha256-45nSQ3N7VcPsXthmMj3gMWFPi/i9z0peI1Wc6fUT7So=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/dask-awkward/default.nix b/nixpkgs/pkgs/development/python-modules/dask-awkward/default.nix
index e24b06a23b68..26f2c2bb5191 100644
--- a/nixpkgs/pkgs/development/python-modules/dask-awkward/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dask-awkward/default.nix
@@ -77,6 +77,8 @@ buildPythonPackage rec {
     "test_basic_root_works"
   ];
 
+  __darwinAllowLocalNetworking = true;
+
   meta = with lib; {
     description = "Native Dask collection for awkward arrays, and the library to use it";
     homepage = "https://github.com/dask-contrib/dask-awkward";
diff --git a/nixpkgs/pkgs/development/python-modules/dask-expr/default.nix b/nixpkgs/pkgs/development/python-modules/dask-expr/default.nix
index 68dca5fe42fe..657d588931e7 100644
--- a/nixpkgs/pkgs/development/python-modules/dask-expr/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dask-expr/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "dask-expr";
-  version = "1.0.12";
+  version = "1.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "dask";
     repo = "dask-expr";
     rev = "refs/tags/v${version}";
-    hash = "sha256-B/BkLOZhvUyjinaFKp0ecUfzvLb5S90q+YHmJwS6WSQ=";
+    hash = "sha256-yVwaOOjxHVxAhFlEENnjpX8LbJs9MW0OOmwAH5RhPgE=";
   };
 
   postPatch = ''
@@ -51,6 +51,8 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  __darwinAllowLocalNetworking = true;
+
   meta = with lib; {
     description = "";
     homepage = "https://github.com/dask/dask-expr";
diff --git a/nixpkgs/pkgs/development/python-modules/dask-glm/default.nix b/nixpkgs/pkgs/development/python-modules/dask-glm/default.nix
index dd5cfe0d2981..15a7df7fe029 100644
--- a/nixpkgs/pkgs/development/python-modules/dask-glm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dask-glm/default.nix
@@ -59,6 +59,8 @@ buildPythonPackage rec {
     "test_determinism_distributed"
   ];
 
+  __darwinAllowLocalNetworking = true;
+
   meta = with lib; {
     description = "Generalized Linear Models with Dask";
     homepage = "https://github.com/dask/dask-glm/";
diff --git a/nixpkgs/pkgs/development/python-modules/dask-jobqueue/default.nix b/nixpkgs/pkgs/development/python-modules/dask-jobqueue/default.nix
index dc668ea2639a..69ef4a56f962 100644
--- a/nixpkgs/pkgs/development/python-modules/dask-jobqueue/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dask-jobqueue/default.nix
@@ -8,6 +8,7 @@
 , fetchPypi
 , pytest-asyncio
 , pytestCheckHook
+, pythonAtLeast
 , pythonOlder
 }:
 
@@ -16,7 +17,8 @@ buildPythonPackage rec {
   version = "0.8.5";
   format = "setuptools";
 
-  disabled = pythonOlder "3.8";
+  # Python 3.12 support should be added in 0.8.6
+  disabled = pythonOlder "3.8" || pythonAtLeast "3.12";
 
   src = fetchPypi {
     inherit pname version;
diff --git a/nixpkgs/pkgs/development/python-modules/dask-ml/default.nix b/nixpkgs/pkgs/development/python-modules/dask-ml/default.nix
index 3cb7ed9618b1..9c19a072ee58 100644
--- a/nixpkgs/pkgs/development/python-modules/dask-ml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dask-ml/default.nix
@@ -1,37 +1,47 @@
 { lib
 , buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, hatch-vcs
+, hatchling
+, setuptools-scm
 , dask
+, dask-expr
 , dask-glm
 , distributed
-, fetchPypi
 , multipledispatch
 , numba
 , numpy
 , packaging
 , pandas
-, pythonOlder
 , scikit-learn
 , scipy
-, setuptools-scm
+, 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
@@ -44,9 +54,6 @@ buildPythonPackage rec {
   ] ++ dask.optional-dependencies.array
     ++ dask.optional-dependencies.dataframe;
 
-  # has non-standard build from source, and pypi doesn't include tests
-  doCheck = false;
-
   pythonImportsCheck = [
     "dask_ml"
     "dask_ml.naive_bayes"
@@ -54,10 +61,17 @@ buildPythonPackage rec {
     "dask_ml.utils"
   ];
 
+  nativeCheckInputs = [
+    pytest-mock
+    pytestCheckHook
+  ];
+
+  __darwinAllowLocalNetworking = true;
+
   meta = with lib; {
     description = "Scalable Machine Learn with Dask";
     homepage = "https://github.com/dask/dask-ml";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ GaetanLepage ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/dask-yarn/default.nix b/nixpkgs/pkgs/development/python-modules/dask-yarn/default.nix
index acea511b2495..c14f52aa43c9 100644
--- a/nixpkgs/pkgs/development/python-modules/dask-yarn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dask-yarn/default.nix
@@ -1,20 +1,22 @@
 { lib
-, stdenv
 , buildPythonPackage
-, dask
-, distributed
+, pythonOlder
 , fetchFromGitHub
 , fetchpatch
+, setuptools
+, versioneer
+, dask
+, distributed
 , grpcio
-, pytestCheckHook
-, pythonOlder
 , skein
+, pytestCheckHook
+, stdenv
 }:
 
 buildPythonPackage rec {
   pname = "dask-yarn";
   version = "0.9";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -33,9 +35,18 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
-    distributed
+  postPatch = ''
+    rm versioneer.py
+  '';
+
+  build-system = [
+    setuptools
+    versioneer
+  ];
+
+  dependencies = [
     dask
+    distributed
     grpcio
     skein
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/dask/default.nix b/nixpkgs/pkgs/development/python-modules/dask/default.nix
index 0327aebaaf84..8de709f446c9 100644
--- a/nixpkgs/pkgs/development/python-modules/dask/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dask/default.nix
@@ -39,7 +39,7 @@
 
 let self = buildPythonPackage rec {
   pname = "dask";
-  version = "2024.4.2";
+  version = "2024.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -48,7 +48,7 @@ let self = buildPythonPackage rec {
     owner = "dask";
     repo = "dask";
     rev = "refs/tags/${version}";
-    hash = "sha256-iD+diwctXaQlOpL0fjOiFoWVONtlMq7AonbC0vCmXc0=";
+    hash = "sha256-2tkY02Inhpo8upTjhen//EvsZwd93roPCID215NOxwQ=";
   };
 
   nativeBuildInputs = [
@@ -191,5 +191,6 @@ let self = buildPythonPackage rec {
     homepage = "https://dask.org/";
     changelog = "https://docs.dask.org/en/latest/changelog.html";
     license = licenses.bsd3;
+    maintainers = with maintainers; [ GaetanLepage ];
   };
 }; in self
diff --git a/nixpkgs/pkgs/development/python-modules/databricks-connect/default.nix b/nixpkgs/pkgs/development/python-modules/databricks-connect/default.nix
index 2e3132fb5b50..85e64fea7823 100644
--- a/nixpkgs/pkgs/development/python-modules/databricks-connect/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/databricks-connect/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "databricks-connect";
-  version = "11.3.26";
+  version = "11.3.33";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-YjUY4i8PtXc+fWcGjvnRbZkiINprKcS1K9HT5+86E8c=";
+    hash = "sha256-KcqJ2B2df85H/VIx4ToX0pJ7rYbjDRp3eR7jAFW67do=";
   };
 
   sourceRoot = ".";
diff --git a/nixpkgs/pkgs/development/python-modules/dataclasses-json/default.nix b/nixpkgs/pkgs/development/python-modules/dataclasses-json/default.nix
index 2718a88379c9..9c8c350185de 100644
--- a/nixpkgs/pkgs/development/python-modules/dataclasses-json/default.nix
+++ b/nixpkgs/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.6";
+  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-JpZwRln7QC0SO/+8xFxc6xrC+ZBFSHVQ9NJscAO+Lf8=";
   };
 
   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/nixpkgs/pkgs/development/python-modules/dataprep-ml/default.nix b/nixpkgs/pkgs/development/python-modules/dataprep-ml/default.nix
index 3bb919b6dc10..eef2f7f4f6fa 100644
--- a/nixpkgs/pkgs/development/python-modules/dataprep-ml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dataprep-ml/default.nix
@@ -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,7 +36,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "dataprep_ml";
     inherit version;
-    hash = "sha256-NYlKLdV2xZPODXpHvaFB8cRFTdCndl3UOd6bCfNbsZo=";
+    hash = "sha256-pZhHlNcQJLBww7ur2Z6Yb2IdbRsBtjzQAzfa4UzGKt4=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/development/python-modules/datasets/default.nix b/nixpkgs/pkgs/development/python-modules/datasets/default.nix
index 3555387b3ab1..0ff05992b016 100644
--- a/nixpkgs/pkgs/development/python-modules/datasets/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/datasets/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "datasets";
-  version = "2.18.0";
+  version = "2.19.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-m3x3/MCezA0WjYKBa2F12emMZdwLKi/9bFBf59A4qs8=";
   };
 
   # remove pyarrow<14.0.1 vulnerability fix
diff --git a/nixpkgs/pkgs/development/python-modules/datashader/default.nix b/nixpkgs/pkgs/development/python-modules/datashader/default.nix
index 899da93bfc5d..87ac07e6a838 100644
--- a/nixpkgs/pkgs/development/python-modules/datashader/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/datashader/default.nix
@@ -25,14 +25,14 @@
 
 buildPythonPackage rec {
   pname = "datashader";
-  version = "0.16.0";
+  version = "0.16.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-7UwRGVdXjcs/z/ly2VT3dYba/XGnNF/VzQadn7BQ0NE=";
+    hash = "sha256-Wy8d1Eje/OIG7MFumWD+k3jzIwfqH8sMKYwiwU9YyIE=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/datauri/default.nix b/nixpkgs/pkgs/development/python-modules/datauri/default.nix
index d5ed9bf0525e..58fec0584968 100644
--- a/nixpkgs/pkgs/development/python-modules/datauri/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/datauri/default.nix
@@ -1,43 +1,48 @@
-{ 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.1.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "fcurella";
     repo = "python-datauri";
     rev = "refs/tags/v${version}";
-    hash = "sha256-k4tlWRasGa2oQykCD9QJl65UAoZQMJVdyCfqlUBBgqY=";
+    hash = "sha256-+R1J4IjJ+Vf/+V2kiZyIyAqTAgGLTMJjGePyVRuO5rs=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "datauri"
-  ];
+  dependencies = [ typing-extensions ];
 
   nativeCheckInputs = [
     pydantic
     pytestCheckHook
   ];
 
+  pythonImportsCheck = [ "datauri" ];
+
   disabledTests = [
-    "test_pydantic" # incompatible with pydantic v2
+    # Test is incompatible with pydantic >=2
+    "test_pydantic"
   ];
 
   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/nixpkgs/pkgs/development/python-modules/dbt-bigquery/default.nix b/nixpkgs/pkgs/development/python-modules/dbt-bigquery/default.nix
index d6401c6502a0..2ad6e8b1a42e 100644
--- a/nixpkgs/pkgs/development/python-modules/dbt-bigquery/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dbt-bigquery/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "dbt-bigquery";
-  version = "1.7.7";
+  version = "1.7.8";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "dbt-labs";
     repo = "dbt-bigquery";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+UF49ReSxKQ8ouutOv1b9JcU/6CNk7Yw8f1/tlRvwnU=";
+    hash = "sha256-Uc842hkrCYDR92ACDtNW+Iqq5l54CSp40D1tOL7wt8o=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/development/python-modules/dbt-core/default.nix b/nixpkgs/pkgs/development/python-modules/dbt-core/default.nix
index e440fb6919b1..db61698ebfaa 100644
--- a/nixpkgs/pkgs/development/python-modules/dbt-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dbt-core/default.nix
@@ -33,7 +33,7 @@
 
 buildPythonPackage rec {
   pname = "dbt-core";
-  version = "1.7.12";
+  version = "1.7.13";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -42,7 +42,7 @@ buildPythonPackage rec {
     owner = "dbt-labs";
     repo = "dbt-core";
     rev = "refs/tags/v${version}";
-    hash = "sha256-mkqtlItr6oRsF5S+CPw4fAP/INJ2yw3vcKxEYeB3ItI=";
+    hash = "sha256-uai1ihdmJpFkQqpx7edWiwwy0ek4dbclR/2OuiNbaXM=";
   };
 
   sourceRoot = "${src.name}/core";
diff --git a/nixpkgs/pkgs/development/python-modules/dbus-fast/default.nix b/nixpkgs/pkgs/development/python-modules/dbus-fast/default.nix
index d4db4490415b..736605ebece8 100644
--- a/nixpkgs/pkgs/development/python-modules/dbus-fast/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dbus-fast/default.nix
@@ -1,44 +1,43 @@
-{ lib
-, async-timeout
-, buildPythonPackage
-, cython
-, fetchFromGitHub
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  async-timeout,
+  buildPythonPackage,
+  cython,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "dbus-fast";
-  version = "2.21.1";
-  format = "pyproject";
+  version = "2.21.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "Bluetooth-Devices";
-    repo = pname;
+    repo = "dbus-fast";
     rev = "refs/tags/v${version}";
-    hash = "sha256-L3PZjxbcVfqWktWuN5l8JxfR1GyxuA+1ZtO/W2YqFZA=";
+    hash = "sha256-CLv8pNs6P2XRNK5wjo2SbRUuasJVXvd9LFABOwjDA9k=";
   };
 
   # 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 = [
     pytest-asyncio
diff --git a/nixpkgs/pkgs/development/python-modules/dbus-python/default.nix b/nixpkgs/pkgs/development/python-modules/dbus-python/default.nix
index be7504e5dc37..4e6f67f0a8ec 100644
--- a/nixpkgs/pkgs/development/python-modules/dbus-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dbus-python/default.nix
@@ -1,47 +1,99 @@
-{ lib, stdenv, fetchPypi, buildPythonPackage, python, pkg-config, dbus, dbus-glib, isPyPy
-, ncurses, pygobject3, isPy3k, pythonAtLeast }:
+{ lib
+, fetchPypi
+, buildPythonPackage
+, fetchpatch
+, isPyPy
+, python
+
+# build-system
+, meson
+, meson-python
+, pkg-config
+
+# native dependencies
+, dbus
+, dbus-glib
+}:
 
 buildPythonPackage rec {
   pname = "dbus-python";
-  version = "1.2.18";
+  version = "1.3.2";
+  pyproject = true;
 
-  # ModuleNotFoundError: No module named 'distutils'
-  disabled = isPyPy || pythonAtLeast "3.12";
-  format = "other";
-  outputs = [ "out" "dev" ];
+  disabled = isPyPy;
+
+  outputs = [
+    "out"
+    "dev"
+  ];
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0q3jrw515z98mqdk9x822nd95rky455zz9876f1nqna5igkd3gcj";
+    hash = "sha256-rWeBkwhhi1BpU3viN/jmjKHH/Mle5KEh/mhFsUGCSPg=";
   };
 
   patches = [
-    ./fix-includedir.patch
+    # 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=";
+    })
   ];
 
-  preConfigure = lib.optionalString (lib.versionAtLeast stdenv.hostPlatform.darwinMinVersion "11" && stdenv.isDarwin) ''
-    MACOSX_DEPLOYMENT_TARGET=10.16
+  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
   '';
 
-  configureFlags = [
-    "PYTHON=${python.pythonOnBuildForHost.interpreter}"
+  nativeBuildInputs = [
+    meson
+    meson-python
+    pkg-config
   ];
 
-  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;
+  buildInputs = [
+    dbus
+    dbus-glib
+  ];
 
-  doCheck = isPy3k;
-  nativeCheckInputs = [ dbus.out pygobject3 ];
+  pypaBuildFlags = [
+    # Don't discard meson build directory, still needed for tests!
+    "-Cbuild-dir=_meson-build"
+  ];
 
+  # workaround bug in meson-python
+  # https://github.com/mesonbuild/meson-python/issues/240
   postInstall = ''
-    cp -r dbus_python.egg-info $out/${python.sitePackages}/
+    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 = with maintainers; [ ];
diff --git a/nixpkgs/pkgs/development/python-modules/dbus-python/fix-includedir.patch b/nixpkgs/pkgs/development/python-modules/dbus-python/fix-includedir.patch
deleted file mode 100644
index e3bb0682b5c4..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/development/python-modules/dbutils/default.nix b/nixpkgs/pkgs/development/python-modules/dbutils/default.nix
index 570f770e7777..49d3d00c110a 100644
--- a/nixpkgs/pkgs/development/python-modules/dbutils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dbutils/default.nix
@@ -1,23 +1,28 @@
 { 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=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   nativeCheckInputs = [
     pytestCheckHook
   ];
@@ -26,10 +31,11 @@ buildPythonPackage rec {
     "dbutils"
   ];
 
-  meta = with lib; {
+  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/nixpkgs/pkgs/development/python-modules/dcmstack/default.nix b/nixpkgs/pkgs/development/python-modules/dcmstack/default.nix
index 8e7b74fc8dd3..fd84640e8d78 100644
--- a/nixpkgs/pkgs/development/python-modules/dcmstack/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/deebot-client/default.nix b/nixpkgs/pkgs/development/python-modules/deebot-client/default.nix
index 31c5b2d4e959..17edaa445de7 100644
--- a/nixpkgs/pkgs/development/python-modules/deebot-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/deebot-client/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "deebot-client";
-  version = "7.0.0";
+  version = "7.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.12";
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     owner = "DeebotUniverse";
     repo = "client.py";
     rev = "refs/tags/${version}";
-    hash = "sha256-RlLWC1TLjrwQ7t727WpjePJA1zGj4460Ioj6efm/jSw=";
+    hash = "sha256-5GALvd9p+ksxWqkfkSd07mPNzQSbdeGzrUjQU2nWs3g=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/desktop-notifier/default.nix b/nixpkgs/pkgs/development/python-modules/desktop-notifier/default.nix
index 708c971943ec..f406bcd4cc5b 100644
--- a/nixpkgs/pkgs/development/python-modules/desktop-notifier/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/desktop-notifier/default.nix
@@ -11,8 +11,8 @@
 
 buildPythonPackage rec {
   pname = "desktop-notifier";
-  version = "3.5.6";
-  format = "pyproject";
+  version = "4.0.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -20,14 +20,14 @@ buildPythonPackage rec {
     owner = "SamSchott";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-txUWRCWLQ6jWrdEJ/D5+CsflNad5Onr/wLycENri1z8=";
+    hash = "sha256-6FtxfY0vjCbCueeXdAXOy6XSjne4I7brQ5OvJ+Q1KsQ=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     packaging
   ] ++ lib.optionals stdenv.isLinux [
     dbus-next
diff --git a/nixpkgs/pkgs/development/python-modules/devito/default.nix b/nixpkgs/pkgs/development/python-modules/devito/default.nix
index 064899b8e78e..719bdf3aafb0 100644
--- a/nixpkgs/pkgs/development/python-modules/devito/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/devito/default.nix
@@ -15,7 +15,6 @@
 , nbval
 , psutil
 , py-cpuinfo
-, pyrevolve
 , pytest-xdist
 , pytestCheckHook
 , pythonOlder
@@ -26,7 +25,7 @@
 
 buildPythonPackage rec {
   pname = "devito";
-  version = "4.8.3";
+  version = "4.8.6";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -35,7 +34,7 @@ buildPythonPackage rec {
     owner = "devitocodes";
     repo = "devito";
     rev = "refs/tags/v${version}";
-    hash = "sha256-g9rRJF1JrZ6+s3tj4RZHuGOjt5LJjtK9I5CJmq4CJL4=";
+    hash = "sha256-unuJLp+zTyGpOk5O78xYbW6Zrzp60WyqgT9mf2YpTG4=";
   };
 
   pythonRemoveDeps = [
@@ -51,7 +50,7 @@ buildPythonPackage rec {
     pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     anytree
     cached-property
     cgen
@@ -62,7 +61,6 @@ buildPythonPackage rec {
     multidict
     psutil
     py-cpuinfo
-    pyrevolve
     scipy
     sympy
   ] ++ lib.optionals stdenv.cc.isClang [
@@ -99,6 +97,20 @@ buildPythonPackage rec {
     "test_setupWOverQ"
     "test_shortcuts"
     "test_subdomainset_mpi"
+    "test_subdomains_mpi"
+  ] ++ lib.optionals (stdenv.isLinux && stdenv.isAarch64) [
+    # FAILED tests/test_unexpansion.py::Test2Pass::test_v0 - assert False
+    "test_v0"
+  ] ++ lib.optionals stdenv.isDarwin [
+    # FAILED tests/test_caching.py::TestCaching::test_special_symbols - ValueError: not enough values to unpack (expected 3, got 2)
+    "test_special_symbols"
+
+    # FAILED tests/test_unexpansion.py::Test2Pass::test_v0 - codepy.CompileError: module compilation failed
+    "test_v0"
+  ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
+    # Numerical tests
+    "test_lm_fb"
+    "test_lm_ds"
   ];
 
   disabledTestPaths = [
@@ -109,6 +121,8 @@ buildPythonPackage rec {
     "tests/test_data.py"
     "tests/test_dse.py"
     "tests/test_gradient.py"
+  ] ++ lib.optionals ((stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin) [
+    "tests/test_dle.py"
   ];
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/diffusers/default.nix b/nixpkgs/pkgs/development/python-modules/diffusers/default.nix
index 39464efe47fd..19fe676abb64 100644
--- a/nixpkgs/pkgs/development/python-modules/diffusers/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/diffusers/default.nix
@@ -1,8 +1,9 @@
 { lib
 , stdenv
 , buildPythonPackage
-, fetchFromGitHub
 , pythonOlder
+, fetchFromGitHub
+, fetchpatch
 , writeText
 , setuptools
 , wheel
@@ -35,6 +36,7 @@
 , sentencepiece
 , torchsde
 , transformers
+, pythonAtLeast
 }:
 
 buildPythonPackage rec {
@@ -51,12 +53,26 @@ buildPythonPackage rec {
     hash = "sha256-aRnbU3jN40xaCsoMFyRt1XB+hyIYMJP2b/T1yZho90c=";
   };
 
-  nativeBuildInputs = [
+  patches = [
+    # fix python3.12 build
+    (fetchpatch { # https://github.com/huggingface/diffusers/pull/7455
+      name = "001-remove-distutils.patch";
+      url = "https://github.com/huggingface/diffusers/compare/363699044e365ef977a7646b500402fa585e1b6b...3c67864c5acb30413911730b1ed4a9ad47c0a15c.patch";
+      hash = "sha256-Qyvyp1GyTVXN+A+lA1r2hf887ubTtaUknbKd4r46NZQ=";
+    })
+    (fetchpatch { # https://github.com/huggingface/diffusers/pull/7461
+      name = "002-fix-removed-distutils.patch";
+      url = "https://github.com/huggingface/diffusers/commit/efbbbc38e436a1abb1df41a6eccfd6f9f0333f97.patch";
+      hash = "sha256-scdtpX1RYFFEDHcaMb+gDZSsPafkvnIO/wQlpzrQhLA=";
+    })
+  ];
+
+  build-system = [
     setuptools
     wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     filelock
     huggingface-hub
     importlib-metadata
@@ -143,6 +159,10 @@ buildPythonPackage rec {
     "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; {
diff --git a/nixpkgs/pkgs/development/python-modules/dirigera/default.nix b/nixpkgs/pkgs/development/python-modules/dirigera/default.nix
index 36789741f83a..7b5f5d536601 100644
--- a/nixpkgs/pkgs/development/python-modules/dirigera/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dirigera/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "dirigera";
-  version = "1.1.6";
+  version = "1.1.7";
   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-KAwXpcs0EvmaxBVgZ7TlT1hDI0m7f8hJigUTluVATsw=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/dissect-archive/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-archive/default.nix
new file mode 100644
index 000000000000..864e6eb1ff18
--- /dev/null
+++ b/nixpkgs/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.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "fox-it";
+    repo = "dissect.archive";
+    rev = "refs/tags/${version}";
+    hash = "sha256-DUAJUbG3k6sbO7mqvNzQQns+4l8XHDUh0xZ/RA5LWEY=";
+  };
+
+  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/nixpkgs/pkgs/development/python-modules/dissect-btrfs/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-btrfs/default.nix
index 8b492ae66701..72f5fd96695b 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-btrfs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dissect-btrfs/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "dissect-btrfs";
-  version = "1.2";
+  version = "1.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.btrfs";
     rev = "refs/tags/${version}";
-    hash = "sha256-nWgeChHHCAjD5I98h2/1HrO5688aZUM4j2PJiD1xP0g=";
+    hash = "sha256-Xn7y9om/IuCaPR77lSuC0peF5umIxu2BS9esMPXsv+Y=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/dissect-cim/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-cim/default.nix
index c9aef3e961ec..9073873f148d 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-cim/default.nix
+++ b/nixpkgs/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.9";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.cim";
     rev = "refs/tags/${version}";
-    hash = "sha256-NbGI6d1C3X7PbTsbDSCS4AUK6ueCBOuQDTNhkULrLYc=";
+    hash = "sha256-UZ4mlshaKqZKoysvnGfcaoMOrMwfsN/qOJ8hrpMcQL0=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/dissect-clfs/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-clfs/default.nix
index 1007dcc07c62..287896b2448d 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-clfs/default.nix
+++ b/nixpkgs/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.8";
   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-C1a85OLMkj0vjnRpenfC/xyxJ1TjYSlHPOq0jIrA/Ng=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/dissect-cobaltstrike/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-cobaltstrike/default.nix
index 7b25a817aa64..3924f0c5164b 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-cobaltstrike/default.nix
+++ b/nixpkgs/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";
diff --git a/nixpkgs/pkgs/development/python-modules/dissect-cstruct/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-cstruct/default.nix
index a1ed699aef37..04a64d8a9e7b 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-cstruct/default.nix
+++ b/nixpkgs/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 = "3.14";
   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-Et6Pb7iRVlxcrR4gZf+5h7mVikf7CyDd7N+q4TH18vg=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/dissect-esedb/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-esedb/default.nix
index 0a6810749b6d..5784939b2ca2 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-esedb/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dissect-esedb/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "dissect-esedb";
-  version = "3.12";
+  version = "3.13";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.esedb";
     rev = "refs/tags/${version}";
-    hash = "sha256-s3ZIK4ZtHU5B3f9ojVTC2Aqn3G7CosTvdV6U3cwEatY=";
+    hash = "sha256-GdHMKLO44hR+H3fQ9h3t6sL8ACMwIVeg4nrg9brYmsU=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/dissect-etl/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-etl/default.nix
index c7b9236c75c3..10ceff3e6eef 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-etl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dissect-etl/default.nix
@@ -1,17 +1,18 @@
-{ 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-etl";
-  version = "3.8";
+  version = "3.9";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -20,26 +21,22 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.etl";
     rev = "refs/tags/${version}";
-    hash = "sha256-yGpDZAaw11Sr5OPWxbY/NpZAV3jJUIgtTgDykCvYDtM=";
+    hash = "sha256-gLxBVHhtQS4Ep64H4jvndGyjUW1cQ68f346utVI9eC4=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     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/nixpkgs/pkgs/development/python-modules/dissect-eventlog/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-eventlog/default.nix
index d8ace9285434..a57ddd56cc91 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-eventlog/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dissect-eventlog/default.nix
@@ -11,16 +11,16 @@
 
 buildPythonPackage rec {
   pname = "dissect-eventlog";
-  version = "3.7";
+  version = "3.8";
   format = "pyproject";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.eventlog";
     rev = "refs/tags/${version}";
-    hash = "sha256-YiWW1olaIKoBfiZfr4TfIEsnj/C4cmn6sYosvjeiEfM=";
+    hash = "sha256-MvCHeeuwwE/EOK5rh5vtwTtMrSO/BtfFenQZn5VTgb0=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/dissect-evidence/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-evidence/default.nix
index d8f9823634f4..6f617db679a3 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-evidence/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dissect-evidence/default.nix
@@ -1,17 +1,18 @@
-{ 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.9";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -20,26 +21,22 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.evidence";
     rev = "refs/tags/${version}";
-    hash = "sha256-/zmMPSVR6F6SIU7xuotErmU2SsKEV43rs/4oTVKAWz0=";
+    hash = "sha256-0WLX5mD+opJoRdnk4w8mMySn41473PcRod4YxEk3S2s=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/dissect-executable/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-executable/default.nix
index 8511b2df9448..c8d9c456fa99 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-executable/default.nix
+++ b/nixpkgs/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.6";
   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-b8xPOIUMn6JdYlvuoV5UeBdyISh6CC2Gh6E6U5ZZ7qY=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/dissect-extfs/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-extfs/default.nix
index 6838350cb8de..95d31f8f7a34 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-extfs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dissect-extfs/default.nix
@@ -11,16 +11,16 @@
 
 buildPythonPackage rec {
   pname = "dissect-extfs";
-  version = "3.9";
+  version = "3.10";
   format = "pyproject";
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.extfs";
     rev = "refs/tags/${version}";
-    hash = "sha256-xZEULUm0I754f9MEIUZEua76SaY/WMFp4Q5BMNZ8fWU=";
+    hash = "sha256-EIM2kS5V2+e7/bvuB8ezBZQl3XopdlzZ7Cmwr+Ns/Us=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/dissect-fat/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-fat/default.nix
index 636265f4129c..6e14afb3f1e0 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-fat/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dissect-fat/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-fat";
-  version = "3.8";
+  version = "3.9";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -19,15 +20,15 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.fat";
     rev = "refs/tags/${version}";
-    hash = "sha256-xFfB7QOZ3KjsOPQ1cPTRkqb0hgD4waOq8kkSTJStQ+E=";
+    hash = "sha256-U7SSLvEK6IYZjjUIGT9n1w7oLdB8Q2/msQ/EBJfatJY=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/dissect-ffs/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-ffs/default.nix
index f95319ade135..fac9898633bc 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-ffs/default.nix
+++ b/nixpkgs/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.8";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.ffs";
     rev = "refs/tags/${version}";
-    hash = "sha256-f7lXYJ2U8M+rZXrlbrAXAjizCVz6rAAZbeSg+iOmKdo=";
+    hash = "sha256-L2LL+Er5nSYpRBW5CO9EBkYY85vnDkuvaOP0kbkH2T4=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/dissect-hypervisor/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-hypervisor/default.nix
index 27bf9056e258..b24f1e69f867 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-hypervisor/default.nix
+++ b/nixpkgs/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.13";
   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-6sjRkhZOmAckzu/lUA4Sw48cmKfMOGLGgB5dB6M06qQ=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/dissect-jffs/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-jffs/default.nix
index 234f61e007e3..31edb777123c 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-jffs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dissect-jffs/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "dissect-jffs";
-  version = "1.1";
+  version = "1.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.jffs";
     rev = "refs/tags/${version}";
-    hash = "sha256-jzSPR4pkvXRQ3Q/qL7Oa3mLX3hW2IhbXuuO0jTc8Gvg=";
+    hash = "sha256-aElQR9QDC2110QZdk+PKkBky6FUXz9pSTJV7weTBvAE=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/dissect-ntfs/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-ntfs/default.nix
index 61f3eaa64560..19c414c74d3c 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-ntfs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dissect-ntfs/default.nix
@@ -11,16 +11,16 @@
 
 buildPythonPackage rec {
   pname = "dissect-ntfs";
-  version = "3.9";
+  version = "3.10";
   format = "pyproject";
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.ntfs";
     rev = "refs/tags/${version}";
-    hash = "sha256-gjmxoxz4Qf2FsCP72siEpVLeqlZfvhuFZHSGr1n+cY0=";
+    hash = "sha256-7D+5Btvm9fWwtVjVpKNc0VU7seyZXFxR7tEh7CAh7io=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/dissect-ole/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-ole/default.nix
index 1d527d33ab08..cb84b16aa8fe 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-ole/default.nix
+++ b/nixpkgs/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.8";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.ole";
     rev = "refs/tags/${version}";
-    hash = "sha256-Df6OU1vVsQl7d119W8+8YmUiy2+m6Dw3LpKnMVSRRR4=";
+    hash = "sha256-VWbgQhKV1vJBRQROrJXbJ7qDIVOfZwvjsRwUbm7q7OQ=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/dissect-regf/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-regf/default.nix
index 8f8ae56b383d..4e09bfb4067a 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-regf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dissect-regf/default.nix
@@ -11,16 +11,16 @@
 
 buildPythonPackage rec {
   pname = "dissect-regf";
-  version = "3.9";
+  version = "3.10";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.regf";
     rev = "refs/tags/${version}";
-    hash = "sha256-NLhZnStcJCtXMBkayLjvuG7aK2aN3sWGZaPKVXIoRew=";
+    hash = "sha256-uMC5av4NAzDF5JRUz4L8/jTLrBv9blNMYtM6dOuHe5s=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/dissect-shellitem/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-shellitem/default.nix
index 6ee624cc4256..454614199614 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-shellitem/default.nix
+++ b/nixpkgs/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.8";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.shellitem";
     rev = "refs/tags/${version}";
-    hash = "sha256-E5v7WuAd47X/1LSeaje4EUv+GuFq5Ksg4ndOScFreYE=";
+    hash = "sha256-zoq42Au2dNJTryj3GNXJrEGvE0az8psPuMXoJNc74QM=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/dissect-sql/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-sql/default.nix
index 275e1a2913d3..6c61796409ec 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-sql/default.nix
+++ b/nixpkgs/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.9";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.sql";
     rev = "refs/tags/${version}";
-    hash = "sha256-f19l1NxIdkQRaqEAgeTIuloPY079TmnNZ/DLQEXFQIA=";
+    hash = "sha256-aq/p6oa+6C2BS2TV8YYXwGP580tIHYZqO455bYm0yeo=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/dissect-squashfs/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-squashfs/default.nix
index 9deecad41773..6303663d2b07 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-squashfs/default.nix
+++ b/nixpkgs/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.5";
+  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-eylLBPim3dmo8h95lRmlh8O9m458K07TH2uK+hn3nKs=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/dissect-target/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-target/default.nix
index 0e6e14be7239..a8fdd93b879f 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-target/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dissect-target/default.nix
@@ -3,6 +3,7 @@
 , asn1crypto
 , buildPythonPackage
 , defusedxml
+, dissect-btrfs
 , dissect-cim
 , dissect-clfs
 , dissect-cstruct
@@ -16,8 +17,8 @@
 , dissect-hypervisor
 , dissect-ntfs
 , dissect-regf
-, dissect-sql
 , dissect-shellitem
+, dissect-sql
 , dissect-thumbcache
 , dissect-util
 , dissect-volume
@@ -25,21 +26,24 @@
 , fetchFromGitHub
 , flow-record
 , fusepy
+, impacket
 , ipython
+, paho-mqtt
 , pycryptodome
 , pytestCheckHook
 , pythonOlder
-, pyyaml
+, ruamel-yaml
 , setuptools
 , setuptools-scm
 , structlog
+, tomli
 , yara-python
 , zstandard
 }:
 
 buildPythonPackage rec {
   pname = "dissect-target";
-  version = "3.16";
+  version = "3.17";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -48,20 +52,20 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.target";
     rev = "refs/tags/${version}";
-    hash = "sha256-2c8OFwbgSc7zwbjQm2g8y1ZyiYM0KPFjTEUrk06c174=";
+    hash = "sha256-UIgHjSTHaxo8jCqe+R6rRxQXX8RUFKAI5+zscInAtgg=";
   };
 
   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 +82,7 @@ buildPythonPackage rec {
   passthru.optional-dependencies = {
     full = [
       asn1crypto
+      dissect-btrfs
       dissect-cim
       dissect-clfs
       dissect-esedb
@@ -92,10 +97,19 @@ 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 = [
@@ -121,18 +135,34 @@ buildPythonPackage rec {
     # 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/nixpkgs/pkgs/development/python-modules/dissect-thumbcache/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-thumbcache/default.nix
index 6c1a68b64785..60091bb17823 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-thumbcache/default.nix
+++ b/nixpkgs/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.8";
   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-LcuuRVSnZVFtht03MD8qVNNPljVUzGa8vXu9GQPOgjs=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/dissect-util/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-util/default.nix
index d085d842b711..9210cc6ca774 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-util/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dissect-util/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "dissect-util";
-  version = "3.15";
+  version = "3.16";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect.util";
     rev = "refs/tags/${version}";
-    hash = "sha256-JIrk6YRuW5B30d9fNaRFesO01ajcSy8ErkpFtM1Coaw=";
+    hash = "sha256-OHlWOWB476KERerEo2ZYLMIIO+eIpKlNLOHMCiE5jdE=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/dissect-vmfs/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-vmfs/default.nix
index 147b048aee7d..95775fb18ce2 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-vmfs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dissect-vmfs/default.nix
@@ -11,16 +11,16 @@
 
 buildPythonPackage rec {
   pname = "dissect-vmfs";
-  version = "3.7";
+  version = "3.8";
   format = "pyproject";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.vmfs";
     rev = "refs/tags/${version}";
-    hash = "sha256-HJV7cwNMFvHURt2dk/c1YbgFaHXRESREJ5ucmUsuS78=";
+    hash = "sha256-AcVWKUgykgTgP0haBOtWR+wNWzc/PN9qIwVJMqNg8hg=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/dissect-volume/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-volume/default.nix
index abddcf5d1d61..a312667bb620 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-volume/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dissect-volume/default.nix
@@ -11,16 +11,16 @@
 
 buildPythonPackage rec {
   pname = "dissect-volume";
-  version = "3.9";
+  version = "3.10";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.volume";
     rev = "refs/tags/${version}";
-    hash = "sha256-Bhi3p0joTNx1y/yBhehhG06WmM7gUJhIJbmqZY4DzLQ=";
+    hash = "sha256-tQNmSnQBchj3SUq2XPsK/LWrKiCw4MFKmopHbxnzMxg=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/dissect-xfs/default.nix b/nixpkgs/pkgs/development/python-modules/dissect-xfs/default.nix
index 1843ff00f8e0..cc137632f7d7 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect-xfs/default.nix
+++ b/nixpkgs/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.9";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "fox-it";
     repo = "dissect.xfs";
     rev = "refs/tags/${version}";
-    hash = "sha256-U/VDFeCyOPlefFL/QVRVknpCBDLuVYvVHI49QSe+QFM=";
+    hash = "sha256-jUNstyHVPJazf4idXNe9xICpi0MKkz8q0rWUEHjk2ZA=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/dissect/default.nix b/nixpkgs/pkgs/development/python-modules/dissect/default.nix
index 6827b7e5f701..73f022e97eaa 100644
--- a/nixpkgs/pkgs/development/python-modules/dissect/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dissect/default.nix
@@ -1,41 +1,43 @@
-{ 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-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,
 }:
 
 buildPythonPackage rec {
   pname = "dissect";
-  version = "3.13";
+  version = "3.14";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -44,18 +46,20 @@ buildPythonPackage rec {
     owner = "fox-it";
     repo = "dissect";
     rev = "refs/tags/${version}";
-    hash = "sha256-cnNaqXECePP2DmLRAm/Fi9m88rYSsVVMrpcqYd0iL1E=";
+    hash = "sha256-wHLpysvOkJ1t0KKJXwfeRp/7mSom5WvrJ0lyRGoDwJM=";
   };
 
   pythonRelaxDeps = true;
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
+  build-system = [
     setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
+
+  dependencies = [
+    dissect-archive
     dissect-btrfs
     dissect-cim
     dissect-clfs
@@ -87,9 +91,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "dissect"
-  ];
+  pythonImportsCheck = [ "dissect" ];
 
   meta = with lib; {
     description = "Dissect meta module";
diff --git a/nixpkgs/pkgs/development/python-modules/distributed/default.nix b/nixpkgs/pkgs/development/python-modules/distributed/default.nix
index 890f579207ca..35c1df57422a 100644
--- a/nixpkgs/pkgs/development/python-modules/distributed/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/distributed/default.nix
@@ -25,7 +25,7 @@
 
 buildPythonPackage rec {
   pname = "distributed";
-  version = "2024.4.2";
+  version = "2024.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -34,7 +34,7 @@ buildPythonPackage rec {
     owner = "dask";
     repo = "distributed";
     rev = "refs/tags/${version}";
-    hash = "sha256-xoQ+b7qzstZl9gRNs4jssNOsGQHDdvTXU7pTjBSuyWs=";
+    hash = "sha256-9W5BpBQHw1ZXCOWiFPeIlMns/Yys1gtdwQ4Lhd7qjK8=";
   };
 
   postPatch = ''
@@ -43,7 +43,7 @@ buildPythonPackage rec {
       --replace 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     pythonRelaxDepsHook
     setuptools
     setuptools-scm
@@ -54,7 +54,7 @@ buildPythonPackage rec {
     "dask"
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     cloudpickle
     dask
diff --git a/nixpkgs/pkgs/development/python-modules/dj-rest-auth/default.nix b/nixpkgs/pkgs/development/python-modules/dj-rest-auth/default.nix
index e415977d8637..49e0c49e75bb 100644
--- a/nixpkgs/pkgs/development/python-modules/dj-rest-auth/default.nix
+++ b/nixpkgs/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,9 +60,7 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [
-    "dj_rest_auth"
-  ];
+  pythonImportsCheck = [ "dj_rest_auth" ];
 
   meta = with lib; {
     description = "Authentication for Django Rest Framework";
diff --git a/nixpkgs/pkgs/development/python-modules/django-allauth/default.nix b/nixpkgs/pkgs/development/python-modules/django-allauth/default.nix
index 8a1f6dc8ac06..6046f1964d8f 100644
--- a/nixpkgs/pkgs/development/python-modules/django-allauth/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-allauth/default.nix
@@ -2,10 +2,14 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pythonOlder
+, python
 
 # build-system
 , setuptools
 
+# build-time dependencies
+, gettext
+
 # dependencies
 , django
 , python3-openid
@@ -41,6 +45,7 @@ buildPythonPackage rec {
   };
 
   nativeBuildInputs = [
+    gettext
     setuptools
   ];
 
@@ -52,6 +57,8 @@ buildPythonPackage rec {
     requests-oauthlib
   ] ++ pyjwt.optional-dependencies.crypto;
 
+  preBuild = "${python.interpreter} -m django compilemessages";
+
   passthru.optional-dependencies = {
     saml = [
       python3-saml
diff --git a/nixpkgs/pkgs/development/python-modules/django-auditlog/default.nix b/nixpkgs/pkgs/development/python-modules/django-auditlog/default.nix
index 4a176b0b14ec..ef7fbb133f47 100644
--- a/nixpkgs/pkgs/development/python-modules/django-auditlog/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-auditlog/default.nix
@@ -14,14 +14,14 @@
 
 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 +46,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
   '';
diff --git a/nixpkgs/pkgs/development/python-modules/django-auth-ldap/default.nix b/nixpkgs/pkgs/development/python-modules/django-auth-ldap/default.nix
index 3983cf3f3661..b2f5fa74b41c 100644
--- a/nixpkgs/pkgs/development/python-modules/django-auth-ldap/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-auth-ldap/default.nix
@@ -17,14 +17,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/django-bootstrap3/default.nix b/nixpkgs/pkgs/development/python-modules/django-bootstrap3/default.nix
index 6a29fc7630aa..4ac4695bd16c 100644
--- a/nixpkgs/pkgs/development/python-modules/django-bootstrap3/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-bootstrap3/default.nix
@@ -16,14 +16,14 @@
 
 buildPythonPackage rec {
   pname = "django-bootstrap3";
-  version = "23.6";
+  version = "24.2";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "zostera";
     repo = "django-bootstrap3";
     rev = "refs/tags/v${version}";
-    hash = "sha256-qqG9w0bQYoQgWXCks/WwwQVoh2DhIMLaFXDQ4z6D84g=";
+    hash = "sha256-5nBJ5vfsoGoaG1s3K1hCHcSnGf51ZirYYg+uJGsBmG8=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/django-bootstrap4/default.nix b/nixpkgs/pkgs/development/python-modules/django-bootstrap4/default.nix
index b0a11d9044d3..d148162b9ab0 100644
--- a/nixpkgs/pkgs/development/python-modules/django-bootstrap4/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-bootstrap4/default.nix
@@ -18,14 +18,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/django-bootstrap5/default.nix b/nixpkgs/pkgs/development/python-modules/django-bootstrap5/default.nix
index 76405e9e5cd6..ac983c5ac5e4 100644
--- a/nixpkgs/pkgs/development/python-modules/django-bootstrap5/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-bootstrap5/default.nix
@@ -4,35 +4,53 @@
 , pythonOlder
 
 # build-system
-, hatchling
+, setuptools
+, setuptools-scm
 
 # dependencies
+, django
+
+# tests
 , beautifulsoup4
 , pillow
-, django
+, 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
+  ];
+
+  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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/django-configurations/default.nix b/nixpkgs/pkgs/development/python-modules/django-configurations/default.nix
index 087ffab30139..53d75bed9bfa 100644
--- a/nixpkgs/pkgs/development/python-modules/django-configurations/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-configurations/default.nix
@@ -14,14 +14,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/django-extensions/default.nix b/nixpkgs/pkgs/development/python-modules/django-extensions/default.nix
index 5e77c5bfc590..6581fcfbb8d6 100644
--- a/nixpkgs/pkgs/development/python-modules/django-extensions/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-extensions/default.nix
@@ -1,13 +1,21 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, pythonAtLeast
+
+# build-system
+, setuptools
+
+# dependencies
 , django
+
+# tests
 , factory-boy
 , mock
 , pip
 , pygments
-, pytest-django
 , pytestCheckHook
+, pytest-django
 , shortuuid
 , vobject
 , werkzeug
@@ -16,7 +24,11 @@
 buildPythonPackage rec {
   pname = "django-extensions";
   version = "3.2.3";
-  format = "setuptools";
+  pyproject = true;
+
+  # https://github.com/django-extensions/django-extensions/issues/1831
+  # Requires asyncore, which was dropped in 3.12
+  disabled = pythonAtLeast "3.12";
 
   src = fetchFromGitHub {
     owner = pname;
@@ -30,7 +42,11 @@ buildPythonPackage rec {
       --replace "--cov=django_extensions --cov-report html --cov-report term" ""
   '';
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     django
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/django-hierarkey/default.nix b/nixpkgs/pkgs/development/python-modules/django-hierarkey/default.nix
index 77f33f0b526c..7f78dd604047 100644
--- a/nixpkgs/pkgs/development/python-modules/django-hierarkey/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-hierarkey/default.nix
@@ -2,6 +2,9 @@
 , buildPythonPackage
 , fetchFromGitHub
 
+# build-system
+, setuptools
+
 # propagates
 , python-dateutil
 
@@ -13,18 +16,21 @@
 
 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 = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     python-dateutil
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/django-import-export/default.nix b/nixpkgs/pkgs/development/python-modules/django-import-export/default.nix
index 50e60202dc97..a57a770444ed 100644
--- a/nixpkgs/pkgs/development/python-modules/django-import-export/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-import-export/default.nix
@@ -1,41 +1,60 @@
-{ lib
-, buildPythonPackage
-, chardet
-, diff-match-patch
-, django
-, fetchFromGitHub
-, psycopg2
-, python
-, pythonOlder
-, pytz
-, tablib
+{
+  lib,
+  buildPythonPackage,
+  chardet,
+  diff-match-patch,
+  django,
+  fetchFromGitHub,
+  psycopg2,
+  python,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  pytz,
+  setuptools-scm,
+  tablib,
 }:
 
 buildPythonPackage rec {
   pname = "django-import-export";
-  version = "3.3.8";
-  format = "setuptools";
+  version = "4.0.3";
+  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-ItJx9yJSy88/OvkpjGDWGBOMk5YlSquicSWi0tbKeWE=";
   };
 
-  propagatedBuildInputs = [
+  pythonRelaxDeps = [ "tablib" ];
+
+  build-system = [ setuptools-scm ];
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
+
+  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 +62,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/nixpkgs/pkgs/development/python-modules/django-ipware/default.nix b/nixpkgs/pkgs/development/python-modules/django-ipware/default.nix
index 26b4cc7308b8..1f5c23aa1a31 100644
--- a/nixpkgs/pkgs/development/python-modules/django-ipware/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-ipware/default.nix
@@ -7,14 +7,14 @@
 
 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 ];
diff --git a/nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix b/nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix
index 026788caf646..094ca8a6d91d 100644
--- a/nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix
@@ -2,7 +2,10 @@
 , buildPythonPackage
 , fetchPypi
 
-# propagates
+# build-system
+, pdm-backend
+
+# dependencies
 , django-gravatar2
 , django-allauth
 , mailmanclient
@@ -17,20 +20,20 @@
 
 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,6 +46,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  preCheck = ''
+    export DJANGO_SETTINGS_MODULE=django_mailman3.tests.settings_test
+  '';
+
   pythonImportsCheck = [
     "django_mailman3"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/django-model-utils/default.nix b/nixpkgs/pkgs/development/python-modules/django-model-utils/default.nix
index 0e39d901aae8..38d03dca2010 100644
--- a/nixpkgs/pkgs/development/python-modules/django-model-utils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-model-utils/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "django-model-utils";
-  version = "4.5.0";
+  version = "4.5.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "jazzband";
     repo = "django-model-utils";
     rev = "refs/tags/${version}";
-    hash = "sha256-ZEnDk4kCXyhLvq3CZTK/zP3IK6BsNRqbkfqKAuU6Mfk=";
+    hash = "sha256-GaBTCrEwEkJyVeY5YVptPioYcmivyQtBKjs+TgC9IqA=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/django-mysql/default.nix b/nixpkgs/pkgs/development/python-modules/django-mysql/default.nix
index 9db6be33ed0d..a363bad3b00c 100644
--- a/nixpkgs/pkgs/development/python-modules/django-mysql/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-mysql/default.nix
@@ -7,7 +7,6 @@
 
 # dependencies
 , django
-, mysqlclient
 
 # tests
 , pytest-django
@@ -16,23 +15,22 @@
 
 buildPythonPackage rec {
   pname = "django-mysql";
-  version = "4.12.0";
+  version = "4.13.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "adamchainz";
     repo = "django-mysql";
     rev = "refs/tags/${version}";
-    hash = "sha256-AieI6zUPFXQsrvoms5bu/Bb3J+DvfLA4rCCsjhYBEZQ=";
+    hash = "sha256-hIvkLLv9R23u+JC6t/zwbMvmgLMstYp0ytuSqNiohJg=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  buildInputs = [
+  dependencies = [
     django
-    mysqlclient
   ];
 
   doCheck = false; # requires mysql/mariadb server
@@ -44,6 +42,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  pythonImportsCheck = [
+    "django_mysql"
+  ];
+
   meta = with lib; {
     changelog = "https://github.com/adamchainz/django-mysql/blob/${version}/docs/changelog.rst";
     description = "Extensions to Django for use with MySQL/MariaD";
diff --git a/nixpkgs/pkgs/development/python-modules/django-otp/default.nix b/nixpkgs/pkgs/development/python-modules/django-otp/default.nix
index c1078160b6eb..dc73a461b793 100644
--- a/nixpkgs/pkgs/development/python-modules/django-otp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-otp/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "django-otp";
-  version = "1.3.0post1";
+  version = "1.5.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "django-otp";
     repo = "django-otp";
     rev = "v${version}";
-    hash = "sha256-Q8YTCYERyoAXenSiDabxuxaWiD6ZeJKKKgaR/Rg3y20=";
+    hash = "sha256-c0Yr41S1LFBzcDIK2etOP3rYcCPaThDs+XGiw4WP/ks=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/django-statici18n/default.nix b/nixpkgs/pkgs/development/python-modules/django-statici18n/default.nix
index 8ce7bc0340a9..5638443a2eea 100644
--- a/nixpkgs/pkgs/development/python-modules/django-statici18n/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-statici18n/default.nix
@@ -16,15 +16,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/django/4.nix b/nixpkgs/pkgs/development/python-modules/django/4.nix
index bc1fcbdfe9c8..4ee0ab76175e 100644
--- a/nixpkgs/pkgs/development/python-modules/django/4.nix
+++ b/nixpkgs/pkgs/development/python-modules/django/4.nix
@@ -1,8 +1,7 @@
 { lib
 , stdenv
 , buildPythonPackage
-, fetchPypi
-, fetchpatch2
+, fetchFromGitHub
 , pythonAtLeast
 , pythonOlder
 , substituteAll
@@ -44,15 +43,16 @@
 
 buildPythonPackage rec {
   pname = "django";
-  version = "4.2.11";
+  version = "4.2.12";
   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-n6esWUpZpCP4J4bNckNKJ9E61qFjTPS7XF+WgxNS2JE=";
   };
 
   patches = [
@@ -64,13 +64,6 @@ buildPythonPackage rec {
     # 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;
diff --git a/nixpkgs/pkgs/development/python-modules/django/5.nix b/nixpkgs/pkgs/development/python-modules/django/5.nix
index fc4ba20245fc..637bbb652869 100644
--- a/nixpkgs/pkgs/development/python-modules/django/5.nix
+++ b/nixpkgs/pkgs/development/python-modules/django/5.nix
@@ -1,7 +1,7 @@
 { lib
 , stdenv
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , fetchpatch2
 , pythonAtLeast
 , pythonOlder
@@ -44,15 +44,16 @@
 
 buildPythonPackage rec {
   pname = "django";
-  version = "5.0.4";
+  version = "5.0.5";
   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-0/AbPmTl38E9BpHVKs0r79fISjEa1d4XO/se1pA7zxg=";
   };
 
   patches = [
@@ -65,13 +66,6 @@ buildPythonPackage rec {
     # 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;
diff --git a/nixpkgs/pkgs/development/python-modules/dkimpy/default.nix b/nixpkgs/pkgs/development/python-modules/dkimpy/default.nix
index 6b639f8cc8c3..541c3bef56e9 100644
--- a/nixpkgs/pkgs/development/python-modules/dkimpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dkimpy/default.nix
@@ -3,12 +3,12 @@
 
 buildPythonPackage rec {
   pname = "dkimpy";
-  version = "1.1.5";
+  version = "1.1.6";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-mmZ/hmS3Lrn4qhJQsHV8w5gqto9wxIrzkxe1jPYvLXU=";
+    hash = "sha256-DOctlh9EPo+fBWlLNUVC3uU04I4rjFtgxi1drKfB2g8=";
 };
 
   nativeCheckInputs = [ pytest ];
diff --git a/nixpkgs/pkgs/development/python-modules/dm-control/default.nix b/nixpkgs/pkgs/development/python-modules/dm-control/default.nix
new file mode 100644
index 000000000000..6418163b6bc7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dm-control/default.nix
@@ -0,0 +1,98 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, absl-py
+, mujoco
+, pyparsing
+, pythonRelaxDepsHook
+, setuptools
+, wheel
+, dm-env
+, dm-tree
+, fsspec
+, glfw
+, h5py
+, lxml
+, mock
+, nose
+, nose-xunitmp
+, numpy
+, pillow
+, protobuf
+, pyopengl
+, requests
+, scipy
+, tqdm
+, etils
+}:
+
+buildPythonPackage rec {
+  pname = "dm-control";
+  version = "1.0.19";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "google-deepmind";
+    repo = "dm_control";
+    rev = "refs/tags/${version}";
+    hash = "sha256-q9hY/icvc1tPI0xBYxExc2a+gv0i6utaB4GBnJwQPCw=";
+  };
+
+  build-system = [
+    absl-py
+    mujoco
+    pyparsing
+    pythonRelaxDepsHook
+    setuptools
+    wheel
+  ];
+
+  pythonRemoveDeps = [
+    # Unpackaged
+    "labmaze"
+  ];
+
+  dependencies = [
+    absl-py
+    dm-env
+    dm-tree
+    fsspec
+    glfw
+    h5py
+    lxml
+    mock
+    mujoco
+    nose
+    nose-xunitmp
+    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/nixpkgs/pkgs/development/python-modules/dnfile/default.nix b/nixpkgs/pkgs/development/python-modules/dnfile/default.nix
index 40b97b6b6d8a..950f1bb45672 100644
--- a/nixpkgs/pkgs/development/python-modules/dnfile/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dnfile/default.nix
@@ -40,7 +40,7 @@ buildPythonPackage rec {
 
   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/nixpkgs/pkgs/development/python-modules/docformatter/default.nix b/nixpkgs/pkgs/development/python-modules/docformatter/default.nix
index 517b777735d7..02b2108541e4 100644
--- a/nixpkgs/pkgs/development/python-modules/docformatter/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/docformatter/default.nix
@@ -51,6 +51,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/nixpkgs/pkgs/development/python-modules/docplex/default.nix b/nixpkgs/pkgs/development/python-modules/docplex/default.nix
index 2f5c485cf631..dde6772864b3 100644
--- a/nixpkgs/pkgs/development/python-modules/docplex/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/docplex/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , isPy27
+, setuptools
 , futures ? null
 , docloud
 , requests
@@ -9,15 +10,24 @@
 
 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/nixpkgs/pkgs/development/python-modules/docstr-coverage/default.nix b/nixpkgs/pkgs/development/python-modules/docstr-coverage/default.nix
index b9a6080fa7df..603e826908b9 100644
--- a/nixpkgs/pkgs/development/python-modules/docstr-coverage/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/docstr-coverage/default.nix
@@ -8,7 +8,7 @@
 , pytest-mock
 }:
 let
-  version = "2.3.1";
+  version = "2.3.2";
 in
 buildPythonPackage {
   pname = "docstr-coverage";
@@ -18,7 +18,7 @@ buildPythonPackage {
     owner = "HunterMcGushion";
     repo = "docstr_coverage";
     rev = "refs/tags/v${version}";
-    hash = "sha256-QmQE6KZ2NdXKQun+uletxYPktWvfkrj6NPAVl/mmpAY=";
+    hash = "sha256-k1ny4fWS+CmgLNWPlYPsscjei2UZ6h8QJrZSay5abck=";
   };
 
   propagatedBuildInputs = [ click pyyaml tqdm ];
diff --git a/nixpkgs/pkgs/development/python-modules/docutils/default.nix b/nixpkgs/pkgs/development/python-modules/docutils/default.nix
index 136f679fcf6e..fdf766f37f05 100644
--- a/nixpkgs/pkgs/development/python-modules/docutils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/docutils/default.nix
@@ -1,24 +1,39 @@
 { stdenv
 , lib
-, fetchPypi
+, fetchFromRepoOrCz
 , buildPythonPackage
+, flit-core
+, pillow
 , python
 , pythonOlder
 }:
 
-buildPythonPackage rec {
+# 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.
+
+let self = buildPythonPackage rec {
   pname = "docutils";
-  version = "0.20.1";
+  version = "0.21.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
-  format = "setuptools";
-
-  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.isDarwin ''LANG="en_US.UTF-8" LC_ALL="en_US.UTF-8" '' + ''
@@ -38,4 +53,5 @@ buildPythonPackage rec {
     license = with licenses; [ publicDomain bsd2 psfl gpl3Plus ];
     maintainers = with maintainers; [ AndersonTorres ];
   };
-}
+};
+in self
diff --git a/nixpkgs/pkgs/development/python-modules/dogpile-cache/default.nix b/nixpkgs/pkgs/development/python-modules/dogpile-cache/default.nix
index 51d799b90f13..e03a72626a97 100644
--- a/nixpkgs/pkgs/development/python-modules/dogpile-cache/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dogpile-cache/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "dogpile-cache";
-  version = "1.3.2";
+  version = "1.3.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "dogpile.cache";
     inherit version;
-    hash = "sha256-T3HcAzOtNRycb3BPW6Kje/Ucbu0EN9Gt9W4HWVmv5js=";
+    hash = "sha256-+EuO0LD7KX0VEFVEf6jcr3uuVm1Nve/s3MHzdmKrWIs=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/dogtail/default.nix b/nixpkgs/pkgs/development/python-modules/dogtail/default.nix
index d0b7e983a099..5186d9567058 100644
--- a/nixpkgs/pkgs/development/python-modules/dogtail/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dogtail/default.nix
@@ -11,7 +11,7 @@
 , fetchurl
 , dbus
 , xvfb-run
-, wrapGAppsHook
+, wrapGAppsHook3
 # , fetchPypi
 }:
 
@@ -36,7 +36,7 @@ buildPythonPackage {
     ./nix-support.patch
   ];
 
-  nativeBuildInputs = [ gobject-introspection dbus xvfb-run wrapGAppsHook ]; # for setup hooks
+  nativeBuildInputs = [ gobject-introspection dbus xvfb-run wrapGAppsHook3 ]; # for setup hooks
   propagatedBuildInputs = [ at-spi2-core gtk3 pygobject3 pyatspi pycairo ];
 
   checkPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/domeneshop/default.nix b/nixpkgs/pkgs/development/python-modules/domeneshop/default.nix
index ab01424c0940..c48d7603a045 100644
--- a/nixpkgs/pkgs/development/python-modules/domeneshop/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/domeneshop/default.nix
@@ -1,25 +1,19 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pythonOlder
 , setuptools
 , urllib3
-, pyopenssl
-, cryptography
-, idna
 , certifi
 }:
 
 buildPythonPackage rec {
   pname = "domeneshop";
-  version = "0.4.3";
+  version = "0.4.4";
   pyproject = true;
 
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-kL0X1mEsmVWqnq5NgsMBxeAu48zjmi3muhZYryTCOMo=";
+    hash = "sha256-UCxIDnhIAkxZ1oQXYRyAMdGgUsUZ6AlYXwsxL49TFAg=";
   };
 
   nativeBuildInputs = [
@@ -37,6 +31,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "domeneshop" ];
 
   meta = with lib; {
+    changelog = "https://github.com/domeneshop/python-domeneshop/releases/tag/v${version}";
     description = "Python library for working with the Domeneshop API";
     homepage = "https://api.domeneshop.no/docs/";
     license = licenses.mit;
diff --git a/nixpkgs/pkgs/development/python-modules/dramatiq/default.nix b/nixpkgs/pkgs/development/python-modules/dramatiq/default.nix
index 35c2b79c438d..fb434bf0e8b4 100644
--- a/nixpkgs/pkgs/development/python-modules/dramatiq/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dramatiq/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "dramatiq";
-  version = "1.16.0";
+  version = "1.17.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "Bogdanp";
     repo = "dramatiq";
     rev = "refs/tags/v${version}";
-    hash = "sha256-gC1vWnG3zDuFT61i2VgDrP/qIwmGN5GkGv6EVxqUf4U=";
+    hash = "sha256-xKHTBo2AirxDXe/CLSqo++3AgxP4pVkGTNdgS5CCZ3c=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/drawsvg/default.nix b/nixpkgs/pkgs/development/python-modules/drawsvg/default.nix
new file mode 100644
index 000000000000..84fd89373ffc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/drawsvg/default.nix
@@ -0,0 +1,61 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  pythonOlder,
+  numpy,
+  imageio,
+  cairosvg,
+  imageio-ffmpeg,
+  pwkit,
+}:
+
+buildPythonPackage rec {
+  pname = "drawsvg";
+  version = "2.3.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "cduck";
+    repo = "drawsvg";
+    rev = "refs/tags/${version}";
+    hash = "sha256-LoA5yYeHO4GqS3dk7EMg1ZC42HBgmM6rSfigWMc4yUQ=";
+  };
+
+  build-system = [ setuptools ];
+
+  passthru.optional-dependencies = {
+    all = [
+      numpy
+      imageio
+      cairosvg
+      imageio-ffmpeg
+      pwkit
+    ];
+    raster = [
+      numpy
+      imageio
+      cairosvg
+      imageio-ffmpeg
+    ];
+    color = [
+      pwkit
+      numpy
+    ];
+  };
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "drawsvg" ];
+
+  meta = with lib; {
+    description = "Programmatically generate SVG (vector) images, animations, and interactive Jupyter widgets";
+    homepage = "https://github.com/cduck/drawsvg";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/drf-spectacular/default.nix b/nixpkgs/pkgs/development/python-modules/drf-spectacular/default.nix
index f38a2fbf86bc..9b957b53d4a0 100644
--- a/nixpkgs/pkgs/development/python-modules/drf-spectacular/default.nix
+++ b/nixpkgs/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" ];
diff --git a/nixpkgs/pkgs/development/python-modules/dronecan/default.nix b/nixpkgs/pkgs/development/python-modules/dronecan/default.nix
index 49c5dbb51db4..fc051d105bf6 100644
--- a/nixpkgs/pkgs/development/python-modules/dronecan/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dronecan/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pythonOlder
 , pytestCheckHook
 }:
 
@@ -9,7 +8,6 @@ buildPythonPackage rec {
   pname = "dronecan";
   version = "1.0.26";
   format = "setuptools";
-  disabled = pythonOlder "3.3";
 
   src = fetchPypi {
     inherit pname version;
diff --git a/nixpkgs/pkgs/development/python-modules/dropbox/default.nix b/nixpkgs/pkgs/development/python-modules/dropbox/default.nix
index 762b9b7ff8cf..fd2813fe9e54 100644
--- a/nixpkgs/pkgs/development/python-modules/dropbox/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dropbox/default.nix
@@ -2,36 +2,44 @@
 , buildPythonPackage
 , pythonOlder
 , fetchFromGitHub
-, requests
 , setuptools
+, requests
 , six
 , stone
+, urllib3
 , mock
 , pytest-mock
 , pytestCheckHook
 , sphinxHook
+, sphinx-rtd-theme
+, pythonRelaxDepsHook
 }:
 
 buildPythonPackage rec {
   pname = "dropbox";
-  version = "11.36.2";
-  format = "setuptools";
+  version = "12.0.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
+
   outputs = ["out" "doc"];
 
   src = fetchFromGitHub {
     owner = "dropbox";
     repo = "dropbox-sdk-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-d++lxsbwPxnz1JPguWkImHXB+GQpMa9Uo3JNIxIe2ok=";
+    hash = "sha256-0MDm6NB+0vkN8QRSHvuDYEyYhYQWQD4jsctyd5fLdwE=";
   };
 
-  propagatedBuildInputs = [
-    requests
+  build-system = [
     setuptools
+  ];
+
+  dependencies = [
+    requests
     six
     stone
+    urllib3
   ];
 
   nativeCheckInputs = [
@@ -42,7 +50,7 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "'pytest-runner == 5.2.0'," ""
+      --replace "'pytest-runner==5.2.0'," ""
   '';
 
   doCheck = true;
@@ -51,7 +59,20 @@ buildPythonPackage rec {
     "dropbox"
   ];
 
-  nativeBuildInputs = [ sphinxHook ];
+  nativeBuildInputs = [
+    sphinxHook
+    sphinx-rtd-theme
+    pythonRelaxDepsHook
+  ];
+
+  # 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 = [
+    "requests"
+    "stone"
+    "urllib3"
+  ];
 
   # Set SCOPED_USER_DROPBOX_TOKEN environment variable to a valid value.
   disabledTests = [
@@ -73,6 +94,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/nixpkgs/pkgs/development/python-modules/dtlssocket/default.nix b/nixpkgs/pkgs/development/python-modules/dtlssocket/default.nix
index bad1a6c73377..16b60266c6a7 100644
--- a/nixpkgs/pkgs/development/python-modules/dtlssocket/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dtlssocket/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "dtlssocket";
-  version = "0.1.16";
+  version = "0.1.18";
 
   format = "pyproject";
 
   src = fetchPypi {
     pname = "DTLSSocket";
     inherit version;
-    hash = "sha256-MLEIrkX84cAz4+9sLd1+dBgGKuN0Io46f6lpslQ2ajk=";
+    hash = "sha256-TnS2LYe6CeAlezc83bGpRqOpQbPJMQHzJn6PnXon4FI=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/duckdb/default.nix b/nixpkgs/pkgs/development/python-modules/duckdb/default.nix
index 34f20998ef3d..242502ab1bf6 100644
--- a/nixpkgs/pkgs/development/python-modules/duckdb/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/duckdb/default.nix
@@ -69,6 +69,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
diff --git a/nixpkgs/pkgs/development/python-modules/duckduckgo-search/default.nix b/nixpkgs/pkgs/development/python-modules/duckduckgo-search/default.nix
index 708762bb2622..a06c16586b0a 100644
--- a/nixpkgs/pkgs/development/python-modules/duckduckgo-search/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/duckduckgo-search/default.nix
@@ -1,20 +1,52 @@
-{ lib
-, aiofiles
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, h2
-, httpx
-, lxml
-, pythonOlder
-, requests
-, setuptools
-, socksio
+{
+  lib,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  orjson,
+  curl-cffi,
+
+  # To build orjson
+  rustPlatform,
+
+  # Optional dependencies
+  lxml,
 }:
+let
+  curl-cffi_0_7_0 = curl-cffi.overrideAttrs (
+    final: old: {
+      version = "0.7.0b4";
+      src = fetchFromGitHub {
+        owner = "yifeikong";
+        repo = "curl_cffi";
+        rev = "v${final.version}";
+        hash = "sha256-txrJNUzswAPeH4Iazn0iKJI0Rqk0HHRoDrtTfDHKMoo=";
+      };
+    }
+  );
 
+  orjson_3_10_3 = orjson.overrideAttrs (
+    final: old: {
+      version = "3.10.3";
+      src = fetchFromGitHub {
+        owner = "ijl";
+        repo = "orjson";
+        rev = "refs/tags/${final.version}";
+        hash = "sha256-bK6wA8P/IXEbiuJAx7psd0nUUKjR1jX4scFfJr1MBAk=";
+      };
+      cargoDeps = rustPlatform.fetchCargoTarball {
+        inherit (final) src;
+        name = "${old.pname}-${final.version}";
+        hash = "sha256-ilGq+/gPSuNwURUWy2ZxInzmUv+PxYMxd8esxrMpr2o=";
+      };
+    }
+  );
+in
 buildPythonPackage rec {
   pname = "duckduckgo-search";
-  version = "5.0";
+  version = "v5.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,36 +54,32 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "deedy5";
     repo = "duckduckgo_search";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-OZFkSFyXC2MFP2MbKwF/qR8zvCFzPKgLmX+nuIztOpw=";
+    rev = version;
+    hash = "sha256-T7rlB3dU7y+HbHr1Ss9KkejlXFORhnv9Va7cFTRtfQU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
-    aiofiles
     click
-    h2
-    httpx
-    lxml
-    requests
-    socksio
-  ] ++ httpx.optional-dependencies.brotli
-    ++ httpx.optional-dependencies.http2
-    ++ httpx.optional-dependencies.socks;
-
-  pythonImportsCheck = [
-    "duckduckgo_search"
+    orjson_3_10_3
+    curl-cffi_0_7_0
   ];
 
-  meta = with lib; {
+  passthru.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/nixpkgs/pkgs/development/python-modules/duecredit/default.nix b/nixpkgs/pkgs/development/python-modules/duecredit/default.nix
index 582d572a4420..b9f3b94ec513 100644
--- a/nixpkgs/pkgs/development/python-modules/duecredit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/duecredit/default.nix
@@ -6,25 +6,39 @@
 , pytestCheckHook
 , vcrpy
 , citeproc-py
+, looseversion
 , requests
 }:
 
 buildPythonPackage rec {
   pname = "duecredit";
-  version = "0.9.3";
+  version = "0.10.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-+DeOqQ0R+XUlkuSHySFj2oDZqf85mT64PAi/LtTso3I=";
+    hash = "sha256-IQgrmEclF/USrTjn5A0BbJ5GHgXh1R/KPJx4K4FuUuY=";
   };
 
-  nativeBuildInputs = [ setuptools ];
-  propagatedBuildInputs = [ citeproc-py requests ];
+  postPatch = ''
+    substituteInPlace tox.ini  \
+      --replace-fail "--cov=duecredit" ""  \
+      --replace-fail "--cov-config=tox.ini" ""
+  '';
 
-  nativeCheckInputs = [ pytestCheckHook vcrpy ];
+  nativeBuildInputs = [ setuptools ];
+  propagatedBuildInputs = [
+    citeproc-py
+    looseversion
+    requests
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    vcrpy
+  ];
   disabledTests = [ "test_import_doi" ];  # tries to access network
 
   preCheck = ''
@@ -33,12 +47,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/nixpkgs/pkgs/development/python-modules/dugong/default.nix b/nixpkgs/pkgs/development/python-modules/dugong/default.nix
index 7cfc29c9ff81..e66763b23d5e 100644
--- a/nixpkgs/pkgs/development/python-modules/dugong/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dugong/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pythonOlder
-, pythonAtLeast
 , pytestCheckHook
 }:
 
@@ -10,7 +9,6 @@ buildPythonPackage rec {
   pname = "dugong";
   version = "3.8.1";
   format = "setuptools";
-  disabled = pythonOlder "3.3";
 
   src = fetchFromGitHub {
     owner = "python-dugong";
diff --git a/nixpkgs/pkgs/development/python-modules/dulwich/default.nix b/nixpkgs/pkgs/development/python-modules/dulwich/default.nix
index 49789421af34..65a4eb19d88d 100644
--- a/nixpkgs/pkgs/development/python-modules/dulwich/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dulwich/default.nix
@@ -76,6 +76,8 @@ buildPythonPackage rec {
     "test_cyrillic"
     # OSError: [Errno 84] Invalid or incomplete multibyte or wide character: b'/build/tmpfseetobk/test/\xc0'
     "test_commit_no_encode_decode"
+    # https://github.com/jelmer/dulwich/issues/1279
+    "test_init_connector"
   ];
 
   disabledTestPaths = [
diff --git a/nixpkgs/pkgs/development/python-modules/dvclive/default.nix b/nixpkgs/pkgs/development/python-modules/dvclive/default.nix
index 7090433431a9..fd78c6ca873d 100644
--- a/nixpkgs/pkgs/development/python-modules/dvclive/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dvclive/default.nix
@@ -32,7 +32,7 @@
 
 buildPythonPackage rec {
   pname = "dvclive";
-  version = "3.45.0";
+  version = "3.46.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -41,7 +41,7 @@ buildPythonPackage rec {
     owner = "iterative";
     repo = "dvclive";
     rev = "refs/tags/${version}";
-    hash = "sha256-76PjBPr3m1y5osW024dkhuvuXl2FiZ5oxlJ1Ucq8msI=";
+    hash = "sha256-yIViKlkCdoG2vSZdScL38fZd9musLRKzBd9wSR6lJdk=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/dwdwfsapi/default.nix b/nixpkgs/pkgs/development/python-modules/dwdwfsapi/default.nix
index 58b62032e33b..824d23cbe23e 100644
--- a/nixpkgs/pkgs/development/python-modules/dwdwfsapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dwdwfsapi/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, hatchling
 , requests
 , ciso8601
 , pythonOlder
@@ -8,17 +9,21 @@
 
 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
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/dynalite-panel/default.nix b/nixpkgs/pkgs/development/python-modules/dynalite-panel/default.nix
index 33be58906c75..960f5544d30e 100644
--- a/nixpkgs/pkgs/development/python-modules/dynalite-panel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dynalite-panel/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, pythonOlder
 , fetchPypi
 , setuptools
 }:
@@ -10,8 +9,6 @@ buildPythonPackage rec {
   version = "0.0.4";
   pyproject = true;
 
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-m7nQzbxRe2qXUWAMeQlDZtc9F01DsbTzF/kI0ci3TFE=";
diff --git a/nixpkgs/pkgs/development/python-modules/ecdsa/default.nix b/nixpkgs/pkgs/development/python-modules/ecdsa/default.nix
index 2ce07e5b6b2b..3380d0f09616 100644
--- a/nixpkgs/pkgs/development/python-modules/ecdsa/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ecdsa/default.nix
@@ -7,12 +7,12 @@
 
 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 ];
diff --git a/nixpkgs/pkgs/development/python-modules/einops/default.nix b/nixpkgs/pkgs/development/python-modules/einops/default.nix
index 9c2de1bad9ce..dc775fcd6d11 100644
--- a/nixpkgs/pkgs/development/python-modules/einops/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/einops/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "einops";
-  version = "0.7.0";
+  version = "0.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "arogozhnikov";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-wCs3rMnYCk07kJ3iPItxwCQATflKBYHk6tfBCjiF+bc=";
+    hash = "sha256-6x9AttvSvgYrHaS5ESKOwyEnXxD2BitYTGtqqSKur+0=";
   };
 
   nativeBuildInputs = [ hatchling ];
diff --git a/nixpkgs/pkgs/development/python-modules/elastic-transport/default.nix b/nixpkgs/pkgs/development/python-modules/elastic-transport/default.nix
index ac2acebc6f7f..c4f6b0435e84 100644
--- a/nixpkgs/pkgs/development/python-modules/elastic-transport/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/elastic-transport/default.nix
@@ -4,19 +4,24 @@
 , 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.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -24,7 +29,7 @@ buildPythonPackage rec {
     owner = "elastic";
     repo = "elastic-transport-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ZLzaCiopdkhpqjzZzv/NT1+f5bHZYuqQvSgM5jeMaqg=";
+    hash = "sha256-KmZCaAbzbfqbPwFuF43ckwgVhZVbPvwjF7uqPKHml9Q=";
   };
 
   postPatch = ''
@@ -32,6 +37,10 @@ buildPythonPackage rec {
       --replace " --cov-report=term-missing --cov=elastic_transport" ""
   '';
 
+  build-system = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     urllib3
     certifi
@@ -40,10 +49,14 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     aiohttp
     mock
+    opentelemetry-api
+    opentelemetry-sdk
+    orjson
     pytest-asyncio
     pytest-httpserver
     pytestCheckHook
     requests
+    respx
     trustme
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/elasticsearch/default.nix b/nixpkgs/pkgs/development/python-modules/elasticsearch/default.nix
index a89cb3f0a4c5..12aac19267e8 100644
--- a/nixpkgs/pkgs/development/python-modules/elasticsearch/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/elasticsearch/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "elasticsearch";
-  version = "8.12.1";
+  version = "8.13.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-AMmXcg+9Dyr+VBfIGTz2XRFoF6AlDeBSHjDD6B8AuKw=";
+    sha256 = "sha256-5Ovrsi0J8O+DnCa2qpjhnM1ja8t38IwStWKwLKzV50Q=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/elasticsearch8/default.nix b/nixpkgs/pkgs/development/python-modules/elasticsearch8/default.nix
index c83de92d03bf..c1fa2c91372c 100644
--- a/nixpkgs/pkgs/development/python-modules/elasticsearch8/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/elasticsearch8/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "elasticsearch8";
-  version = "8.12.1";
+  version = "8.13.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-RuL1zYmEZEaaXb2LEW+BUmo7TcdGHH/5fjgesxXtbls=";
+    hash = "sha256-NWg+/dr8jXCCLeXBAXY1yL6/2CB0xCO5tswY4y/5erw=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/emv/default.nix b/nixpkgs/pkgs/development/python-modules/emv/default.nix
index c7be7ba9e7fa..69d3a9ef910e 100644
--- a/nixpkgs/pkgs/development/python-modules/emv/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/env-canada/default.nix b/nixpkgs/pkgs/development/python-modules/env-canada/default.nix
index f11b85d8bf7b..4b0fab97e95f 100644
--- a/nixpkgs/pkgs/development/python-modules/env-canada/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/env-canada/default.nix
@@ -10,13 +10,14 @@
 , pytestCheckHook
 , python-dateutil
 , pythonOlder
+, setuptools
 , voluptuous
 }:
 
 buildPythonPackage rec {
   pname = "env-canada";
-  version = "0.6.1";
-  format = "setuptools";
+  version = "0.6.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -24,10 +25,14 @@ buildPythonPackage rec {
     owner = "michaeldavie";
     repo = "env_canada";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6p4holWMAoaosmTL8AveRGuBS/MymC7usvK3I7CBEKQ=";
+    hash = "sha256-2lrZpjOdijE/udGRzUXT63xI+f9yI+04arfWdt6fMSA=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     aiohttp
     geopy
     imageio
diff --git a/nixpkgs/pkgs/development/python-modules/equinox/default.nix b/nixpkgs/pkgs/development/python-modules/equinox/default.nix
index 976406b399b1..cd4f60e8bad4 100644
--- a/nixpkgs/pkgs/development/python-modules/equinox/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/equinox/default.nix
@@ -48,8 +48,21 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "equinox" ];
 
   disabledTests = [
-    # Failed: DID NOT WARN. No warnings of type (<class 'UserWarning'>,) were emitted.
-    "test_tracetime"
+    # For simplicity, JAX has removed its internal frames from the traceback of the following exception.
+    # https://github.com/patrick-kidger/equinox/issues/716
+    "test_abstract"
+    "test_complicated"
+    "test_grad"
+    "test_jvp"
+    "test_mlp"
+    "test_num_traces"
+    "test_pytree_in"
+    "test_simple"
+    "test_vmap"
+
+    # AssertionError: assert 'foo:\n   pri...pe=float32)\n' == 'foo:\n   pri...pe=float32)\n'
+    # Also reported in patrick-kidger/equinox#716
+    "test_backward_nan"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/exchangelib/default.nix b/nixpkgs/pkgs/development/python-modules/exchangelib/default.nix
index c41a7da3a807..1e560b59895b 100644
--- a/nixpkgs/pkgs/development/python-modules/exchangelib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/exchangelib/default.nix
@@ -29,7 +29,7 @@
 
 buildPythonPackage rec {
   pname = "exchangelib";
-  version = "5.3.0";
+  version = "5.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -38,7 +38,7 @@ buildPythonPackage rec {
     owner = "ecederstrand";
     repo = "exchangelib";
     rev = "refs/tags/v${version}";
-    hash = "sha256-rcXQJYjyWLPrlMci/j8IY7EbDEyyc+5uSOOXo0YwjKo=";
+    hash = "sha256-GBfSdX9gFLx+CCV8DWHWtVpWi6zI3fg/3g/MiIvRoVM=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/execnb/default.nix b/nixpkgs/pkgs/development/python-modules/execnb/default.nix
index 56b1bf1388ed..bd3d91a10e51 100644
--- a/nixpkgs/pkgs/development/python-modules/execnb/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/execnet/default.nix b/nixpkgs/pkgs/development/python-modules/execnet/default.nix
index eb184c180d5b..76f9b9b4df65 100644
--- a/nixpkgs/pkgs/development/python-modules/execnet/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/execnet/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "execnet";
-  version = "2.0.2";
+  version = "2.1.1";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zFm8RCN0L9ca0icSLrDdRNtR77PcQJW0WsmgjHcAlq8=";
+    hash = "sha256-UYm1LGEhwk/q4ogWarQbMlScfiNIZSc2VAuebn1OcuM=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/faker/default.nix b/nixpkgs/pkgs/development/python-modules/faker/default.nix
index ec667330a62b..c0944e473fe7 100644
--- a/nixpkgs/pkgs/development/python-modules/faker/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/faker/default.nix
@@ -13,13 +13,13 @@
 
 buildPythonPackage rec {
   pname = "faker";
-  version = "24.0.0";
+  version = "24.11.0";
   pyproject = true;
 
   src = fetchPypi {
     pname = "Faker";
     inherit version;
-    hash = "sha256-6m94TEBzDeD3cGfknnjN1ZDvsAvsPTP1d0kiYiBsF/w=";
+    hash = "sha256-NLlHWBwrztNAw5s1+J2/rE81aTLP/4/ok73oVJA/Dm4=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/fakeredis/default.nix b/nixpkgs/pkgs/development/python-modules/fakeredis/default.nix
index 45a2a512d513..a89d85efcafd 100644
--- a/nixpkgs/pkgs/development/python-modules/fakeredis/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fakeredis/default.nix
@@ -1,23 +1,24 @@
-{ 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,
+  pybloom-live,
+  pyprobables,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  redis,
+  sortedcontainers,
 }:
 
 buildPythonPackage rec {
   pname = "fakeredis";
-  version = "2.21.3";
+  version = "2.23.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -26,14 +27,12 @@ buildPythonPackage rec {
     owner = "dsoftwareinc";
     repo = "fakeredis-py";
     rev = "refs/tags/v${version}";
-    hash = "sha256-GIg+a8G5S0dmbvMKqS/Vn+wzNM6iNIs3bKPqhecsQt4=";
+    hash = "sha256-IMYxzlvPgwJNpb976jYXNW+6veQlUxQph43ZClyC4Eg=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     redis
     sortedcontainers
   ];
@@ -46,25 +45,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/nixpkgs/pkgs/development/python-modules/fastai/default.nix b/nixpkgs/pkgs/development/python-modules/fastai/default.nix
index ff8ac701cf27..cd4bcc9f4b67 100644
--- a/nixpkgs/pkgs/development/python-modules/fastai/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fastai/default.nix
@@ -18,14 +18,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/fastapi/default.nix b/nixpkgs/pkgs/development/python-modules/fastapi/default.nix
index 67193638dd5a..92850c336bba 100644
--- a/nixpkgs/pkgs/development/python-modules/fastapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fastapi/default.nix
@@ -38,7 +38,7 @@
 
 buildPythonPackage rec {
   pname = "fastapi";
-  version = "0.110.0";
+  version = "0.110.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -47,7 +47,7 @@ buildPythonPackage rec {
     owner = "tiangolo";
     repo = "fastapi";
     rev = "refs/tags/${version}";
-    hash = "sha256-OXWJ1PKJSJGzYNT8HHXvxMxjUtI4K6edpI+Z5B3TvhI=";
+    hash = "sha256-qUh5exkXVRcKIO0t4KIOZhhpsftj3BrWaL2asf8RqUI=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/fastbencode/default.nix b/nixpkgs/pkgs/development/python-modules/fastbencode/default.nix
index 369d991aaa93..92eb19e0a0ee 100644
--- a/nixpkgs/pkgs/development/python-modules/fastbencode/default.nix
+++ b/nixpkgs/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,6 +33,7 @@ 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; [ ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/fastcore/default.nix b/nixpkgs/pkgs/development/python-modules/fastcore/default.nix
index 544bb26936d6..5311a0add549 100644
--- a/nixpkgs/pkgs/development/python-modules/fastcore/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fastcore/default.nix
@@ -1,35 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, packaging
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  packaging,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "fastcore";
-  version = "1.5.29";
-  format = "setuptools";
+  version = "1.5.35";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "fastai";
-    repo = pname;
+    repo = "fastcore";
     rev = "refs/tags/${version}";
-    hash = "sha256-yCPOF150TdkPHfLl8Jo2oow+91IzRKgnXo3eQMn5wK0=";
+    hash = "sha256-dhYmy7dAHmmRfC2mpn49UsE4+hpqMbB1PHGmrowCTIQ=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/faster-fifo/default.nix b/nixpkgs/pkgs/development/python-modules/faster-fifo/default.nix
index 1d77707b6aa5..a3b8f491a9da 100644
--- a/nixpkgs/pkgs/development/python-modules/faster-fifo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/faster-fifo/default.nix
@@ -1,6 +1,8 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, stdenv
+, gcc12Stdenv
 
 # build-system
 , cython
@@ -11,11 +13,17 @@
 , unittestCheckHook
 }:
 
+let
+  stdenv' = if stdenv.isLinux then gcc12Stdenv else stdenv;
+in
 buildPythonPackage rec {
   pname = "faster-fifo";
   version = "1.4.5";
   format = "pyproject";
 
+  # https://github.com/alex-petrenko/faster-fifo/issues/47\
+  stdenv = stdenv';
+
   src = fetchFromGitHub {
     owner = "alex-petrenko";
     repo = "faster-fifo";
diff --git a/nixpkgs/pkgs/development/python-modules/faster-whisper/default.nix b/nixpkgs/pkgs/development/python-modules/faster-whisper/default.nix
index 2fe0b785cea6..4a54757640b9 100644
--- a/nixpkgs/pkgs/development/python-modules/faster-whisper/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/faster-whisper/default.nix
@@ -19,14 +19,14 @@
 
 buildPythonPackage rec {
   pname = "faster-whisper";
-  version = "1.0.1";
+  version = "1.0.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "SYSTRAN";
     repo = "faster-whisper";
     rev = "refs/tags/v${version}";
-    hash = "sha256-b8P9fI32ubOrdayA0vnjLhpZ4qffB6W+8TEOA1YLKqo=";
+    hash = "sha256-O2RRwb+omgSpfckHh3oPu454g2ULT4gyolrg5olHcRc=";
   };
 
   build-system = [
@@ -62,9 +62,9 @@ buildPythonPackage rec {
   '';
 
   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/nixpkgs/pkgs/development/python-modules/ffmpy/default.nix b/nixpkgs/pkgs/development/python-modules/ffmpy/default.nix
index 974e2bcd8fda..880a8f84ee75 100644
--- a/nixpkgs/pkgs/development/python-modules/ffmpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ffmpy/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fetchFromGitHub
 , pythonOlder
@@ -44,6 +45,11 @@ buildPythonPackage rec {
     go
   ];
 
+  disabledTests = lib.optionals stdenv.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
diff --git a/nixpkgs/pkgs/development/python-modules/file-read-backwards/default.nix b/nixpkgs/pkgs/development/python-modules/file-read-backwards/default.nix
index 9317021f4506..ddb141b8ac7c 100644
--- a/nixpkgs/pkgs/development/python-modules/file-read-backwards/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/filedate/default.nix b/nixpkgs/pkgs/development/python-modules/filedate/default.nix
new file mode 100644
index 000000000000..5317169caa68
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/filelock/default.nix b/nixpkgs/pkgs/development/python-modules/filelock/default.nix
index b32335bb2475..5b739bcc8fda 100644
--- a/nixpkgs/pkgs/development/python-modules/filelock/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/filelock/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "filelock";
-  version = "3.13.1";
+  version = "3.13.4";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Uh9fVsUPhCb14DrTsoG0kKh+8VvGxSbxaCkPDHFI1E4=";
+    hash = "sha256-0T9GZhi/3nK9LBglXiafclQsbnDnusg6AjLWscxcjPQ=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/flask-appbuilder/default.nix b/nixpkgs/pkgs/development/python-modules/flask-appbuilder/default.nix
index 3598500e37f5..2e7f5fb80850 100644
--- a/nixpkgs/pkgs/development/python-modules/flask-appbuilder/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flask-appbuilder/default.nix
@@ -15,7 +15,6 @@
 , flask-jwt-extended
 , jsonschema
 , marshmallow
-, marshmallow-enum
 , marshmallow-sqlalchemy
 , python-dateutil
 , pythonOlder
@@ -53,7 +52,6 @@ buildPythonPackage rec {
     flask-jwt-extended
     jsonschema
     marshmallow
-    marshmallow-enum
     marshmallow-sqlalchemy
     python-dateutil
     prison
diff --git a/nixpkgs/pkgs/development/python-modules/flask/default.nix b/nixpkgs/pkgs/development/python-modules/flask/default.nix
index 8c60066b1975..77d26dc24b82 100644
--- a/nixpkgs/pkgs/development/python-modules/flask/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flask/default.nix
@@ -31,12 +31,12 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/flax/default.nix b/nixpkgs/pkgs/development/python-modules/flax/default.nix
index ce41f8e56139..6afe4ef9a2f3 100644
--- a/nixpkgs/pkgs/development/python-modules/flax/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flax/default.nix
@@ -25,7 +25,7 @@
 
 buildPythonPackage rec {
   pname = "flax";
-  version = "0.8.2";
+  version = "0.8.3";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -34,16 +34,16 @@ buildPythonPackage rec {
     owner = "google";
     repo = "flax";
     rev = "refs/tags/v${version}";
-    hash = "sha256-UABgJGe1grUSkwOJpjeIoFqhXsqG//HlC1YyYPxXV+g=";
+    hash = "sha256-uDGTyksUZTTL6FiTJP+qteFLOjr75dcTj9yRJ6Jm8xU=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     jaxlib
     pythonRelaxDepsHook
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jax
     msgpack
     numpy
diff --git a/nixpkgs/pkgs/development/python-modules/flexmock/default.nix b/nixpkgs/pkgs/development/python-modules/flexmock/default.nix
index 45b2981ba959..7ec46f29da6f 100644
--- a/nixpkgs/pkgs/development/python-modules/flexmock/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flexmock/default.nix
@@ -10,14 +10,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/flow-record/default.nix b/nixpkgs/pkgs/development/python-modules/flow-record/default.nix
index 3e836772aa85..d9c61a791615 100644
--- a/nixpkgs/pkgs/development/python-modules/flow-record/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/fontbakery/default.nix b/nixpkgs/pkgs/development/python-modules/fontbakery/default.nix
index 3076e6a4c469..313e6d7c7e48 100644
--- a/nixpkgs/pkgs/development/python-modules/fontbakery/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fontbakery/default.nix
@@ -47,11 +47,11 @@
 
 buildPythonPackage rec {
   pname = "fontbakery";
-  version = "0.11.2";
+  version = "0.12.5";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-61EXlf+d5kJeUF41OEnGNLaOcSvFWUDFgarVvHQZYmw=";
+    hash = "sha256-DN1v5MQtMhHO12tVPkJUuIfh+X3kb1o71zAwNgtLH+I=";
   };
 
   pyproject = true;
diff --git a/nixpkgs/pkgs/development/python-modules/fontbakery/tests.nix b/nixpkgs/pkgs/development/python-modules/fontbakery/tests.nix
index 4725b1fee3e3..d968d6ec056d 100644
--- a/nixpkgs/pkgs/development/python-modules/fontbakery/tests.nix
+++ b/nixpkgs/pkgs/development/python-modules/fontbakery/tests.nix
@@ -10,13 +10,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/nixpkgs/pkgs/development/python-modules/fontmake/default.nix b/nixpkgs/pkgs/development/python-modules/fontmake/default.nix
index 7911750bbeeb..9ad75847b466 100644
--- a/nixpkgs/pkgs/development/python-modules/fontmake/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fontmake/default.nix
@@ -12,12 +12,12 @@
 
 buildPythonPackage rec {
   pname = "fontmake";
-  version = "3.8.1";
-  format = "setuptools";
+  version = "3.9.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-m0cRLm9Jbqlsf9NwR7Lma2NZYUjy5IDJYOorVbdLDuw=";
+    hash = "sha256-KrfT0fvE1fhaM2RH4LqRUda7yMHg2T59UdGi3SSZP7s=";
     extension = "zip";
   };
 
diff --git a/nixpkgs/pkgs/development/python-modules/fonttools/default.nix b/nixpkgs/pkgs/development/python-modules/fonttools/default.nix
index be573a627e99..57e8372efa76 100644
--- a/nixpkgs/pkgs/development/python-modules/fonttools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fonttools/default.nix
@@ -26,7 +26,7 @@
 
 buildPythonPackage rec {
   pname = "fonttools";
-  version = "4.49.0";
+  version = "4.51.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -35,7 +35,7 @@ buildPythonPackage rec {
     owner  = pname;
     repo   = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-8xQVuAnIS/mwYKwI+ow0YArIP8wFTKWGLZ+NCgIFYok=";
+    hash = "sha256-JUAFGLjyq/2OXlhTB6dIcO3Mq7Rx1HII+sg2TaQfPYU=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/foobot-async/default.nix b/nixpkgs/pkgs/development/python-modules/foobot-async/default.nix
index 50029f232a1c..895bccb33137 100644
--- a/nixpkgs/pkgs/development/python-modules/foobot-async/default.nix
+++ b/nixpkgs/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";
+  pyproject = true;
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     pname = "foobot_async";
     inherit version;
-    sha256 = "fa557a22de925139cb4a21034ffdbcd01d28bf166c0e680eaf84a99206327f40";
+    hash = "sha256-+lV6It6SUTnLSiEDT/280B0ovxZsDmgOr4SpkgYyf0A=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     aiohttp
     async-timeout
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/fpdf2/default.nix b/nixpkgs/pkgs/development/python-modules/fpdf2/default.nix
index fdd43f1ca5c8..b3a764724c46 100644
--- a/nixpkgs/pkgs/development/python-modules/fpdf2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fpdf2/default.nix
@@ -57,6 +57,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/nixpkgs/pkgs/development/python-modules/fpylll/default.nix b/nixpkgs/pkgs/development/python-modules/fpylll/default.nix
index 95358d5f4aaf..2b4571b53edb 100644
--- a/nixpkgs/pkgs/development/python-modules/fpylll/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fpylll/default.nix
@@ -15,6 +15,9 @@
 , fplll
 , numpy
 
+# Reverse dependency
+, sage
+
 # tests
 , pytestCheckHook
 }:
@@ -72,6 +75,8 @@ buildPythonPackage rec {
     export PY_IGNORE_IMPORTMISMATCH=1
   '';
 
+  passthru.tests = { inherit sage; };
+
   meta = with lib; {
     description = "A Python interface for fplll";
     changelog = "https://github.com/fplll/fpylll/releases/tag/${version}";
diff --git a/nixpkgs/pkgs/development/python-modules/frozendict/default.nix b/nixpkgs/pkgs/development/python-modules/frozendict/default.nix
index 5405e570ed8d..c3f5d2a5600b 100644
--- a/nixpkgs/pkgs/development/python-modules/frozendict/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/frozendict/default.nix
@@ -9,7 +9,7 @@
 
 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
diff --git a/nixpkgs/pkgs/development/python-modules/functools32/default.nix b/nixpkgs/pkgs/development/python-modules/functools32/default.nix
deleted file mode 100644
index be907e963c10..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/development/python-modules/fuzzytm/default.nix b/nixpkgs/pkgs/development/python-modules/fuzzytm/default.nix
index e7dae0d02ee1..3a86d0c55397 100644
--- a/nixpkgs/pkgs/development/python-modules/fuzzytm/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/fyta-cli/default.nix b/nixpkgs/pkgs/development/python-modules/fyta-cli/default.nix
index 7e0b2971be50..79189827c7e9 100644
--- a/nixpkgs/pkgs/development/python-modules/fyta-cli/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fyta-cli/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "fyta-cli";
-  version = "0.4.0";
+  version = "0.4.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "dontinelli";
     repo = "fyta_cli";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ThxC+s0vkvFQw9FKMWO+cHJB1ci+USdxQa4PRqHrKLM=";
+    hash = "sha256-eWuuHIq79n1oFsvBfVySfGCtHz+MlFRR3j8uqtVR+V0=";
   };
 
   build-system = [ hatchling ];
diff --git a/nixpkgs/pkgs/development/python-modules/gamble/default.nix b/nixpkgs/pkgs/development/python-modules/gamble/default.nix
index 6cdfc4410b34..171eb03a7529 100644
--- a/nixpkgs/pkgs/development/python-modules/gamble/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gamble/default.nix
@@ -1,22 +1,29 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , pytestCheckHook
 , pythonOlder
+, poetry-core
 }:
 
 buildPythonPackage rec {
   pname = "gamble";
-  version = "0.11";
-  format = "setuptools";
+  version = "0.13";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-zsEBqhKidgO1e0lpKhw+LY75I2Df+IefNLaSkBBFKFU=";
+  src = fetchFromGitHub {
+    owner = "jpetrucciani";
+    repo = "gamble";
+    rev = "refs/tags/${version}";
+    hash = "sha256-eHosY/JfJr317S7WI8phy7DNHf3cZzs6c5MMfw7yzAE=";
   };
 
+  build-system = [
+    poetry-core
+  ];
+
   nativeCheckInputs = [
     pytestCheckHook
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/gcal-sync/default.nix b/nixpkgs/pkgs/development/python-modules/gcal-sync/default.nix
index 7a2ce7e51197..59914e233582 100644
--- a/nixpkgs/pkgs/development/python-modules/gcal-sync/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gcal-sync/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "gcal-sync";
-  version = "6.0.4";
+  version = "6.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "allenporter";
     repo = "gcal_sync";
     rev = "refs/tags/${version}";
-    hash = "sha256-ufoe9+4zhlixcSGMAhuhJx2Y2vrN036N8UvyP3xuTRQ=";
+    hash = "sha256-mZn/3oROIUSv6cCxXs3rBJtlmKsqNflTW2pcER8GisE=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/gcovr/default.nix b/nixpkgs/pkgs/development/python-modules/gcovr/default.nix
index 7b8b32b2c5de..98051cc1a40c 100644
--- a/nixpkgs/pkgs/development/python-modules/gcovr/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gcovr/default.nix
@@ -46,6 +46,6 @@ buildPythonPackage rec {
     homepage = "https://www.gcovr.com/";
     changelog = "https://github.com/gcovr/gcovr/blob/${version}/CHANGELOG.rst";
     license = licenses.bsd0;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ sigmanificient ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/gdown/default.nix b/nixpkgs/pkgs/development/python-modules/gdown/default.nix
index 1b0b3aa70b92..881840e2a0e8 100644
--- a/nixpkgs/pkgs/development/python-modules/gdown/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gdown/default.nix
@@ -15,14 +15,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/gemfileparser/default.nix b/nixpkgs/pkgs/development/python-modules/gemfileparser/default.nix
index e6b91d24f804..73ef12c7496f 100644
--- a/nixpkgs/pkgs/development/python-modules/gemfileparser/default.nix
+++ b/nixpkgs/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";
     homepage = "https://github.com/gemfileparser/gemfileparser";
-    license = with licenses; [ gpl3Plus /* or */ mit ];
-    maintainers = [ ];
+    license = with licenses; [
+      gpl3Plus
+      mit
+    ];
+    maintainers = with maintainers; [ ];
+    mainProgram = "parsegemfile";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/gensim/default.nix b/nixpkgs/pkgs/development/python-modules/gensim/default.nix
index f43bfb518cfb..171c0faabf92 100644
--- a/nixpkgs/pkgs/development/python-modules/gensim/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gensim/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , cython
 , fetchPypi
+, fetchpatch
 , mock
 , numpy
 , scipy
@@ -24,6 +25,16 @@ buildPythonPackage rec {
     hash = "sha256-maxq9v/UBoLnAVXtn5Lsv0OE1Z+1CvEg00PqXuGzCKs=";
   };
 
+  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
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix b/nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix
index 8e49a7d14b71..df89acd2b6b7 100644
--- a/nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "geoalchemy2";
-  version = "0.15.0";
+  version = "0.15.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "geoalchemy";
     repo = "geoalchemy2";
     rev = "refs/tags/${version}";
-    hash = "sha256-cQixNLtjHPQrnNcxg0MrIdzvun2f1BqKY/2SxfcM2Nc=";
+    hash = "sha256-EMsaB6VDDDvXg9LKa9ms0+AfzX1rG+yeR898EK59DDs=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/geventhttpclient/default.nix b/nixpkgs/pkgs/development/python-modules/geventhttpclient/default.nix
index 1943888df752..d61e390135c3 100644
--- a/nixpkgs/pkgs/development/python-modules/geventhttpclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/geventhttpclient/default.nix
@@ -3,10 +3,12 @@
 , buildPythonPackage
 , certifi
 , dpkt
-, fetchPypi
+, fetchFromGitHub
 , gevent
+, llhttp
 , pytestCheckHook
 , pythonOlder
+, setuptools
 , six
 , stdenv
 , urllib3
@@ -14,27 +16,34 @@
 
 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)
@@ -42,15 +51,12 @@ buildPythonPackage rec {
 
   __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
+  '';
+
+  pytestFlagsArray = [
+    "-m 'not network'"
   ];
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/gflanguages/default.nix b/nixpkgs/pkgs/development/python-modules/gflanguages/default.nix
index 9a3f77f957c0..852bf166b387 100644
--- a/nixpkgs/pkgs/development/python-modules/gflanguages/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gflanguages/default.nix
@@ -13,13 +13,13 @@
 
 buildPythonPackage rec {
   pname = "gflanguages";
-  version = "0.5.17";
+  version = "0.6.1";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-dScgRQ6usjSqV0FqDyP+KGvHL06wlTFVcO+MmZ2NMAs=";
+    hash = "sha256-mlRNzrAgeEt1/VbQEXWIxCD9NkULMOnkFsALO5H+1SY=";
   };
 
   pyproject = true;
diff --git a/nixpkgs/pkgs/development/python-modules/gguf/default.nix b/nixpkgs/pkgs/development/python-modules/gguf/default.nix
new file mode 100644
index 000000000000..767a8472adf8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gguf/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, poetry-core
+, pythonOlder
+}:
+buildPythonPackage rec {
+  pname = "gguf";
+  version = "0.6.0";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-suIuq6KhBsGtFIGGoUrZ8pxCk1Fob+nXzhbfOaBgfmU=";
+  };
+
+  dependencies = [
+    numpy
+    poetry-core
+  ];
+
+  doCheck = false;
+
+  meta = with lib; {
+    description = "A module for writing binary files in the GGUF format";
+    homepage = "https://ggml.ai/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ mitchmindtree ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gipc/default.nix b/nixpkgs/pkgs/development/python-modules/gipc/default.nix
index 297b6c9865de..7a0529cc89af 100644
--- a/nixpkgs/pkgs/development/python-modules/gipc/default.nix
+++ b/nixpkgs/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 = with maintainers; [ ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/glean-parser/default.nix b/nixpkgs/pkgs/development/python-modules/glean-parser/default.nix
index 86a4c6248f5d..510d3c9d8c1b 100644
--- a/nixpkgs/pkgs/development/python-modules/glean-parser/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/glean-parser/default.nix
@@ -9,13 +9,14 @@
 , pytestCheckHook
 , pythonOlder
 , pyyaml
+, setuptools
 , setuptools-scm
 , yamllint
 }:
 
 buildPythonPackage rec {
   pname = "glean-parser";
-  version = "13.0.1";
+  version = "14.1.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -23,7 +24,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "glean_parser";
     inherit version;
-    hash = "sha256-/urUy+xpMO04pI31uunrTuSGu0Am3fLzIGuF+AJ50ec=";
+    hash = "sha256-OL59Tg+rD4M0DjQnkU4IqGMcf6sIioxg6bVDyrbqgww=";
   };
 
   postPatch = ''
@@ -43,6 +44,7 @@ buildPythonPackage rec {
     jinja2
     jsonschema
     pyyaml
+    setuptools
     yamllint
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/glob2/default.nix b/nixpkgs/pkgs/development/python-modules/glob2/default.nix
index 5d75da953ed5..24658f2f7874 100644
--- a/nixpkgs/pkgs/development/python-modules/glob2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/glob2/default.nix
@@ -22,6 +22,6 @@ buildPythonPackage rec {
     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 = [ ];
+    maintainers = with lib.maintainers; [ sigmanificient ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/globre/default.nix b/nixpkgs/pkgs/development/python-modules/globre/default.nix
deleted file mode 100644
index a270a2b4c430..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/development/python-modules/globus-sdk/default.nix b/nixpkgs/pkgs/development/python-modules/globus-sdk/default.nix
index cd8528125780..646fb31650d1 100644
--- a/nixpkgs/pkgs/development/python-modules/globus-sdk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/globus-sdk/default.nix
@@ -2,18 +2,20 @@
 , 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,10 +23,14 @@ 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
@@ -34,17 +40,11 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
-    responses
   ];
 
-  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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/glymur/default.nix b/nixpkgs/pkgs/development/python-modules/glymur/default.nix
index 4ff23443e40d..0f8ad79c72b2 100644
--- a/nixpkgs/pkgs/development/python-modules/glymur/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/glymur/default.nix
@@ -1,10 +1,13 @@
 { lib
 , stdenv
 , buildPythonPackage
+, substituteAll
+, glibc
+, libtiff
+, openjpeg
 , fetchFromGitHub
 , lxml
 , numpy
-, openjpeg
 , pytestCheckHook
 , pythonOlder
 , scikit-image
@@ -13,54 +16,66 @@
 
 buildPythonPackage rec {
   pname = "glymur";
-  version = "0.12.5";
-  format = "pyproject";
+  version = "0.13.2";
+  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-GUqe9mdMm2O/cbZw8Reohh4X1kO+xOMWHb83PjNvdu8=";
   };
 
-  nativeBuildInputs = [
+  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}";
+    })
+  ];
+
+  postPatch = lib.optionalString (!stdenv.isDarwin) ''
+    substituteInPlace glymur/lib/tiff.py \
+        --replace-fail "glymur_config('c')" "ctypes.CDLL('${lib.getLib glibc}/lib/libc.so.6')"
+  '';
+
+  __propagatedImpureHostDeps = lib.optional stdenv.isDarwin "/usr/lib/libc.dylib";
+
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  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"
   ];
 
-  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; [ ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tomasajt ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/glymur/set-lib-paths.patch b/nixpkgs/pkgs/development/python-modules/glymur/set-lib-paths.patch
new file mode 100644
index 000000000000..4ae7b58b1cdc
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/glyphsets/default.nix b/nixpkgs/pkgs/development/python-modules/glyphsets/default.nix
index f59e7f09607d..a686f67a64d9 100644
--- a/nixpkgs/pkgs/development/python-modules/glyphsets/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/glyphsets/default.nix
@@ -6,6 +6,7 @@
 , gflanguages
 , glyphslib
 , pytestCheckHook
+, pyyaml
 , requests
 , setuptools
 , setuptools-scm
@@ -14,12 +15,12 @@
 
 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=";
   };
 
   dependencies = [
@@ -27,6 +28,7 @@ buildPythonPackage rec {
     fonttools
     gflanguages
     glyphslib
+    pyyaml
     requests
     setuptools
     unicodedata2
diff --git a/nixpkgs/pkgs/development/python-modules/glyphslib/default.nix b/nixpkgs/pkgs/development/python-modules/glyphslib/default.nix
index 37f527f29e1b..99e519ef3728 100644
--- a/nixpkgs/pkgs/development/python-modules/glyphslib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/glyphslib/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "glyphslib";
-  version = "6.7.0";
+  version = "6.7.1";
 
   format = "pyproject";
 
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "googlefonts";
     repo = "glyphsLib";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Fhp/2nK1LFgpJ3J7ZTxl2jKT6sCDyqT5qlLCtbnUejM=";
+    hash = "sha256-mUwbUGLhxwoYEwjbT558rTA8dtWxQXyqWYNEVy/WpIU=";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/nixpkgs/pkgs/development/python-modules/gmpy/default.nix b/nixpkgs/pkgs/development/python-modules/gmpy/default.nix
index 072ef985dc01..d68f038ec3b9 100644
--- a/nixpkgs/pkgs/development/python-modules/gmpy/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/gmpy2/default.nix b/nixpkgs/pkgs/development/python-modules/gmpy2/default.nix
index b5a602d4f222..7bf82ed02b2d 100644
--- a/nixpkgs/pkgs/development/python-modules/gmpy2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gmpy2/default.nix
@@ -1,37 +1,73 @@
-{ 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.isLinux && stdenv.isAarch64) [
+    # issue with some overflow logic
+    "test_mpz_to_bytes"
+    "test_mpz_from_bytes"
+  ];
 
   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/nixpkgs/pkgs/development/python-modules/goodwe/default.nix b/nixpkgs/pkgs/development/python-modules/goodwe/default.nix
index 8e4eb71a97dc..a7811fbf5c03 100644
--- a/nixpkgs/pkgs/development/python-modules/goodwe/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/goodwe/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "goodwe";
-  version = "0.3.3";
+  version = "0.4.2";
   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-Zptw8iEPjakMQ/OytGAqDaG973XuMy5UzsNv4LONlRU=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/google-ai-generativelanguage/default.nix b/nixpkgs/pkgs/development/python-modules/google-ai-generativelanguage/default.nix
index f19df6658fd2..9de834fab5d7 100644
--- a/nixpkgs/pkgs/development/python-modules/google-ai-generativelanguage/default.nix
+++ b/nixpkgs/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.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-MIeRrDudrQFbNZFylwc5qjdT3VQhQqQW0H+foEfiI4Y=";
+    hash = "sha256-F1CEjBKvlsskrhw90F5L/iSGfcRXcAntA+EELYQh6HQ=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-auth/default.nix b/nixpkgs/pkgs/development/python-modules/google-auth/default.nix
index efe5dcd33541..b8ff0805b01e 100644
--- a/nixpkgs/pkgs/development/python-modules/google-auth/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-auth/default.nix
@@ -26,14 +26,14 @@
 
 buildPythonPackage rec {
   pname = "google-auth";
-  version = "2.28.1";
+  version = "2.29.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-NPwwRsJXztzxYi/Esx/Cvnkj2bTUSXPUgRJezFDYOIU=";
+    hash = "sha256-Zy3/My0HMidVD/x0V4aKxCGNbFALFV/mzBfSsTYCw2A=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-storage/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-storage/default.nix
index 1cda61e13757..a669bd364133 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-storage/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-storage/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-bigquery-storage";
-  version = "2.24.0";
+  version = "2.25.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-tK9bmqzYOWuEB9G4d2AaN22O6m0ZKCOop4gb0v3Ads4=";
+    hash = "sha256-GV/9KxgOnqoivqs+QKC2Hs0UbssyZnz0Immo1xEbTUg=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery/default.nix
index a079fffd2510..564ea58c7136 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery/default.nix
+++ b/nixpkgs/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.22.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-YmXDn51b31DxHLganCoGBdKF3zSsE53g0jM7ElCt0P8=";
+    hash = "sha256-lXWR5vlI18tKoPeo5OR7RhfNfwJp4opxw3lTw5tuikw=";
   };
 
   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
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-dlp/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-dlp/default.nix
index f3895b8e3ef1..52c1ee3e4f2d 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-dlp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-dlp/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-dlp";
-  version = "3.16.0";
+  version = "3.17.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-DWmh96XviHVsmeVrivTDnq5A0hBog/DieUxcs2QmltU=";
+    hash = "sha256-YMUEBj8c154KA5Y/cm1gbypDxkfY4ncCq5wbym5rS9s=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-iam/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-iam/default.nix
index 93c85687dd4c..c5b192169bef 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-iam/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-iam/default.nix
@@ -12,14 +12,14 @@
 
 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 +34,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/nixpkgs/pkgs/development/python-modules/google-cloud-kms/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-kms/default.nix
index 45fd8082d3d0..2dec1cea50a3 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-kms/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-kms/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-kms";
-  version = "2.21.3";
+  version = "2.21.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-XofVp7fY9bXJ8PZI81KniGlRqLTHJwPrnOe6gHb8JTM=";
+    hash = "sha256-AQW8FKOYt/05GUO766/VkY8+NAaCepiXObLcOInMEhg=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-netapp/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-netapp/default.nix
index 6f9162b757a7..7c6b06e12180 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-netapp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-netapp/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-netapp";
-  version = "0.3.9";
+  version = "0.3.10";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Vohliy9W+fkY4YmSIvw6WiWVlLBk+Fo9CvZG/VKeU1o=";
+    hash = "sha256-Bau1Xqb+lmG6aCoWm93mtfOII7CbnnaeZ5vmLp6n0Zs=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-generativeai/default.nix b/nixpkgs/pkgs/development/python-modules/google-generativeai/default.nix
index 4425966a0063..a595dae0dc24 100644
--- a/nixpkgs/pkgs/development/python-modules/google-generativeai/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-generativeai/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "google-generativeai";
-  version = "0.5.2";
+  version = "0.5.4";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "google";
     repo = "generative-ai-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-R1ndVzGKXWRNkWvvuP4HFBXbuk54bCZZvMJY+yalJGU=";
+    hash = "sha256-g/strcvXNT21pD4Lt9sgFBgEgiFid+D/cUlTm6k3R6s=";
   };
 
   pythonRelaxDeps = [ "google-ai-generativelanguage" ];
diff --git a/nixpkgs/pkgs/development/python-modules/gotailwind/default.nix b/nixpkgs/pkgs/development/python-modules/gotailwind/default.nix
index f1ae7880a279..8593c49ddc11 100644
--- a/nixpkgs/pkgs/development/python-modules/gotailwind/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/govee-local-api/default.nix b/nixpkgs/pkgs/development/python-modules/govee-local-api/default.nix
index 6cf2fa9b29c2..1b1d8fcde5ca 100644
--- a/nixpkgs/pkgs/development/python-modules/govee-local-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/govee-local-api/default.nix
@@ -2,15 +2,15 @@
   lib,
   buildPythonPackage,
   fetchFromGitHub,
+  fetchpatch2,
   poetry-core,
-  poetry-dynamic-versioning,
   pytestCheckHook,
   pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "govee-local-api";
-  version = "1.4.4";
+  version = "1.4.5";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -19,12 +19,19 @@ buildPythonPackage rec {
     owner = "Galorhallen";
     repo = "govee-local-api";
     rev = "refs/tags/v${version}";
-    hash = "sha256-J4SG4n6LIZ/G6pEXAzliV7uTWzqsH7rtFe3Y7BJ2dWE=";
+    hash = "sha256-kmIuo/e3eLJTgmI+2Oq9Y0jov/133jXwgoBayGv33r4=";
   };
 
+  patches = [
+    (fetchpatch2 {
+      # configure pep517 build-backend
+      url = "https://github.com/Galorhallen/govee-local-api/commit/897a21ae723ff94343bbf4ba1541e3a1d3e03c94.patch";
+      hash = "sha256-/d5jGKGME768Ar+WWWQUByHJPGB31OHShI4oLjcMUIU=";
+    })
+  ];
+
   build-system = [
     poetry-core
-    poetry-dynamic-versioning
   ];
 
   nativeCheckInputs = [ pytestCheckHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/gpapi/default.nix b/nixpkgs/pkgs/development/python-modules/gpapi/default.nix
index 307e8dfb63b8..1ec16d8216aa 100644
--- a/nixpkgs/pkgs/development/python-modules/gpapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gpapi/default.nix
@@ -2,7 +2,6 @@
 , cryptography
 , fetchPypi
 , lib
-, pythonOlder
 , protobuf
 , pycryptodome
 , requests
@@ -12,7 +11,6 @@ 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;
diff --git a/nixpkgs/pkgs/development/python-modules/gpaw/default.nix b/nixpkgs/pkgs/development/python-modules/gpaw/default.nix
index 37b12c6f5ed4..033a7a418597 100644
--- a/nixpkgs/pkgs/development/python-modules/gpaw/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gpaw/default.nix
@@ -6,6 +6,7 @@
 , blas
 , lapack
 , mpi
+, fftw
 , scalapack
 , libxc
 , libvdwxc
@@ -89,9 +90,9 @@ in buildPythonPackage rec {
   # execute `rsh` as a side-effect.
   nativeBuildInputs = [ which inetutils ];
 
-  buildInputs = [ blas scalapack libxc libvdwxc ];
+  buildInputs = [ blas scalapack libxc libvdwxc fftw ];
 
-  propagatedBuildInputs = [ ase scipy numpy mpi pyyaml ];
+  propagatedBuildInputs = [ ase scipy numpy (lib.getBin mpi) pyyaml ];
 
   patches = [ ./SetupPath.patch ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/gradio/client.nix b/nixpkgs/pkgs/development/python-modules/gradio/client.nix
index 96c293d399c5..bbf4d468ce69 100644
--- a/nixpkgs/pkgs/development/python-modules/gradio/client.nix
+++ b/nixpkgs/pkgs/development/python-modules/gradio/client.nix
@@ -28,8 +28,8 @@
 
 buildPythonPackage rec {
   pname = "gradio-client";
-  version = "0.14.0";
-  format = "pyproject";
+  version = "0.16.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -37,9 +37,9 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "gradio-app";
     repo = "gradio";
-    rev = "refs/tags/@gradio/client@${version}";
+    rev = "refs/tags/gradio_client@${version}";
     sparseCheckout = [ "client/python" ];
-    hash = "sha256-7oC/Z3YUiOFZdv/60q7PkfluV77broRkHgWiY9Vim9Y=";
+    hash = "sha256-SVUm9LrjYG0r3U1yOd3rctxVMYlnAOW+Opqy9c3osnw=";
   };
   prePatch = ''
     cd client/python
@@ -52,7 +52,7 @@ buildPythonPackage rec {
     "websockets"
   ];
 
-  nativeBuildInputs = [
+  build-system = [
     hatchling
     hatch-requirements-txt
     hatch-fancy-pypi-readme
diff --git a/nixpkgs/pkgs/development/python-modules/gradio/default.nix b/nixpkgs/pkgs/development/python-modules/gradio/default.nix
index 6c735123aca1..d5fc508e1622 100644
--- a/nixpkgs/pkgs/development/python-modules/gradio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gradio/default.nix
@@ -62,7 +62,7 @@
 
 buildPythonPackage rec {
   pname = "gradio";
-  version = "4.22.0";
+  version = "4.29.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -71,7 +71,7 @@ buildPythonPackage rec {
   # and upstream has stopped tagging releases since 3.41.0
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-nhrT509xB3+R+HF6TF5AQGnfufT6iNmzjxZgcVL7fBo=";
+    hash = "sha256-17KT0b9kBO+xLgIgxfpwjETDoRM4aTJPlJv7HjkJXjo=";
   };
 
   # fix packaging.ParserSyntaxError, which can't handle comments
@@ -202,6 +202,8 @@ buildPythonPackage rec {
     #"-W" "ignore" # uncomment for debugging help
   ];
 
+  __darwinAllowLocalNetworking = true;
+
   # check the binary works outside the build env
   doInstallCheck = true;
   postInstallCheck = ''
diff --git a/nixpkgs/pkgs/development/python-modules/gremlinpython/default.nix b/nixpkgs/pkgs/development/python-modules/gremlinpython/default.nix
index 49401b44532a..8e78dae9c403 100644
--- a/nixpkgs/pkgs/development/python-modules/gremlinpython/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gremlinpython/default.nix
@@ -10,12 +10,13 @@
 , 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 +25,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";
@@ -53,6 +54,7 @@ buildPythonPackage rec {
     pytestCheckHook
     mock
     pyhamcrest
+    pyyaml
     radish-bdd
   ];
 
@@ -66,13 +68,26 @@ 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 = [
+  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))'"
+    "-k 'not ((TestFunctionalGraphSONIO and (test_timestamp or test_datetime or test_uuid)) or ${fullDisabled})'"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/griffe/default.nix b/nixpkgs/pkgs/development/python-modules/griffe/default.nix
index 6f385ff9fb7c..2fd12f938674 100644
--- a/nixpkgs/pkgs/development/python-modules/griffe/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/griffe/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "griffe";
-  version = "0.44.0";
+  version = "0.45.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "mkdocstrings";
     repo = "griffe";
     rev = "refs/tags/${version}";
-    hash = "sha256-jZ5QK6HiQ0C5miFYGavIlScJHmocy6frzC2c8xTvYOw=";
+    hash = "sha256-NmCnhImkdo2zAHhl2fLknV0rXXmJ9A+FL1uXUBF4IPk=";
   };
 
   build-system = [ pdm-backend ];
diff --git a/nixpkgs/pkgs/development/python-modules/grpcio-channelz/default.nix b/nixpkgs/pkgs/development/python-modules/grpcio-channelz/default.nix
index ba66ffe4e344..d4af46832018 100644
--- a/nixpkgs/pkgs/development/python-modules/grpcio-channelz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/grpcio-channelz/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "grpcio-channelz";
-  version = "1.62.1";
+  version = "1.62.2";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-e+8XBt/tt4lNbgNGemBjrBCxUAR7aWXi+0gU1MKmQkU=";
+    hash = "sha256-bkrCxD12skXF9m2Y9SPbCHhrGGEoplXubyCjCn5o5Pk=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/grpcio-status/default.nix b/nixpkgs/pkgs/development/python-modules/grpcio-status/default.nix
index 4fd21a8bf159..033e8ae58ae4 100644
--- a/nixpkgs/pkgs/development/python-modules/grpcio-status/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/grpcio-status/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "grpcio-status";
-  version = "1.62.1";
+  version = "1.62.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-NDHIq7qwBUkSxB31xy8D3fO3pnvoooe7PBijRW+W/3c=";
+    hash = "sha256-YuG/ywICWhzXNzKi0zZy0+nQ300hwSxR4LvK8JurdCo=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/grpcio-testing/default.nix b/nixpkgs/pkgs/development/python-modules/grpcio-testing/default.nix
index c5cdf76a5ef6..54022a0433ce 100644
--- a/nixpkgs/pkgs/development/python-modules/grpcio-testing/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/grpcio-testing/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "grpcio-testing";
-  version = "1.62.1";
+  version = "1.62.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-yyaVEAqykAtRz9vbVv4SEA1JWA8QrgZ6LKsRfo/HRu0=";
+    hash = "sha256-dNGeGQnpQbGmvvf71fnvMwWZ9nb7BrsGB8hFDtVVnfI=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/grpcio-tools/default.nix b/nixpkgs/pkgs/development/python-modules/grpcio-tools/default.nix
index 4aef9f5fbd0f..6b5c5cdda99f 100644
--- a/nixpkgs/pkgs/development/python-modules/grpcio-tools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/grpcio-tools/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "grpcio-tools";
-  version = "1.62.1";
+  version = "1.62.2";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-pJkeXuipereRKW079+hwCxRFY1zBgozJjflFyhgC1/I=";
+    hash = "sha256-X9XhWCtnjmuUHuX1gJNAvl4HJGkd9SmaroImZA+U4Y8=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/grpcio/default.nix b/nixpkgs/pkgs/development/python-modules/grpcio/default.nix
index e890280c676c..582314bf1073 100644
--- a/nixpkgs/pkgs/development/python-modules/grpcio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/grpcio/default.nix
@@ -18,11 +18,11 @@
 buildPythonPackage rec {
   pname = "grpcio";
   format = "setuptools";
-  version = "1.62.1";
+  version = "1.62.2";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-bEVeAI+obZ6anYW7dtpCd8DX2WaKO/pw2+hunzx1mUc=";
+    hash = "sha256-x3YYBx2Wt6i+LBBwGphTeCO5xluiVsC5Bn4FlM29lU0=";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/nixpkgs/pkgs/development/python-modules/gst-python/default.nix b/nixpkgs/pkgs/development/python-modules/gst-python/default.nix
index 7b557a605a5b..8a6ee21ede7d 100644
--- a/nixpkgs/pkgs/development/python-modules/gst-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gst-python/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "gst-python";
-  version = "1.22.9";
+  version = "1.24.2";
 
   format = "other";
 
@@ -22,7 +22,7 @@ buildPythonPackage rec {
 
   src = fetchurl {
     url = "https://gstreamer.freedesktop.org/src/gst-python/${pname}-${version}.tar.xz";
-    hash = "sha256-P51cb/79omhwN0S1kqazmDqmcjJzsSIOy8tiwqWAAAk=";
+    hash = "sha256-vZDzvIrxfc478mtmU377SVGGn/zmQD9ZhGG5heKy144=";
   };
 
   # Python 2.x is not supported.
diff --git a/nixpkgs/pkgs/development/python-modules/gurobipy/default.nix b/nixpkgs/pkgs/development/python-modules/gurobipy/default.nix
index 7793009abe96..9dc2cc10676d 100644
--- a/nixpkgs/pkgs/development/python-modules/gurobipy/default.nix
+++ b/nixpkgs/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-jODaasqXupII5JDE1QLUK+Jd07WJfAtxB3NIHCeuDa4=";
+    cp311-aarch64-linux = "sha256-hx6BgCbI8ojXRA/NS4Qr7N8QBvQ0lfxPbj7G2bi6PXo=";
     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-hiZbepqPPlMcG77m5hwefQtoJk6XZ5W0z3rsaLnmbrg=";
+    cp312-aarch64-darwin = "sha256-H5J44n2CUqOo8jzn2G6gZPehWsbPnZtHXi4Iygx2RRM=";
+    cp312-aarch64-linux = "sha256-xFUR7yizqSsytyfStRigKlZ7q8uY+VgRR/j29DKPWp0=";
     cp312-x86_64-darwin = cp312-aarch64-darwin;
-    cp312-x86_64-linux = "sha256-Aw5xxvCwdgfdT7HMrWT/jKWx3RDjs8IuB4in0ZGdqcw=";
+    cp312-x86_64-linux = "sha256-giNHTNfLX1hIiWOPQlLOnqjrbPWkKQrA4KXug6ujYxI=";
   };
   hash =
     hashes."${pyShortVersion}-${stdenv.system}"
@@ -32,7 +32,7 @@ let
 in
 buildPythonPackage rec {
   pname = "gurobipy";
-  version = "11.0.1";
+  version = "11.0.2";
   inherit format;
 
   src = fetchPypi {
diff --git a/nixpkgs/pkgs/development/python-modules/h5py/default.nix b/nixpkgs/pkgs/development/python-modules/h5py/default.nix
index 4afd562e033d..0da90d4ccb9e 100644
--- a/nixpkgs/pkgs/development/python-modules/h5py/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/h5py/default.nix
@@ -2,7 +2,6 @@
 , fetchPypi
 , buildPythonPackage
 , pythonOlder
-, oldest-supported-numpy
 , setuptools
 , wheel
 , numpy
@@ -21,21 +20,27 @@ let
   mpi = hdf5.mpi;
   mpiSupport = hdf5.mpiSupport;
 in buildPythonPackage rec {
-  version = "3.10.0";
+  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=";
   };
 
+  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
+  ];
+
   # avoid strict pinning of numpy
   postPatch = ''
-    substituteInPlace setup.py \
-      --replace "mpi4py ==" "mpi4py >="
+    substituteInPlace pyproject.toml \
+      --replace-fail "numpy >=2.0.0rc1" "numpy"
   '';
 
   HDF5_DIR = "${hdf5}";
@@ -51,7 +56,7 @@ in buildPythonPackage rec {
 
   nativeBuildInputs = [
     cython_0
-    oldest-supported-numpy
+    numpy
     pkgconfig
     setuptools
     wheel
diff --git a/nixpkgs/pkgs/development/python-modules/h5py/mpi4py-requirement.patch b/nixpkgs/pkgs/development/python-modules/h5py/mpi4py-requirement.patch
new file mode 100644
index 000000000000..b32e804ebe5f
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/habluetooth/default.nix b/nixpkgs/pkgs/development/python-modules/habluetooth/default.nix
index e84fa94ae0c1..702ffc382115 100644
--- a/nixpkgs/pkgs/development/python-modules/habluetooth/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/habluetooth/default.nix
@@ -1,4 +1,5 @@
 { lib
+, async-interrupt
 , bleak
 , bleak-retry-connector
 , bluetooth-adapters
@@ -16,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "habluetooth";
-  version = "2.4.2";
+  version = "2.8.1";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -25,22 +26,23 @@ buildPythonPackage rec {
     owner = "Bluetooth-Devices";
     repo = "habluetooth";
     rev = "refs/tags/v${version}";
-    hash = "sha256-IoVXmq9ShwLpGtoxVOtoirSirJJ1DqBI/mP7PmK7OUs=";
+    hash = "sha256-2QiV32gDaoIBLUv/a3YzosFl6+E/nm0WoSUcTx9ph8s=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace " --cov=habluetooth --cov-report=term-missing:skip-covered" ""
+      --replace-fail " --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
diff --git a/nixpkgs/pkgs/development/python-modules/hass-nabucasa/default.nix b/nixpkgs/pkgs/development/python-modules/hass-nabucasa/default.nix
index ac32e43cf932..ecaa475906d6 100644
--- a/nixpkgs/pkgs/development/python-modules/hass-nabucasa/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hass-nabucasa/default.nix
@@ -23,7 +23,7 @@
 
 buildPythonPackage rec {
   pname = "hass-nabucasa";
-  version = "0.80.0";
+  version = "0.81.0";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -32,7 +32,7 @@ buildPythonPackage rec {
     owner = "nabucasa";
     repo = "hass-nabucasa";
     rev = "refs/tags/${version}";
-    hash = "sha256-8KxnS6LTK077/hr81JOiOj8GaNWBXO8XlvpYBm/sZbI=";
+    hash = "sha256-61pdl9bjtvC9Fa7jCtSPEz/5PJiANmKqOSSHjK7is2s=";
   };
 
   pythonRelaxDeps = [ "acme" ];
diff --git a/nixpkgs/pkgs/development/python-modules/hatchling/default.nix b/nixpkgs/pkgs/development/python-modules/hatchling/default.nix
index 4d5d345d625d..fa5f239acacc 100644
--- a/nixpkgs/pkgs/development/python-modules/hatchling/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hatchling/default.nix
@@ -20,13 +20,13 @@
 
 buildPythonPackage rec {
   pname = "hatchling";
-  version = "1.22.4";
+  version = "1.24.2";
   format = "pyproject";
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ii3OyW1/uEg4LvWEjlrEP9rmQfNaCKP6tRFr1JXzQW4=";
+    hash = "sha256-Qd3CfNsl2573tovvB1+CnITLNJqhv/gkB5fQElEFR7A=";
   };
 
   # listed in backend/pyproject.toml
diff --git a/nixpkgs/pkgs/development/python-modules/hawkauthlib/default.nix b/nixpkgs/pkgs/development/python-modules/hawkauthlib/default.nix
index 9df850b78829..b7c6c73820a2 100644
--- a/nixpkgs/pkgs/development/python-modules/hawkauthlib/default.nix
+++ b/nixpkgs/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 = with maintainers; [ ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/hcs-utils/default.nix b/nixpkgs/pkgs/development/python-modules/hcs-utils/default.nix
index 2dc90870b614..d8d6bb67e47f 100644
--- a/nixpkgs/pkgs/development/python-modules/hcs-utils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hcs-utils/default.nix
@@ -1,4 +1,4 @@
-{ lib, pythonOlder, buildPythonPackage, fetchPypi, six, glibcLocales, pytest }:
+{ lib, buildPythonPackage, fetchPypi, six, glibcLocales, pytest }:
 
 buildPythonPackage rec {
   pname = "hcs-utils";
@@ -21,8 +21,6 @@ buildPythonPackage rec {
   buildInputs = [ six glibcLocales ];
   nativeCheckInputs = [ pytest ];
 
-  disabled = pythonOlder "3.4";
-
   meta = with lib; {
     description = "Library collecting some useful snippets";
     homepage    = "https://pypi.python.org/pypi/hcs_utils/1.3";
diff --git a/nixpkgs/pkgs/development/python-modules/heatzypy/default.nix b/nixpkgs/pkgs/development/python-modules/heatzypy/default.nix
index 9093afc2353a..843c8cbf1348 100644
--- a/nixpkgs/pkgs/development/python-modules/heatzypy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/heatzypy/default.nix
@@ -1,17 +1,17 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, requests
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, wheel
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "heatzypy";
-  version = "2.2.0";
+  version = "2.5.4";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -20,30 +20,20 @@ buildPythonPackage rec {
     owner = "Cyr-ius";
     repo = "heatzypy";
     rev = "refs/tags/${version}";
-    hash = "sha256-Q6v1Ob1PY8tpMnd8hchepq983dsZ6lJPCKz83RRwL3w=";
+    hash = "sha256-A01e3duNQmVv9vyOs6+gF/BdevLiYi/uXSq5bKmuRao=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace "replace_by_workflow" "${version}"
-  '';
-
-  nativeBuildInputs = [
+  build-system = [
     setuptools
-    wheel
+    setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    aiohttp
-    requests
-  ];
+  dependencies = [ aiohttp ];
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "heatzypy"
-  ];
+  pythonImportsCheck = [ "heatzypy" ];
 
   meta = with lib; {
     description = "Module to interact with Heatzy devices";
diff --git a/nixpkgs/pkgs/development/python-modules/heudiconv/default.nix b/nixpkgs/pkgs/development/python-modules/heudiconv/default.nix
index 9c78027e0a83..8794192471ba 100644
--- a/nixpkgs/pkgs/development/python-modules/heudiconv/default.nix
+++ b/nixpkgs/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.3";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zRLRdP3LpytHCTrehhPYMmJnss5v6ojjkIPuB8fKR5w=";
+    hash = "sha256-ktw/XrvA5G+DunjEB8LeQuQnjs6zQOKsZ+RGpzDZ5DQ=";
   };
 
   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/nixpkgs/pkgs/development/python-modules/hickle/default.nix b/nixpkgs/pkgs/development/python-modules/hickle/default.nix
index ec802955c0d3..b4597cd0c0d4 100644
--- a/nixpkgs/pkgs/development/python-modules/hickle/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hickle/default.nix
@@ -18,7 +18,7 @@ buildPythonPackage rec {
   version = "5.0.3";
   pyproject = true;
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
@@ -47,17 +47,6 @@ buildPythonPackage rec {
 
   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/nixpkgs/pkgs/development/python-modules/hid/default.nix b/nixpkgs/pkgs/development/python-modules/hid/default.nix
index deb4006dfe78..7c33cb5b9d3c 100644
--- a/nixpkgs/pkgs/development/python-modules/hid/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hid/default.nix
@@ -1,30 +1,40 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, setuptools
 , hidapi
-, nose
 }:
 
 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 = ''
-    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
+   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/nixpkgs/pkgs/development/python-modules/hikari-lightbulb/default.nix b/nixpkgs/pkgs/development/python-modules/hikari-lightbulb/default.nix
new file mode 100644
index 000000000000..3295dd637d8c
--- /dev/null
+++ b/nixpkgs/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 = "A 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/nixpkgs/pkgs/development/python-modules/hikari/default.nix b/nixpkgs/pkgs/development/python-modules/hikari/default.nix
index e76d7780c0bf..062a6a9ebe14 100644
--- a/nixpkgs/pkgs/development/python-modules/hikari/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hikari/default.nix
@@ -17,13 +17,13 @@
 }:
 buildPythonPackage rec {
   pname = "hikari";
-  version = "2.0.0.dev124";
+  version = "2.0.0.dev125";
 
   src = fetchFromGitHub {
     owner = "hikari-py";
     repo = "hikari";
     rev = version;
-    hash = "sha256-zDgU3Ol/I3YNnwXm+aBh20KwonW746p5TObuwuWORog=";
+    hash = "sha256-qxgIYquXUWrm8bS8EamERMHOnjI2aPyK7bQieVG66uA=";
     # 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,
diff --git a/nixpkgs/pkgs/development/python-modules/hikvision/default.nix b/nixpkgs/pkgs/development/python-modules/hikvision/default.nix
index 23f6387853a8..354edc5d7798 100644
--- a/nixpkgs/pkgs/development/python-modules/hikvision/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/hiyapyco/default.nix b/nixpkgs/pkgs/development/python-modules/hiyapyco/default.nix
index 96baf1790b04..4fd8f10bd111 100644
--- a/nixpkgs/pkgs/development/python-modules/hiyapyco/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hiyapyco/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "hiyapyco";
-  version = "0.5.5";
+  version = "0.5.6";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "zerwes";
     repo = pname;
     rev = "refs/tags/release-${version}";
-    hash = "sha256-LuENNwVB/1GyPLsfMRwHjz87c7+3/7U82m1MnHfRHdU=";
+    hash = "sha256-WBSOjOX4naa0XDTnO593EAvtz5EjVPWCbiZaPXdx0e4=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/hjson/default.nix b/nixpkgs/pkgs/development/python-modules/hjson/default.nix
index 44aa789f0d04..46ae9f518a34 100644
--- a/nixpkgs/pkgs/development/python-modules/hjson/default.nix
+++ b/nixpkgs/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";
     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/nixpkgs/pkgs/development/python-modules/holidays/default.nix b/nixpkgs/pkgs/development/python-modules/holidays/default.nix
index 82dc5a9882cf..79e5fc8d523a 100644
--- a/nixpkgs/pkgs/development/python-modules/holidays/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/holidays/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "holidays";
-  version = "0.47";
+  version = "0.48";
   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-PKa4knEUkULeGbwjEViF2J3QyUOOvKHYxy0ChmRQf6A=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/homematicip/default.nix b/nixpkgs/pkgs/development/python-modules/homematicip/default.nix
index 34016262e93b..f4aa29cfcb8d 100644
--- a/nixpkgs/pkgs/development/python-modules/homematicip/default.nix
+++ b/nixpkgs/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.1";
   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-VMHInAmNO0Nw0ohZnIJ9c77h35YSSNNnPNYaUpBlKOQ=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/hstspreload/default.nix b/nixpkgs/pkgs/development/python-modules/hstspreload/default.nix
index f8c4e32faf94..692cd31354ed 100644
--- a/nixpkgs/pkgs/development/python-modules/hstspreload/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hstspreload/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "hstspreload";
-  version = "2024.4.1";
+  version = "2024.5.1";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -16,19 +17,15 @@ buildPythonPackage rec {
     owner = "sethmlarson";
     repo = "hstspreload";
     rev = "refs/tags/${version}";
-    hash = "sha256-kbcUf06tgVgr5qu5YSCwHtlBVzUEEqF1A/D+4RCnUcc=";
+    hash = "sha256-Ut2VhU2+o4wm4WY4zz/25EyDLvrYoBu3iVFkx3FZVYo=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   # Tests require network connection
   doCheck = false;
 
-  pythonImportsCheck = [
-    "hstspreload"
-  ];
+  pythonImportsCheck = [ "hstspreload" ];
 
   meta = with lib; {
     description = "Chromium HSTS Preload list as a Python package and updated daily";
diff --git a/nixpkgs/pkgs/development/python-modules/html-text/default.nix b/nixpkgs/pkgs/development/python-modules/html-text/default.nix
index 00d2fb426d38..43d7ca228bb0 100644
--- a/nixpkgs/pkgs/development/python-modules/html-text/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/html2text/default.nix b/nixpkgs/pkgs/development/python-modules/html2text/default.nix
index bda7879eab0a..236b312e343d 100644
--- a/nixpkgs/pkgs/development/python-modules/html2text/default.nix
+++ b/nixpkgs/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;
+    maintainers = with maintainers; [ ];
     mainProgram = "html2text";
-    maintainers = [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/htseq/default.nix b/nixpkgs/pkgs/development/python-modules/htseq/default.nix
index 9d69a8bfef54..caa47f5197d6 100644
--- a/nixpkgs/pkgs/development/python-modules/htseq/default.nix
+++ b/nixpkgs/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";
     maintainers = with maintainers; [ unode ];
-    platforms = platforms.unix;
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/http-parser/default.nix b/nixpkgs/pkgs/development/python-modules/http-parser/default.nix
index 05cd4397dbf9..7e53465939f2 100644
--- a/nixpkgs/pkgs/development/python-modules/http-parser/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/httpcore/default.nix b/nixpkgs/pkgs/development/python-modules/httpcore/default.nix
index 212db973e9e0..df9ec754352e 100644
--- a/nixpkgs/pkgs/development/python-modules/httpcore/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/httpcore/default.nix
@@ -18,11 +18,12 @@
 # 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 +32,7 @@ buildPythonPackage rec {
     owner = "encode";
     repo = "httpcore";
     rev = "refs/tags/${version}";
-    hash = "sha256-DK5avYEtQcTFogpdEjw0NB4qkzDm5cZKPjAE8MC6Sng=";
+    hash = "sha256-05jYLrBiPRg1qQEz8mRvYJKHFsfneh7z9yHIXuYYa5o=";
   };
 
   nativeBuildInputs = [
@@ -74,7 +75,7 @@ buildPythonPackage rec {
   __darwinAllowLocalNetworking = true;
 
   passthru.tests = {
-    inherit httpx httpx-socks;
+    inherit httpx httpx-socks respx;
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/httpserver/default.nix b/nixpkgs/pkgs/development/python-modules/httpserver/default.nix
index 6d1374075886..59530ab5a704 100644
--- a/nixpkgs/pkgs/development/python-modules/httpserver/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/httpserver/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchPypi, buildPythonPackage, docopt, pythonOlder }:
+{ lib, fetchPypi, buildPythonPackage, docopt }:
 
 buildPythonPackage rec {
   pname = "httpserver";
@@ -11,9 +11,6 @@ buildPythonPackage rec {
   # drivers.
   doCheck = false;
 
-  # Because it uses asyncio
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
     sha256 = "1q62g324dvb0hqdwwrnj41sqr4d3ly78v9nc26rz1whj4pwdmhsv";
diff --git a/nixpkgs/pkgs/development/python-modules/httpx-ws/default.nix b/nixpkgs/pkgs/development/python-modules/httpx-ws/default.nix
new file mode 100644
index 000000000000..fd02d918f04f
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/humanfriendly/default.nix b/nixpkgs/pkgs/development/python-modules/humanfriendly/default.nix
index d8a3fa92e483..2c60b0b294b8 100644
--- a/nixpkgs/pkgs/development/python-modules/humanfriendly/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/humanfriendly/default.nix
@@ -1,8 +1,6 @@
 { lib
-, pythonOlder
 , buildPythonPackage
 , fetchPypi
-, monotonic
 }:
 
 buildPythonPackage rec {
@@ -15,8 +13,6 @@ buildPythonPackage rec {
     sha256 = "6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc";
   };
 
-  propagatedBuildInputs = lib.optional (pythonOlder "3.3") monotonic;
-
   # humanfriendly tests depends on coloredlogs which itself depends on
   # humanfriendly. This lead to infinite recursion when trying to
   # build this package so we have to disable the test suite :(
diff --git a/nixpkgs/pkgs/development/python-modules/hurry-filesize/default.nix b/nixpkgs/pkgs/development/python-modules/hurry-filesize/default.nix
index 62bd1f810f9d..7dd168bf9704 100644
--- a/nixpkgs/pkgs/development/python-modules/hurry-filesize/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hurry-filesize/default.nix
@@ -1,9 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-
-, pythonOlder
-
 , setuptools
 }:
 
@@ -12,8 +9,6 @@ buildPythonPackage rec {
   version = "0.9";
   pyproject = true;
 
-  disabled = pythonOlder "3.3";
-
   src = fetchPypi {
     pname = "hurry.filesize";
     inherit version;
diff --git a/nixpkgs/pkgs/development/python-modules/hvac/default.nix b/nixpkgs/pkgs/development/python-modules/hvac/default.nix
index 42f09f7266cc..f9309dcac3da 100644
--- a/nixpkgs/pkgs/development/python-modules/hvac/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hvac/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "hvac";
-  version = "2.1.0";
+  version = "2.2.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-tIvNoRpKsKe2xHIyx7p8h/2jGK4tSnZigAxGWnh0KJQ=";
+    hash = "sha256-5LAkjFZyy5pvWXTnyPUnGgnGxmPL+KsRczoifz0tssI=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/hypercorn/default.nix b/nixpkgs/pkgs/development/python-modules/hypercorn/default.nix
index 57d56fa417ca..b7add0e1a997 100644
--- a/nixpkgs/pkgs/development/python-modules/hypercorn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hypercorn/default.nix
@@ -2,12 +2,11 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pythonOlder
-, typing-extensions
-, wsproto
-, toml
+, exceptiongroup
+, h11
 , h2
 , priority
-, mock
+, wsproto
 , poetry-core
 , pytest-asyncio
 , pytest-trio
@@ -16,33 +15,44 @@
 
 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 = [
+  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" ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/hypothesis/default.nix b/nixpkgs/pkgs/development/python-modules/hypothesis/default.nix
index 5cf3408c89b7..09de31843bba 100644
--- a/nixpkgs/pkgs/development/python-modules/hypothesis/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hypothesis/default.nix
@@ -22,7 +22,7 @@
 
 buildPythonPackage rec {
   pname = "hypothesis";
-  version = "6.99.12";
+  version = "6.100.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -31,7 +31,7 @@ buildPythonPackage rec {
     owner = "HypothesisWorks";
     repo = "hypothesis";
     rev = "hypothesis-python-${version}";
-    hash = "sha256-0nzjRDv4L3bxxnC0lBY5S7FP9CFhyzHzNchWXoX91Zg=";
+    hash = "sha256-3Mwa1nS6rvFBcU5QXLH4/wa38qCvDX9sRina1aJS1Rs=";
   };
 
   # I tried to package sphinx-selective-exclude, but it throws
diff --git a/nixpkgs/pkgs/development/python-modules/iapws/default.nix b/nixpkgs/pkgs/development/python-modules/iapws/default.nix
index 8e2e3fd07a81..169950593f5a 100644
--- a/nixpkgs/pkgs/development/python-modules/iapws/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/iapws/default.nix
@@ -2,12 +2,12 @@
 
 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/nixpkgs/pkgs/development/python-modules/ibis-framework/default.nix b/nixpkgs/pkgs/development/python-modules/ibis-framework/default.nix
index c6d68d83dbff..4021eeceb565 100644
--- a/nixpkgs/pkgs/development/python-modules/ibis-framework/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ibis-framework/default.nix
@@ -42,6 +42,7 @@
 , pytest-mock
 , pytest-randomly
 , pytest-snapshot
+, pytest-timeout
 , pytest-xdist
 , python-dateutil
 , pytz
@@ -65,15 +66,15 @@ let
     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.0.0/nix/overlay.nix#L20-L26
+    rev = "1922bd4617546b877e66e78bb2b87abeb510cf8e";
+    hash = "sha256-l5d7r/6Voy6N2pXq3IivLX3N0tNfKKwsbZXRexzc8Z8=";
   };
 in
 
 buildPythonPackage rec {
   pname = "ibis-framework";
-  version = "8.0.0";
+  version = "9.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -83,7 +84,7 @@ buildPythonPackage rec {
     repo = "ibis";
     owner = "ibis-project";
     rev = "refs/tags/${version}";
-    hash = "sha256-KcNZslqmSbu8uPYKpkyvd7d8Fsf0nQt80y0auXsI8fs=";
+    hash = "sha256-ebTYCBL1zm2Rmwg998x2kYvKhyQDk8Di1pcx5lR37xo=";
   };
 
   nativeBuildInputs = [
@@ -120,6 +121,7 @@ buildPythonPackage rec {
     pytest-mock
     pytest-randomly
     pytest-snapshot
+    pytest-timeout
     pytest-xdist
   ] ++ lib.concatMap (name: passthru.optional-dependencies.${name}) testBackends;
 
@@ -133,8 +135,11 @@ buildPythonPackage rec {
     # 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"
+    "test_register_sqlite"
     # duckdb does not respect sample_size=2 (reads 3 lines of csv).
     "test_csv_reregister_schema"
     # duckdb fails with:
diff --git a/nixpkgs/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix b/nixpkgs/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix
index 46a5eb3e3691..65ddf3d5c071 100644
--- a/nixpkgs/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "ibm-cloud-sdk-core";
-  version = "3.19.2";
+  version = "3.20.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-qodN9ALyAfzsrCAiPT3t02JJRCBqFCNVWlsQP+4d3do=";
+    hash = "sha256-CqbZcEP1ianvRRpx527KBjQTjvGBzlSmoKY1Pe5MXRA=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/ical/default.nix b/nixpkgs/pkgs/development/python-modules/ical/default.nix
index 7807d5d7b279..2d573dcaeafd 100644
--- a/nixpkgs/pkgs/development/python-modules/ical/default.nix
+++ b/nixpkgs/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.0.2";
   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-NrnRId+bgRh31+ocWBjWE2Zo3gOvPJ2fYtOVWOWD5EY=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/icoextract/default.nix b/nixpkgs/pkgs/development/python-modules/icoextract/default.nix
index beb39a32aa39..45991fa8a928 100644
--- a/nixpkgs/pkgs/development/python-modules/icoextract/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/icoextract/default.nix
@@ -1,17 +1,30 @@
-{ lib, buildPythonPackage, fetchPypi, pefile, pillow}:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pefile
+, pillow
+, pythonOlder
+, setuptools
+}:
 
 buildPythonPackage rec {
   pname = "icoextract";
-  version = "0.1.4";
-  format = "setuptools";
+  version = "0.1.5";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
     extension = "tar.gz";
-    hash = "sha256-x0GEV0PUbkAzoUJgAqup9bHd7iYttGyzIZNdo8KsFyo=";
+    hash = "sha256-/UxnWNyRNtwI4Rxx97i5QyjeMrUr5Sq+TfLTmU0xWyc=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     pefile
     pillow
   ];
@@ -31,6 +44,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Extract icons from Windows PE files";
     homepage = "https://github.com/jlu5/icoextract";
+    changelog = "https://github.com/jlu5/icoextract/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ bryanasdev000 donovanglover ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/idna/default.nix b/nixpkgs/pkgs/development/python-modules/idna/default.nix
index 77aeb4483dc3..ec47eb675112 100644
--- a/nixpkgs/pkgs/development/python-modules/idna/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/idna/default.nix
@@ -7,15 +7,15 @@
 
 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 = [
+  build-system = [
     flit-core
   ];
 
@@ -25,6 +25,7 @@ buildPythonPackage rec {
 
   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/nixpkgs/pkgs/development/python-modules/ifcopenshell/default.nix b/nixpkgs/pkgs/development/python-modules/ifcopenshell/default.nix
index 3fc63b13bb39..7288eb8d96bc 100644
--- a/nixpkgs/pkgs/development/python-modules/ifcopenshell/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ifcopenshell/default.nix
@@ -7,11 +7,13 @@
 , icu
 , swig
 , pcre
-, opencascade-occt
+, opencascade-occt_7_6
 , opencollada
 , libxml2
 }:
-
+let
+  opencascade-occt = opencascade-occt_7_6;
+in
 buildPythonPackage rec {
   pname = "ifcopenshell";
   version = "240306";
diff --git a/nixpkgs/pkgs/development/python-modules/igraph/default.nix b/nixpkgs/pkgs/development/python-modules/igraph/default.nix
index 98f38528c144..8aa1583cc8a8 100644
--- a/nixpkgs/pkgs/development/python-modules/igraph/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/igraph/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "igraph";
-  version = "0.11.4";
+  version = "0.11.5";
 
   disabled = pythonOlder "3.8";
 
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "igraph";
     repo = "python-igraph";
     rev = "refs/tags/${version}";
-    hash = "sha256-sR9OqsBxP2DvcYz1dhIP29rrQ56CRKW02oNAXUNttio=";
+    hash = "sha256-nfXCAjTKxtslVk17h60+v/JQusQTmaTRCPvvFG4/OPk=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/ihm/default.nix b/nixpkgs/pkgs/development/python-modules/ihm/default.nix
index 2cfb69178b10..3991ce9a4339 100644
--- a/nixpkgs/pkgs/development/python-modules/ihm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ihm/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "ihm";
-  version = "1.0";
+  version = "1.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "ihmwg";
     repo = "python-ihm";
     rev = "refs/tags/${version}";
-    hash = "sha256-a1M3YihN71M9TnkldAzN6N1UuPksDk6SPiBgr4HyC8g=";
+    hash = "sha256-auzArRwiue2CFo2DNS0NAF+aoZFvadhP6ARM0lRGcSA=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/imgtool/default.nix b/nixpkgs/pkgs/development/python-modules/imgtool/default.nix
index dc8a9ec63089..52f203f9b1e9 100644
--- a/nixpkgs/pkgs/development/python-modules/imgtool/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/imgtool/default.nix
@@ -12,14 +12,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/importlib-metadata/default.nix b/nixpkgs/pkgs/development/python-modules/importlib-metadata/default.nix
index 995d625f5604..df3106aac420 100644
--- a/nixpkgs/pkgs/development/python-modules/importlib-metadata/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/importlib-metadata/default.nix
@@ -7,11 +7,14 @@
 , 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 +22,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "importlib_metadata";
     inherit version;
-    hash = "sha256-GY9WjzIwh4yxtE+9eXX4eQbCIzbbouSn8FJ4woH715I=";
+    hash = "sha256-t4k4uSbujV8CD8R3LUhwRYBaVd260uzyHG1gk43H/NI=";
   };
 
   nativeBuildInputs = [
@@ -41,6 +44,8 @@ buildPythonPackage rec {
     "importlib_metadata"
   ];
 
+  passthru.tests = { inherit sage; };
+
   meta = with lib; {
     description = "Read metadata from Python packages";
     homepage = "https://importlib-metadata.readthedocs.io/";
diff --git a/nixpkgs/pkgs/development/python-modules/importlib-resources/default.nix b/nixpkgs/pkgs/development/python-modules/importlib-resources/default.nix
index 79012fa9677a..1f4b01a41992 100644
--- a/nixpkgs/pkgs/development/python-modules/importlib-resources/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/importlib-resources/default.nix
@@ -10,6 +10,9 @@
 # dependencies
 , importlib-metadata
 
+# Reverse dependency
+, sage
+
 # tests
 , jaraco-collections
 , pytestCheckHook
@@ -17,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "importlib-resources";
-  version = "6.1.3";
+  version = "6.3.2";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -25,7 +28,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "importlib_resources";
     inherit version;
-    hash = "sha256-VvtFJRl7eFRKM1TqJ3k5UquT+TW7S/dGuEa7EBUCDys=";
+    hash = "sha256-lj63lkklKwFgwa/P5aHT/jrWbt0KixFL6s/7cMBnQiM=";
   };
 
   build-system = [
@@ -46,6 +49,8 @@ buildPythonPackage rec {
     "importlib_resources"
   ];
 
+  passthru.tests = { inherit sage; };
+
   meta = with lib; {
     description = "Read resources from Python packages";
     homepage = "https://importlib-resources.readthedocs.io/";
diff --git a/nixpkgs/pkgs/development/python-modules/indexed-zstd/default.nix b/nixpkgs/pkgs/development/python-modules/indexed-zstd/default.nix
index 88cb6f05930a..e7980f88a9fd 100644
--- a/nixpkgs/pkgs/development/python-modules/indexed-zstd/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/indexed-zstd/default.nix
@@ -9,14 +9,14 @@
 
 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 ];
diff --git a/nixpkgs/pkgs/development/python-modules/inflect/default.nix b/nixpkgs/pkgs/development/python-modules/inflect/default.nix
index d6317d00841b..35760249f742 100644
--- a/nixpkgs/pkgs/development/python-modules/inflect/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/inflect/default.nix
@@ -2,25 +2,31 @@
 , buildPythonPackage
 , fetchPypi
 , isPy27
+, more-itertools
 , setuptools-scm
 , pydantic
 , pytestCheckHook
+, typeguard
 }:
 
 buildPythonPackage rec {
   pname = "inflect";
-  version = "7.0.0";
+  version = "7.2.0";
   disabled = isPy27;
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Y9qTJa0p2oHsI+BVtBIleVq3k7TstIO+XcH6Nj/UcX4=";
+    hash = "sha256-Mv6s+s/K4vIub8zeoQ8N3yamOPrENNDd2q+8oANPN4Q=";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [ pydantic ];
+  propagatedBuildInputs = [
+    more-itertools
+    pydantic
+    typeguard
+  ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/influxdb/default.nix b/nixpkgs/pkgs/development/python-modules/influxdb/default.nix
index ca962f4e4792..1f7e7c017501 100644
--- a/nixpkgs/pkgs/development/python-modules/influxdb/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/influxdb/default.nix
@@ -1,26 +1,28 @@
-{ lib
-, buildPythonPackage
-, python-dateutil
-, fetchPypi
-, mock
-, msgpack
-, pynose
-, pandas
-, pytestCheckHook
-, pytz
-, requests
-, requests-mock
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  msgpack,
+  pandas,
+  pynose,
+  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=";
   };
 
   postPatch = ''
@@ -35,25 +37,28 @@ 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
+    pynose
+    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 +83,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/nixpkgs/pkgs/development/python-modules/influxdb3-python/default.nix b/nixpkgs/pkgs/development/python-modules/influxdb3-python/default.nix
index 23b4bcc4c3bf..86a774e916c3 100644
--- a/nixpkgs/pkgs/development/python-modules/influxdb3-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/influxdb3-python/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "influxdb3-python";
-  version = "0.4.0";
+  version = "0.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "InfluxCommunity";
     repo = "influxdb3-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-qFcXqbYsjn27BPeKxTsWxKJdF6y8Oz3VBrmSyO0vCGo=";
+    hash = "sha256-vumKOvCLpcu0z1W/zmf3qsSo3a8FEbI+20/IMt6nCX4=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/inform/default.nix b/nixpkgs/pkgs/development/python-modules/inform/default.nix
index a95e9e9cc8e8..1f57a9add043 100644
--- a/nixpkgs/pkgs/development/python-modules/inform/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/inform/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "inform";
-  version = "1.28";
+  version = "1.29";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "KenKundert";
     repo = "inform";
     rev = "refs/tags/v${version}";
-    hash = "sha256-RA8/or3HTS/rQmG4A/Eg5j24YElaTEpnHa1yksARVMQ=";
+    hash = "sha256-quJGgXMvVZGqZA6M/AjU/cjYeL0R2nuPDoL0Ji0Ow6I=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/intbitset/default.nix b/nixpkgs/pkgs/development/python-modules/intbitset/default.nix
index 96e1698002f0..b3e2294f1a7e 100644
--- a/nixpkgs/pkgs/development/python-modules/intbitset/default.nix
+++ b/nixpkgs/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; {
     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 = [ ];
+    maintainers = with maintainers; [ sigmanificient ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/internetarchive/default.nix b/nixpkgs/pkgs/development/python-modules/internetarchive/default.nix
index 11a089b376d3..5beb0cc44e1a 100644
--- a/nixpkgs/pkgs/development/python-modules/internetarchive/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/internetarchive/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "internetarchive";
-  version = "4.0.1";
+  version = "4.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "jjjake";
     repo = "internetarchive";
     rev = "refs/tags/v${version}";
-    hash = "sha256-U6idxc5U2Bt581c/vnGgIou5+hoEJJZSPCo97MEDaW4=";
+    hash = "sha256-CqfwAKhrq4VEBU258x19JT8+ay2vOYIzVoFWjAzh3wY=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/ipykernel/default.nix b/nixpkgs/pkgs/development/python-modules/ipykernel/default.nix
index 394974103537..35cd3bad0aa4 100644
--- a/nixpkgs/pkgs/development/python-modules/ipykernel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ipykernel/default.nix
@@ -18,6 +18,9 @@
 , pyzmq
 , tornado
 , traitlets
+
+# Reverse dependency
+, sage
 }:
 
 buildPythonPackage rec {
@@ -63,6 +66,7 @@ buildPythonPackage rec {
 
   passthru.tests = {
     pytest = callPackage ./tests.nix { };
+    inherit sage;
   };
 
   meta = {
diff --git a/nixpkgs/pkgs/development/python-modules/ipympl/default.nix b/nixpkgs/pkgs/development/python-modules/ipympl/default.nix
index f461659c6500..b25f5fd58ae3 100644
--- a/nixpkgs/pkgs/development/python-modules/ipympl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ipympl/default.nix
@@ -13,14 +13,16 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/ipynbname/default.nix b/nixpkgs/pkgs/development/python-modules/ipynbname/default.nix
index 03a27ec19d8c..bd158be55f52 100644
--- a/nixpkgs/pkgs/development/python-modules/ipynbname/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ipynbname/default.nix
@@ -1,20 +1,25 @@
 { 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 = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     ipykernel
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/ipython/default.nix b/nixpkgs/pkgs/development/python-modules/ipython/default.nix
index 7a10725f2451..577b78804907 100644
--- a/nixpkgs/pkgs/development/python-modules/ipython/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ipython/default.nix
@@ -29,6 +29,9 @@
 , notebook
 , qtconsole
 
+# Reverse dependency
+, sage
+
 # Test dependencies
 , pickleshare
 , pytest-asyncio
@@ -106,6 +109,8 @@ buildPythonPackage rec {
     "test_clipboard_get"
   ];
 
+  passthru.tests = { inherit sage; };
+
   meta = with lib; {
     description = "IPython: Productive Interactive Computing";
     downloadPage = "https://github.com/ipython/ipython/";
diff --git a/nixpkgs/pkgs/development/python-modules/ipyvue/default.nix b/nixpkgs/pkgs/development/python-modules/ipyvue/default.nix
index 2be0ddfe8075..a7a49a8d906e 100644
--- a/nixpkgs/pkgs/development/python-modules/ipyvue/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ipyvue/default.nix
@@ -1,24 +1,26 @@
 { lib
-, isPy27
 , buildPythonPackage
 , fetchPypi
   # Python Inputs
+, 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
   pythonImportsCheck = [ "ipyvue" ];
diff --git a/nixpkgs/pkgs/development/python-modules/isal/default.nix b/nixpkgs/pkgs/development/python-modules/isal/default.nix
new file mode 100644
index 000000000000..c37d9357ec53
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/isal/default.nix
@@ -0,0 +1,67 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+
+# build-system
+, setuptools
+
+# native dependencies
+, isa-l
+
+# tests
+, pytest-timeout
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "isal";
+  version = "1.6.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "pycompression";
+    repo = "python-isal";
+    rev = "v${version}";
+    hash = "sha256-EhdKT2ftyU2zevFg9Yi3q2FVx0FmKwJMzszsK1NS3Qg=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  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/nixpkgs/pkgs/development/python-modules/islpy/default.nix b/nixpkgs/pkgs/development/python-modules/islpy/default.nix
index ca84beae2eef..83f0b26c0047 100644
--- a/nixpkgs/pkgs/development/python-modules/islpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/islpy/default.nix
@@ -1,41 +1,71 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isl
-, pybind11
-, pytestCheckHook
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  setuptools,
+  cmake,
+  nanobind,
+  ninja,
+  pcpp,
+  scikit-build,
+  isl,
+
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "islpy";
   version = "2023.2.5";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-3XQ5i682k4q7fCqdmCjMGi5UnGyASFzsiwaymr+q0Y8=";
+  src = fetchFromGitHub {
+    owner = "inducer";
+    repo = "islpy";
+    rev = "v${version}";
+    hash = "sha256-0m41G5HlPrgt4rDY3Y9cKBJGHSnLg/R+IywBO1anRpQ=";
   };
 
-  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 = [
+    setuptools
+    cmake
+    nanobind
+    ninja
+    pcpp
+    scikit-build
+  ];
+
+  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/nixpkgs/pkgs/development/python-modules/isoweek/default.nix b/nixpkgs/pkgs/development/python-modules/isoweek/default.nix
index e16d27c47bcf..70c38d790430 100644
--- a/nixpkgs/pkgs/development/python-modules/isoweek/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/iterable-io/default.nix b/nixpkgs/pkgs/development/python-modules/iterable-io/default.nix
new file mode 100644
index 000000000000..81799c7aec4f
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/itsdangerous/default.nix b/nixpkgs/pkgs/development/python-modules/itsdangerous/default.nix
index cfc364a4a399..edd1b149905f 100644
--- a/nixpkgs/pkgs/development/python-modules/itsdangerous/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/itsdangerous/default.nix
@@ -2,31 +2,32 @@
 , 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/nixpkgs/pkgs/development/python-modules/jaraco-collections/default.nix b/nixpkgs/pkgs/development/python-modules/jaraco-collections/default.nix
index bab89a3f7a60..ecef3939c9c5 100644
--- a/nixpkgs/pkgs/development/python-modules/jaraco-collections/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jaraco-collections/default.nix
@@ -9,13 +9,13 @@
 
 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 = ''
diff --git a/nixpkgs/pkgs/development/python-modules/jaraco-functools/default.nix b/nixpkgs/pkgs/development/python-modules/jaraco-functools/default.nix
index 28a7d64e11f9..d3b899281887 100644
--- a/nixpkgs/pkgs/development/python-modules/jaraco-functools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jaraco-functools/default.nix
@@ -2,21 +2,25 @@
 , 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 ];
+  nativeBuildInputs = [
+    setuptools
+    setuptools-scm
+  ];
 
   propagatedBuildInputs = [
     more-itertools
diff --git a/nixpkgs/pkgs/development/python-modules/jax/default.nix b/nixpkgs/pkgs/development/python-modules/jax/default.nix
index e160eec612cf..80b02765550f 100644
--- a/nixpkgs/pkgs/development/python-modules/jax/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jax/default.nix
@@ -29,7 +29,7 @@ let
 in
 buildPythonPackage rec {
   pname = "jax";
-  version = "0.4.25";
+  version = "0.4.28";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -39,7 +39,7 @@ 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 = [
@@ -81,6 +81,14 @@ buildPythonPackage rec {
     "tests/"
   ];
 
+  # 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.isDarwin ''
+    export TEST_UNDECLARED_OUTPUTS_DIR=$(mktemp -d)
+  '';
+
   disabledTests = [
     # Exceeds tolerance when the machine is busy
     "test_custom_linear_solve_aux"
diff --git a/nixpkgs/pkgs/development/python-modules/jaxlib/bin.nix b/nixpkgs/pkgs/development/python-modules/jaxlib/bin.nix
index 54abdfe48c34..d2bf3604a78d 100644
--- a/nixpkgs/pkgs/development/python-modules/jaxlib/bin.nix
+++ b/nixpkgs/pkgs/development/python-modules/jaxlib/bin.nix
@@ -20,17 +20,17 @@
 , stdenv
   # Options:
 , cudaSupport ? config.cudaSupport
-, cudaPackagesGoogle
+, cudaPackages
 }:
 
 let
-  inherit (cudaPackagesGoogle) cudaVersion;
+  inherit (cudaPackages) cudaVersion;
 
-  version = "0.4.24";
+  version = "0.4.28";
 
   inherit (python) pythonVersion;
 
-  cudaLibPath = lib.makeLibraryPath (with cudaPackagesGoogle; [
+  cudaLibPath = lib.makeLibraryPath (with cudaPackages; [
     cuda_cudart.lib # libcudart.so
     cuda_cupti.lib # libcupti.so
     cudnn.lib # libcudnn.so
@@ -56,65 +56,65 @@ let
       "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,35 +130,19 @@ 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=";
     };
   };
 
@@ -213,7 +197,7 @@ 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;
@@ -227,8 +211,13 @@ buildPythonPackage {
     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 -> lib.versionAtLeast cudaPackages.cudnn.version "8.2")
       || !(cudaSupport -> stdenv.isLinux)
-      || !(cudaSupport -> (gpuSrcs ? "cuda${cudaVersion}-${pythonVersion}"));
+      || !(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.isDarwin && stdenv.isx86_64);
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/jaxlib/default.nix b/nixpkgs/pkgs/development/python-modules/jaxlib/default.nix
index cfca1f170ea4..8854d7927ea6 100644
--- a/nixpkgs/pkgs/development/python-modules/jaxlib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jaxlib/default.nix
@@ -13,7 +13,6 @@
 , curl
 , cython
 , fetchFromGitHub
-, fetchpatch
 , git
 , IOKit
 , jsoncpp
@@ -45,22 +44,22 @@
 , config
   # CUDA flags:
 , cudaSupport ? config.cudaSupport
-, cudaPackagesGoogle
+, cudaPackages
 
   # MKL:
 , mklSupport ? true
 }@inputs:
 
 let
-  inherit (cudaPackagesGoogle) cudaFlags cudaVersion cudnn nccl;
+  inherit (cudaPackages) cudaFlags cudaVersion cudnn 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.";
@@ -78,7 +77,7 @@ let
   # These are necessary at build time and run time.
   cuda_libs_joined = symlinkJoin {
     name = "cuda-joined";
-    paths = with cudaPackagesGoogle; [
+    paths = with cudaPackages; [
       cuda_cudart.lib # libcudart.so
       cuda_cudart.static # libcudart_static.a
       cuda_cupti.lib # libcupti.so
@@ -92,11 +91,11 @@ let
   # 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
+      cudaPackages.cuda_nvcc.bin # nvcc
 
       # Headers
       cuda_cccl.dev # block_load.cuh
@@ -181,19 +180,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 +210,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 = [
@@ -364,10 +354,10 @@ let
       ];
 
       sha256 = (if cudaSupport then {
-        x86_64-linux = "sha256-8JilAoTbqOjOOJa/Zc/n/quaEDcpdcLXCNb34mfB+OM=";
+        x86_64-linux = "sha256-VGNMf5/DgXbgsu1w5J1Pmrukw+7UO31BNU+crKVsX5k=";
       } else {
-        x86_64-linux = "sha256-iqS+I1FQLNWXNMsA20cJp7YkyGUeshee5b2QfRBNZtk=";
-        aarch64-linux = "sha256-qmJ0Fm/VGMTmko4PhKs1P8/GLEJmVxb8xg+ss/HsakY==";
+        x86_64-linux = "sha256-uOoAyMBLHPX6jzdN43b5wZV5eW0yI8sCDD7BSX2h4oQ=";
+        aarch64-linux = "sha256-+SnGKY9LIT1Qhu/x6Uh7sHRaAEjlc//qyKj1m4t16PA=";
       }).${effectiveStdenv.system} or (throw "jaxlib: unsupported system: ${effectiveStdenv.system}");
     };
 
@@ -414,7 +404,7 @@ buildPythonPackage {
   # for more info.
   postInstall = lib.optionalString cudaSupport ''
     mkdir -p $out/bin
-    ln -s ${cudaPackagesGoogle.cuda_nvcc.bin}/bin/ptxas $out/bin/ptxas
+    ln -s ${cudaPackages.cuda_nvcc.bin}/bin/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"
@@ -423,7 +413,7 @@ buildPythonPackage {
 
   nativeBuildInputs = lib.optionals cudaSupport [ autoAddDriverRunpath ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     absl-py
     curl
     double-conversion
diff --git a/nixpkgs/pkgs/development/python-modules/jaxopt/default.nix b/nixpkgs/pkgs/development/python-modules/jaxopt/default.nix
index af924cea5ab2..1216b15f83f2 100644
--- a/nixpkgs/pkgs/development/python-modules/jaxopt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jaxopt/default.nix
@@ -6,6 +6,7 @@
 , fetchpatch
 , pytest-xdist
 , pytestCheckHook
+, setuptools
 , absl-py
 , cvxpy
 , jax
@@ -20,7 +21,7 @@
 buildPythonPackage rec {
   pname = "jaxopt";
   version = "0.8.3";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -41,7 +42,11 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     absl-py
     jax
     jaxlib
@@ -66,11 +71,20 @@ buildPythonPackage rec {
     "jaxopt.tree_util"
   ];
 
-  disabledTests = lib.optionals (stdenv.isLinux && stdenv.isAarch64) [
+  disabledTests = [
+    # https://github.com/google/jaxopt/issues/592
+    "test_solve_sparse"
+  ] ++ 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"
+
+    # 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"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/jenkins-job-builder/default.nix b/nixpkgs/pkgs/development/python-modules/jenkins-job-builder/default.nix
index 852b529e8bcc..2ed276bfaef3 100644
--- a/nixpkgs/pkgs/development/python-modules/jenkins-job-builder/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jenkins-job-builder/default.nix
@@ -9,12 +9,12 @@
 
 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 = ''
diff --git a/nixpkgs/pkgs/development/python-modules/jinja2/default.nix b/nixpkgs/pkgs/development/python-modules/jinja2/default.nix
index 1c260e37c7b0..f36f67f1d3d2 100644
--- a/nixpkgs/pkgs/development/python-modules/jinja2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jinja2/default.nix
@@ -4,31 +4,33 @@
 , buildPythonPackage
 , pythonOlder
 , fetchPypi
+, flit-core
 , babel
 , markupsafe
 , pytestCheckHook
 , sphinxHook
 , pallets-sphinx-themes
-, setuptools
 , 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
+    flit-core
   ];
 
   propagatedBuildInputs = [
@@ -76,6 +78,8 @@ 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/nixpkgs/pkgs/development/python-modules/jiwer/default.nix b/nixpkgs/pkgs/development/python-modules/jiwer/default.nix
index 2c1566350246..66ab13cdd8fc 100644
--- a/nixpkgs/pkgs/development/python-modules/jiwer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jiwer/default.nix
@@ -10,24 +10,24 @@
 
 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
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/joblib/default.nix b/nixpkgs/pkgs/development/python-modules/joblib/default.nix
index 298a2ce83adf..e592c8089f72 100644
--- a/nixpkgs/pkgs/development/python-modules/joblib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/joblib/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , pythonOlder
 , fetchPypi
-, fetchpatch
 , pythonAtLeast
 , stdenv
 
@@ -22,24 +21,16 @@
 
 buildPythonPackage rec {
   pname = "joblib";
-  version = "1.3.2";
+  version = "1.4.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-kvhl5iHhd4TnlVCAttBCSJ47jilJScxExurDBPWXcrE=";
+    hash = "sha256-HrDcCRkZzThEkN6JDLXf1ThBCm1LO1Tu8J+4xQtAmxw=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "suppress-deprecation-warnings-with-python312.patch";
-      url = "https://github.com/joblib/joblib/commit/05caf0772d605799e5d2337018fd32ac829b37aa.patch";
-      hash = "sha256-bfqxCLFkCnuWMIkIbcjh+nCTv38A8jxvyCHeJPxoZwg=";
-    })
-  ];
-
   nativeBuildInputs = [
     setuptools
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/jpylyzer/default.nix b/nixpkgs/pkgs/development/python-modules/jpylyzer/default.nix
index 64b616382518..0fc6f7cc125e 100644
--- a/nixpkgs/pkgs/development/python-modules/jpylyzer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jpylyzer/default.nix
@@ -17,20 +17,20 @@ let
   testFiles = fetchFromGitHub {
     owner = "openpreserve";
     repo = "jpylyzer-test-files";
-    rev = "146cb0029b5ea9d8ef22dc6683cec8afae1cc63a";
-    hash = "sha256-uKUau7mYXqGs4dSnXGPnPsH9k81ZCK0aPj5F9HWBMZ8=";
+    rev = "0290e98bae9c5480c995954d3f14b4cf0a0395ff";
+    hash = "sha256-dr3hC6dGd3HNSE4nRj1xrfFSW9cepQ1mdVH8S3YQdtw=";
   };
 
 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 ];
@@ -40,14 +40,9 @@ in buildPythonPackage rec {
   # 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"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/json-logging/default.nix b/nixpkgs/pkgs/development/python-modules/json-logging/default.nix
index 3d22f4e878ba..f904d6d44ac9 100644
--- a/nixpkgs/pkgs/development/python-modules/json-logging/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/json-logging/default.nix
@@ -6,17 +6,18 @@
 , httpx
 , pytestCheckHook
 , pythonOlder
+, pythonAtLeast
 , quart
 , requests
 , sanic
+, setuptools
 , uvicorn
-, wheel
 }:
 
 buildPythonPackage rec {
   pname = "json-logging";
   version = "1.5.0-rc0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -27,16 +28,28 @@ 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
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
   ];
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/json-schema-for-humans/default.nix b/nixpkgs/pkgs/development/python-modules/json-schema-for-humans/default.nix
index f758ae924496..6b976adc6b1e 100644
--- a/nixpkgs/pkgs/development/python-modules/json-schema-for-humans/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/json-schema-for-humans/default.nix
@@ -1,25 +1,26 @@
-{ 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,
+  pythonRelaxDepsHook,
+  pytz,
+  pyyaml,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "json-schema-for-humans";
-  version = "0.47";
+  version = "1.0.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -28,19 +29,16 @@ buildPythonPackage rec {
     owner = "coveooss";
     repo = "json-schema-for-humans";
     rev = "refs/tags/v${version}";
-    hash = "sha256-yioYsCp+q5YWdIWDlNZkpaLqo++n+dV5jyEeIhUDHr4=";
+    hash = "sha256-SSMUHC4IsMIIhmRrG0ZWNO2MNKKvoBSybmEEibAY5q0=";
   };
 
-  pythonRelaxDeps = [
-    "dataclasses-json"
-  ];
+  pythonRelaxDeps = [ "dataclasses-json" ];
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     dataclasses-json
     htmlmin
@@ -64,16 +62,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/nixpkgs/pkgs/development/python-modules/json-stream-rs-tokenizer/default.nix b/nixpkgs/pkgs/development/python-modules/json-stream-rs-tokenizer/default.nix
index 9609d68c6961..ce2a48bae9c8 100644
--- a/nixpkgs/pkgs/development/python-modules/json-stream-rs-tokenizer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/json-stream-rs-tokenizer/default.nix
@@ -2,7 +2,7 @@
 , stdenv
 , buildPythonPackage
 , cargo
-, darwin
+, libiconv
 , fetchFromGitHub
 , json-stream
 , json-stream-rs-tokenizer
@@ -45,7 +45,7 @@ buildPythonPackage rec {
   ];
 
   buildInputs = lib.optionals stdenv.isDarwin [
-    darwin.libiconv
+    libiconv
   ];
 
   # Tests depend on json-stream, which depends on this package.
diff --git a/nixpkgs/pkgs/development/python-modules/jsonpickle/default.nix b/nixpkgs/pkgs/development/python-modules/jsonpickle/default.nix
index 4e3fd813144b..fbe0efd86bb3 100644
--- a/nixpkgs/pkgs/development/python-modules/jsonpickle/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jsonpickle/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "jsonpickle";
-  version = "3.0.3";
+  version = "3.0.4";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-VpH0RJUyeFirOpW5xECnm0HjVCG+Gm4JpHtsm5Qh/QY=";
+    hash = "sha256-obFMjWIhzY85TyqX5zXqHX7ckn+9E1sm8vhwBlfIxis=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter-collaboration/default.nix b/nixpkgs/pkgs/development/python-modules/jupyter-collaboration/default.nix
index 1c01c6d4d1d6..c4ba4a6f051b 100644
--- a/nixpkgs/pkgs/development/python-modules/jupyter-collaboration/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupyter-collaboration/default.nix
@@ -19,7 +19,7 @@
 
 buildPythonPackage rec {
   pname = "jupyter-collaboration";
-  version = "2.0.11";
+  version = "2.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "jupyter_collaboration";
     inherit version;
-    hash = "sha256-K7HN5yzadY5Sb6Sfn/K/QCzu14AcDEGHq+TSHkLhgTY=";
+    hash = "sha256-T1DCXG2BEmwW3q+S0r14o5svy4ZpDc5pa0AGt0DXHB8=";
   };
 
   postPatch = ''
@@ -71,6 +71,8 @@ buildPythonPackage rec {
   disabledTests = [
     # ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
     "test_dirty"
+    # causes a hang
+    "test_rooms"
   ];
 
   __darwinAllowLocalNetworking = true;
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter-core/default.nix b/nixpkgs/pkgs/development/python-modules/jupyter-core/default.nix
index 799e098920a8..c1faa97b1ef8 100644
--- a/nixpkgs/pkgs/development/python-modules/jupyter-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupyter-core/default.nix
@@ -7,6 +7,9 @@
 , traitlets
 , pip
 , pytestCheckHook
+
+# Reverse dependency
+, sage
 }:
 
 buildPythonPackage rec {
@@ -61,6 +64,8 @@ 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/nixpkgs/pkgs/development/python-modules/jupyterlab-git/default.nix b/nixpkgs/pkgs/development/python-modules/jupyterlab-git/default.nix
index 512c79947457..9377df6d75cf 100644
--- a/nixpkgs/pkgs/development/python-modules/jupyterlab-git/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupyterlab-git/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "jupyterlab-git";
-  version = "0.50.0";
+  version = "0.50.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -28,7 +28,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "jupyterlab_git";
     inherit version;
-    hash = "sha256-CYWVRtOQE067kYqWXCw/4mBf6v4yfPYWFb592Qtb37s=";
+    hash = "sha256-v08Go/vCsquE6l1SMmqg4LjM9OmjNX+jGKEZVg4cak0=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/jupyterlab/default.nix b/nixpkgs/pkgs/development/python-modules/jupyterlab/default.nix
index 7b9a17d91e2c..dc8c475474aa 100644
--- a/nixpkgs/pkgs/development/python-modules/jupyterlab/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupyterlab/default.nix
@@ -20,14 +20,14 @@
 
 buildPythonPackage rec {
   pname = "jupyterlab";
-  version = "4.1.8";
+  version = "4.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-M4St7YaA585QT9Y7i7iaOd8hycdpTZ59xKaHQs2zD5s=";
+    hash = "sha256-NW6SBaaiq2icR8j+SRnbpsB243bQPya6rcBXSMJDXdU=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/jupytext/default.nix b/nixpkgs/pkgs/development/python-modules/jupytext/default.nix
index 699cb58e6c38..6935fd46ce7e 100644
--- a/nixpkgs/pkgs/development/python-modules/jupytext/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupytext/default.nix
@@ -14,33 +14,34 @@
 , pytestCheckHook
 , pythonOlder
 , pyyaml
-, toml
+, tomli
 }:
 
 buildPythonPackage rec {
   pname = "jupytext";
-  version = "1.16.1";
+  version = "1.16.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-aMe2hoXocOgOYP2oKG+9Ymnpx03B30MW32/kbqvJTJk=";
+    hash = "sha256-hifdm+y769ecxKTtRyfYnXjmBrS0ZOq3I1ezsCkCOhQ=";
   };
 
-  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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/justext/default.nix b/nixpkgs/pkgs/development/python-modules/justext/default.nix
index 82f0aa804565..2446dccf0823 100644
--- a/nixpkgs/pkgs/development/python-modules/justext/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/justext/default.nix
@@ -7,14 +7,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/kaggle/default.nix b/nixpkgs/pkgs/development/python-modules/kaggle/default.nix
index 38c3dce53151..815d1cd27e77 100644
--- a/nixpkgs/pkgs/development/python-modules/kaggle/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/kaggle/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "kaggle";
-  version = "1.6.12";
+  version = "1.6.14";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-8SoFuC0q+xCnStxppfinNsZL2ZNNC1rPtP5PlzV1MLQ=";
+    sha256 = "sha256-WDUyveyjyeDK/EkxESxnN7Xmjxh6tZ7nff/fCf3529k=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/kasa-crypt/default.nix b/nixpkgs/pkgs/development/python-modules/kasa-crypt/default.nix
index 2247b2ece99d..44d86fc29a5a 100644
--- a/nixpkgs/pkgs/development/python-modules/kasa-crypt/default.nix
+++ b/nixpkgs/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.2";
+  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-7PLOuWxA5ziOuysSu+nLWNmNA3/sbuUCuZcMRBflf6U=";
   };
 
   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/nixpkgs/pkgs/development/python-modules/kazoo/default.nix b/nixpkgs/pkgs/development/python-modules/kazoo/default.nix
index eedbd7da41f1..73f041f49f23 100644
--- a/nixpkgs/pkgs/development/python-modules/kazoo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/kazoo/default.nix
@@ -4,7 +4,7 @@
 , six
 , eventlet
 , gevent
-, nose
+, pynose
 , mock
 , coverage
 , pkgs
@@ -21,7 +21,7 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [ six ];
-  buildInputs = [ eventlet gevent nose mock coverage pkgs.openjdk8 ];
+  buildInputs = [ eventlet gevent pynose mock coverage pkgs.openjdk8 ];
 
   # not really needed
   preBuild = ''
diff --git a/nixpkgs/pkgs/development/python-modules/keras/default.nix b/nixpkgs/pkgs/development/python-modules/keras/default.nix
index c74579296223..156f8f5c2cd5 100644
--- a/nixpkgs/pkgs/development/python-modules/keras/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/keras/default.nix
@@ -1,17 +1,17 @@
 { lib, buildPythonPackage, fetchPypi
 , pytest, pytest-cov, pytest-xdist
-, six, numpy, scipy, pyyaml, h5py
+, six, numpy, scipy, pyyaml, h5py, optree
 , keras-applications, keras-preprocessing
 }:
 
 buildPythonPackage rec {
   pname = "keras";
-  version = "3.0.5";
+  version = "3.2.1";
   format = "wheel";
 
   src = fetchPypi {
     inherit format pname version;
-    hash = "sha256-SgIvLpfqWj2xLtgJ/8t84e+NNP6urFIxXshVPe0tz5c=";
+    hash = "sha256-C+HomwQeaXvlYthCLsuVjuVIGs/AiZEyAJJsVh0ligM=";
     python = "py3";
     dist = "py3";
   };
diff --git a/nixpkgs/pkgs/development/python-modules/keyrings-alt/default.nix b/nixpkgs/pkgs/development/python-modules/keyrings-alt/default.nix
index f463b18950dd..2ad45c6e717f 100644
--- a/nixpkgs/pkgs/development/python-modules/keyrings-alt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/keyrings-alt/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , jaraco-classes
+, jaraco-context
 , keyring
 , pytestCheckHook
 , pythonOlder
@@ -10,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "keyrings-alt";
-  version = "5.0.0";
+  version = "5.0.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -18,7 +19,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "keyrings.alt";
     inherit version;
-    hash = "sha256-nURstHu86pD/ouzD6AA6z0FXP8IBv0S0vxO9DhFISCg=";
+    hash = "sha256-zTcqHsRGobxakGJKUsiOg7kzAhjjkEemyaSK430RZ0U=";
   };
 
   nativeBuildInputs = [
@@ -27,6 +28,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     jaraco-classes
+    jaraco-context
   ];
 
   nativeCheckInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/kombu/default.nix b/nixpkgs/pkgs/development/python-modules/kombu/default.nix
index a6867075d9b5..c4aad1fab20f 100644
--- a/nixpkgs/pkgs/development/python-modules/kombu/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/kombu/default.nix
@@ -27,14 +27,14 @@
 
 buildPythonPackage rec {
   pname = "kombu";
-  version = "5.3.5";
+  version = "5.3.7";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-MORw8aa0nHDcb20Tw+TMTheKpsRpzra81VZFOF/IS5M=";
+    hash = "sha256-ARxM2aNVwUod6NNdJXMUodJFbVK3FAOIVhrKw88al78=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/kornia-rs/default.nix b/nixpkgs/pkgs/development/python-modules/kornia-rs/default.nix
index 57aaa325d2b6..f493d74a6b8d 100644
--- a/nixpkgs/pkgs/development/python-modules/kornia-rs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/kornia-rs/default.nix
@@ -1,10 +1,12 @@
 { lib
+, stdenv
 , fetchFromGitHub
 , buildPythonPackage
 , rustPlatform
 , cmake
 , nasm
 , substituteAll
+, libiconv
 }:
 
 buildPythonPackage rec {
@@ -26,6 +28,8 @@ buildPythonPackage rec {
     nasm # Only for dependencies.
   ];
 
+  buildInputs = lib.optional stdenv.hostPlatform.isDarwin libiconv;
+
   cargoRoot = "py-kornia";
   cargoDeps = rustPlatform.importCargoLock {
     lockFile = ./Cargo.lock;
diff --git a/nixpkgs/pkgs/development/python-modules/lacuscore/default.nix b/nixpkgs/pkgs/development/python-modules/lacuscore/default.nix
index 950c215e9005..d03376184bba 100644
--- a/nixpkgs/pkgs/development/python-modules/lacuscore/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/lacuscore/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "lacuscore";
-  version = "1.9.2";
+  version = "1.9.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "ail-project";
     repo = "LacusCore";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vfhRbbutNuZW/oI/eCJUXydCn47ThOlWRz2NJJrE3Tw=";
+    hash = "sha256-jfbDg74vHwOFvbOETPSaApFCpzw9Khu8PgGpsoAwSGc=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/development/python-modules/langchain-community/default.nix b/nixpkgs/pkgs/development/python-modules/langchain-community/default.nix
index af29f6068b04..e8e028570abd 100644
--- a/nixpkgs/pkgs/development/python-modules/langchain-community/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/langchain-community/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "langchain-community";
-  version = "0.0.36";
+  version = "0.0.38";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "langchain_community";
     inherit version;
-    hash = "sha256-l76dAM8RnJYeA+0ibgTmcPUbXUL1sF/8NRhZj6bSDHQ=";
+    hash = "sha256-En/Et1vGe2L+gnxmwC5xWnMP74/mm9ICPUZrqwa1gQ0=";
   };
 
   build-system = [ poetry-core ];
diff --git a/nixpkgs/pkgs/development/python-modules/langchain-core/default.nix b/nixpkgs/pkgs/development/python-modules/langchain-core/default.nix
index 3c0b42156449..8cfa8cafd9ee 100644
--- a/nixpkgs/pkgs/development/python-modules/langchain-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/langchain-core/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "langchain-core";
-  version = "0.1.48";
+  version = "0.1.52";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "langchain_core";
     inherit version;
-    hash = "sha256-8KmwqPIvIZ72/YTisdkqgBToRRTAobVTNw/UApaBPBY=";
+    hash = "sha256-CEw/xFL1ppZsKKs+xdvIuNJvw/YzeAc5KPTinZC2OT8=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/development/python-modules/langchain-text-splitters/default.nix b/nixpkgs/pkgs/development/python-modules/langchain-text-splitters/default.nix
index 81cb942e5155..3f8fa837af7a 100644
--- a/nixpkgs/pkgs/development/python-modules/langchain-text-splitters/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/langchain-text-splitters/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, langchain-core
-, lxml
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  langchain-core,
+  lxml,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "langchain-text-splitters";
-  version = "0.0.1";
+  version = "0.0.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -17,14 +18,12 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "langchain_text_splitters";
     inherit version;
-    hash = "sha256-rEWfqYeZ9RF61UJakzCyGWEyHjC8GaKi+fdh3a3WKqE=";
+    hash = "sha256-rIkn3AugjrpwL2lhye19986tjeGan3EBqyteo0IBs8E=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     langchain-core
     lxml
   ];
@@ -32,9 +31,7 @@ buildPythonPackage rec {
   # PyPI source does not have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "langchain_text_splitters"
-  ];
+  pythonImportsCheck = [ "langchain_text_splitters" ];
 
   meta = with lib; {
     description = "Build context-aware reasoning applications";
diff --git a/nixpkgs/pkgs/development/python-modules/langchain/default.nix b/nixpkgs/pkgs/development/python-modules/langchain/default.nix
index ddcb01d7c450..804f63a88e9f 100644
--- a/nixpkgs/pkgs/development/python-modules/langchain/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/langchain/default.nix
@@ -51,7 +51,7 @@
 
 buildPythonPackage rec {
   pname = "langchain";
-  version = "0.1.16";
+  version = "0.1.52";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -59,8 +59,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "langchain-ai";
     repo = "langchain";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-Xv8juma/1qGC2Rb659dJBvRzRh5W+zU+O8W6peElFGc=";
+    rev = "refs/tags/langchain-core==${version}";
+    hash = "sha256-H8rtysRIwyuJEUFI93vid3MsqReyRCER88xztsuYpOc=";
   };
 
   sourceRoot = "${src.name}/libs/langchain";
@@ -160,6 +160,8 @@ buildPythonPackage rec {
     "test_generic_fake_chat_model"
     # Test is outdated
     "test_serializable_mapping"
+    "test_person"
+    "test_aliases_hidden"
   ];
 
   pythonImportsCheck = [ "langchain" ];
diff --git a/nixpkgs/pkgs/development/python-modules/langsmith/default.nix b/nixpkgs/pkgs/development/python-modules/langsmith/default.nix
index 9bf32dc7a158..4e7bc1d107f3 100644
--- a/nixpkgs/pkgs/development/python-modules/langsmith/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/langsmith/default.nix
@@ -22,7 +22,7 @@
 
 buildPythonPackage rec {
   pname = "langsmith";
-  version = "0.1.52";
+  version = "0.1.59";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -31,7 +31,7 @@ buildPythonPackage rec {
     owner = "langchain-ai";
     repo = "langsmith-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-kTl+H1odRYDZc1KEuopZV9PvOQBd4QioWMhb3pD6xKE=";
+    hash = "sha256-k9WsJUiJPCahwUHzsOblBCm58z2dHQZGk3U6GMm7SpQ=";
   };
 
   sourceRoot = "${src.name}/python";
diff --git a/nixpkgs/pkgs/development/python-modules/language-data/default.nix b/nixpkgs/pkgs/development/python-modules/language-data/default.nix
index ff04b036dc05..da1a35456152 100644
--- a/nixpkgs/pkgs/development/python-modules/language-data/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/latex2mathml/default.nix b/nixpkgs/pkgs/development/python-modules/latex2mathml/default.nix
index 99d9dcc5fb74..0cf0276a73a0 100644
--- a/nixpkgs/pkgs/development/python-modules/latex2mathml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/latex2mathml/default.nix
@@ -11,6 +11,7 @@
 buildPythonPackage rec {
   pname = "latex2mathml";
   version = "3.77.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -21,9 +22,7 @@ buildPythonPackage rec {
     hash = "sha256-DLdSFMsNA0gD6Iw0kn+0IrbvyI0VEGOpz0ZYD48nRkY=";
   };
 
-  format = "pyproject";
-
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
   ];
 
@@ -45,6 +44,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/nixpkgs/pkgs/development/python-modules/ldappool/default.nix b/nixpkgs/pkgs/development/python-modules/ldappool/default.nix
index 2cb2155bfed4..3d56668c8814 100644
--- a/nixpkgs/pkgs/development/python-modules/ldappool/default.nix
+++ b/nixpkgs/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";
     homepage = "https://opendev.org/openstack/ldappool/";
-    license = with licenses; [ mpl11 lgpl21Plus gpl2Plus ];
+    license = with licenses; [
+      mpl11
+      lgpl21Plus
+      gpl2Plus
+    ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/ledgerblue/default.nix b/nixpkgs/pkgs/development/python-modules/ledgerblue/default.nix
index 9342f8d3b5da..4e93a641cd01 100644
--- a/nixpkgs/pkgs/development/python-modules/ledgerblue/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ledgerblue/default.nix
@@ -12,24 +12,38 @@
 , pycrypto
 , pycryptodomex
 , pyelftools
+, python-gnupg
 , python-u2flib-host
 , pythonOlder
+, pythonRelaxDepsHook
+, setuptools
+, setuptools-scm
 , websocket-client
 }:
 
 buildPythonPackage rec {
   pname = "ledgerblue";
-  version = "0.1.48";
-  format = "setuptools";
+  version = "0.1.53";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-LVRNcsTmJOR3zTBhbKV4V0zCQk0sk/Uf6kSmfbAhgfY=";
+    hash = "sha256-j5FCQnp+MNrJ8zgYeLRuWF+Gdq0FwJeBYyJALb+H8So=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+    setuptools-scm
+    pythonRelaxDepsHook
+  ];
+
+  pythonRelaxDeps = [
+    "protobuf"
+  ];
+
+  dependencies = [
     ecpy
     future
     hidapi
@@ -39,6 +53,7 @@ buildPythonPackage rec {
     pycrypto
     pycryptodomex
     pyelftools
+    python-gnupg
     python-u2flib-host
     websocket-client
   ]
diff --git a/nixpkgs/pkgs/development/python-modules/lib4sbom/default.nix b/nixpkgs/pkgs/development/python-modules/lib4sbom/default.nix
new file mode 100644
index 000000000000..0840b14c70b7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lib4sbom/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pyyaml
+, semantic-version
+, defusedxml
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "lib4sbom";
+  version = "0.7.1";
+  format = "setuptools";
+
+  src = fetchFromGitHub {
+    owner = "anthonyharrison";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-UQZZYTRDbUqSH6F8hjhp9L70025cRO3zXQ8Aoznotg4=";
+  };
+
+  dependencies = [
+    pyyaml
+    semantic-version
+    defusedxml
+  ];
+
+  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";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ teatwig ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/libarcus/default.nix b/nixpkgs/pkgs/development/python-modules/libarcus/default.nix
index b95c2b295257..989967719d09 100644
--- a/nixpkgs/pkgs/development/python-modules/libarcus/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/libarcus/default.nix
@@ -1,6 +1,6 @@
 { lib, buildPythonPackage, python, fetchFromGitHub
 , fetchpatch
-, cmake, sip4, protobuf, pythonOlder }:
+, cmake, sip4, protobuf }:
 
 buildPythonPackage rec {
   pname = "libarcus";
@@ -23,8 +23,6 @@ buildPythonPackage rec {
     })
   ];
 
-  disabled = pythonOlder "3.4";
-
   propagatedBuildInputs = [ sip4 ];
   nativeBuildInputs = [ cmake ];
   buildInputs = [ protobuf ];
diff --git a/nixpkgs/pkgs/development/python-modules/libgravatar/default.nix b/nixpkgs/pkgs/development/python-modules/libgravatar/default.nix
new file mode 100644
index 000000000000..37d3373c7aa2
--- /dev/null
+++ b/nixpkgs/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 = "A 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/nixpkgs/pkgs/development/python-modules/libretranslate/default.nix b/nixpkgs/pkgs/development/python-modules/libretranslate/default.nix
index 042fd5d404d1..c339a7708024 100644
--- a/nixpkgs/pkgs/development/python-modules/libretranslate/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/libretranslate/default.nix
@@ -30,14 +30,14 @@
 
 buildPythonPackage rec {
   pname = "libretranslate";
-  version = "1.5.6";
+  version = "1.5.7";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "LibreTranslate";
     repo = "LibreTranslate";
     rev = "refs/tags/v${version}";
-    hash = "sha256-43VnxgtapMRKyXxqsvBgSMUxvpbLI+iOfW3FA0/POpE=";
+    hash = "sha256-lOVi/809ig+KtiNwdt9Wovn+2Q8I6amps1sZ5JJy7WE=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/librosa/default.nix b/nixpkgs/pkgs/development/python-modules/librosa/default.nix
index 62d712aa7b1f..77bfb6aeca90 100644
--- a/nixpkgs/pkgs/development/python-modules/librosa/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/librosa/default.nix
@@ -2,7 +2,6 @@
 , stdenv
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 
 # build-system
 , setuptools
@@ -34,7 +33,7 @@
 
 buildPythonPackage rec {
   pname = "librosa";
-  version = "0.10.1";
+  version = "0.10.2";
   format = "pyproject";
 
   src = fetchFromGitHub {
@@ -42,26 +41,16 @@ buildPythonPackage rec {
     repo = "librosa";
     rev = "refs/tags/${version}";
     fetchSubmodules = true; # for test data
-    hash = "sha256-zbmU87hI9A1CVcBZ/5FU8z0t6SS4jfJk9bj9kLe/EHI=";
+    hash = "sha256-zUKljPKWOhyb3Zv4KEUcvLsVkxVhL+rzErKycAl6jIg=";
   };
 
   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=";
-    })
-  ];
-
   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 = [
@@ -107,11 +96,20 @@ buildPythonPackage rec {
     "test_example"
     "test_example_info"
     "test_load_resample"
-    # does not converge
-    "test_nnls_vector"
+    "test_cite_released"
+    "test_cite_badversion"
+    "test_cite_unreleased"
   ] ++ lib.optionals stdenv.isDarwin [
-    # https://github.com/librosa/librosa/pull/1808
-    "test_pyin_multi_center"
+    # 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; {
diff --git a/nixpkgs/pkgs/development/python-modules/lightning-utilities/default.nix b/nixpkgs/pkgs/development/python-modules/lightning-utilities/default.nix
index 3af06818b8ee..7dba0a125f57 100644
--- a/nixpkgs/pkgs/development/python-modules/lightning-utilities/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/lightning-utilities/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, pythonAtLeast
 
 # build
 , setuptools
@@ -16,21 +17,21 @@
 
 buildPythonPackage rec {
   pname = "lightning-utilities";
-  version = "0.10.1";
-  format = "pyproject";
+  version = "0.11.2";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "Lightning-AI";
     repo = "utilities";
     rev = "refs/tags/v${version}";
-    hash = "sha256-kP7BllA9FR/nMNTxRCxmG6IJYHz/Nxqb1HoF9KxuKl8=";
+    hash = "sha256-IT9aRAUNc2cP2erLr0MglZSVLfDjOxg8PVIIe9AvO0o=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     packaging
     typing-extensions
   ];
@@ -53,6 +54,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 = [
@@ -71,6 +74,7 @@ buildPythonPackage rec {
     description = "Common Python utilities and GitHub Actions in Lightning Ecosystem";
     homepage = "https://github.com/Lightning-AI/utilities";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ GaetanLepage ];
+    broken = pythonAtLeast "3.12";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/limnoria/default.nix b/nixpkgs/pkgs/development/python-modules/limnoria/default.nix
index b791095ed68d..3eba2971c645 100644
--- a/nixpkgs/pkgs/development/python-modules/limnoria/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/limnoria/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "limnoria";
-  version = "2023.11.18";
+  version = "2024.4.26";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Ftm5OGTt1emQsYso3hAUA9yMNBkIK5jybdFaRKJJk0o=";
+    hash = "sha256-H8GAJvmkYJy8PJsXn4Yl9qY3zb9aFBa7sr4DN0bKYfQ=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/line-profiler/default.nix b/nixpkgs/pkgs/development/python-modules/line-profiler/default.nix
index 73fa920139de..85d8cdf8d8af 100644
--- a/nixpkgs/pkgs/development/python-modules/line-profiler/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/line-profiler/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "line-profiler";
-  version = "4.1.2";
+  version = "4.1.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.6" || isPyPy;
@@ -21,7 +21,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "line_profiler";
     inherit version;
-    hash = "sha256-qlZXiw/1p1b+GAs/2nvWfCe71Hiz0BJGEtjPAOSiHfI=";
+    hash = "sha256-5fESPDZywyGLoGPCO9ZKURWeRGSf7WeAuZPHgfte0xg=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/linknlink/default.nix b/nixpkgs/pkgs/development/python-modules/linknlink/default.nix
index ea158b5cb2a1..2fd6c15d6b00 100644
--- a/nixpkgs/pkgs/development/python-modules/linknlink/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/litellm/default.nix b/nixpkgs/pkgs/development/python-modules/litellm/default.nix
index 25c8068a199a..d5446110c6c0 100644
--- a/nixpkgs/pkgs/development/python-modules/litellm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/litellm/default.nix
@@ -33,7 +33,7 @@
 
 buildPythonPackage rec {
   pname = "litellm";
-  version = "1.35.32";
+  version = "1.37.9";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -42,7 +42,7 @@ buildPythonPackage rec {
     owner = "BerriAI";
     repo = "litellm";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vNmhFd1lm1pfni2ZK0DshBC9cDRiSWhXTUHAPh/oGJc=";
+    hash = "sha256-yLJprng/33bwLpfSwBKSIFtk7/KsYWHqm0H5O1w00ZM=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-agent-openai/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-agent-openai/default.nix
index 2fb90a615f46..09f2d549225d 100644
--- a/nixpkgs/pkgs/development/python-modules/llama-index-agent-openai/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-agent-openai/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "llama-index-agent-openai";
-  version = "0.2.3";
+  version = "0.2.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_agent_openai";
     inherit version;
-    hash = "sha256-yJnZCzIDZlao74bQ8DeNQWjgDrLXWhCQHqtYulsmVqQ=";
+    hash = "sha256-zUpY+L8jNyjO2lVMuzTeVqK2u7v/bOgBw/j/DIKAv1U=";
   };
 
   pythonRelaxDeps = [ "llama-index-llms-openai" ];
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-core/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-core/default.nix
index d49c0f042f54..c5043d3d4a05 100644
--- a/nixpkgs/pkgs/development/python-modules/llama-index-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-core/default.nix
@@ -44,7 +44,7 @@ in
 
 buildPythonPackage rec {
   pname = "llama-index-core";
-  version = "0.10.33";
+  version = "0.10.36";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -53,7 +53,7 @@ buildPythonPackage rec {
     owner = "run-llama";
     repo = "llama_index";
     rev = "refs/tags/v${version}";
-    hash = "sha256-UlKZX7qWb8/XeqxNTW9PawKauwZRsMjsFP+xXI1CyeE=";
+    hash = "sha256-yP/60DLg43UOOogxbDvb1p5n8dnfBUjGhcfO5g5g0gA=";
   };
 
   sourceRoot = "${src.name}/${pname}";
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-llms-openai/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-llms-openai/default.nix
index 288fa1d35c4d..a6987b224fc5 100644
--- a/nixpkgs/pkgs/development/python-modules/llama-index-llms-openai/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-llms-openai/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "llama-index-llms-openai";
-  version = "0.1.16";
+  version = "0.1.19";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_llms_openai";
     inherit version;
-    hash = "sha256-MTu8F8JBmSQwpr9oahse3EJ2yCVq1rBVCqG+oeD+0aY=";
+    hash = "sha256-9htkqZeJLkJPs81UcJDSecWyEO8VthT8Od6FTTzKp+c=";
   };
 
   build-system = [ poetry-core ];
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix
index 389f2c6fe763..76fa73298cd4 100644
--- a/nixpkgs/pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix
+++ b/nixpkgs/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.1.6";
   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-EN51qHekRK81MGOF+q2bnwYkOR5VMJlwVkEUoICgV4w=";
   };
 
   build-system = [ poetry-core ];
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-readers-database/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-readers-database/default.nix
index 7b01a5738bbb..d7aa3bf51e03 100644
--- a/nixpkgs/pkgs/development/python-modules/llama-index-readers-database/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-readers-database/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "llama-index-readers-database";
-  version = "0.1.3";
+  version = "0.1.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_readers_database";
     inherit version;
-    hash = "sha256-1J6FE6iID4U9cEcPPUK5CvCTmbgVWxI4AFLrx+gPGWg=";
+    hash = "sha256-x71+szDNDZNaVc8AMXruKvxSNXg561ibE2+kx53zHfI=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-readers-file/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-readers-file/default.nix
index 999fb9040880..d0f42bec9eed 100644
--- a/nixpkgs/pkgs/development/python-modules/llama-index-readers-file/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-readers-file/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "llama-index-readers-file";
-  version = "0.1.19";
+  version = "0.1.22";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_readers_file";
     inherit version;
-    hash = "sha256-GUwbm4XCZRWbcwLH2ArbqTeqsG8FwXCvf9lcTnqK7DU=";
+    hash = "sha256-N95UrQz73GB8GVUyuaKSQXpHFPV3c1cLhwJ7jcOB8OI=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-vector-stores-chroma/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-vector-stores-chroma/default.nix
index 73c20444860c..de65df2055f3 100644
--- a/nixpkgs/pkgs/development/python-modules/llama-index-vector-stores-chroma/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-vector-stores-chroma/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "llama-index-vector-stores-chroma";
-  version = "0.1.7";
+  version = "0.1.8";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_vector_stores_chroma";
     inherit version;
-    hash = "sha256-E7DXWubBvMhru31XmNva6iPm2adJKmmt5pFqKZ8fquk=";
+    hash = "sha256-nFdLrzcPr0Vry2e51eonOm+h8rT9IFpZxHtoESNkuec=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/llama-parse/default.nix b/nixpkgs/pkgs/development/python-modules/llama-parse/default.nix
index 1f6183df9ae3..e56d34436ce9 100644
--- a/nixpkgs/pkgs/development/python-modules/llama-parse/default.nix
+++ b/nixpkgs/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.4.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -16,20 +17,14 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_parse";
     inherit version;
-    hash = "sha256-+gTAlzCxAhVfZQXenPkZmMhtM0WB8PEll8XrR8pduFk=";
+    hash = "sha256-AYNhR7UjiHOySn3UHFq5QrAbCbktdVcPMM8oYcCEoOs=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/llm/default.nix b/nixpkgs/pkgs/development/python-modules/llm/default.nix
index 5626da5e3858..582cba89763f 100644
--- a/nixpkgs/pkgs/development/python-modules/llm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/llm/default.nix
@@ -12,7 +12,7 @@
 let
   llm = buildPythonPackage rec {
     pname = "llm";
-    version = "0.13.1";
+    version = "0.14";
     pyproject = true;
 
     disabled = pythonOlder "3.8";
@@ -21,7 +21,7 @@ let
       owner = "simonw";
       repo = "llm";
       rev = "refs/tags/${version}";
-      hash = "sha256-Nq6pduzl8IK+nA3pctst/W4ux7+P6mBFTEHMF+vtBQw=";
+      hash = "sha256-CgGVFUsntVkF0zORAtYQQMAeGtIwBbj9hE0Ei1OCGq4=";
     };
 
     patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/lmfit/default.nix b/nixpkgs/pkgs/development/python-modules/lmfit/default.nix
index d96eb4d4c9ad..a7e8c6970bdb 100644
--- a/nixpkgs/pkgs/development/python-modules/lmfit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/lmfit/default.nix
@@ -4,6 +4,7 @@
   setuptools,
   setuptools-scm,
   asteval,
+  dill,
   numpy,
   scipy,
   uncertainties,
@@ -14,17 +15,17 @@
 
 buildPythonPackage rec {
   pname = "lmfit";
-  version = "1.2.2";
+  version = "1.3.1";
 
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-BEoFKhGmHaBXYnRQTBfrfigDtBEo4lgh6WYyIH8jyIw=";
+    hash = "sha256-vDhiRK29EO8aKixPnRez3vkFVSwKZK74VPCtRswwnMU=";
   };
 
   postPatch = ''
-    substituteInPlace setup.cfg --replace "--cov=lmfit --cov-report html" ""
+    substituteInPlace pyproject.toml --replace "--cov=lmfit --cov-report html" ""
   '';
 
   nativeBuildInputs = [
@@ -34,6 +35,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     asteval
+    dill
     numpy
     scipy
     uncertainties
@@ -45,13 +47,6 @@ buildPythonPackage rec {
     matplotlib
   ];
 
-  disabledTests = [
-    # https://github.com/lmfit/lmfit-py/issues/878
-    "test_emcee_multiprocessing"
-    "test_explicit_independent_vars"
-    "test_result_eval_custom_x"
-  ];
-
   meta = with lib; {
     description = "Least-Squares Minimization with Bounds and Constraints";
     homepage = "https://lmfit-py.readthedocs.io/";
diff --git a/nixpkgs/pkgs/development/python-modules/loadcredential/default.nix b/nixpkgs/pkgs/development/python-modules/loadcredential/default.nix
new file mode 100644
index 000000000000..b0cc59754bb8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/loadcredential/default.nix
@@ -0,0 +1,34 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+}:
+
+buildPythonPackage rec {
+  pname = "loadcredential";
+  version = "1.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "Tom-Hubrecht";
+    repo = "loadcredential";
+    rev = "v${version}";
+    hash = "sha256-GXpMqGLDmDnTGa9cBYe0CP3Evm5sQ3AK9u6k3mLAW34=";
+  };
+
+  build-system = [
+    setuptools
+    wheel
+  ];
+
+  pythonImportsCheck = [ "loadcredential" ];
+
+  meta = {
+    description = "A simple python package to read credentials passed through systemd's LoadCredential, with a fallback on env variables ";
+    homepage = "https://github.com/Tom-Hubrecht/loadcredential";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ thubrecht ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/localzone/default.nix b/nixpkgs/pkgs/development/python-modules/localzone/default.nix
index 84c5acd27690..02319312ce22 100644
--- a/nixpkgs/pkgs/development/python-modules/localzone/default.nix
+++ b/nixpkgs/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";
     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/nixpkgs/pkgs/development/python-modules/lockfile/default.nix b/nixpkgs/pkgs/development/python-modules/lockfile/default.nix
index 0fb64ad0baf9..1ee92f4ce38a 100644
--- a/nixpkgs/pkgs/development/python-modules/lockfile/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/lockfile/default.nix
@@ -1,25 +1,32 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, setuptools
 , pbr
-, nose
+, pynose
 }:
 
 buildPythonPackage rec {
   pname = "lockfile";
   version = "0.12.2";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799";
   };
 
-  buildInputs = [ pbr ];
-  nativeCheckInputs = [ nose ];
+  build-system = [
+    pbr
+    setuptools
+  ];
+
+  nativeCheckInputs = [ pynose ];
 
   checkPhase = ''
+    runHook preCheck
     nosetests
+    runHook postcheck
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/logilab/common.nix b/nixpkgs/pkgs/development/python-modules/logilab/common.nix
index b8fadc0832ad..3e2797b6d675 100644
--- a/nixpkgs/pkgs/development/python-modules/logilab/common.nix
+++ b/nixpkgs/pkgs/development/python-modules/logilab/common.nix
@@ -1,19 +1,21 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, setuptools
-, importlib-metadata
-, mypy-extensions
-, typing-extensions
-, pytestCheckHook
-, pytz
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  importlib-metadata,
+  mypy-extensions,
+  pytestCheckHook,
+  pythonAtLeast,
+  pythonOlder,
+  pytz,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "logilab-common";
   version = "2.0.0";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
@@ -22,17 +24,18 @@ buildPythonPackage rec {
     hash = "sha256-ojvR2k3Wpj5Ej0OS57I4aFX/cGFVeL/PmT7riCTelws=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  postPatch = lib.optionals (pythonAtLeast "3.12") ''
+    substituteInPlace logilab/common/testlib.py \
+      --replace-fail "_TextTestResult" "TextTestResult"
+  '';
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     setuptools
     mypy-extensions
     typing-extensions
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -44,10 +47,11 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "Python packages and modules used by Logilab ";
-    mainProgram = "logilab-pytest";
+    description = "Python packages and modules used by Logilab";
     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; [ ];
+    mainProgram = "logilab-pytest";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/logutils/default.nix b/nixpkgs/pkgs/development/python-modules/logutils/default.nix
index 7f3584578563..b46ff4b13442 100644
--- a/nixpkgs/pkgs/development/python-modules/logutils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/logutils/default.nix
@@ -3,24 +3,38 @@
 , 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 = [
@@ -33,9 +47,14 @@ buildPythonPackage rec {
     "tests/test_redis.py"
   ];
 
+  pythonImportsCheck = [
+    "logutils"
+  ];
+
   meta = with lib; {
     description = "Logging utilities";
     homepage = "https://bitbucket.org/vinay.sajip/logutils/";
     license = licenses.bsd0;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/loopy/default.nix b/nixpkgs/pkgs/development/python-modules/loopy/default.nix
index 995c99e100ec..488d055b7213 100644
--- a/nixpkgs/pkgs/development/python-modules/loopy/default.nix
+++ b/nixpkgs/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; {
+  meta = {
     description = "A 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/nixpkgs/pkgs/development/python-modules/looseversion/default.nix b/nixpkgs/pkgs/development/python-modules/looseversion/default.nix
index b16fd1a572d2..3bf1553a40d8 100644
--- a/nixpkgs/pkgs/development/python-modules/looseversion/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/losant-rest/default.nix b/nixpkgs/pkgs/development/python-modules/losant-rest/default.nix
index 3d14dbf313e0..21a285711976 100644
--- a/nixpkgs/pkgs/development/python-modules/losant-rest/default.nix
+++ b/nixpkgs/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.6";
+  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-sbNR95FhcRhgHh/ulLC8lL6EHal0BBK3wP6i29VElmY=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/lsassy/default.nix b/nixpkgs/pkgs/development/python-modules/lsassy/default.nix
index a36a70f11bbd..8123a9967e22 100644
--- a/nixpkgs/pkgs/development/python-modules/lsassy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/lsassy/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "lsassy";
-  version = "3.1.10";
+  version = "3.1.11";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "Hackndo";
     repo = "lsassy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Eqparqj1O0gK0MvR4BBkGVNji2WXEnMsdWvKiR6XHFk=";
+    hash = "sha256-boPFrmPqaHpezxXM3VM50i+n+n+gXkuwP4ErpMpN/AI=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/development/python-modules/m2crypto/default.nix b/nixpkgs/pkgs/development/python-modules/m2crypto/default.nix
index ae2e7b87ded1..8b87fc606c98 100644
--- a/nixpkgs/pkgs/development/python-modules/m2crypto/default.nix
+++ b/nixpkgs/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,28 +23,29 @@ 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.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";
diff --git a/nixpkgs/pkgs/development/python-modules/maestral/default.nix b/nixpkgs/pkgs/development/python-modules/maestral/default.nix
index 885911b181c8..b58a764ece10 100644
--- a/nixpkgs/pkgs/development/python-modules/maestral/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/maestral/default.nix
@@ -24,6 +24,7 @@
 , typing-extensions
 , watchdog
 , xattr
+, fetchpatch
 , pytestCheckHook
 , nixosTests
 }:
@@ -31,7 +32,7 @@
 buildPythonPackage rec {
   pname = "maestral";
   version = "1.9.3";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -42,7 +43,11 @@ buildPythonPackage rec {
     hash = "sha256-h7RDaCVICi3wl6/b1s01cINhFirDOpOXoxTPZIBH3jE=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     click
     desktop-notifier
     dbus-python
@@ -65,9 +70,17 @@ buildPythonPackage rec {
     rubicon-objc
   ];
 
+  patches = [
+    (fetchpatch {
+      name = "upgrade-dropbox-version-bounds";
+      url = "https://github.com/samschott/maestral/commit/8fd581fa503391534913afbc33a61132ff2e21ce.patch";
+      hash = "sha256-2Dke9iF/5Ptsf3CSRHUkjdFRrmdKY+L3sILRMyYrUH0=";
+    })
+  ];
+
   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}"
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/magic-wormhole-mailbox-server/default.nix b/nixpkgs/pkgs/development/python-modules/magic-wormhole-mailbox-server/default.nix
index fc9636c351a0..d74be9e45f93 100644
--- a/nixpkgs/pkgs/development/python-modules/magic-wormhole-mailbox-server/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/magic-wormhole-mailbox-server/default.nix
@@ -3,27 +3,29 @@
 , buildPythonPackage
 , fetchPypi
 , fetchpatch
+, setuptools
 , six
 , attrs
 , twisted
-, pyopenssl
-, service-identity
 , autobahn
 , treq
 , mock
 , pythonOlder
+, pythonAtLeast
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "magic-wormhole-mailbox-server";
   version = "0.4.1";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  # python 3.12 support: https://github.com/magic-wormhole/magic-wormhole-mailbox-server/issues/41
+  disabled = pythonOlder "3.7" || pythonAtLeast "3.12";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1af10592909caaf519c00e706eac842c5e77f8d4356215fe9c61c7b2258a88fb";
+    hash = "sha256-GvEFkpCcqvUZwA5wbqyELF53+NQ1YhX+nGHHsiWKiPs=";
   };
 
   patches = [
@@ -35,6 +37,8 @@ buildPythonPackage rec {
     })
   ];
 
+  nativeBuildInputs = [ setuptools ];
+
   propagatedBuildInputs = [
     attrs
     six
@@ -43,27 +47,24 @@ buildPythonPackage rec {
   ] ++ 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
-  '';
-
-  checkPhase = ''
-    trial -j$NIX_BUILD_CORES wormhole_mailbox_server
-  '';
+  disabledTestPaths = lib.optionals stdenv.isDarwin [
+    # these tests fail in Darwin's sandbox
+    "src/wormhole_mailbox_server/test/test_web.py"
+  ];
 
-  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 ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/magic-wormhole-transit-relay/default.nix b/nixpkgs/pkgs/development/python-modules/magic-wormhole-transit-relay/default.nix
index 463b3560457d..d98080545d35 100644
--- a/nixpkgs/pkgs/development/python-modules/magic-wormhole-transit-relay/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/magic-wormhole-transit-relay/default.nix
@@ -1,33 +1,40 @@
 { 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;
+
+  disabled = pythonOlder "3.7" || pythonAtLeast "3.12";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0ppsx2s1ysikns1h053x67z2zmficbn3y3kf52bzzslhd2s02j6b";
+    hash = "sha256-y0gBtGiQ6v+XKG4OP+xi0dUv/jF9FACDtjNqH7To+l4=";
   };
 
+  nativeBuildInputs = [ setuptools ];
+
   propagatedBuildInputs = [ autobahn twisted ];
 
-  nativeCheckInputs = [ mock twisted ];
+  pythonImportsCheck = [ "wormhole_transit_relay" ];
 
-  checkPhase = ''
-    trial -j$NIX_BUILD_CORES wormhole_transit_relay
-  '';
+  nativeCheckInputs = [ pytestCheckHook mock twisted ];
 
-  meta = with lib; {
+  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 ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/magic-wormhole/default.nix b/nixpkgs/pkgs/development/python-modules/magic-wormhole/default.nix
index 353e2c0e053b..d1bf85f0530a 100644
--- a/nixpkgs/pkgs/development/python-modules/magic-wormhole/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/magic-wormhole/default.nix
@@ -17,7 +17,9 @@
 , tqdm
 , click
 , humanize
+, iterable-io
 , txtorcon
+, zipstream-ng
 
 # optional-dependencies
 , noiseprotocol
@@ -33,12 +35,12 @@
 
 buildPythonPackage rec {
   pname = "magic-wormhole";
-  version = "0.13.0";
-  format = "pyproject";
+  version = "0.14.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-rDvWgoYnDn8UnAYUmo5Anl+jTX/rDoiESibSnu0tFRY=";
+    hash = "sha256-AG0jn4i/98N7wu/2CgBOJj+vklj3J5GS0Gugyc7WsIA=";
   };
 
   nativeBuildInputs = [
@@ -56,7 +58,9 @@ buildPythonPackage rec {
     tqdm
     click
     humanize
+    iterable-io
     txtorcon
+    zipstream-ng
   ]
   ++ autobahn.optional-dependencies.twisted
   ++ twisted.optional-dependencies.tls;
@@ -111,12 +115,12 @@ buildPythonPackage rec {
     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/nixpkgs/pkgs/development/python-modules/magika/default.nix b/nixpkgs/pkgs/development/python-modules/magika/default.nix
index 6e4099004317..f2a7cbd85a11 100644
--- a/nixpkgs/pkgs/development/python-modules/magika/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/magika/default.nix
@@ -16,13 +16,13 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/mahotas/default.nix b/nixpkgs/pkgs/development/python-modules/mahotas/default.nix
index e5ad5a283db7..2c5f449c139f 100644
--- a/nixpkgs/pkgs/development/python-modules/mahotas/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mahotas/default.nix
@@ -12,14 +12,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/mako/default.nix b/nixpkgs/pkgs/development/python-modules/mako/default.nix
index 0f512f8ec3a7..a1629b4cf366 100644
--- a/nixpkgs/pkgs/development/python-modules/mako/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mako/default.nix
@@ -22,7 +22,7 @@
 
 buildPythonPackage rec {
   pname = "mako";
-  version = "1.3.2";
+  version = "1.3.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -30,7 +30,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "Mako";
     inherit version;
-    hash = "sha256-KgyK1/YnQnGzu3Rn3TfPnMbatLwZy2mk7xBmlALeaY4=";
+    hash = "sha256-4WwB2aucEfcpDu8c/vwJP7WkXuSj2gni/sLk0brlTnM=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/malduck/default.nix b/nixpkgs/pkgs/development/python-modules/malduck/default.nix
index 0f15b6a1066c..204003bdddbc 100644
--- a/nixpkgs/pkgs/development/python-modules/malduck/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/mandown/default.nix b/nixpkgs/pkgs/development/python-modules/mandown/default.nix
index eae43bc8d951..d32696de51e9 100644
--- a/nixpkgs/pkgs/development/python-modules/mandown/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mandown/default.nix
@@ -9,6 +9,7 @@
 , filetype
 , lxml
 , natsort
+, nix-update-script
 , pillow
 , python-slugify
 , requests
@@ -18,14 +19,14 @@
 
 buildPythonPackage rec {
   pname = "mandown";
-  version = "1.7.0";
+  version = "1.8.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "potatoeggy";
     repo = "mandown";
     rev = "refs/tags/v${version}";
-    hash = "sha256-oHa7/2fv+BG5KIKFIICYBqddub5SokDvAI6frbVwGSo=";
+    hash = "sha256-DSbxWff5pY7tjB9aXY8/rQJzCQyDN2+OrmP10uEeXWM=";
   };
 
   nativeBuildInputs = [
@@ -34,6 +35,7 @@ buildPythonPackage rec {
   ];
 
   pythonRelaxDeps = [
+    "lxml"
     "pillow"
     "typer"
   ];
@@ -55,6 +57,7 @@ buildPythonPackage rec {
     gui = [
       pyside6
     ];
+    updateScript = nix-update-script { };
   };
 
   pythonImportsCheck = [ "mandown" ];
diff --git a/nixpkgs/pkgs/development/python-modules/manim-slides/default.nix b/nixpkgs/pkgs/development/python-modules/manim-slides/default.nix
index 8f89346b81b8..f028035d53e7 100644
--- a/nixpkgs/pkgs/development/python-modules/manim-slides/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/manim-slides/default.nix
@@ -34,7 +34,7 @@
 }:
 buildPythonPackage rec {
   pname = "manim-slides";
-  version = "5.1.5";
+  version = "5.1.6";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -43,7 +43,7 @@ buildPythonPackage rec {
     owner = "jeertmans";
     repo = "manim-slides";
     rev = "refs/tags/v${version}";
-    hash = "sha256-YOveWGukizXvEUOhId7UDJema64ypbg7w06JzrTsKjw=";
+    hash = "sha256-BFfp/jeKBXr+Ukh0jNEtMPHlstlBjhSnvA803ddYoZE=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/marimo/default.nix b/nixpkgs/pkgs/development/python-modules/marimo/default.nix
index 54f6fd858e35..8b3fd204e54c 100644
--- a/nixpkgs/pkgs/development/python-modules/marimo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/marimo/default.nix
@@ -3,30 +3,32 @@
 , fetchPypi
 , pythonOlder
 , setuptools
+, black
 , click
+, docutils
+, itsdangerous
 , jedi
 , markdown
-, pymdown-extensions
+, psutil
 , pygments
+, pymdown-extensions
+, starlette
 , tomlkit
 , uvicorn
-, starlette
 , websockets
-, docutils
-, black
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "marimo";
-  version = "0.4.10";
+  version = "0.6.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-F6Hf8KPIkXuRhO/1mVHE1wfU6//vbUK1ghoqANmZjag=";
+    hash = "sha256-L6ICaaMRrMOr/d8CJGcXxOYCWTVh8ObckW7xNeLRB2Q=";
   };
 
   build-system = [
@@ -34,17 +36,19 @@ buildPythonPackage rec {
   ];
 
   dependencies = [
+    black
     click
+    docutils
+    itsdangerous
     jedi
     markdown
-    pymdown-extensions
+    psutil
     pygments
+    pymdown-extensions
+    starlette
     tomlkit
     uvicorn
-    starlette
     websockets
-    docutils
-    black
   ];
 
   nativeCheckInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/markdown/default.nix b/nixpkgs/pkgs/development/python-modules/markdown/default.nix
index f31af525f1e6..70bff8d2c854 100644
--- a/nixpkgs/pkgs/development/python-modules/markdown/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/markdown/default.nix
@@ -10,28 +10,30 @@
 
 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 = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [
+  dependencies = lib.optionals (pythonOlder "3.10") [
     importlib-metadata
   ];
 
-  nativeCheckInputs = [ unittestCheckHook pyyaml ];
+  nativeCheckInputs = [
+    unittestCheckHook
+    pyyaml
+  ];
 
   pythonImportsCheck = [ "markdown" ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/marshmallow-dataclass/default.nix b/nixpkgs/pkgs/development/python-modules/marshmallow-dataclass/default.nix
index 7b5b2932407a..4bb06720ca23 100644
--- a/nixpkgs/pkgs/development/python-modules/marshmallow-dataclass/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/marshmallow-dataclass/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchFromGitHub
 , marshmallow
-, marshmallow-enum
 , pytestCheckHook
 , pythonAtLeast
 , pythonOlder
@@ -15,7 +14,7 @@ buildPythonPackage rec {
   version = "8.6.1";
   format = "setuptools";
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "lovasoa";
@@ -30,7 +29,6 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    marshmallow-enum
     pytestCheckHook
     typeguard
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/marshmallow-enum/default.nix b/nixpkgs/pkgs/development/python-modules/marshmallow-enum/default.nix
deleted file mode 100644
index fdf2771deebd..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/development/python-modules/mat2/default.nix b/nixpkgs/pkgs/development/python-modules/mat2/default.nix
index 1646d3ac7246..fe627c8b99d5 100644
--- a/nixpkgs/pkgs/development/python-modules/mat2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mat2/default.nix
@@ -9,7 +9,7 @@
 , exiftool
 , ffmpeg
 , mailcap
-, wrapGAppsHook
+, wrapGAppsHook3
 , gdk-pixbuf
 , gobject-introspection
 , librsvg
@@ -66,7 +66,7 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     gobject-introspection
-    wrapGAppsHook
+    wrapGAppsHook3
   ];
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/matlink-gpapi/default.nix b/nixpkgs/pkgs/development/python-modules/matlink-gpapi/default.nix
index 3c3cda1bf8db..c88638e4391f 100644
--- a/nixpkgs/pkgs/development/python-modules/matlink-gpapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/matlink-gpapi/default.nix
@@ -2,7 +2,6 @@
 , cryptography
 , fetchPypi
 , lib
-, pythonOlder
 , protobuf
 , pycryptodome
 , requests
@@ -12,7 +11,6 @@ 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;
diff --git a/nixpkgs/pkgs/development/python-modules/matplotlib-inline/default.nix b/nixpkgs/pkgs/development/python-modules/matplotlib-inline/default.nix
index 90cbd00dc4d1..e35111fd191c 100644
--- a/nixpkgs/pkgs/development/python-modules/matplotlib-inline/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/matplotlib-inline/default.nix
@@ -1,4 +1,8 @@
-{ lib, buildPythonPackage, fetchPypi
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, setuptools
 , traitlets
 
 # tests
@@ -7,15 +11,23 @@
 
 buildPythonPackage rec {
   pname = "matplotlib-inline";
-  version = "0.1.6";
-  format = "setuptools";
+  version = "0.1.7";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-+Ifl8Qupjo0rFQ3c9HAsHl+LOiAAXrD3S/29Ng7m8wQ=";
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "ipython";
+    repo = "matplotlib-inline";
+    rev = "refs/tags/${version}";
+    hash = "sha256-y7T8BshNa8NVWzH8oLS4dTAyhG+YmkkYQJFAyMXsJFA=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     traitlets
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/matplotlib/default.nix b/nixpkgs/pkgs/development/python-modules/matplotlib/default.nix
index 788df3d9458e..a23b9540538c 100644
--- a/nixpkgs/pkgs/development/python-modules/matplotlib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/matplotlib/default.nix
@@ -12,7 +12,6 @@
 , pybind11
 , setuptools
 , setuptools-scm
-, wheel
 
 # native libraries
 , ffmpeg-headless
@@ -70,6 +69,9 @@
 # required for headless detection
 , libX11
 , wayland
+
+# Reverse dependency
+, sage
 }:
 
 let
@@ -77,15 +79,15 @@ let
 in
 
 buildPythonPackage rec {
-  version = "3.8.3";
+  version = "3.8.4";
   pname = "matplotlib";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-e0FiOemuOL5UsCirv5BIr/UFSpq6VBa+8L0X+RYs4WE=";
+    hash = "sha256-iqw5fV6ewViWDjHDgcX/xS3dUr2aR3F+KmlAOBZ9/+o=";
   };
 
   env.XDG_RUNTIME_DIR = "/tmp";
@@ -100,7 +102,10 @@ buildPythonPackage rec {
     let
       tcl_tk_cache = ''"${tk}/lib", "${tcl}/lib", "${lib.strings.substring 0 3 tk.version}"'';
     in
-    lib.optionalString enableTk ''
+    ''
+      substituteInPlace pyproject.toml \
+        --replace-fail '"numpy>=2.0.0rc1,<2.3",' ""
+    '' + lib.optionalString enableTk ''
       sed -i '/self.tcl_tk_cache = None/s|None|${tcl_tk_cache}|' setupext.py
     '' + lib.optionalString (stdenv.isLinux && interactive) ''
       # fix paths to libraries in dlopen calls (headless detection)
@@ -110,13 +115,7 @@ buildPythonPackage rec {
     '';
 
   nativeBuildInputs = [
-    certifi
-    numpy
     pkg-config
-    pybind11
-    setuptools
-    setuptools-scm
-    wheel
   ] ++ lib.optionals enableGtk3 [
     gobject-introspection
   ];
@@ -143,7 +142,15 @@ buildPythonPackage rec {
     "strictoverflow"
   ];
 
-  propagatedBuildInputs = [
+  build-system = [
+    certifi
+    numpy
+    pybind11
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
     # explicit
     contourpy
     cycler
@@ -179,6 +186,8 @@ buildPythonPackage rec {
     };
   };
 
+  passthru.tests = { inherit sage; };
+
   env.MPLSETUPCFG = writeText "mplsetup.cfg" (lib.generators.toINI {} passthru.config);
 
   # Encountering a ModuleNotFoundError, as describved and investigated at:
diff --git a/nixpkgs/pkgs/development/python-modules/maxminddb/default.nix b/nixpkgs/pkgs/development/python-modules/maxminddb/default.nix
index 3f95408364db..100191643be8 100644
--- a/nixpkgs/pkgs/development/python-modules/maxminddb/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/maxminddb/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "maxminddb";
-  version = "2.5.2";
+  version = "2.6.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-s8M+T8eCHubJ9Ag3EW4Wq2F1hj1KZO7gJMW+xoZpCoc=";
+    hash = "sha256-bF1ZH2JeA7CjTfDH/4FYBnY5e4M14T7OEwxuOeSjr7k=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/mayavi/default.nix b/nixpkgs/pkgs/development/python-modules/mayavi/default.nix
index a34f98cdae39..ad41d36ee027 100644
--- a/nixpkgs/pkgs/development/python-modules/mayavi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mayavi/default.nix
@@ -18,9 +18,11 @@
 
 buildPythonPackage rec {
   pname = "mayavi";
+  # TODO: Remove meta.broken on next release.
   version = "4.8.1";
   format = "setuptools";
-  disabled = pythonOlder "3.8" || pythonAtLeast "3.11";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
@@ -85,5 +87,8 @@ buildPythonPackage rec {
     homepage = "https://github.com/enthought/mayavi";
     license = licenses.bsdOriginal;
     maintainers = with maintainers; [ knedlsepp ];
+    # Should be fixed in a version from after March 26, see:
+    # https://github.com/enthought/mayavi/issues/1284#issuecomment-2020631244
+    broken = pythonAtLeast "3.12";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/mdformat-mkdocs/default.nix b/nixpkgs/pkgs/development/python-modules/mdformat-mkdocs/default.nix
index 611c5b11dc0c..9415fee83d7a 100644
--- a/nixpkgs/pkgs/development/python-modules/mdformat-mkdocs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mdformat-mkdocs/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "mdformat-mkdocs";
-  version = "2.0.10";
+  version = "2.0.11";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "KyleKing";
     repo = "mdformat-mkdocs";
     rev = "refs/tags/v${version}";
-    hash = "sha256-N1VU9bOdVENIX6QsFa0jeVugmXjl3gNkVPS/m8gEB2Q=";
+    hash = "sha256-wx95Lsqgi7fM/1s6fSHxXOs396mIR9S9yCRebC2VFpI=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/mdtraj/default.nix b/nixpkgs/pkgs/development/python-modules/mdtraj/default.nix
index 971688348a1d..a99b36c78765 100644
--- a/nixpkgs/pkgs/development/python-modules/mdtraj/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mdtraj/default.nix
@@ -11,6 +11,7 @@
 , wheel
 , astunparse
 , numpy
+, packaging
 , pyparsing
 , scipy
 , gsd
@@ -39,9 +40,31 @@ buildPythonPackage rec {
       url = "https://github.com/mdtraj/mdtraj/commit/81209d00817ab07cfc4668bf5ec88088d16904c0.patch";
       hash = "sha256-ttNmij7csxF0Z5wPPwhGumRX055W2IgFjRAe6nI6GNY=";
     })
+    # remove pkg_resources usage
+    # https://github.com/mdtraj/mdtraj/pull/1837
+    (fetchpatch {
+      name = "fix-runtime-error.patch";
+      url = "https://github.com/mdtraj/mdtraj/commit/02d44d4db7039fceb199c85b4f993244804f470d.patch";
+      hash = "sha256-nhbi3iOrDSM87DyIp1KVt383Vvb6aYOgkjuYzviqiq8=";
+    })
+    # remove distutils usage
+    # https://github.com/mdtraj/mdtraj/pull/1834
+    (fetchpatch {
+      name = "python312-compatibility.patch";
+      url = "https://github.com/mdtraj/mdtraj/commit/95d79747deef42c976ca362a57806b61933409f3.patch";
+      hash = "sha256-Cq7/d745q6ZgAyWGM4ULnSsWezsbnu1CjSz5eqYSb+g=";
+    })
+    # disable intrinsics when SIMD is not available
+    # TODO: enable SIMD with python3.12
+    # https://github.com/mdtraj/mdtraj/pull/1884
+    (fetchpatch {
+      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
@@ -54,9 +77,10 @@ buildPythonPackage rec {
     llvmPackages.openmp
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     astunparse
     numpy
+    packaging
     pyparsing
     scipy
   ];
@@ -87,7 +111,9 @@ buildPythonPackage rec {
     "test_read_atomindices_2"
 
     # flaky test
+    "test_compare_rdf_t_master"
     "test_distances_t"
+    "test_precentered_2"
   ];
 
   pythonImportsCheck = [ "mdtraj" ];
diff --git a/nixpkgs/pkgs/development/python-modules/mecab-python3/default.nix b/nixpkgs/pkgs/development/python-modules/mecab-python3/default.nix
index e347aa107d7c..f661fad48846 100644
--- a/nixpkgs/pkgs/development/python-modules/mecab-python3/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mecab-python3/default.nix
@@ -9,14 +9,15 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/mechanize/default.nix b/nixpkgs/pkgs/development/python-modules/mechanize/default.nix
index 3724fa64d06e..a84fe51da4f2 100644
--- a/nixpkgs/pkgs/development/python-modules/mechanize/default.nix
+++ b/nixpkgs/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
diff --git a/nixpkgs/pkgs/development/python-modules/meilisearch/default.nix b/nixpkgs/pkgs/development/python-modules/meilisearch/default.nix
index e5e47b934fd3..4ad70db3281b 100644
--- a/nixpkgs/pkgs/development/python-modules/meilisearch/default.nix
+++ b/nixpkgs/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.1";
   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-rD9f0J8Ez+WrpEyDZa3GVuBxj6Kv7McBzIuk9RtsjHk=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/memestra/default.nix b/nixpkgs/pkgs/development/python-modules/memestra/default.nix
index db7d4e254a73..0bbf08a84698 100644
--- a/nixpkgs/pkgs/development/python-modules/memestra/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/memestra/default.nix
@@ -6,7 +6,6 @@
 , gast
 , nbconvert
 , nbformat
-, pythonOlder
 , pyyaml
 }:
 
@@ -15,8 +14,6 @@ buildPythonPackage rec {
   version = "0.2.1";
   format = "setuptools";
 
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-6shwf9BoDfZMy0itP8esNP4ov6fw6LJpO3Y5ZahwDZw=";
diff --git a/nixpkgs/pkgs/development/python-modules/memory-allocator/default.nix b/nixpkgs/pkgs/development/python-modules/memory-allocator/default.nix
index c4ddc5d06a1b..34dd55bb8dc6 100644
--- a/nixpkgs/pkgs/development/python-modules/memory-allocator/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/memory-allocator/default.nix
@@ -2,6 +2,9 @@
 , fetchPypi
 , buildPythonPackage
 , cython
+
+# Reverse dependency
+, sage
 }:
 
 buildPythonPackage rec {
@@ -19,6 +22,8 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "memory_allocator" ];
 
+  passthru.tests = { inherit sage; };
+
   meta = with lib; {
     description = "An extension class to allocate memory easily with cython";
     homepage = "https://github.com/sagemath/memory_allocator/";
diff --git a/nixpkgs/pkgs/development/python-modules/meraki/default.nix b/nixpkgs/pkgs/development/python-modules/meraki/default.nix
index f0d0e4087e36..1e1d3c3f67d6 100644
--- a/nixpkgs/pkgs/development/python-modules/meraki/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/meraki/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "meraki";
-  version = "1.45.0";
+  version = "1.46.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-PBeeohKNzAMlEdAjzB8fsVPc+ml+mcaWHoVWPeP93Bo=";
+    hash = "sha256-f3K+59+9NO33GO1SBZhKfqHPO9p5kivDeLNd780cZu8=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/meson-python/default.nix b/nixpkgs/pkgs/development/python-modules/meson-python/default.nix
index 01912c906094..c92c0705aaae 100644
--- a/nixpkgs/pkgs/development/python-modules/meson-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/meson-python/default.nix
@@ -13,13 +13,13 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/miasm/0001-setup.py-use-valid-semver.patch b/nixpkgs/pkgs/development/python-modules/miasm/0001-setup.py-use-valid-semver.patch
new file mode 100644
index 000000000000..ac98a5fc4d30
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/miasm/0002-core-remove-IDAPython-dependency.patch b/nixpkgs/pkgs/development/python-modules/miasm/0002-core-remove-IDAPython-dependency.patch
new file mode 100644
index 000000000000..20262d8102b1
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/miasm/default.nix b/nixpkgs/pkgs/development/python-modules/miasm/default.nix
new file mode 100644
index 000000000000..4d220bf97662
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/miasm/default.nix
@@ -0,0 +1,58 @@
+{ 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/nixpkgs/pkgs/development/python-modules/minari/default.nix b/nixpkgs/pkgs/development/python-modules/minari/default.nix
new file mode 100644
index 000000000000..45c3f0fc36ec
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/minari/default.nix
@@ -0,0 +1,88 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, setuptools
+, wheel
+, google-cloud-storage
+, gymnasium
+, h5py
+, numpy
+, packaging
+, portion
+, rich
+, tqdm
+, typer
+, typing-extensions
+, imageio
+, nbmake
+, pytest
+, pytest-markdown-docs
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "minari";
+  version = "0.4.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "Farama-Foundation";
+    repo = "Minari";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-DwuANo0PCb2pPTVST8EwuJHe5HKRV8JIpFBpSqoJNh8=";
+  };
+
+  build-system = [
+    setuptools
+    wheel
+  ];
+
+  dependencies = [
+    google-cloud-storage
+    gymnasium
+    h5py
+    numpy
+    packaging
+    portion
+    rich
+    tqdm
+    typer
+    typing-extensions
+  ];
+
+  passthru.optional-dependencies = {
+    testing = [
+      # gymnasium-robotics
+      imageio
+      nbmake
+      pytest
+      pytest-markdown-docs
+    ];
+  };
+
+  pythonImportsCheck = [
+    "minari"
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTestPaths = [
+    # Require internet access
+    "tests/dataset/test_dataset_download.py"
+    "tests/test_cli.py"
+  ];
+
+  meta = with lib; {
+    description = "A 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 licenses; [ asl20 mit ];
+    maintainers = with maintainers; [ GaetanLepage ];
+    mainProgram = "minari";
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mindsdb-evaluator/default.nix b/nixpkgs/pkgs/development/python-modules/mindsdb-evaluator/default.nix
index 9cc654911fc5..311f8761bc44 100644
--- a/nixpkgs/pkgs/development/python-modules/mindsdb-evaluator/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mindsdb-evaluator/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "mindsdb-evaluator";
-  version = "0.0.12";
+  version = "0.0.13";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "mindsdb_evaluator";
     inherit version;
-    hash = "sha256-SqcBtoY7WZcorAaoyhqNDscf1MkSz0pE993mz1MRXCU=";
+    hash = "sha256-SW3GYe9ykbs6ZViScdAgwiBAP9ix4v1VbSm/kJK2jDA=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/minidb/default.nix b/nixpkgs/pkgs/development/python-modules/minidb/default.nix
index 8bd0aea36ca4..20a2eba687d2 100644
--- a/nixpkgs/pkgs/development/python-modules/minidb/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/mizani/default.nix b/nixpkgs/pkgs/development/python-modules/mizani/default.nix
index f6761ad445f9..c0620198144f 100644
--- a/nixpkgs/pkgs/development/python-modules/mizani/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mizani/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "mizani";
-  version = "0.11.2";
+  version = "0.11.3";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -21,14 +21,14 @@ buildPythonPackage rec {
     owner = "has2k1";
     repo = "mizani";
     rev = "refs/tags/v${version}";
-    hash = "sha256-tOydQvRZcY052Xh98NbFUezc55JJ8LRj0REIAzpcCp0=";
+    hash = "sha256-aEataiB432yKnQ80TxJvsU9DO9wI4ZVGq1k73qeuEv0=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     matplotlib
     palettable
     pandas
diff --git a/nixpkgs/pkgs/development/python-modules/mkdocs-git-authors-plugin/default.nix b/nixpkgs/pkgs/development/python-modules/mkdocs-git-authors-plugin/default.nix
index 01eb0fa2375e..ddb611da7fb8 100644
--- a/nixpkgs/pkgs/development/python-modules/mkdocs-git-authors-plugin/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mkdocs-git-authors-plugin/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "mkdocs-git-authors-plugin";
-  version = "0.8.0";
+  version = "0.9.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -16,7 +16,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/nixpkgs/pkgs/development/python-modules/mkdocs-git-revision-date-localized-plugin/default.nix b/nixpkgs/pkgs/development/python-modules/mkdocs-git-revision-date-localized-plugin/default.nix
index c885727a2538..0a76166dd406 100644
--- a/nixpkgs/pkgs/development/python-modules/mkdocs-git-revision-date-localized-plugin/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mkdocs-git-revision-date-localized-plugin/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "mkdocs-git-revision-date-localized-plugin";
-  version = "1.2.4";
+  version = "1.2.5";
   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-cezL65Wsdaa9W4dGLgTz1x3UFrDRDJaGuttr58CBcuw=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/mkdocs-rss-plugin/default.nix b/nixpkgs/pkgs/development/python-modules/mkdocs-rss-plugin/default.nix
index 5328c196c31e..a11dd831e8bb 100644
--- a/nixpkgs/pkgs/development/python-modules/mkdocs-rss-plugin/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mkdocs-rss-plugin/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "mkdocs-rss-plugin";
-  version = "1.12.1";
+  version = "1.12.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "Guts";
     repo = "mkdocs-rss-plugin";
     rev = "refs/tags/${version}";
-    hash = "sha256-cLQfhMYW/9Eb+IamQIC7fZRTm/ORD8xbcrmKkSkUrMs=";
+    hash = "sha256-CeVt4Vkr3tGvWsDQtw8eAaRS5jBeDei0TrS5rViSCaI=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/mkdocs-swagger-ui-tag/default.nix b/nixpkgs/pkgs/development/python-modules/mkdocs-swagger-ui-tag/default.nix
index 62f5286747f0..06fb3a3f02a9 100644
--- a/nixpkgs/pkgs/development/python-modules/mkdocs-swagger-ui-tag/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mkdocs-swagger-ui-tag/default.nix
@@ -11,7 +11,7 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/mkdocstrings-python/default.nix b/nixpkgs/pkgs/development/python-modules/mkdocstrings-python/default.nix
index 7a57a73338ad..5e634d2da0ea 100644
--- a/nixpkgs/pkgs/development/python-modules/mkdocstrings-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mkdocstrings-python/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "mkdocstrings-python";
-  version = "1.9.2";
+  version = "1.10.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "mkdocstrings";
     repo = "python";
     rev = "refs/tags/${version}";
-    hash = "sha256-UJSDnkdohFn+U7i5fYiRVMLZZ8Nyb0fdihBZl2z2RBc=";
+    hash = "sha256-Dz74q7bsa8bInxn4RpP9MFXFDEL2yWifDe64K8AOl8k=";
   };
 
   build-system = [ pdm-backend ];
diff --git a/nixpkgs/pkgs/development/python-modules/mkdocstrings/default.nix b/nixpkgs/pkgs/development/python-modules/mkdocstrings/default.nix
index f82916c3a784..011442e70f2a 100644
--- a/nixpkgs/pkgs/development/python-modules/mkdocstrings/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mkdocstrings/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "mkdocstrings";
-  version = "0.25.0";
+  version = "0.25.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-Z4mX6EXEFmNd/CNa39hN9mwJSv9OkqwEmWMzJ9r+EBM=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/mlflow/default.nix b/nixpkgs/pkgs/development/python-modules/mlflow/default.nix
index 371db9450996..cf1a43e9c3ba 100644
--- a/nixpkgs/pkgs/development/python-modules/mlflow/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mlflow/default.nix
@@ -38,14 +38,14 @@
 
 buildPythonPackage rec {
   pname = "mlflow";
-  version = "2.12.1";
+  version = "2.12.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-qpKuuyN5qcVITL6QHN93nVQIrJamQeSx+KLR/5dNt8k=";
+    hash = "sha256-1xLxr51E8eueG67oymT3MR4YW3Vy/DweCoOkyM7/aq0=";
   };
 
   # Remove currently broken dependency `shap`, a model explainability package.
diff --git a/nixpkgs/pkgs/development/python-modules/mock-open/default.nix b/nixpkgs/pkgs/development/python-modules/mock-open/default.nix
index 704054c46c04..413c5f832d29 100644
--- a/nixpkgs/pkgs/development/python-modules/mock-open/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mock-open/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch, pythonOlder, mock }:
+{ lib, buildPythonPackage, fetchFromGitHub }:
 
 buildPythonPackage rec {
   pname = "mock-open";
@@ -13,15 +13,6 @@ 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";
diff --git a/nixpkgs/pkgs/development/python-modules/mocket/default.nix b/nixpkgs/pkgs/development/python-modules/mocket/default.nix
index 2a44707bff1b..116e85ce2c34 100644
--- a/nixpkgs/pkgs/development/python-modules/mocket/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mocket/default.nix
@@ -35,12 +35,12 @@
 
 buildPythonPackage rec {
   pname = "mocket";
-  version = "3.12.4";
+  version = "3.12.5";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-O+IRX59Z4D188XEmiSCT8H3sg1jhtaboHS3QINEnE0s=";
+    hash = "sha256-6yWo7SBlVldK+AxUBnQOXjQBxz9HbIC+Ch977xiZxek=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/monty/default.nix b/nixpkgs/pkgs/development/python-modules/monty/default.nix
index a2af96582ca5..e88b9d585d2e 100644
--- a/nixpkgs/pkgs/development/python-modules/monty/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/monty/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "monty";
-  version = "2024.3.31";
+  version = "2024.4.17";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "materialsvirtuallab";
     repo = "monty";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Gg9KTsS7Np11jYBA8MgblQM6OmzOM/MPLsVZ6fUKT6g=";
+    hash = "sha256-UqpRkw6F8RAvchq0HBSfdHHO8Lgg+yLdBku+wsPKg0E=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/mortgage/default.nix b/nixpkgs/pkgs/development/python-modules/mortgage/default.nix
index ebe5b55b1dba..6cc5ccc507f2 100644
--- a/nixpkgs/pkgs/development/python-modules/mortgage/default.nix
+++ b/nixpkgs/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 = with maintainers; [ ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/moviepy/default.nix b/nixpkgs/pkgs/development/python-modules/moviepy/default.nix
index 65f35e85a0f1..01b6a7086ab8 100644
--- a/nixpkgs/pkgs/development/python-modules/moviepy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/moviepy/default.nix
@@ -1,62 +1,96 @@
-{ 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,
+  youtube-dl,
 }:
 
 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
+      youtube-dl
+    ];
+  };
+
+  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"
+  ];
+
+  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; [ ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/mpegdash/default.nix b/nixpkgs/pkgs/development/python-modules/mpegdash/default.nix
new file mode 100644
index 000000000000..3480c4dcafd8
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/mplhep/default.nix b/nixpkgs/pkgs/development/python-modules/mplhep/default.nix
index cbf4e46b499e..845d9942f741 100644
--- a/nixpkgs/pkgs/development/python-modules/mplhep/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mplhep/default.nix
@@ -16,12 +16,12 @@
 
 buildPythonPackage rec {
   pname = "mplhep";
-  version = "0.3.47";
+  version = "0.3.48";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-GDLI/Y6tWiI5JcmQJ7BnwvKPGwdAwJDN4yGOgINcdB8=";
+    hash = "sha256-rAIiaTTSf1xINdadjHk32KOpW4SMg8jdwFt8z1oiLis=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/mpmath/default.nix b/nixpkgs/pkgs/development/python-modules/mpmath/default.nix
index 1a8e4c030979..20e7049ac370 100644
--- a/nixpkgs/pkgs/development/python-modules/mpmath/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mpmath/default.nix
@@ -5,6 +5,9 @@
 , isPyPy
 , setuptools
 , pytestCheckHook
+
+# Reverse dependency
+, sage
 }:
 
 buildPythonPackage rec {
@@ -29,6 +32,8 @@ buildPythonPackage rec {
     ];
   };
 
+  passthru.tests = { inherit sage; };
+
   nativeCheckInputs = [
     pytestCheckHook
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/msgraph-core/default.nix b/nixpkgs/pkgs/development/python-modules/msgraph-core/default.nix
index f8ee81afbac2..8bc1b7489301 100644
--- a/nixpkgs/pkgs/development/python-modules/msgraph-core/default.nix
+++ b/nixpkgs/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.0";
   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-bQW1piSypfj3YAfzuEk/AkrB1x0lrHoIDyZv+KeCYgE=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/msgraph-sdk/default.nix b/nixpkgs/pkgs/development/python-modules/msgraph-sdk/default.nix
index 7dc4e3fd062f..5740955f6d63 100644
--- a/nixpkgs/pkgs/development/python-modules/msgraph-sdk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/msgraph-sdk/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "msgraph-sdk";
-  version = "1.2.0";
+  version = "1.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "microsoftgraph";
     repo = "msgraph-sdk-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-UaGdusPGWlF7gTzpCq9WrF/evdDSK5srrkH8/Vz9O8M=";
+    hash = "sha256-afnxk79duKzTykNnSHPE6lZhMkOt+9JhEskj/KjQpQI=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/mujoco/default.nix b/nixpkgs/pkgs/development/python-modules/mujoco/default.nix
index 9237dbb6501c..3c8787488523 100644
--- a/nixpkgs/pkgs/development/python-modules/mujoco/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mujoco/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "mujoco";
-  version = "3.1.4";
+  version = "3.1.5";
 
   pyproject = true;
 
@@ -27,7 +27,7 @@ buildPythonPackage rec {
   # in the project's CI.
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-GdeL1zMri/ArjXyjXTgan48WVPTHDA1/SZxtTYB8QFk=";
+    hash = "sha256-kJm6YAE0HMnji3uUuO96ZzRsdjj6PpT1IHQ6NXiR8pY=";
   };
 
   nativeBuildInputs = [ cmake setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/mypy-protobuf/default.nix b/nixpkgs/pkgs/development/python-modules/mypy-protobuf/default.nix
index 0010e40800ec..73e0a331799a 100644
--- a/nixpkgs/pkgs/development/python-modules/mypy-protobuf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mypy-protobuf/default.nix
@@ -1,45 +1,59 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, protobuf
-, types-protobuf
-, grpcio-tools
-, pytestCheckHook
-, pythonOlder
+{
+  buildPythonPackage,
+  fetchPypi,
+  grpcio-tools,
+  lib,
+  mypy-protobuf,
+  protobuf,
+  pytestCheckHook,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  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 = [
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
+
+  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/nixpkgs/pkgs/development/python-modules/myst-docutils/default.nix b/nixpkgs/pkgs/development/python-modules/myst-docutils/default.nix
index 66c07489dfaa..8fa7ddd6e934 100644
--- a/nixpkgs/pkgs/development/python-modules/myst-docutils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/myst-docutils/default.nix
@@ -13,13 +13,13 @@
 
 buildPythonPackage rec {
   pname = "myst-docutils";
-  version = "2.0.0";
+  version = "3.0.1";
   format = "pyproject";
 
   src = fetchPypi {
     pname = "myst_docutils";
     inherit version;
-    hash = "sha256-WmmPEg+bINmeId+pjR6bbp8qzjfSXfEel+sQEdPIu8Y=";
+    hash = "sha256-alQvF0OWNjDck022ORJ1Nl4t1jgzMZKEbJxPHsrmBcI=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/myst-parser/default.nix b/nixpkgs/pkgs/development/python-modules/myst-parser/default.nix
index e485b768a750..12ddb2ec769e 100644
--- a/nixpkgs/pkgs/development/python-modules/myst-parser/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/myst-parser/default.nix
@@ -4,6 +4,7 @@
 , fetchpatch
 , flit-core
 , pythonOlder
+, defusedxml
 , docutils
 , jinja2
 , markdown-it-py
@@ -16,6 +17,7 @@
 , pytest-regressions
 , sphinx-pytest
 , pytestCheckHook
+, pythonRelaxDepsHook
 }:
 
 buildPythonPackage rec {
@@ -40,7 +42,10 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [ flit-core ];
+  nativeBuildInputs = [
+    flit-core
+    pythonRelaxDepsHook
+  ];
 
   propagatedBuildInputs = [
     docutils
@@ -54,6 +59,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     beautifulsoup4
+    defusedxml
     pytest-param-files
     pytest-regressions
     sphinx-pytest
@@ -64,6 +70,10 @@ buildPythonPackage rec {
     "myst_parser"
   ];
 
+  pythonRelaxDeps = [
+    "docutils"
+  ];
+
   disabledTests = [
     # AssertionError due to different files
     "test_basic"
@@ -72,6 +82,9 @@ buildPythonPackage rec {
     "test_fieldlist_extension"
     # docutils 0.19 expectation mismatches
     "test_docutils_roles"
+    # sphinx 7.0 expectation mismatches
+    "test_heading_slug_func"
+    "test_references_singlehtml"
     # sphinx 6.0 expectation mismatches
     "test_sphinx_directives"
     # sphinx 5.3 expectation mismatches
diff --git a/nixpkgs/pkgs/development/python-modules/nanobind/default.nix b/nixpkgs/pkgs/development/python-modules/nanobind/default.nix
index 27460b65a8db..9e632ff0f1b2 100644
--- a/nixpkgs/pkgs/development/python-modules/nanobind/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nanobind/default.nix
@@ -51,8 +51,10 @@ buildPythonPackage rec {
     scipy
     torch
     tensorflow
-    jax
-    jaxlib
+    # Uncomment at next release (1.9.3)
+    # See https://github.com/wjakob/nanobind/issues/578
+    # jax
+    # jaxlib
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/nanomsg-python/default.nix b/nixpkgs/pkgs/development/python-modules/nanomsg-python/default.nix
index 06b2ed5f634f..1125b88c0e4e 100644
--- a/nixpkgs/pkgs/development/python-modules/nanomsg-python/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/nanotime/default.nix b/nixpkgs/pkgs/development/python-modules/nanotime/default.nix
index aeabc540eb00..d41126916b0b 100644
--- a/nixpkgs/pkgs/development/python-modules/nanotime/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/napari-console/default.nix b/nixpkgs/pkgs/development/python-modules/napari-console/default.nix
index 9072ada93f42..07b8d735736a 100644
--- a/nixpkgs/pkgs/development/python-modules/napari-console/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/napari-console/default.nix
@@ -1,47 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, imageio
-, ipykernel
-, ipython
-, napari-plugin-engine
-, pythonOlder
-, qtconsole
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  imageio,
+  ipykernel,
+  ipython,
+  napari-plugin-engine,
+  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";
diff --git a/nixpkgs/pkgs/development/python-modules/napari/default.nix b/nixpkgs/pkgs/development/python-modules/napari/default.nix
index 0bccb016570c..b5baed96a441 100644
--- a/nixpkgs/pkgs/development/python-modules/napari/default.nix
+++ b/nixpkgs/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
diff --git a/nixpkgs/pkgs/development/python-modules/nats-python/default.nix b/nixpkgs/pkgs/development/python-modules/nats-python/default.nix
index 9662dddd5ddb..f93b2feab69c 100644
--- a/nixpkgs/pkgs/development/python-modules/nats-python/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/naturalsort/default.nix b/nixpkgs/pkgs/development/python-modules/naturalsort/default.nix
index 9d7572fb0f70..8be9da8328f2 100644
--- a/nixpkgs/pkgs/development/python-modules/naturalsort/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/nbconvert/default.nix b/nixpkgs/pkgs/development/python-modules/nbconvert/default.nix
index b80f75dc4549..4375b18486d2 100644
--- a/nixpkgs/pkgs/development/python-modules/nbconvert/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nbconvert/default.nix
@@ -33,14 +33,14 @@ let
   };
 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
diff --git a/nixpkgs/pkgs/development/python-modules/nbdev/default.nix b/nixpkgs/pkgs/development/python-modules/nbdev/default.nix
index ee82753ae822..02e938ae7ed4 100644
--- a/nixpkgs/pkgs/development/python-modules/nbdev/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nbdev/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "nbdev";
-  version = "2.3.14";
+  version = "2.3.22";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-9Tacr4mWmjXspKKCkFDWYeT7KkBh4/3f6UOkfj0/leg=";
+    hash = "sha256-CO88zk4aPoaYokt98IYXpfTrhdVBgCwM9BSiKqWeKm4=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/nbmake/default.nix b/nixpkgs/pkgs/development/python-modules/nbmake/default.nix
new file mode 100644
index 000000000000..03606d7b0787
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nbmake/default.nix
@@ -0,0 +1,74 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, poetry-core
+, pythonRelaxDepsHook
+, setuptools
+, wheel
+, ipykernel
+, nbclient
+, nbformat
+, pygments
+, pytest
+, pyyaml
+, pytest-xdist
+, pytestCheckHook
+, typing-extensions
+}:
+
+buildPythonPackage rec {
+  pname = "nbmake";
+  version = "1.5.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "treebeardtech";
+    repo = "nbmake";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-sX0YqyBchLlo0QPIpLvl11/gwoiZknG5rBDzmQKiXhs=";
+  };
+
+  build-system = [
+    poetry-core
+    pythonRelaxDepsHook
+    setuptools
+    wheel
+  ];
+
+  dependencies = [
+    ipykernel
+    nbclient
+    nbformat
+    pygments
+    pytest
+    pyyaml
+  ];
+
+  pythonRelaxDeps = [
+    "nbclient"
+  ];
+
+  pythonImportsCheck = [
+    "nbmake"
+  ];
+
+  nativeCheckInputs = [
+    pytest-xdist
+    pytestCheckHook
+    typing-extensions
+  ];
+
+  __darwinAllowLocalNetworking = true;
+
+
+  meta = with lib; {
+    description = "Pytest plugin for testing notebooks";
+    homepage = "https://github.com/treebeardtech/nbmake";
+    changelog = "https://github.com/treebeardtech/nbmake/releases/tag/v${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nbsphinx/default.nix b/nixpkgs/pkgs/development/python-modules/nbsphinx/default.nix
index de0d972aa986..8fd5a9ce5263 100644
--- a/nixpkgs/pkgs/development/python-modules/nbsphinx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nbsphinx/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, setuptools
 , docutils
 , jinja2
 , nbconvert
@@ -12,17 +13,21 @@
 
 buildPythonPackage rec {
   pname = "nbsphinx";
-  version = "0.9.3";
-  format = "setuptools";
+  version = "0.9.4";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-7DOchpG2iPhnYQSjZ6S4zz6gH9CJ3CjSTewi1WOxFWI=";
+    hash = "sha256-BCpggG/CPVGbxb71nZVXBxORP+RC/adZ1T46r2IQR5Q=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     docutils
     jinja2
     nbconvert
diff --git a/nixpkgs/pkgs/development/python-modules/neo/default.nix b/nixpkgs/pkgs/development/python-modules/neo/default.nix
index d23d2fdc57ed..d4b5265ba8ed 100644
--- a/nixpkgs/pkgs/development/python-modules/neo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/neo/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "neo";
-  version = "0.13.0";
+  version = "0.13.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-VnXR+jgaU8LH7ri16SnsA5neILsLUkU+G5nsbWbckfM=";
+    hash = "sha256-gVhbKLZaTciakucc7TlCxdv9qnG90sw4U3G3ebVlTK0=";
   };
 
   nativeBuildInputs = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/netcdf4/default.nix b/nixpkgs/pkgs/development/python-modules/netcdf4/default.nix
index 39994519db17..72b03ef5d7f6 100644
--- a/nixpkgs/pkgs/development/python-modules/netcdf4/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/netcdf4/default.nix
@@ -7,6 +7,7 @@
 , oldest-supported-numpy
 , setuptools
 , wheel
+, certifi
 , numpy
 , zlib
 , netcdf
@@ -19,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "netcdf4";
-  version = "1.6.2";
+  version = "1.6.5";
   format = "pyproject";
 
   disabled = isPyPy;
@@ -27,7 +28,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "netCDF4";
     inherit version;
-    hash = "sha256-A4KwL/aiiEGfb/7IXexA9FH0G4dVVHFUxXXd2fD0rlM=";
+    hash = "sha256-gkiB0KrP3lvZgtat7dhXQlnIVVN4HnuD4M6CuJC/oO8=";
   };
 
   nativeBuildInputs = [
@@ -38,6 +39,7 @@ buildPythonPackage rec {
   ];
 
   propagatedBuildInputs = [
+    certifi
     cftime
     numpy
     zlib
diff --git a/nixpkgs/pkgs/development/python-modules/nethsm/default.nix b/nixpkgs/pkgs/development/python-modules/nethsm/default.nix
index 902fa62e3387..9120b29638fc 100644
--- a/nixpkgs/pkgs/development/python-modules/nethsm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nethsm/default.nix
@@ -12,7 +12,7 @@
 
 let
   pname = "nethsm";
-  version = "1.0.0";
+  version = "1.1.0";
 in
 
 buildPythonPackage {
@@ -21,7 +21,7 @@ buildPythonPackage {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-sENuSdA4pYt8v2w2RvDkcQLYCP9V0vZOdWOlkNBi3/o=";
+    hash = "sha256-CQhheHQ0BlfznKjoOSRvbDtnlTvv/SLtl0GWd7LUSt8=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/nettigo-air-monitor/default.nix b/nixpkgs/pkgs/development/python-modules/nettigo-air-monitor/default.nix
index a33f9d528630..f450b85abd1e 100644
--- a/nixpkgs/pkgs/development/python-modules/nettigo-air-monitor/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nettigo-air-monitor/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "nettigo-air-monitor";
-  version = "3.0.0";
+  version = "3.0.1";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "bieniu";
     repo = "nettigo-air-monitor";
     rev = "refs/tags/${version}";
-    hash = "sha256-aiJoY+6sNfBmE1057UuMjV80hjVJ29t2X16IIe6dxWs=";
+    hash = "sha256-Ysvyg2cj09Bb+xpNPapYAQSBDKfGsYZcHj9xxIR8KGw=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/netutils/default.nix b/nixpkgs/pkgs/development/python-modules/netutils/default.nix
index 93b1d2b2e3bb..50473f84651d 100644
--- a/nixpkgs/pkgs/development/python-modules/netutils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/netutils/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "netutils";
-  version = "1.8.0";
+  version = "1.8.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "networktocode";
     repo = "netutils";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Eqs/YkU2XrjD7x2WgvvR89/Pdi9AW9vhw3alJ8kIDgc=";
+    hash = "sha256-09SRSzA1RiBhJjq+dlln23myWvXFhr8krsPz7N80JKw=";
   };
 
   build-system = [ poetry-core ];
diff --git a/nixpkgs/pkgs/development/python-modules/networkx/default.nix b/nixpkgs/pkgs/development/python-modules/networkx/default.nix
index 0c4993cdd694..ac0bd456bcda 100644
--- a/nixpkgs/pkgs/development/python-modules/networkx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/networkx/default.nix
@@ -19,19 +19,22 @@
 # 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 = [
@@ -53,6 +56,8 @@ buildPythonPackage rec {
     ];
   };
 
+  passthru.tests = { inherit sage; };
+
   nativeCheckInputs = [
     pytest-xdist
     pytestCheckHook
diff --git a/nixpkgs/pkgs/development/python-modules/niaaml/default.nix b/nixpkgs/pkgs/development/python-modules/niaaml/default.nix
index 855908721490..d2b9868cacac 100644
--- a/nixpkgs/pkgs/development/python-modules/niaaml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/niaaml/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "niaaml";
-  version = "1.2.0";
+  version = "2.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "lukapecnik";
     repo = "NiaAML";
     rev = "refs/tags/${version}";
-    hash = "sha256-jGbsxYlRJ81g74LqSKpquciPsLP+KSoNBTJPEaD/CHM=";
+    hash = "sha256-d6UlpMrT0GBZlcD1BCZxInXTdyFMBVltxnSyUFbSy0g=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/development/python-modules/niapy/default.nix b/nixpkgs/pkgs/development/python-modules/niapy/default.nix
index c05c0fb25a74..60308f21573f 100644
--- a/nixpkgs/pkgs/development/python-modules/niapy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/niapy/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, matplotlib
-, numpy
-, openpyxl
-, pandas
-, poetry-core
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  matplotlib,
+  numpy,
+  openpyxl,
+  pandas,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "niapy";
-  version = "2.1.0";
+  version = "2.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,28 +21,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 = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "niapy"
-  ];
+  pythonImportsCheck = [ "niapy" ];
 
   meta = with lib; {
     description = "Micro framework for building nature-inspired algorithms";
diff --git a/nixpkgs/pkgs/development/python-modules/nidaqmx/default.nix b/nixpkgs/pkgs/development/python-modules/nidaqmx/default.nix
index 7c010a224340..04ae611925db 100644
--- a/nixpkgs/pkgs/development/python-modules/nidaqmx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nidaqmx/default.nix
@@ -5,8 +5,6 @@
 , numpy
 , pytestCheckHook
 , pykka
-, enum34
-, pythonOlder
 , pythonAtLeast
 }:
 
@@ -32,8 +30,6 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     numpy
     six
-  ] ++ lib.optionals (pythonOlder "3.4") [
-    enum34
   ];
 
   nativeCheckInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/nilearn/default.nix b/nixpkgs/pkgs/development/python-modules/nilearn/default.nix
index ce7cdee635b3..c4088ca7e42d 100644
--- a/nixpkgs/pkgs/development/python-modules/nilearn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nilearn/default.nix
@@ -17,14 +17,14 @@
 
 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 ];
diff --git a/nixpkgs/pkgs/development/python-modules/nocasedict/default.nix b/nixpkgs/pkgs/development/python-modules/nocasedict/default.nix
index 9d727ec0ecba..eb9677438e62 100644
--- a/nixpkgs/pkgs/development/python-modules/nocasedict/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nocasedict/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "nocasedict";
-  version = "2.0.1";
+  version = "2.0.3";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-lgy2mfEgnagKw546tQqnNC/oyp9wYGwjRHpRBVBDXlA=";
+    hash = "sha256-HJImx/WoqXrVHcsK4xV6cg4/fLnEVo0i6joF4/hWWKk=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/nocaselist/default.nix b/nixpkgs/pkgs/development/python-modules/nocaselist/default.nix
index fcad1844e2f6..dd667c0a3c71 100644
--- a/nixpkgs/pkgs/development/python-modules/nocaselist/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nocaselist/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "nocaselist";
-  version = "2.0.0";
+  version = "2.0.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-RWqgAMZ3fF0hsCnFLlMvlDKNT7TxWtKk3T3WLbMLOJI=";
+    hash = "sha256-MnCLcAoaUxM+a7XMUzMsl3Wwx8lZpflyV5MXH9L0yKU=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/noiseprotocol/default.nix b/nixpkgs/pkgs/development/python-modules/noiseprotocol/default.nix
index d1cc83e517ad..8192e2dd4f30 100644
--- a/nixpkgs/pkgs/development/python-modules/noiseprotocol/default.nix
+++ b/nixpkgs/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,6 +33,7 @@ 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; [ ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/normality/default.nix b/nixpkgs/pkgs/development/python-modules/normality/default.nix
index 862b3af92958..966e399b2478 100644
--- a/nixpkgs/pkgs/development/python-modules/normality/default.nix
+++ b/nixpkgs/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; {
     description = "Micro-library to normalize text strings";
     homepage = "https://github.com/pudo/normality";
     license = licenses.mit;
-    maintainers = [ ];
+    maintainers = with lib.maintainers; [ sigmanificient ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/nose-xunitmp/default.nix b/nixpkgs/pkgs/development/python-modules/nose-xunitmp/default.nix
new file mode 100644
index 000000000000..ee344b2e07ca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nose-xunitmp/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools
+, wheel
+, nose
+}:
+
+buildPythonPackage rec {
+  pname = "nose-xunitmp";
+  version = "0.4.1";
+  pyproject = true;
+
+  src = fetchPypi {
+    pname = "nose_xunitmp";
+    inherit version;
+    hash = "sha256-wt9y9HYHUdMBU9Rzgiqr8afD1GL2ZKp/f9uNxibcfEA=";
+  };
+
+  build-system = [
+    setuptools
+    wheel
+  ];
+
+  dependencies = [
+    nose
+  ];
+
+  pythonImportsCheck = [
+    "nose_xunitmp"
+  ];
+
+  meta = {
+    description = "Xunit output when running multiprocess tests using nose";
+    homepage = "https://pypi.org/project/nose_xunitmp/";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/notebook/default.nix b/nixpkgs/pkgs/development/python-modules/notebook/default.nix
index 6f09fdae9c67..c1a55c2f0203 100644
--- a/nixpkgs/pkgs/development/python-modules/notebook/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/notebook/default.nix
@@ -16,14 +16,14 @@
 
 buildPythonPackage rec {
   pname = "notebook";
-  version = "7.1.3";
+  version = "7.2.0";
   disabled = pythonOlder "3.8";
 
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Qfzr/0TPe7k3cYCAi8uuBmYptV2MdyLx6751ykT5z8E=";
+    hash = "sha256-NKK6SwitXRnskw23SE+3l0aheEvp4aX4IY+a+GVqFB8=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/numexpr/default.nix b/nixpkgs/pkgs/development/python-modules/numexpr/default.nix
index 4de1e4a7de05..ca8e329771fe 100644
--- a/nixpkgs/pkgs/development/python-modules/numexpr/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/numexpr/default.nix
@@ -2,30 +2,38 @@
 , buildPythonPackage
 , fetchPypi
 , numpy
-, packaging
-, python
-, pythonOlder
+, 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 = [
+  # 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
+  '';
+
+  build-system = [
+    setuptools
+    wheel
     numpy
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
-    packaging
   ];
 
   preBuild = ''
@@ -33,13 +41,25 @@ buildPythonPackage rec {
     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
   '';
 
+  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"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/numpy/default.nix b/nixpkgs/pkgs/development/python-modules/numpy/default.nix
index 4299c6d4dc63..f0acca333f85 100644
--- a/nixpkgs/pkgs/development/python-modules/numpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/numpy/default.nix
@@ -19,6 +19,9 @@
 , blas
 , lapack
 
+# Reverse dependency
+, sage
+
 # tests
 , hypothesis
 , pytest-xdist
@@ -88,6 +91,9 @@ 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 = [
@@ -174,6 +180,7 @@ in buildPythonPackage rec {
     blas = blas.provider;
     blasImplementation = blas.implementation;
     inherit cfg;
+    tests = { inherit sage; };
   };
 
   # Disable test
diff --git a/nixpkgs/pkgs/development/python-modules/numpyro/default.nix b/nixpkgs/pkgs/development/python-modules/numpyro/default.nix
index a38b43b2d8f9..857ce48b90f2 100644
--- a/nixpkgs/pkgs/development/python-modules/numpyro/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/numpyro/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , pythonOlder
 , fetchPypi
+, setuptools
 , jax
 , jaxlib
 , multipledispatch
@@ -15,17 +16,21 @@
 
 buildPythonPackage rec {
   pname = "numpyro";
-  version = "0.14.0";
-  format = "setuptools";
+  version = "0.15.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit version pname;
-    hash = "sha256-PkPqqchDRz166TnBg+ENsU4ju0KwrR3pCuFaRRF23kg=";
+    hash = "sha256-4WyfR8wx4qollYSgtslEMSCB0zypJAYCJjKtWEsOYA0=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     jax
     jaxlib
     multipledispatch
diff --git a/nixpkgs/pkgs/development/python-modules/objax/default.nix b/nixpkgs/pkgs/development/python-modules/objax/default.nix
index 7f2725e9d286..68ef0f449287 100644
--- a/nixpkgs/pkgs/development/python-modules/objax/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/objax/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , jax
 , jaxlib
 , keras
@@ -30,7 +29,12 @@ buildPythonPackage rec {
     hash = "sha256-WD+pmR8cEay4iziRXqF3sHUzCMBjmLJ3wZ3iYOD+hzk=";
   };
 
-  nativeBuildInputs = [
+  patches = [
+    # Issue reported upstream: https://github.com/google/objax/issues/270
+    ./replace-deprecated-device_buffers.patch
+  ];
+
+  build-system = [
     setuptools
   ];
 
@@ -40,7 +44,7 @@ buildPythonPackage rec {
     jaxlib
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jax
     numpy
     parameterized
diff --git a/nixpkgs/pkgs/development/python-modules/objax/replace-deprecated-device_buffers.patch b/nixpkgs/pkgs/development/python-modules/objax/replace-deprecated-device_buffers.patch
new file mode 100644
index 000000000000..fc0fd50a90ce
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/oci/default.nix b/nixpkgs/pkgs/development/python-modules/oci/default.nix
index b1bb84dba786..c0d759db7b22 100644
--- a/nixpkgs/pkgs/development/python-modules/oci/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/oci/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "oci";
-  version = "2.126.1";
+  version = "2.126.2";
   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-eejIDpKpPekxrm1H9x2skxK67KNUm9mmrGM23hZ6ztM=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/development/python-modules/oelint-parser/default.nix b/nixpkgs/pkgs/development/python-modules/oelint-parser/default.nix
index 9fc4de88fb9f..b4df20c9da78 100644
--- a/nixpkgs/pkgs/development/python-modules/oelint-parser/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/oelint-parser/default.nix
@@ -9,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "oelint-parser";
-  version = "3.5.0";
+  version = "3.5.2";
   format = "setuptools";
 
   src = fetchPypi {
     inherit version;
     pname = "oelint_parser";
-    hash = "sha256-MvLHi0/tMkWBARyIVm/cuMbS2euK37xvQUbkmOrUyVU=";
+    hash = "sha256-ep3kU6Rdbev5SKnqQq9t4tC7RWp4b+uaWBWfE2Pydqc=";
   };
 
   buildInputs = [ pip ];
diff --git a/nixpkgs/pkgs/development/python-modules/oemthermostat/default.nix b/nixpkgs/pkgs/development/python-modules/oemthermostat/default.nix
index f40e39f10bf6..154a3f7f1e6b 100644
--- a/nixpkgs/pkgs/development/python-modules/oemthermostat/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/okta/default.nix b/nixpkgs/pkgs/development/python-modules/okta/default.nix
index 13218b0d8f08..6b4787570c36 100644
--- a/nixpkgs/pkgs/development/python-modules/okta/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/okta/default.nix
@@ -22,14 +22,14 @@
 
 buildPythonPackage rec {
   pname = "okta";
-  version = "2.9.5";
+  version = "2.9.6";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-qMcO0TTbMPjc+r2IOlwJqbaSOztat9MmYWH4kgy9vwA=";
+    hash = "sha256-WRWbS8bYUafnvnTKLHlV7YV5410E0jk2UYos2F20A7k=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/ollama/default.nix b/nixpkgs/pkgs/development/python-modules/ollama/default.nix
index 4d1999a8aae8..299af4e9c964 100644
--- a/nixpkgs/pkgs/development/python-modules/ollama/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ollama/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "ollama";
-  version = "0.1.9";
+  version = "0.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "ollama";
     repo = "ollama-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ilJgRMzCn/T+6Lr7IuvaCnKhN5cyyEOWuV0N1FtR+Yg=";
+    hash = "sha256-kfotKUUXBekUd0X32BYAjNWvQJO94bdEDCSrBg2yJRQ=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/ome-zarr/default.nix b/nixpkgs/pkgs/development/python-modules/ome-zarr/default.nix
index 0412a0f80718..b87e8f925931 100644
--- a/nixpkgs/pkgs/development/python-modules/ome-zarr/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ome-zarr/default.nix
@@ -48,6 +48,27 @@ buildPythonPackage rec {
     "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"
diff --git a/nixpkgs/pkgs/development/python-modules/open-clip-torch/default.nix b/nixpkgs/pkgs/development/python-modules/open-clip-torch/default.nix
index 6de2c610fbf6..81b686332883 100644
--- a/nixpkgs/pkgs/development/python-modules/open-clip-torch/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/open-clip-torch/default.nix
@@ -69,6 +69,8 @@ buildPythonPackage rec {
     "test_inference_with_data"
     "test_pretrained_text_encoder"
     "test_training_mt5"
+    # fails due to type errors
+    "test_num_shards"
   ] ++ lib.optionals (stdenv.isAarch64 && stdenv.isLinux) [
     "test_training"
     "test_training_coca"
diff --git a/nixpkgs/pkgs/development/python-modules/openai-triton/default.nix b/nixpkgs/pkgs/development/python-modules/openai-triton/default.nix
index 2bdb8d918af3..e4679a7bbdee 100644
--- a/nixpkgs/pkgs/development/python-modules/openai-triton/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/openai-triton/default.nix
@@ -189,7 +189,7 @@ buildPythonPackage rec {
   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;
+    platforms = platforms.linux;
     license = licenses.mit;
     maintainers = with maintainers; [ SomeoneSerge Madouura ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/openai-whisper/default.nix b/nixpkgs/pkgs/development/python-modules/openai-whisper/default.nix
index 0038098e586a..88f0ffab5dc7 100644
--- a/nixpkgs/pkgs/development/python-modules/openai-whisper/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/openai-whisper/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , fetchFromGitHub
 , buildPythonPackage
 , substituteAll
@@ -44,17 +45,17 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     setuptools
-    scipy
   ];
 
   propagatedBuildInputs = [
     more-itertools
     numba
     numpy
-    openai-triton
     tiktoken
     torch
     tqdm
+  ] ++ lib.optionals (lib.meta.availableOn stdenv.hostPlatform openai-triton) [
+    openai-triton
   ];
 
   preCheck = ''
@@ -63,6 +64,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
+    scipy
   ];
 
   disabledTests = [
diff --git a/nixpkgs/pkgs/development/python-modules/openai/default.nix b/nixpkgs/pkgs/development/python-modules/openai/default.nix
index a2720bfb8567..d29d6deec129 100644
--- a/nixpkgs/pkgs/development/python-modules/openai/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/openai/default.nix
@@ -25,7 +25,7 @@
 
 buildPythonPackage rec {
   pname = "openai";
-  version = "1.23.6";
+  version = "1.28.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7.1";
@@ -34,7 +34,7 @@ buildPythonPackage rec {
     owner = "openai";
     repo = "openai-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-b7LkZc8XGNOG0HHStlFikatKWQ5gob98XLsei/vOq4c=";
+    hash = "sha256-zWvrLCAN/OsSiNLQ2jvEh9anoSpMXgEYhAFwh9btWEM=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/opencensus-ext-azure/default.nix b/nixpkgs/pkgs/development/python-modules/opencensus-ext-azure/default.nix
index 4effafe3311a..121b162b2fe1 100644
--- a/nixpkgs/pkgs/development/python-modules/opencensus-ext-azure/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/opencensus-ext-azure/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pythonOlder
 , azure-core
 , azure-identity
 , opencensus
@@ -14,8 +13,6 @@ buildPythonPackage rec {
   version = "1.1.13";
   format = "setuptools";
 
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-rsMEchdwBTebpWpwKgl9YYxfV1WOG7ZnbsdflIEwaSo=";
diff --git a/nixpkgs/pkgs/development/python-modules/openhomedevice/default.nix b/nixpkgs/pkgs/development/python-modules/openhomedevice/default.nix
index 2e7ddf92a1d6..3c53f5f58322 100644
--- a/nixpkgs/pkgs/development/python-modules/openhomedevice/default.nix
+++ b/nixpkgs/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";
+  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=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/openrazer/daemon.nix b/nixpkgs/pkgs/development/python-modules/openrazer/daemon.nix
index 317d36b30576..aa6055c19c70 100644
--- a/nixpkgs/pkgs/development/python-modules/openrazer/daemon.nix
+++ b/nixpkgs/pkgs/development/python-modules/openrazer/daemon.nix
@@ -10,7 +10,7 @@
 , pyudev
 , setproctitle
 , setuptools
-, wrapGAppsHook
+, wrapGAppsHook3
 , notify2
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/openusd/default.nix b/nixpkgs/pkgs/development/python-modules/openusd/default.nix
index bc67c43a6b0b..4110e887dc4f 100644
--- a/nixpkgs/pkgs/development/python-modules/openusd/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/openusd/default.nix
@@ -18,6 +18,8 @@
   lib,
   libGL,
   libX11,
+  libXt,
+  materialx,
   ninja,
   numpy,
   opencolorio,
@@ -86,6 +88,7 @@ buildPythonPackage rec {
     (lib.cmakeBool "PXR_BUILD_PYTHON_DOCUMENTATION" withDocs)
     (lib.cmakeBool "PXR_BUILD_USDVIEW" withUsdView)
     (lib.cmakeBool "PXR_BUILD_USD_TOOLS" withTools)
+    (lib.cmakeBool "PXR_ENABLE_MATERIALX_SUPPORT" true)
     (lib.cmakeBool "PXR_ENABLE_OSL_SUPPORT" (!stdenv.isDarwin && withOsl))
   ];
 
@@ -111,6 +114,7 @@ buildPythonPackage rec {
       embree
       flex
       imath
+      materialx
       opencolorio
       openimageio
       opensubdiv
@@ -120,6 +124,7 @@ buildPythonPackage rec {
     ++ lib.optionals stdenv.isLinux [
       libGL
       libX11
+      libXt
     ]
     ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk_11_0.frameworks; [ Cocoa ])
     ++ lib.optionals withOsl [ osl ]
diff --git a/nixpkgs/pkgs/development/python-modules/openwrt-ubus-rpc/default.nix b/nixpkgs/pkgs/development/python-modules/openwrt-ubus-rpc/default.nix
index c5a5ac35b3cd..efafabe29d61 100644
--- a/nixpkgs/pkgs/development/python-modules/openwrt-ubus-rpc/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/opower/default.nix b/nixpkgs/pkgs/development/python-modules/opower/default.nix
index 2c00224e9229..d889c97c3278 100644
--- a/nixpkgs/pkgs/development/python-modules/opower/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/opower/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "opower";
-  version = "0.4.4";
+  version = "0.4.5";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "tronikos";
     repo = "opower";
     rev = "refs/tags/v${version}";
-    hash = "sha256-GG7r0/rZcB4cuog3m0qCOrmcYiscPQggQhRC9sQGG40=";
+    hash = "sha256-PBxxLbVOvJSFmDXgKeI5sICUR7NJGUEUUahK9eBsvbE=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/optimum/default.nix b/nixpkgs/pkgs/development/python-modules/optimum/default.nix
index 5c096eab5952..ecc214e1051d 100644
--- a/nixpkgs/pkgs/development/python-modules/optimum/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/optimum/default.nix
@@ -22,7 +22,7 @@
 
 buildPythonPackage rec {
   pname = "optimum";
-  version = "1.19.1";
+  version = "1.19.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -31,7 +31,7 @@ buildPythonPackage rec {
     owner = "huggingface";
     repo = "optimum";
     rev = "refs/tags/v${version}";
-    hash = "sha256-EHu3p3M7xBjMnf3tKsneYOZtd9YWsC0qok1fnk4TMAg=";
+    hash = "sha256-GYgLh6vlOoVvTvhNPfBT4YEqRhB7gZMqlOuab6maVGU=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/optree/default.nix b/nixpkgs/pkgs/development/python-modules/optree/default.nix
new file mode 100644
index 000000000000..d592c6d51f39
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/optree/default.nix
@@ -0,0 +1,60 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, lib
+, cmake
+, setuptools
+, typing-extensions
+, pybind11
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "optree";
+  version = "0.11.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "metaopt";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-VnnnEoXkYJO+S7baH+JZvsW18Tk3TiY9+Cd230OlZWo=";
+  };
+
+  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 = with lib; {
+    homepage = "https://github.com/metaopt/optree";
+    changelog = "https://github.com/metaopt/optree/releases/tag/v${version}";
+    description = "Optimized PyTree Utilities";
+    maintainers = with maintainers; [ pandapip1 ];
+    license = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/opuslib/default.nix b/nixpkgs/pkgs/development/python-modules/opuslib/default.nix
index c30d70851186..2f5bbf8b2581 100644
--- a/nixpkgs/pkgs/development/python-modules/opuslib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/opuslib/default.nix
@@ -1,17 +1,20 @@
-{ buildPythonPackage,
+{
+  buildPythonPackage,
   fetchFromGitHub,
   fetchpatch,
   isPy27,
   libopus,
-  nose,
-  lib, stdenv,
+  pynose,
+  lib,
+  stdenv,
   substituteAll,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "opuslib";
   version = "3.0.3";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = isPy27;
 
@@ -41,7 +44,11 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeCheckInputs = [ nose ];
+  build-system = [
+    setuptools
+  ];
+
+  nativeCheckInputs = [ pynose ];
 
   meta = with lib; {
     description = "Python bindings to the libopus, IETF low-delay audio codec";
diff --git a/nixpkgs/pkgs/development/python-modules/oracledb/default.nix b/nixpkgs/pkgs/development/python-modules/oracledb/default.nix
index 4434d5a386d3..356883e2c56e 100644
--- a/nixpkgs/pkgs/development/python-modules/oracledb/default.nix
+++ b/nixpkgs/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.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-MFS8wpXXN4g0unpazrhlmF6VSRX5sHqEPqhMOCTGoLI=";
+    hash = "sha256-9Sx984sTJDtc5YNFe4B0ijRoK5u4Nw2iSXhotxl2eYs=";
   };
 
   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/nixpkgs/pkgs/development/python-modules/orange-canvas-core/default.nix b/nixpkgs/pkgs/development/python-modules/orange-canvas-core/default.nix
index 592aa2afa509..37683a999488 100644
--- a/nixpkgs/pkgs/development/python-modules/orange-canvas-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/orange-canvas-core/default.nix
@@ -18,12 +18,12 @@
 
 buildPythonPackage rec {
   pname = "orange-canvas-core";
-  version = "0.2.0";
+  version = "0.1.35";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-KMEFZkAZkDhuDPpAts+u825p5pFJZbyrsMW/S1AArp4=";
+    hash = "sha256-xLCwjeNDx9RqxlNkIWMo0Pcrg7akGuu4Rv9oRDgOK18=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/orange-widget-base/default.nix b/nixpkgs/pkgs/development/python-modules/orange-widget-base/default.nix
index 95dadbb04d79..3a1d5cd6e893 100644
--- a/nixpkgs/pkgs/development/python-modules/orange-widget-base/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/orange-widget-base/default.nix
@@ -16,12 +16,12 @@
 
 buildPythonPackage rec {
   pname = "orange-widget-base";
-  version = "4.23.0";
+  version = "4.22.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-mz+BcZEdg1p9V0ewYRrw3jKBWLMbL9RR6o4hUEUx9DA=";
+    hash = "sha256-nV2aBPZzn7K+QECtCVoLLh5smG31zE2G9jFTKlxh9qM=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/orange3/default.nix b/nixpkgs/pkgs/development/python-modules/orange3/default.nix
index 1c4531254ae8..a5f9d5f85fd4 100644
--- a/nixpkgs/pkgs/development/python-modules/orange3/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/orange3/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , baycomp
 , bottleneck
 , buildPythonPackage
@@ -24,12 +25,15 @@
 , orange-canvas-core
 , orange-widget-base
 , pandas
+, pytestCheckHook
+, pytest-qt
 , pyqtgraph
 , pyqtwebengine
 , python
 , python-louvain
 , pythonOlder
 , pyyaml
+, pip
 , qt5
 , qtconsole
 , recommonmark
@@ -112,6 +116,7 @@ let
       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)
@@ -146,9 +151,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 +165,32 @@ 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/nixpkgs/pkgs/development/python-modules/orjson/default.nix b/nixpkgs/pkgs/development/python-modules/orjson/default.nix
index ede3b10fc718..bd1d06e5c266 100644
--- a/nixpkgs/pkgs/development/python-modules/orjson/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/orjson/default.nix
@@ -30,22 +30,22 @@
 
 buildPythonPackage rec {
   pname = "orjson";
-  version = "3.9.15";
+  version = "3.10.1";
   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-vEJriLd7f+zlYcMIyhDTkq2kmNc5MaNLHo0qMLS5hro=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-/Aa3saUP4QjSBIS9T8Vd0yggiJn2SIk7dYMA5icb1yA=";
+    hash = "sha256-yQkpjedHwgsZiiZEzYV66aa9RepCFW0PBqtD29tfoMI=";
   };
 
   maturinBuildFlags = [ "--interpreter ${python.executable}" ];
diff --git a/nixpkgs/pkgs/development/python-modules/osc-sdk-python/default.nix b/nixpkgs/pkgs/development/python-modules/osc-sdk-python/default.nix
index 74d617efe500..2475ef8bc784 100644
--- a/nixpkgs/pkgs/development/python-modules/osc-sdk-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/osc-sdk-python/default.nix
@@ -1,23 +1,22 @@
-{
-  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;
   };
 
diff --git a/nixpkgs/pkgs/development/python-modules/outcome/default.nix b/nixpkgs/pkgs/development/python-modules/outcome/default.nix
index 0fa4ba74deab..7aa65b2d1d22 100644
--- a/nixpkgs/pkgs/development/python-modules/outcome/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/outcome/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pythonOlder
 , setuptools
 , attrs
 , pytest
@@ -11,8 +10,6 @@ buildPythonPackage rec {
   pname = "outcome";
   version = "1.3.0.post0";
 
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-nc8C5l8pcbgAR7N3Ro5yomjhXArzzxI45v8U9/kRQ7g=";
diff --git a/nixpkgs/pkgs/development/python-modules/owslib/default.nix b/nixpkgs/pkgs/development/python-modules/owslib/default.nix
index 8bf7b8bcbe85..efa0a744f4b5 100644
--- a/nixpkgs/pkgs/development/python-modules/owslib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/owslib/default.nix
@@ -2,6 +2,7 @@
 , stdenv
 , buildPythonPackage
 , fetchFromGitHub
+
 , lxml
 , pyproj
 , pytestCheckHook
@@ -10,12 +11,11 @@
 , pytz
 , pyyaml
 , requests
-, python
 }:
 
 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 = ''
diff --git a/nixpkgs/pkgs/development/python-modules/paddle2onnx/default.nix b/nixpkgs/pkgs/development/python-modules/paddle2onnx/default.nix
index e358c2ec4986..0ba25c3046c4 100644
--- a/nixpkgs/pkgs/development/python-modules/paddle2onnx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/paddle2onnx/default.nix
@@ -9,7 +9,7 @@
 }:
 let
   pname = "paddle2onnx";
-  version = "1.1.0";
+  version = "1.2.0";
   format = "wheel";
   pyShortVersion = "cp${builtins.replaceStrings ["."] [""] python.pythonVersion}";
   src = fetchPypi {
@@ -18,7 +18,7 @@ let
     python = pyShortVersion;
     abi = pyShortVersion;
     platform = "manylinux_2_12_x86_64.manylinux2010_x86_64";
-    hash = "sha256-HI/lIj9ezdCry5fYDi5Pia6hvOjN6/Slm9BMfLeq8AU=";
+    hash = "sha256-18eStagm7V4D87fiPoigAyXxVGoo//8UENutSqNfUBI=";
   };
 in
 buildPythonPackage {
diff --git a/nixpkgs/pkgs/development/python-modules/pandas-datareader/default.nix b/nixpkgs/pkgs/development/python-modules/pandas-datareader/default.nix
index e5222cf7ef83..de9f285a4a5f 100644
--- a/nixpkgs/pkgs/development/python-modules/pandas-datareader/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pandas-datareader/default.nix
@@ -1,7 +1,9 @@
 { lib
 , buildPythonPackage
+, pythonOlder
+, pythonAtLeast
 , fetchPypi
-, isPy27
+, setuptools
 , pandas
 , lxml
 , requests
@@ -10,20 +12,29 @@
 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";
diff --git a/nixpkgs/pkgs/development/python-modules/panel/default.nix b/nixpkgs/pkgs/development/python-modules/panel/default.nix
index 4a4b93035d73..d8e0e071df4d 100644
--- a/nixpkgs/pkgs/development/python-modules/panel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/panel/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "panel";
-  version = "1.3.8";
+  version = "1.4.1";
 
   format = "wheel";
 
@@ -25,7 +25,9 @@ buildPythonPackage rec {
   # tries to fetch even more artifacts
   src = fetchPypi {
     inherit pname version format;
-    hash = "sha256-Sb85MZhqDd8/e0vaPGXGoxHVJ3UkrNtOC/9py6a/V3U=";
+    hash = "sha256-x7ywbO2uY1r06bDXV/+X/7cs9f6jFawyDHeo8pLWZVE=";
+    dist = "py3";
+    python = "py3";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/parametrize-from-file/default.nix b/nixpkgs/pkgs/development/python-modules/parametrize-from-file/default.nix
index b6ee36c3dce2..2bfd6411631a 100644
--- a/nixpkgs/pkgs/development/python-modules/parametrize-from-file/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/parametrize-from-file/default.nix
@@ -14,13 +14,13 @@
 
 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
diff --git a/nixpkgs/pkgs/development/python-modules/parsedmarc/default.nix b/nixpkgs/pkgs/development/python-modules/parsedmarc/default.nix
index b9d4df1d58ee..3a2dbe638dbb 100644
--- a/nixpkgs/pkgs/development/python-modules/parsedmarc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/parsedmarc/default.nix
@@ -41,14 +41,14 @@ let
 in
 buildPythonPackage rec {
   pname = "parsedmarc";
-  version = "8.8.0";
+  version = "8.11.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-tK/cxOw50awcDAGRDTQ+Nxb9aJl2+zLZHuJq88xNmXM=";
+    hash = "sha256-OBxiaXB8NKNMviRI19rYYJxpnfnaEL3zSPmYB4urIug=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/parsel/default.nix b/nixpkgs/pkgs/development/python-modules/parsel/default.nix
index ee817f70665a..639f973e7754 100644
--- a/nixpkgs/pkgs/development/python-modules/parsel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/parsel/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "parsel";
-  version = "1.9.0";
+  version = "1.9.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-paa8sMX8dBVAujB1Y2/1y5aIUqeMwWroIlDl1Ib6fUg=";
+    hash = "sha256-FOANwHcxyQMNtiDBlfyuiEtbSEjp+cUjxhGfcIzPqaw=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/parso/default.nix b/nixpkgs/pkgs/development/python-modules/parso/default.nix
index 7d76ef5d80aa..03b052a46dd7 100644
--- a/nixpkgs/pkgs/development/python-modules/parso/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/parso/default.nix
@@ -9,13 +9,13 @@
 
 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 ];
diff --git a/nixpkgs/pkgs/development/python-modules/paste/default.nix b/nixpkgs/pkgs/development/python-modules/paste/default.nix
index a13706dacb54..8b6b3e9765ba 100644
--- a/nixpkgs/pkgs/development/python-modules/paste/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/paste/default.nix
@@ -10,7 +10,7 @@
 
 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 = ''
diff --git a/nixpkgs/pkgs/development/python-modules/path/default.nix b/nixpkgs/pkgs/development/python-modules/path/default.nix
index e88a7efd60f5..3629d8b11db5 100644
--- a/nixpkgs/pkgs/development/python-modules/path/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/path/default.nix
@@ -10,14 +10,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/pathlib/default.nix b/nixpkgs/pkgs/development/python-modules/pathlib/default.nix
deleted file mode 100644
index 1e34b92a4314..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/development/python-modules/pathlib2/default.nix b/nixpkgs/pkgs/development/python-modules/pathlib2/default.nix
index 15238a858990..ab1948005fe8 100644
--- a/nixpkgs/pkgs/development/python-modules/pathlib2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pathlib2/default.nix
@@ -5,7 +5,6 @@
 , pythonOlder
 , scandir ? null
 , glibcLocales
-, mock
 , typing
 }:
 
@@ -21,8 +20,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ six ]
     ++ lib.optionals (pythonOlder "3.5") [ scandir typing ];
-  nativeCheckInputs = [ glibcLocales ]
-    ++ lib.optional (pythonOlder "3.3") mock;
+  nativeCheckInputs = [ glibcLocales ];
 
   preCheck = ''
     export LC_ALL="en_US.UTF-8"
diff --git a/nixpkgs/pkgs/development/python-modules/paypalhttp/default.nix b/nixpkgs/pkgs/development/python-modules/paypalhttp/default.nix
index 25c6aa1ba878..ab0228ef06ab 100644
--- a/nixpkgs/pkgs/development/python-modules/paypalhttp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/paypalhttp/default.nix
@@ -24,6 +24,11 @@ buildPythonPackage rec {
     hash = "sha256-3ihcpYtpcejPkiyf4g4jveyNU6flQB2sv9EZ5Pd7tUc=";
   };
 
+  postPatch = ''
+    substituteInPlace tests/http_response_test.py \
+      --replace-fail assertEquals assertEqual
+  '';
+
   propagatedBuildInputs = [
     requests
     six
diff --git a/nixpkgs/pkgs/development/python-modules/pcffont/default.nix b/nixpkgs/pkgs/development/python-modules/pcffont/default.nix
new file mode 100644
index 000000000000..7f31584943ca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pcffont/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, hatchling
+, bdffont
+, pytestCheckHook
+, nix-update-script
+}:
+
+buildPythonPackage rec {
+  pname = "pcffont";
+  version = "0.0.13";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "TakWolf";
+    repo = "pcffont";
+    rev = "refs/tags/${version}";
+    hash = "sha256-DbPcE2Bx+V90s7P3Gq+Uz3iQNidwbNlp7zln8ykL7Sg=";
+  };
+
+  build-system = [
+    hatchling
+  ];
+
+  dependencies = [
+    bdffont
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "pcffont" ];
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = {
+    description = "Library for manipulating Portable Compiled Format (PCF) fonts";
+    homepage = "https://github.com/TakWolf/pcffont";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pdm-backend/default.nix b/nixpkgs/pkgs/development/python-modules/pdm-backend/default.nix
index 0e1cc04f920b..d2d77f67fc25 100644
--- a/nixpkgs/pkgs/development/python-modules/pdm-backend/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pdm-backend/default.nix
@@ -9,25 +9,26 @@
 # tests
 , editables
 , git
+, mercurial
 , pytestCheckHook
 , setuptools
 }:
 
 buildPythonPackage rec {
   pname = "pdm-backend";
-  version = "2.1.8";
+  version = "2.3.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "pdm-project";
     repo = "pdm-backend";
     rev = "refs/tags/${version}";
-    hash = "sha256-d8i+FvxNFPM18W7NmOwh9bqZnMUenF7eCPdcCw4BT7s=";
+    hash = "sha256-V+NESf7NavR6L6ko4Oh4KhAR2iIN5GiHZPELwvkpr4c=";
   };
 
   env.PDM_BUILD_SCM_VERSION = version;
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [
+  dependencies = lib.optionals (pythonOlder "3.10") [
     importlib-metadata
   ];
 
@@ -38,12 +39,17 @@ buildPythonPackage rec {
   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;
diff --git a/nixpkgs/pkgs/development/python-modules/peaqevcore/default.nix b/nixpkgs/pkgs/development/python-modules/peaqevcore/default.nix
index cbc81c1a0340..ff4baf1aa2be 100644
--- a/nixpkgs/pkgs/development/python-modules/peaqevcore/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/peaqevcore/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "peaqevcore";
-  version = "19.9.2";
+  version = "19.10.8";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-X5JKfIE6rISXb3F2liuyLrVHm5xw3DoFeMhqhEsdEIY=";
+    hash = "sha256-H9AJErjJC/zo5Fy1sZFLw6GCMm4YirMzwWbAhzXM7mg=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/peco/default.nix b/nixpkgs/pkgs/development/python-modules/peco/default.nix
index 961b0c623d92..9b2001789cd2 100644
--- a/nixpkgs/pkgs/development/python-modules/peco/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/peco/default.nix
@@ -1,29 +1,28 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchPypi
-, pydantic
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchPypi,
+  pydantic,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "peco";
-  version = "0.0.29";
-  format = "pyproject";
+  version = "0.0.30";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zL0tBTwm+l5eyxlWr2xoE+nLpMfUKri1/yD+WgTUqHQ=";
+    hash = "sha256-a3MPqtbDftbLGtpJ66CFVC5wJFa9L3dqOKPfBZCaHpM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     pydantic
   ];
@@ -31,9 +30,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "peco"
-  ];
+  pythonImportsCheck = [ "peco" ];
 
   meta = with lib; {
     description = "Library for interacting with the PECO outage map";
diff --git a/nixpkgs/pkgs/development/python-modules/peewee/default.nix b/nixpkgs/pkgs/development/python-modules/peewee/default.nix
index d839ad705ea7..93b27731359c 100644
--- a/nixpkgs/pkgs/development/python-modules/peewee/default.nix
+++ b/nixpkgs/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.5";
+  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-2SrqWPyeDBKOweLu7bEcDIAqCCtnKv0VBdzfpaA22ow=";
   };
 
+  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; [ ];
+    mainProgram = "pwiz.py";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pefile/default.nix b/nixpkgs/pkgs/development/python-modules/pefile/default.nix
index 55bd8c0cc07d..97b3419d7b55 100644
--- a/nixpkgs/pkgs/development/python-modules/pefile/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pefile/default.nix
@@ -1,7 +1,7 @@
 { lib
 , buildPythonPackage
 , future
-, fetchFromGitHub
+, fetchPypi
 , setuptools-scm
 , pythonOlder
 }:
@@ -13,11 +13,10 @@ buildPythonPackage rec {
 
   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-guYRQASz1pEcd8OVPjg4ZUsEURuLZuhYPbcMZZmAF9w=";
   };
 
   nativeBuildInputs = [
@@ -28,7 +27,7 @@ buildPythonPackage rec {
     future
   ];
 
-  # Test data encrypted
+  # Test data contains properitary executables and malware, and is therefore encrypted
   doCheck = false;
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/pettingzoo/default.nix b/nixpkgs/pkgs/development/python-modules/pettingzoo/default.nix
new file mode 100644
index 000000000000..389abd5f8907
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pettingzoo/default.nix
@@ -0,0 +1,135 @@
+{ 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.isDarwin [
+    # Crashes on darwin: `Fatal Python error: Aborted`
+    "test_multi_episode_parallel_env_wrapper"
+  ];
+
+  meta = with lib; {
+    description = "An 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/nixpkgs/pkgs/development/python-modules/pexpect/default.nix b/nixpkgs/pkgs/development/python-modules/pexpect/default.nix
index e8c5efc3cba3..f98e531c0d54 100644
--- a/nixpkgs/pkgs/development/python-modules/pexpect/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pexpect/default.nix
@@ -3,6 +3,9 @@
 , fetchPypi
 , setuptools
 , ptyprocess
+
+# Reverse dependency
+, sage
 }:
 
 buildPythonPackage (rec {
@@ -24,6 +27,8 @@ buildPythonPackage (rec {
 
   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/nixpkgs/pkgs/development/python-modules/pg8000/default.nix b/nixpkgs/pkgs/development/python-modules/pg8000/default.nix
index 3bd937c6d492..05e520137581 100644
--- a/nixpkgs/pkgs/development/python-modules/pg8000/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pg8000/default.nix
@@ -6,28 +6,28 @@
 , python-dateutil
 , pythonOlder
 , scramp
-, setuptools
+, hatchling
 , versioningit
 }:
 
 buildPythonPackage rec {
   pname = "pg8000";
-  version = "1.30.5";
-  format = "pyproject";
+  version = "1.31.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-By960AzXI2lcsun8AsHfuEx4FFXpe43m9MQoHuoIB4w=";
+    hash = "sha256-sREw1MYV3TBi6o/tgUMGSnl4t/5tRPFLciYdQ8jicIc=";
   };
 
-  nativeBuildInputs = [
-    setuptools
+  build-system = [
+    hatchling
     versioningit
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     passlib
     python-dateutil
     scramp
diff --git a/nixpkgs/pkgs/development/python-modules/pgspecial/default.nix b/nixpkgs/pkgs/development/python-modules/pgspecial/default.nix
index 5c4e1bf84a2a..6ce163dd74c4 100644
--- a/nixpkgs/pkgs/development/python-modules/pgspecial/default.nix
+++ b/nixpkgs/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,13 +37,14 @@ 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; [ ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/phe/default.nix b/nixpkgs/pkgs/development/python-modules/phe/default.nix
index 0dc423883c4b..0cf03e077cdc 100644
--- a/nixpkgs/pkgs/development/python-modules/phe/default.nix
+++ b/nixpkgs/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";
     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/nixpkgs/pkgs/development/python-modules/phik/default.nix b/nixpkgs/pkgs/development/python-modules/phik/default.nix
index b2dae6f29b1e..bc7dd2a58265 100644
--- a/nixpkgs/pkgs/development/python-modules/phik/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/phik/default.nix
@@ -3,20 +3,17 @@
 , cmake
 , fetchFromGitHub
 , joblib
-, jupyter
-, jupyter-client
 , matplotlib
-, nbconvert
 , ninja
-, numba
 , numpy
 , pandas
+, pathspec
+, pyproject-metadata
 , pybind11
 , pytestCheckHook
 , pythonOlder
-, scikit-build
+, scikit-build-core
 , scipy
-, setuptools
 }:
 
 buildPythonPackage rec {
@@ -24,7 +21,7 @@ buildPythonPackage rec {
   version = "0.12.4";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "KaveIO";
@@ -33,58 +30,39 @@ 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
   ];
 
-  # Uses setuptools to drive build process
+  # Uses scikit-build-core to drive build process
   dontUseCmakeConfigure = true;
 
   pythonImportsCheck = [
     "phik"
   ];
 
-  postInstall = ''
-    rm -r $out/bin
-  '';
-
   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/nixpkgs/pkgs/development/python-modules/phonenumbers/default.nix b/nixpkgs/pkgs/development/python-modules/phonenumbers/default.nix
index b2bb4cbfd01d..85153b6fa905 100644
--- a/nixpkgs/pkgs/development/python-modules/phonenumbers/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/phonenumbers/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "phonenumbers";
-  version = "8.13.31";
+  version = "8.13.34";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-J0IHHJ0K8JJ0yKWyom2aNqy/LqXLYpQ8ws6ttcDIdkE=";
+    hash = "sha256-fCZ2vge30PdEEeJ14GYDgKDsPuDTWfBw1xlCS9LF9i4=";
   };
 
   nativeCheckInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/phonopy/default.nix b/nixpkgs/pkgs/development/python-modules/phonopy/default.nix
index 0cdd9d8bff13..f0c443136adf 100644
--- a/nixpkgs/pkgs/development/python-modules/phonopy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/phonopy/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "phonopy";
-  version = "2.22.1";
+  version = "2.23.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-nux6/1z1xBr+4+fWrR/oOc+zVOI9j60p/SHHAPZ+hWI=";
+    hash = "sha256-xJohROJNAPdEITtM/VncAYL8ASkfgThKy8XXnqiS3hU=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/phunspell/default.nix b/nixpkgs/pkgs/development/python-modules/phunspell/default.nix
new file mode 100644
index 000000000000..c4d8cf4ddc16
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/pickleshare/default.nix b/nixpkgs/pkgs/development/python-modules/pickleshare/default.nix
index d6be608aaa2b..52ddc9367251 100644
--- a/nixpkgs/pkgs/development/python-modules/pickleshare/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pickleshare/default.nix
@@ -2,8 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , path
-, pathlib2
-, pythonOlder
 }:
 
 buildPythonPackage rec {
@@ -16,8 +14,7 @@ buildPythonPackage rec {
     sha256 = "87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca";
   };
 
-  propagatedBuildInputs = [ path ]
-    ++ lib.optional (pythonOlder "3.4") pathlib2;
+  propagatedBuildInputs = [ path ];
 
   # No proper test suite
   doCheck = false;
diff --git a/nixpkgs/pkgs/development/python-modules/piep/default.nix b/nixpkgs/pkgs/development/python-modules/piep/default.nix
index 0825380a925b..ec3a9f5ec53c 100644
--- a/nixpkgs/pkgs/development/python-modules/piep/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/piep/default.nix
@@ -10,7 +10,7 @@ buildPythonPackage rec {
   version = "0.10.0";
   format = "setuptools";
   pname = "piep";
-  disabled = isPy3k;
+  disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
diff --git a/nixpkgs/pkgs/development/python-modules/pikepdf/default.nix b/nixpkgs/pkgs/development/python-modules/pikepdf/default.nix
index bfcd4c0589c2..ba0ce17b0c3a 100644
--- a/nixpkgs/pkgs/development/python-modules/pikepdf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pikepdf/default.nix
@@ -24,7 +24,7 @@
 
 buildPythonPackage rec {
   pname = "pikepdf";
-  version = "8.13.0";
+  version = "8.14.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -39,7 +39,7 @@ buildPythonPackage rec {
     postFetch = ''
       rm "$out/.git_archival.txt"
     '';
-    hash = "sha256-6HCFPHIQ6+SHt4Zu6CZ0R2Ah+jFnztGOCMhQfvR6FxY=";
+    hash = "sha256-3ORvbhO3eLu/NIE0Lwdf93QtUHUmyMf7LmdMBJpkYIg=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/pikepdf/paths.patch b/nixpkgs/pkgs/development/python-modules/pikepdf/paths.patch
index 1bd030c186c2..83cebed5cc23 100644
--- a/nixpkgs/pkgs/development/python-modules/pikepdf/paths.patch
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/pillow/default.nix b/nixpkgs/pkgs/development/python-modules/pillow/default.nix
index f101d6b361ec..f320000eecdc 100644
--- a/nixpkgs/pkgs/development/python-modules/pillow/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pillow/default.nix
@@ -7,12 +7,12 @@
 , 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
+, imageio, matplotlib, pilkit, pydicom, reportlab, sage
 }@args:
 
 import ./generic.nix (rec {
   pname = "pillow";
-  version = "10.2.0";
+  version = "10.3.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -20,11 +20,11 @@ import ./generic.nix (rec {
   src = fetchPypi {
     pname = "pillow";
     inherit version;
-    hash = "sha256-6H8LLHgVfhLXaGsn1jwHD9ZdmU6N2ubzKODc9KDNAH4=";
+    hash = "sha256-nSRV+/RMkUhAx5PomqgtDhdjoUJToAB0NxmuWUaBSy0=";
   };
 
   passthru.tests = {
-    inherit imageio matplotlib pilkit pydicom reportlab;
+    inherit imageio matplotlib pilkit pydicom reportlab sage;
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/pinecone-client/default.nix b/nixpkgs/pkgs/development/python-modules/pinecone-client/default.nix
index ae21d2042c57..84460718dfdb 100644
--- a/nixpkgs/pkgs/development/python-modules/pinecone-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pinecone-client/default.nix
@@ -1,24 +1,25 @@
-{ 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,
+  pythonRelaxDepsHook,
+  pyyaml,
+  requests,
+  setuptools,
+  tqdm,
+  typing-extensions,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "pinecone-client";
-  version = "4.0.0";
+  version = "4.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,16 +27,12 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "pinecone_client";
     inherit version;
-    hash = "sha256-1E2yEuZKo0PRTvybCOnkXZi6e2gfYymLhwM1QuoBfyM=";
+    hash = "sha256-QgYqYo56lB0Lwku4r7Am861NJkzwbWpiej3lgyFK494=";
   };
 
-  pythonRelaxDeps = [
-    "urllib3"
-  ];
+  pythonRelaxDeps = [ "urllib3" ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   build-system = [
     setuptools
@@ -57,9 +54,7 @@ buildPythonPackage rec {
   # Tests require network access
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pinecone"
-  ];
+  pythonImportsCheck = [ "pinecone" ];
 
   meta = with lib; {
     description = "The Pinecone python client";
diff --git a/nixpkgs/pkgs/development/python-modules/pipdeptree/default.nix b/nixpkgs/pkgs/development/python-modules/pipdeptree/default.nix
index 8dad1316c1a7..3aa70970fc65 100644
--- a/nixpkgs/pkgs/development/python-modules/pipdeptree/default.nix
+++ b/nixpkgs/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.20.0";
   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-Mng5YUM2+T3OFrr4uGVvq5mP0aq10r21pp46tw6lLno=";
   };
 
   build-system = [
@@ -32,7 +33,10 @@ buildPythonPackage rec {
     hatch-vcs
   ];
 
-  dependencies = [ pip ];
+  dependencies = [
+    pip
+    packaging
+  ];
 
   passthru.optional-dependencies = {
     graphviz = [ graphviz ];
diff --git a/nixpkgs/pkgs/development/python-modules/pipenv-poetry-migrate/default.nix b/nixpkgs/pkgs/development/python-modules/pipenv-poetry-migrate/default.nix
index 9f04970f9680..82707a5d98d1 100644
--- a/nixpkgs/pkgs/development/python-modules/pipenv-poetry-migrate/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pipenv-poetry-migrate/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "pipenv-poetry-migrate";
-  version = "0.5.5";
+  version = "0.5.6";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "yhino";
     repo = "pipenv-poetry-migrate";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6K8rTfASpK7OvBwUy40X6xzgpfWL7lIJvpfRiGfBK6U=";
+    hash = "sha256-+OkfuIwbDx6SN5lawDJZYBrjHn9rsT/FT+GQ2MOAtg0=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pipetools/default.nix b/nixpkgs/pkgs/development/python-modules/pipetools/default.nix
new file mode 100644
index 000000000000..9003f61b28e8
--- /dev/null
+++ b/nixpkgs/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 = "A library that enables function composition similar to using Unix pipes";
+    homepage = "https://0101.github.io/pipetools/";
+    license = lib.licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pixel-font-builder/default.nix b/nixpkgs/pkgs/development/python-modules/pixel-font-builder/default.nix
index bd67a88905f7..d8908fe265ef 100644
--- a/nixpkgs/pkgs/development/python-modules/pixel-font-builder/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pixel-font-builder/default.nix
@@ -10,23 +10,32 @@
 , brotli
 , fonttools
 , pypng
+, pcffont
+, pythonRelaxDepsHook
 }:
 
 buildPythonPackage rec {
   pname = "pixel-font-builder";
-  version = "0.0.15";
+  version = "0.0.24";
+  pyproject = true;
 
   disabled = pythonOlder "3.11";
 
   src = fetchPypi {
     pname = "pixel_font_builder";
     inherit version;
-    hash = "sha256-2QnbnJk3onwxmjZ6aUgXFGsx6GtqJDV9Bgs3p5Czvns=";
+    hash = "sha256-hBlTTIPx4TRgeXapVnSaKPUwseR3uYT0gcgKLGmmSZI=";
   };
 
-  format = "pyproject";
+  pythonRelaxDeps = [
+    "fonttools"
+  ];
 
   nativeBuildInputs = [
+    pythonRelaxDepsHook
+  ];
+
+  build-system = [
     hatch-vcs
     hatchling
   ];
@@ -36,10 +45,11 @@ buildPythonPackage rec {
     pypng
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     bdffont
     brotli
     fonttools
+    pcffont
   ];
 
   passthru.updateScript = nix-update-script { };
diff --git a/nixpkgs/pkgs/development/python-modules/plaid-python/default.nix b/nixpkgs/pkgs/development/python-modules/plaid-python/default.nix
index f3a92c1954c8..88df10cfc7f5 100644
--- a/nixpkgs/pkgs/development/python-modules/plaid-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/plaid-python/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "plaid-python";
-  version = "21.0.0";
+  version = "21.1.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ksYTV10FGUjBIkJru4CiJIlPLT4S7fbpsNrjYczTFlI=";
+    hash = "sha256-KZGfr60RclPMis3y/XPY+VMQr0IxGXMwI7tPxNOlmhg=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/plantuml-markdown/default.nix b/nixpkgs/pkgs/development/python-modules/plantuml-markdown/default.nix
index 8013e90e71f8..0ec4ad920fdd 100644
--- a/nixpkgs/pkgs/development/python-modules/plantuml-markdown/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/plantuml-markdown/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "plantuml-markdown";
-  version = "3.9.5";
+  version = "3.9.7";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "mikitex70";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-bfbji517y0/PXMfLg2gGWlogg7IPhXvQ5vekLzc4/ow=";
+    hash = "sha256-/lsu7kiUyQ6LUFINX+/aCFSKm1pGyIfUzSuUehwCz7I=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/playwright/default.nix b/nixpkgs/pkgs/development/python-modules/playwright/default.nix
index ff22cdf0cb8d..c0032e5ebf83 100644
--- a/nixpkgs/pkgs/development/python-modules/playwright/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/playwright/default.nix
@@ -51,7 +51,7 @@ buildPythonPackage rec {
 
     substituteInPlace setup.py \
       --replace "setuptools-scm==8.0.4" "setuptools-scm" \
-      --replace "wheel==0.41.2" "wheel"
+      --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"]' \
diff --git a/nixpkgs/pkgs/development/python-modules/playwrightcapture/default.nix b/nixpkgs/pkgs/development/python-modules/playwrightcapture/default.nix
index 36c701b1a49f..6b56b7c67fc0 100644
--- a/nixpkgs/pkgs/development/python-modules/playwrightcapture/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/playwrightcapture/default.nix
@@ -1,11 +1,13 @@
 {
   lib,
+  aiohttp,
+  aiohttp-socks,
   beautifulsoup4,
   buildPythonPackage,
   dateparser,
   fetchFromGitHub,
-  playwright,
   playwright-stealth,
+  playwright,
   poetry-core,
   puremagic,
   pydub,
@@ -21,7 +23,7 @@
 
 buildPythonPackage rec {
   pname = "playwrightcapture";
-  version = "1.24.6";
+  version = "1.24.9";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -30,7 +32,7 @@ buildPythonPackage rec {
     owner = "Lookyloo";
     repo = "PlaywrightCapture";
     rev = "refs/tags/v${version}";
-    hash = "sha256-DFMnlFN9CooQ7HBiw6Ur6KMTMrEw6JxkT6IxlVU+PdY=";
+    hash = "sha256-XWl/vvPMSD7oCl2/qG4y1ERopQdi5O9erFFpTmK8U5k=";
   };
 
   pythonRelaxDeps = [
@@ -45,6 +47,8 @@ buildPythonPackage rec {
   nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
+    aiohttp
+    aiohttp-socks
     beautifulsoup4
     dateparser
     playwright
diff --git a/nixpkgs/pkgs/development/python-modules/plexapi/default.nix b/nixpkgs/pkgs/development/python-modules/plexapi/default.nix
index 1519e44dac0b..0e2717c3b2be 100644
--- a/nixpkgs/pkgs/development/python-modules/plexapi/default.nix
+++ b/nixpkgs/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.13";
   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-i898cHYOSrzSreWBmW7W9QBUoyIDKwmt4k2wgutN3bw=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/plotly/default.nix b/nixpkgs/pkgs/development/python-modules/plotly/default.nix
index 0bec07c3bad2..a0e26e354ed9 100644
--- a/nixpkgs/pkgs/development/python-modules/plotly/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/plotly/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "plotly";
-  version = "5.20.0";
+  version = "5.21.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-v5AcgF0iAyz6U0sv98WqawZZ4DfxnsHgzKf1hZGLXIk=";
+    hash = "sha256-aSQ/jBZdS+JsDfHG8LeyWOLf7v4DJ2NAStfn+318IHM=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/plotnine/default.nix b/nixpkgs/pkgs/development/python-modules/plotnine/default.nix
index fb86d44472d2..6368f8c66785 100644
--- a/nixpkgs/pkgs/development/python-modules/plotnine/default.nix
+++ b/nixpkgs/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 = ''
@@ -57,6 +57,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.
diff --git a/nixpkgs/pkgs/development/python-modules/plugwise/default.nix b/nixpkgs/pkgs/development/python-modules/plugwise/default.nix
index 358b81eb4c20..9f70d36118df 100644
--- a/nixpkgs/pkgs/development/python-modules/plugwise/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/plugwise/default.nix
@@ -22,7 +22,7 @@
 
 buildPythonPackage rec {
   pname = "plugwise";
-  version = "0.37.3";
+  version = "0.37.5";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -31,7 +31,7 @@ buildPythonPackage rec {
     owner = "plugwise";
     repo = "python-plugwise";
     rev = "refs/tags/v${version}";
-    hash = "sha256-aQz0p+DNi1XVoFwdFjc3RjpHqA2kGf4pU1QS6m271gU=";
+    hash = "sha256-37GnuF8Z2UC02TqP6f14qxct5QCWi+8k7KUDhd7EYRQ=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/portion/default.nix b/nixpkgs/pkgs/development/python-modules/portion/default.nix
new file mode 100644
index 000000000000..5cba2a579294
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/portion/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, setuptools
+, wheel
+, sortedcontainers
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "portion";
+  version = "2.4.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "AlexandreDecan";
+    repo = "portion";
+    rev = "refs/tags/${version}";
+    hash = "sha256-URoyuE0yivUqPjJZbvATkAnTxicY4F2eiJ16rIUdY3Y=";
+  };
+
+  build-system = [
+    setuptools
+    wheel
+  ];
+
+  dependencies = [
+    sortedcontainers
+  ];
+
+  pythonImportsCheck = [
+    "portion"
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    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 = licenses.lgpl3;
+    maintainers = with maintainers; [ GaetanLepage ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pplpy/default.nix b/nixpkgs/pkgs/development/python-modules/pplpy/default.nix
index 641008be07fc..4a4d97c554cf 100644
--- a/nixpkgs/pkgs/development/python-modules/pplpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pplpy/default.nix
@@ -9,6 +9,9 @@
 , cysignals
 , gmpy2
 , sphinx
+
+# Reverse dependency
+, sage
 }:
 
 buildPythonPackage rec {
@@ -54,6 +57,8 @@ buildPythonPackage rec {
     mv docs/build/html "$doc/share/doc/pplpy"
   '';
 
+  passthru.tests = { inherit sage; };
+
   meta = with lib; {
     description = "A Python wrapper for ppl";
     homepage = "https://gitlab.com/videlec/pplpy";
diff --git a/nixpkgs/pkgs/development/python-modules/pretty-errors/default.nix b/nixpkgs/pkgs/development/python-modules/pretty-errors/default.nix
new file mode 100644
index 000000000000..ce9b646a543c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pretty-errors/default.nix
@@ -0,0 +1,40 @@
+{ 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/nixpkgs/pkgs/development/python-modules/primecountpy/default.nix b/nixpkgs/pkgs/development/python-modules/primecountpy/default.nix
index 463a0cf50be6..60ae77e7dd94 100644
--- a/nixpkgs/pkgs/development/python-modules/primecountpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/primecountpy/default.nix
@@ -4,6 +4,9 @@
 , primecount
 , cython
 , cysignals
+
+# Reverse dependency
+, sage
 }:
 
 buildPythonPackage rec {
@@ -25,6 +28,8 @@ buildPythonPackage rec {
 
   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/nixpkgs/pkgs/development/python-modules/private-gpt/default.nix b/nixpkgs/pkgs/development/python-modules/private-gpt/default.nix
new file mode 100644
index 000000000000..226489d046cb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/private-gpt/default.nix
@@ -0,0 +1,119 @@
+{ lib
+, buildPythonPackage
+, python
+, fetchFromGitHub
+, poetry-core
+, fastapi
+, injector
+, llama-index-core
+, llama-index-readers-file
+, huggingface-hub
+, python-multipart
+, pyyaml
+, transformers
+, uvicorn
+, watchdog
+, gradio
+, fetchurl
+, fetchpatch
+}:
+
+buildPythonPackage rec {
+  pname = "private-gpt";
+  version = "0.5.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "zylon-ai";
+    repo = "private-gpt";
+    rev = "v${version}";
+    hash = "sha256-bjydzJhOJjmbflcJbuMyNsmby7HtNPFW3MY2Tw12cHw=";
+  };
+
+  patches = [
+    # Fix a vulnerability, to be removed in the next bump version
+    # See https://github.com/zylon-ai/private-gpt/pull/1890
+    (fetchpatch {
+      url = "https://github.com/zylon-ai/private-gpt/commit/86368c61760c9cee5d977131d23ad2a3e063cbe9.patch";
+      hash = "sha256-4ysRUuNaHW4bmNzg4fn++89b430LP6AzYDoX2HplVH0=";
+    })
+  ];
+
+  build-system = [
+    poetry-core
+  ];
+
+  dependencies = [
+    fastapi
+    injector
+    llama-index-core
+    llama-index-readers-file
+    python-multipart
+    pyyaml
+    transformers
+    uvicorn
+    watchdog
+  ] ++ lib.flatten (builtins.attrValues passthru.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=";
+  };
+
+  passthru.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" ];
+
+  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; [ drupol ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/prometrix/default.nix b/nixpkgs/pkgs/development/python-modules/prometrix/default.nix
index 58b3ac27361e..fefbfd5f8298 100644
--- a/nixpkgs/pkgs/development/python-modules/prometrix/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/prometrix/default.nix
@@ -1,36 +1,46 @@
 { lib
-, buildPythonPackage
-, fetchFromGitHub
 , boto3
 , botocore
+, buildPythonPackage
 , dateparser
+, fetchFromGitHub
 , matplotlib
 , numpy
 , pandas
 , poetry-core
 , prometheus-api-client
-, pydantic_1
+, pydantic
+, pythonRelaxDepsHook
 , 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
+  ];
+
+  nativeBuildInputs = [
+    pythonRelaxDepsHook
+  ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     boto3
     botocore
     dateparser
@@ -38,13 +48,13 @@ 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"
@@ -56,7 +66,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/nixpkgs/pkgs/development/python-modules/proxy-py/default.nix b/nixpkgs/pkgs/development/python-modules/proxy-py/default.nix
index 72630b722bc4..384dd6c1ec08 100644
--- a/nixpkgs/pkgs/development/python-modules/proxy-py/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/proxy-py/default.nix
@@ -24,7 +24,7 @@
 
 buildPythonPackage rec {
   pname = "proxy-py";
-  version = "2.4.4rc5";
+  version = "2.4.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -33,7 +33,7 @@ buildPythonPackage rec {
     owner = "abhinavsingh";
     repo = "proxy.py";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ngIskWzN6699C0WjSX/ZbHxV3Eb8ikQPNYZFzfzt7xU=";
+    hash = "sha256-QWwIbNt2MtRfQaX7uZJzYmS++2MH+gTjWO0aEKYSETI=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/psycopg2cffi/default.nix b/nixpkgs/pkgs/development/python-modules/psycopg2cffi/default.nix
index f791f953d3f0..608bae034ea5 100644
--- a/nixpkgs/pkgs/development/python-modules/psycopg2cffi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/psycopg2cffi/default.nix
@@ -5,35 +5,46 @@
 , 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.isDarwin;
 
-  nativeCheckInputs = [ postgresqlTestHook pytestCheckHook ];
+  nativeCheckInputs = [
+    postgresqlTestHook
+    pytestCheckHook
+  ];
 
   disabledTests = [
     # AssertionError: '{}' != []
diff --git a/nixpkgs/pkgs/development/python-modules/publicsuffixlist/default.nix b/nixpkgs/pkgs/development/python-modules/publicsuffixlist/default.nix
index a8cd6193d74b..a693890d4566 100644
--- a/nixpkgs/pkgs/development/python-modules/publicsuffixlist/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/publicsuffixlist/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "publicsuffixlist";
-  version = "0.10.0.20240420";
+  version = "0.10.0.20240515";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-s8xPkes/xFlejqfOlMZOPLmNK92e2TLK18UZmv3/a6I=";
+    hash = "sha256-0BlbqefYDjYRIWv5UgjTRInD12l1wGp+nnwJBE5vbXs=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/pubnub/default.nix b/nixpkgs/pkgs/development/python-modules/pubnub/default.nix
index 58b6bd159d50..868926ba95f1 100644
--- a/nixpkgs/pkgs/development/python-modules/pubnub/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pubnub/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "pubnub";
-  version = "7.4.4";
+  version = "8.0.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-GKJv/GJ/h/LVbEa8Wz7iXc8J38UTTlNa0/08+p5sYCA=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/pure-cdb/default.nix b/nixpkgs/pkgs/development/python-modules/pure-cdb/default.nix
index f8df017c9b18..b07843c8eaa6 100644
--- a/nixpkgs/pkgs/development/python-modules/pure-cdb/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pure-cdb/default.nix
@@ -1,10 +1,9 @@
-{ 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/nixpkgs/pkgs/development/python-modules/puremagic/default.nix b/nixpkgs/pkgs/development/python-modules/puremagic/default.nix
index 72f0dfc4dde7..fc54dbdaa6ec 100644
--- a/nixpkgs/pkgs/development/python-modules/puremagic/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/puremagic/default.nix
@@ -1,31 +1,31 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "puremagic";
-  version = "1.21";
-  format = "setuptools";
+  version = "1.23";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "cdgriffith";
-    repo = pname;
+    repo = "puremagic";
     rev = "refs/tags/${version}";
-    hash = "sha256-ObJp3+gk1tf1+9wBpvzs0wwP7ptDlfGwX9b4wlCb1RI=";
+    hash = "sha256-DhOTx4Zpux2IiHkw/0nWwWfpnoqxrqqMJw4hrS4ZNGE=";
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "puremagic"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "puremagic" ];
 
   meta = with lib; {
     description = "Implementation of magic file detection";
diff --git a/nixpkgs/pkgs/development/python-modules/pvlib/default.nix b/nixpkgs/pkgs/development/python-modules/pvlib/default.nix
index 986fd4ed8b4d..4abf6f287497 100644
--- a/nixpkgs/pkgs/development/python-modules/pvlib/default.nix
+++ b/nixpkgs/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.10.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
-  src = fetchPypi{
+  src = fetchPypi {
     inherit pname version;
-    hash = "sha256-DF+ov+ixSjmjC/7+WmzwFksuvYKikSbbPZBqhNk5+HI=";
+    hash = "sha256-I+y59o4L+wLOF+hARLUh+341NYHlOKMfnq0ETs0ZUL0=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/pwkit/default.nix b/nixpkgs/pkgs/development/python-modules/pwkit/default.nix
new file mode 100644
index 000000000000..f1fe2ad54556
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pwkit/default.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  numpy,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "pwkit";
+  version = "1.2.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "pkgw";
+    repo = "pwkit";
+    rev = "refs/tags/pwkit@${version}";
+    hash = "sha256-bQno1SIbxAJ1TL068eshfFgAkRXFmbGu2GTbv1BRGU0=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ numpy ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "pwkit" ];
+
+  meta = with lib; {
+    description = "Miscellaneous science/astronomy tools";
+    homepage = "https://github.com/pkgw/pwkit/";
+    changelog = "https://github.com/pkgw/pwkit/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pxml/default.nix b/nixpkgs/pkgs/development/python-modules/pxml/default.nix
deleted file mode 100644
index 360a761d8897..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/development/python-modules/py-libzfs/default.nix b/nixpkgs/pkgs/development/python-modules/py-libzfs/default.nix
index 661a79dd6485..c65f50b4e5ff 100644
--- a/nixpkgs/pkgs/development/python-modules/py-libzfs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/py-libzfs/default.nix
@@ -2,22 +2,30 @@
 , 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=";
   };
 
+  patches = [
+    (fetchpatch2 {
+      url = "https://github.com/truenas/py-libzfs/commit/b5ffe1f1d6097df6e2f5cc6dd3c968872ec60804.patch";
+      hash = "sha256-6r5hQ/o7c4vq4Tfh0l1WbeK3AuPvi+1wzkwkIn1qEes=";
+    })
+  ];
+
   nativeBuildInputs = [ cython_0 ];
   buildInputs = [ zfs ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/py-multihash/default.nix b/nixpkgs/pkgs/development/python-modules/py-multihash/default.nix
index 9ae0d1a1d3db..bf860e83e6b6 100644
--- a/nixpkgs/pkgs/development/python-modules/py-multihash/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/py-multihash/default.nix
@@ -4,7 +4,6 @@
 , fetchFromGitHub
 , morphys
 , pytestCheckHook
-, pythonOlder
 , six
 , varint
 }:
@@ -14,8 +13,6 @@ buildPythonPackage rec {
   version = "2.0.1";
   format = "setuptools";
 
-  disabled = pythonOlder "3.4";
-
   src = fetchFromGitHub {
     owner = "multiformats";
     repo = pname;
diff --git a/nixpkgs/pkgs/development/python-modules/py-synologydsm-api/default.nix b/nixpkgs/pkgs/development/python-modules/py-synologydsm-api/default.nix
index 415d95f8b324..1226e25bfa34 100644
--- a/nixpkgs/pkgs/development/python-modules/py-synologydsm-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/py-synologydsm-api/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "py-synologydsm-api";
-  version = "2.4.2";
+  version = "2.4.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "mib1185";
     repo = "py-synologydsm-api";
     rev = "refs/tags/v${version}";
-    hash = "sha256-uqQY0vt+3JGjciG0t9eh8zK5dnq1QhU6FkzWkKX/+DM=";
+    hash = "sha256-KhYK72kIPeZ32bdJ+3j8rcq/LIrcuELQD+/OQYhktog=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/py-zabbix/default.nix b/nixpkgs/pkgs/development/python-modules/py-zabbix/default.nix
index b39a706c6538..e9251892bd07 100644
--- a/nixpkgs/pkgs/development/python-modules/py-zabbix/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/py65/default.nix b/nixpkgs/pkgs/development/python-modules/py65/default.nix
index 3c06f5932f00..9f73ed1eb686 100644
--- a/nixpkgs/pkgs/development/python-modules/py65/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/pyTelegramBotAPI/default.nix b/nixpkgs/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
index 90b623c35ef4..9659da0e0aaa 100644
--- a/nixpkgs/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "pytelegrambotapi";
-  version = "4.17.0";
+  version = "4.18.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-MlKLLLoEbB+ju+ewYDSEUCLVpCt+MsRKzTDVDuxDr8I=";
   };
 
   build-system = [ hatchling ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyais/default.nix b/nixpkgs/pkgs/development/python-modules/pyais/default.nix
new file mode 100644
index 000000000000..2070b0616cb1
--- /dev/null
+++ b/nixpkgs/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.6.5";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "M0r13n";
+    repo = "pyais";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-/I/4ATvX/0ya8xtineXyjSFJBGhDNy/tosh2NdnKLK4=";
+  };
+
+  nativeBuildInputs = [ 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/${version}/CHANGELOG.txt";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyannote-core/default.nix b/nixpkgs/pkgs/development/python-modules/pyannote-core/default.nix
index 453bb0c4d60d..85c01bcee578 100644
--- a/nixpkgs/pkgs/development/python-modules/pyannote-core/default.nix
+++ b/nixpkgs/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,6 +51,7 @@ 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; [ ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/pyannote-database/default.nix b/nixpkgs/pkgs/development/python-modules/pyannote-database/default.nix
index e3e3ac56ca70..8cb35b26061d 100644
--- a/nixpkgs/pkgs/development/python-modules/pyannote-database/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/pyannote-pipeline/default.nix b/nixpkgs/pkgs/development/python-modules/pyannote-pipeline/default.nix
index 00b7eab6344a..0b85c50474d5 100644
--- a/nixpkgs/pkgs/development/python-modules/pyannote-pipeline/default.nix
+++ b/nixpkgs/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; [ ];
+    mainProgram = "pyannote-pipeline";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pyasn1/default.nix b/nixpkgs/pkgs/development/python-modules/pyasn1/default.nix
index d4fb73d50998..c9e542a6e1ba 100644
--- a/nixpkgs/pkgs/development/python-modules/pyasn1/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyasn1/default.nix
@@ -7,14 +7,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/pyathena/default.nix b/nixpkgs/pkgs/development/python-modules/pyathena/default.nix
index 00c4fd2bd874..036ec8c5e2d7 100644
--- a/nixpkgs/pkgs/development/python-modules/pyathena/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyathena/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "pyathena";
-  version = "3.7.0";
+  version = "3.8.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-PqIrXLsdi4jAE7K5WUFuTdRPs29GLUefNQlU6hzrLWI=";
+    hash = "sha256-uVYnhxQJy6BvSZ/7JbKZPtE+uJkOtEZrd3uTokfZ3f8=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pybids/default.nix b/nixpkgs/pkgs/development/python-modules/pybids/default.nix
index d702b4d509d3..33a00bac9284 100644
--- a/nixpkgs/pkgs/development/python-modules/pybids/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pybids/default.nix
@@ -1,19 +1,20 @@
-{ 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,
+  pythonRelaxDepsHook,
 }:
 
 buildPythonPackage rec {
@@ -49,28 +50,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 ];
+    mainProgram = "pybids";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pybrowserid/default.nix b/nixpkgs/pkgs/development/python-modules/pybrowserid/default.nix
index 1a4cd7c43058..10346ee04cc3 100644
--- a/nixpkgs/pkgs/development/python-modules/pybrowserid/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pybrowserid/default.nix
@@ -1,24 +1,44 @@
-{ 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 ];
+  postPatch = ''
+    substituteInPlace browserid/tests/* \
+        --replace-warn 'assertEquals' 'assertEqual'
+  '';
 
-  nativeCheckInputs = [ mock ];
+  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;
+    homepage = "https://github.com/mozilla/PyBrowserID";
+    license = licenses.mpl20;
     maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pycaption/default.nix b/nixpkgs/pkgs/development/python-modules/pycaption/default.nix
index 900f93bbea87..3d4e391c0be1 100644
--- a/nixpkgs/pkgs/development/python-modules/pycaption/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycaption/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "pycaption";
-  version = "2.2.6";
+  version = "2.2.7";
 
   disabled = pythonOlder "3.8";
 
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "pbs";
     repo = "pycaption";
     rev = "refs/tags/${version}";
-    hash = "sha256-XN83L6WsRyl9G0ia4uz3SCVcwwUNUyfNMB64RfZh+PA=";
+    hash = "sha256-0rh8w4zQN5qAIPwnm7FO6VyPxMdutYFflpY+xWdEm3M=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pycognito/default.nix b/nixpkgs/pkgs/development/python-modules/pycognito/default.nix
index e0f4e1d190a7..fc601fca868d 100644
--- a/nixpkgs/pkgs/development/python-modules/pycognito/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/pycomm3/default.nix b/nixpkgs/pkgs/development/python-modules/pycomm3/default.nix
new file mode 100644
index 000000000000..a6d219110bd0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pycomm3/default.nix
@@ -0,0 +1,47 @@
+{ 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 = "A 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/nixpkgs/pkgs/development/python-modules/pycparser/default.nix b/nixpkgs/pkgs/development/python-modules/pycparser/default.nix
index fa0622df9ff9..4aa2c104d8a0 100644
--- a/nixpkgs/pkgs/development/python-modules/pycparser/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycparser/default.nix
@@ -1,16 +1,17 @@
-{ 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";
+    sha256 = "sha256-SRyL6cBA9TkPW/RKWwd1K9B/Vu35kjgbBccBQ57sEPY=";
   };
 
   nativeCheckInputs = [ unittestCheckHook ];
+  disabled = pythonOlder "3.8";
 
   unittestFlagsArray = [ "-s" "tests" ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/pycrdt-websocket/default.nix b/nixpkgs/pkgs/development/python-modules/pycrdt-websocket/default.nix
index 74e34811279f..f713b194f79a 100644
--- a/nixpkgs/pkgs/development/python-modules/pycrdt-websocket/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycrdt-websocket/default.nix
@@ -3,19 +3,22 @@
 , fetchFromGitHub
 , pythonOlder
 , hatchling
-, aiosqlite
 , anyio
 , channels
+, httpx-ws
+, hypercorn
 , pycrdt
 , pytest-asyncio
 , pytestCheckHook
+, sqlite-anyio
+, trio
 , uvicorn
 , websockets
 }:
 
 buildPythonPackage rec {
   pname = "pycrdt-websocket";
-  version = "0.12.7";
+  version = "0.13.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,20 +27,20 @@ buildPythonPackage rec {
     owner = "jupyter-server";
     repo = "pycrdt-websocket";
     rev = "refs/tags/v${version}";
-    hash = "sha256-e4VEEudsdtfC2ek8wODxxoFuaOwl4GKS1cX3QeshuD8=";
+    hash = "sha256-nkm1ZQ6bYBRDDoREovhEthDZoHApYxzAnwVgDgpWW/s=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatchling
   ];
 
-  propagatedBuildInputs = [
-    aiosqlite
+  dependencies = [
     anyio
     pycrdt
+    sqlite-anyio
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     django = [
       channels
     ];
@@ -48,8 +51,11 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    httpx-ws
+    hypercorn
     pytest-asyncio
     pytestCheckHook
+    trio
     uvicorn
     websockets
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/pycrdt/Cargo.lock b/nixpkgs/pkgs/development/python-modules/pycrdt/Cargo.lock
index ac98cbf0d09f..a0140aa4c260 100644
--- a/nixpkgs/pkgs/development/python-modules/pycrdt/Cargo.lock
+++ b/nixpkgs/pkgs/development/python-modules/pycrdt/Cargo.lock
@@ -4,9 +4,9 @@ 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"
@@ -16,21 +16,21 @@ checksum = "41e67cd8309bbd06cd603a9e693a784ac2e5d1e955f11286e355089fcab3047c"
 
 [[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.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
 
 [[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"
@@ -40,18 +40,18 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[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"
 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",
@@ -68,15 +68,15 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
 
 [[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"
@@ -89,15 +89,15 @@ dependencies = [
 
 [[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",
@@ -111,9 +111,9 @@ checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
 
 [[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",
 ]
@@ -126,9 +126,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",
@@ -136,9 +136,9 @@ 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",
@@ -155,16 +155,16 @@ checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.79"
+version = "1.0.82"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
+checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "pycrdt"
-version = "0.8.13"
+version = "0.8.24"
 dependencies = [
  "pyo3",
  "yrs",
@@ -235,27 +235,27 @@ dependencies = [
 
 [[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",
 ]
 
 [[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",
 ]
 
 [[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 +265,18 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
 name = "serde"
-version = "1.0.197"
+version = "1.0.200"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
+checksum = "ddc6f9cc94d67c0e21aaf7eda3a010fd3af78ebf6e096aa6e2e13c79749cce4f"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.197"
+version = "1.0.200"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
+checksum = "856f046b9400cee3c8c94ed572ecdb752444c24528c035cd35882aad6f492bcb"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -285,9 +285,9 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.114"
+version = "1.0.116"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
+checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813"
 dependencies = [
  "itoa",
  "ryu",
@@ -305,15 +305,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.61"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032"
+checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -328,18 +328,18 @@ checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
 
 [[package]]
 name = "thiserror"
-version = "1.0.58"
+version = "1.0.60"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
+checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.58"
+version = "1.0.60"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
+checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -420,13 +420,14 @@ checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
 
 [[package]]
 name = "windows-targets"
-version = "0.48.5"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
 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,51 +436,57 @@ dependencies = [
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.48.5"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.48.5"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.48.5"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.48.5"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.48.5"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.48.5"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.48.5"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
 
 [[package]]
 name = "yrs"
-version = "0.18.0"
+version = "0.18.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ad19cd99f9c036345d66331db64c7b2c823ca1ac2c30c5ca26eed149c6b4672"
+checksum = "d58fbc807677598fedfab76f99f6e1aa5c644411255002b5438ea0ab14672398"
 dependencies = [
  "arc-swap",
  "atomic_refcell",
diff --git a/nixpkgs/pkgs/development/python-modules/pycrdt/default.nix b/nixpkgs/pkgs/development/python-modules/pycrdt/default.nix
index c77c360516a0..c42fb0723df1 100644
--- a/nixpkgs/pkgs/development/python-modules/pycrdt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycrdt/default.nix
@@ -6,6 +6,7 @@
 , cargo
 , rustPlatform
 , rustc
+, objsize
 , pydantic
 , pytestCheckHook
 , y-py
@@ -13,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "pycrdt";
-  version = "0.8.13";
+  version = "0.8.24";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "jupyter-server";
     repo = "pycrdt";
     rev = "refs/tags/v${version}";
-    hash = "sha256-puYJ0mR1JpwD823P6JrXmNjFvqZUPqEj2T4Wk81oBMU=";
+    hash = "sha256-3j5OhjeVE42n4EEOOMUGlQGdnQ/xia0KD543uCMFpCo=";
   };
 
   postPatch = ''
@@ -44,13 +45,11 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "pycrdt" ];
 
-  # requires pydantic>=2.5
-  doCheck = false;
-
   nativeCheckInputs = [
+    objsize
+    pydantic
     pytestCheckHook
     y-py
-    pydantic
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/pyct/default.nix b/nixpkgs/pkgs/development/python-modules/pyct/default.nix
index 4897a7e54917..7f8f85b1b650 100644
--- a/nixpkgs/pkgs/development/python-modules/pyct/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyct/default.nix
@@ -3,7 +3,7 @@
 , fetchPypi
 , param
 , pytestCheckHook
-, pythonOlder
+, pythonAtLeast
 , pyyaml
 , requests
 }:
@@ -13,7 +13,7 @@ buildPythonPackage rec {
   version = "0.5.0";
   format = "setuptools";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonAtLeast "3.12";
 
   src = fetchPypi {
     inherit pname version;
diff --git a/nixpkgs/pkgs/development/python-modules/pycups/default.nix b/nixpkgs/pkgs/development/python-modules/pycups/default.nix
index 9b4a1a2d0ee7..12adc1f669af 100644
--- a/nixpkgs/pkgs/development/python-modules/pycups/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycups/default.nix
@@ -2,12 +2,12 @@
 
 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;
diff --git a/nixpkgs/pkgs/development/python-modules/pydeck/default.nix b/nixpkgs/pkgs/development/python-modules/pydeck/default.nix
index 6edd7a379b3e..d5468492162b 100644
--- a/nixpkgs/pkgs/development/python-modules/pydeck/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pydeck/default.nix
@@ -16,14 +16,14 @@
 
 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/nixpkgs/pkgs/development/python-modules/pyduotecno/default.nix b/nixpkgs/pkgs/development/python-modules/pyduotecno/default.nix
index a52d43e06a0f..e8ea8acf0c4c 100644
--- a/nixpkgs/pkgs/development/python-modules/pyduotecno/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyduotecno/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "pyduotecno";
-  version = "2024.3.2";
+  version = "2024.5.1";
   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-huzv7f1Aq/n3cD9S4oXqGQogq7VpPpzAUqkOhiB879A=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyelftools/default.nix b/nixpkgs/pkgs/development/python-modules/pyelftools/default.nix
index 84cdda65f1f9..85110fdf94aa 100644
--- a/nixpkgs/pkgs/development/python-modules/pyelftools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyelftools/default.nix
@@ -4,22 +4,27 @@
 , 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 = ''
@@ -33,12 +38,18 @@ buildPythonPackage rec {
     "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/nixpkgs/pkgs/development/python-modules/pyenphase/default.nix b/nixpkgs/pkgs/development/python-modules/pyenphase/default.nix
index 45e4b014db72..3081ed70edb5 100644
--- a/nixpkgs/pkgs/development/python-modules/pyenphase/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyenphase/default.nix
@@ -19,7 +19,7 @@
 
 buildPythonPackage rec {
   pname = "pyenphase";
-  version = "1.20.2";
+  version = "1.20.3";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -28,7 +28,7 @@ buildPythonPackage rec {
     owner = "pyenphase";
     repo = "pyenphase";
     rev = "refs/tags/v${version}";
-    hash = "sha256-sjZaLqTYoXJ1cpaSuyLNAsUrACOMVah7DKaKxGkG0zE=";
+    hash = "sha256-4lMsyzw56gFimUs52mEzy5eKYF9s2ClNi3yfdIBbccY=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pyerfa/default.nix b/nixpkgs/pkgs/development/python-modules/pyerfa/default.nix
index 8561738f8428..fd7348f3ca59 100644
--- a/nixpkgs/pkgs/development/python-modules/pyerfa/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyerfa/default.nix
@@ -2,9 +2,8 @@
 , buildPythonPackage
 , fetchPypi
 , jinja2
-, oldest-supported-numpy
+, setuptools
 , setuptools-scm
-, wheel
 , liberfa
 , packaging
 , numpy
@@ -14,23 +13,27 @@
 
 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 = [
+  dependencies = [
     numpy
   ];
   buildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pyexploitdb/default.nix b/nixpkgs/pkgs/development/python-modules/pyexploitdb/default.nix
index c59205aa3f1a..763b5a4a62c7 100644
--- a/nixpkgs/pkgs/development/python-modules/pyexploitdb/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyexploitdb/default.nix
@@ -1,26 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, gitpython
-, pytestCheckHook
-, pythonOlder
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  gitpython,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyexploitdb";
-  version = "0.2.9";
-  format = "setuptools";
+  version = "0.2.17";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "pyExploitDb";
     inherit version;
-    hash = "sha256-q16YB0lLlw9nXohcT20l41Bv40CqshWzE8nVBBSEppE=";
+    hash = "sha256-I7uDmKvHVx8mpqlq+kOyp57wCii8fy9ecJTSm7uHbZ0=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     gitpython
     requests
   ];
@@ -28,14 +32,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/nixpkgs/pkgs/development/python-modules/pyezviz/default.nix b/nixpkgs/pkgs/development/python-modules/pyezviz/default.nix
index 1f3f6662f386..43fd100d7ce0 100644
--- a/nixpkgs/pkgs/development/python-modules/pyezviz/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/pyfaidx/default.nix b/nixpkgs/pkgs/development/python-modules/pyfaidx/default.nix
index 4999b1dcddf9..551814d9fe81 100644
--- a/nixpkgs/pkgs/development/python-modules/pyfaidx/default.nix
+++ b/nixpkgs/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";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-bwSCNSYZ8sxWADyiIyG9sNB2S2VnlbweQGKx+psIaGs=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/pyfakefs/default.nix b/nixpkgs/pkgs/development/python-modules/pyfakefs/default.nix
index c588607f5c12..6e31c1e2e236 100644
--- a/nixpkgs/pkgs/development/python-modules/pyfakefs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyfakefs/default.nix
@@ -8,20 +8,21 @@
 , setuptools
 
 # tests
+, pandas
 , pytestCheckHook
 , undefined
 }:
 
 buildPythonPackage rec {
   pname = "pyfakefs";
-  version = "5.3.5";
+  version = "5.4.1";
   pyproject = true;
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-fNxQCzWiFMt6YU4ZQFQ6zGZQ5pqUrHbjDzPJNzvZz5A=";
+    hash = "sha256-IMtR6GDC8/+DhZFirVE0u4sKHnqB3woYz8zEhi0Nncw=";
   };
 
   postPatch = ''
@@ -46,6 +47,7 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    pandas
     pytestCheckHook
     undefined
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyftpdlib/default.nix b/nixpkgs/pkgs/development/python-modules/pyftpdlib/default.nix
index 5ff81a268f2e..e154e6f9a1a8 100644
--- a/nixpkgs/pkgs/development/python-modules/pyftpdlib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyftpdlib/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, psutil
-, pyopenssl
-, pysendfile
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  psutil,
+  pyopenssl,
+  pysendfile,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyftpdlib";
   version = "1.5.9";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -20,14 +22,12 @@ buildPythonPackage rec {
     hash = "sha256-Mj1MQvFAau203xj69oD2TzLAgP9m9sJgkLpZL1v8Sg8=";
   };
 
-  propagatedBuildInputs = [
-    pysendfile
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ pysendfile ];
 
   passthru.optional-dependencies = {
-    ssl = [
-      pyopenssl
-    ];
+    ssl = [ pyopenssl ];
   };
 
   nativeCheckInputs = [
@@ -39,15 +39,14 @@ buildPythonPackage rec {
   # on Hydra: https://hydra.nixos.org/build/84374861
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyftpdlib"
-  ];
+  pythonImportsCheck = [ "pyftpdlib" ];
 
   meta = with lib; {
     description = "Asynchronous FTP server library";
-    mainProgram = "ftpbench";
     homepage = "https://github.com/giampaolo/pyftpdlib/";
+    changelog = "https://github.com/giampaolo/pyftpdlib/blob/release-${version}/HISTORY.rst";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
+    mainProgram = "ftpbench";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pyfxa/default.nix b/nixpkgs/pkgs/development/python-modules/pyfxa/default.nix
index 39794d592103..259370299db2 100644
--- a/nixpkgs/pkgs/development/python-modules/pyfxa/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyfxa/default.nix
@@ -18,7 +18,7 @@
 buildPythonPackage rec {
   pname = "pyfxa";
   version = "0.7.8";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -28,7 +28,11 @@ buildPythonPackage rec {
     hash = "sha256-DMFZl1hbYNaScOTWkAbK2nKti6wD5SS5A30q7TW5vO4=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     cryptography
     hawkauthlib
     pybrowserid
diff --git a/nixpkgs/pkgs/development/python-modules/pygame-gui/default.nix b/nixpkgs/pkgs/development/python-modules/pygame-gui/default.nix
index e2314f9c6e92..e74448a30768 100644
--- a/nixpkgs/pkgs/development/python-modules/pygame-gui/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pygame-gui/default.nix
@@ -2,29 +2,37 @@
 , pkgs
 , buildPythonPackage
 , fetchFromGitHub
-, pygame
+, setuptools
+, pygame-ce
 , python-i18n
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "pygame-gui";
-  version = "069";
-  format = "setuptools";
+  version = "0610";
+  pyproject = true;
   # nixpkgs-update: no auto update
 
   src = fetchFromGitHub {
     owner = "MyreMylar";
     repo = "pygame_gui";
     rev = "refs/tags/v_${version}";
-    hash = "sha256-IXU00Us1odbfS7jLPMYuCPv2l/5TUZdYKES7xHs+EWg=";
+    hash = "sha256-PVNi/I174AyEEjc+N2UGtgOYSGAgVQbqrKkWZnjOxFY=";
   };
 
-  propagatedBuildInputs = [ pygame python-i18n ];
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  propagatedBuildInputs = [
+    pygame-ce
+    python-i18n
+  ];
 
   postPatch = ''
     substituteInPlace pygame_gui/core/utility.py \
-      --replace "xsel" "${pkgs.xsel}/bin/xsel"
+      --replace-fail "xsel" "${lib.getExe pkgs.xsel}"
   '';
 
   nativeCheckInputs = [ pytestCheckHook ];
@@ -55,6 +63,6 @@ buildPythonPackage rec {
     description = "A GUI system for pygame";
     homepage = "https://github.com/MyreMylar/pygame_gui";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [ emilytrau ];
+    maintainers = with maintainers; [ emilytrau pbsds ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pygame-sdl2/default.nix b/nixpkgs/pkgs/development/python-modules/pygame-sdl2/default.nix
index 0201c9cb4a8a..8d8c5dee83a6 100644
--- a/nixpkgs/pkgs/development/python-modules/pygame-sdl2/default.nix
+++ b/nixpkgs/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-Zib39NyQ1pGVCWPrK5/Tl3dAylUlmKZKxU8pf+OpAdY=";
   };
 
   # force rebuild of headers needed for install
@@ -24,27 +40,26 @@ 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; {
+  meta = {
     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 ];
+    homepage = "https://github.com/renpy/pygame_sdl2";
+    license = with lib.licenses; [ lgpl2 zlib ];
+    maintainers = with lib.maintainers; [ raskin ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pyglet/default.nix b/nixpkgs/pkgs/development/python-modules/pyglet/default.nix
index 62c8598f5918..21ecabb0ff86 100644
--- a/nixpkgs/pkgs/development/python-modules/pyglet/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyglet/default.nix
@@ -62,7 +62,7 @@ buildPythonPackage rec {
             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}'
+                path = '${lib.getLib ffmpeg-full}/lib/lib' + name + '${ext}'
             elif name == 'openal':
                 path = '${openal}/lib/libopenal${ext}'
             elif name == 'pulse':
diff --git a/nixpkgs/pkgs/development/python-modules/pygobject/3.nix b/nixpkgs/pkgs/development/python-modules/pygobject/3.nix
index cc2d41147bca..f1dff5b24e31 100644
--- a/nixpkgs/pkgs/development/python-modules/pygobject/3.nix
+++ b/nixpkgs/pkgs/development/python-modules/pygobject/3.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "pygobject";
-  version = "3.46.0";
+  version = "3.48.2";
 
   outputs = [ "out" "dev" ];
 
@@ -27,7 +27,7 @@ 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 = [
@@ -50,6 +50,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     pycairo
+    gobject-introspection # e.g. try building: python3Packages.urwid python3Packages.pydbus
   ];
 
   mesonFlags = [
diff --git a/nixpkgs/pkgs/development/python-modules/pygount/default.nix b/nixpkgs/pkgs/development/python-modules/pygount/default.nix
index 4b1236428836..36c0ae86304b 100644
--- a/nixpkgs/pkgs/development/python-modules/pygount/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pygount/default.nix
@@ -11,14 +11,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/pygraphviz/default.nix b/nixpkgs/pkgs/development/python-modules/pygraphviz/default.nix
index 61fee2859d18..89d245e6e6ae 100644
--- a/nixpkgs/pkgs/development/python-modules/pygraphviz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pygraphviz/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "pygraphviz";
-  version = "1.12";
+  version = "1.13";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -20,8 +20,8 @@ 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/pygsl/default.nix b/nixpkgs/pkgs/development/python-modules/pygsl/default.nix
index 13a4644962b3..0880ff181097 100644
--- a/nixpkgs/pkgs/development/python-modules/pygsl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pygsl/default.nix
@@ -1,6 +1,6 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , gsl
 , swig
 , numpy
@@ -9,12 +9,14 @@
 
 buildPythonPackage rec {
   pname = "pygsl";
-  version = "2.3.3";
+  version = "2.3.4";
   format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-F3m85Bs8sONw0Rv0EAOFK6R1DFHfW4dxuzQmXo4PHfM=";
+  src = fetchFromGitHub {
+    owner = "pygsl";
+    repo = "pygsl";
+    rev = "refs/tags/v.${version}";
+    hash = "sha256-2TalLKDDoJdKGZHr7eNNvVW8fL7wQJjnZv34LJokfow=";
   };
 
   nativeBuildInputs = [
@@ -24,10 +26,14 @@ buildPythonPackage rec {
   buildInputs = [
     gsl
   ];
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
   ];
 
+  preBuild = ''
+    python setup.py build_ext --inplace
+  '';
+
   preCheck = ''
     cd tests
   '';
diff --git a/nixpkgs/pkgs/development/python-modules/pyinsteon/default.nix b/nixpkgs/pkgs/development/python-modules/pyinsteon/default.nix
index 22242ee62bf4..0f52f3dbf45c 100644
--- a/nixpkgs/pkgs/development/python-modules/pyinsteon/default.nix
+++ b/nixpkgs/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.1";
   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-s8YRDu+UpU1sisdscd87CpcLl3csOUDdIuKqx48GZsw=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/pyipp/default.nix b/nixpkgs/pkgs/development/python-modules/pyipp/default.nix
index bfeb5e4a5eee..284fb8368ffd 100644
--- a/nixpkgs/pkgs/development/python-modules/pyipp/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/pyjet/default.nix b/nixpkgs/pkgs/development/python-modules/pyjet/default.nix
deleted file mode 100644
index ed0a5281e0fa..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/development/python-modules/pyjson5/default.nix b/nixpkgs/pkgs/development/python-modules/pyjson5/default.nix
new file mode 100644
index 000000000000..19f933ddc3d9
--- /dev/null
+++ b/nixpkgs/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 = "A 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/nixpkgs/pkgs/development/python-modules/pykalman/default.nix b/nixpkgs/pkgs/development/python-modules/pykalman/default.nix
index 7073e9382d3d..401ff4fc6fe7 100644
--- a/nixpkgs/pkgs/development/python-modules/pykalman/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pykalman/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "pykalman";
-  version = "0.9.5";
+  version = "0.9.7";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-gWr0dyDZJKTGAW+nS54sjCEWWgjZFpPDIqF0Ho4H+zg=";
+    hash = "sha256-E1d5IAOTxrNwIhmQ9zFnQEcvVBNG6SEdEWMOLC2PuKA=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/pykdtree/default.nix b/nixpkgs/pkgs/development/python-modules/pykdtree/default.nix
index b720f5b838b3..3418c47175cb 100644
--- a/nixpkgs/pkgs/development/python-modules/pykdtree/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pykdtree/default.nix
@@ -16,14 +16,19 @@
 
 buildPythonPackage rec {
   pname = "pykdtree";
-  version = "1.3.11";
+  version = "1.3.12";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-bBI8e65SE68iPFKai0FhwH64VKb+QDizaVK62iEx68s=";
+    hash = "sha256-zCCypnxkBWSFoxTSwrbbo1SvfuHI+42uG+byk2o3Q0E=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-warn "numpy>=2.0.0rc1,<3" "numpy"
+  '';
+
   nativeBuildInputs = [
     cython
     numpy
diff --git a/nixpkgs/pkgs/development/python-modules/pykrakenapi/default.nix b/nixpkgs/pkgs/development/python-modules/pykrakenapi/default.nix
index 832658039531..02d00afd628f 100644
--- a/nixpkgs/pkgs/development/python-modules/pykrakenapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pykrakenapi/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, pythonOlder
 , fetchFromGitHub
 , krakenex
 , pandas
@@ -10,8 +9,6 @@ buildPythonPackage rec {
   pname = "pykrakenapi";
   version = "0.3.2";
 
-  disabled = pythonOlder "3.3";
-
   format = "setuptools";
 
   src = fetchFromGitHub {
diff --git a/nixpkgs/pkgs/development/python-modules/pylint/default.nix b/nixpkgs/pkgs/development/python-modules/pylint/default.nix
index 046277a5fa58..cfa1b686a72a 100644
--- a/nixpkgs/pkgs/development/python-modules/pylint/default.nix
+++ b/nixpkgs/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.1.1";
   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-LmpLt2GCzYU73BUpORHaFbGqkxyYqoPoKZpUJSChqKQ=";
   };
 
-  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.isDarwin [
+      "test_parallel_execution"
+      "test_py3k_jobs_option"
+    ];
 
   meta = with lib; {
-    homepage = "https://pylint.readthedocs.io/en/stable/";
     description = "A bug and style checker for Python";
+    homepage = "https://pylint.readthedocs.io/en/stable/";
     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,7 @@ buildPythonPackage rec {
       - symilar: an independent similarities checker
       - epylint: Emacs and Flymake compatible Pylint
     '';
-    license = licenses.gpl1Plus;
+    license = licenses.gpl2Plus;
     maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pylutron/default.nix b/nixpkgs/pkgs/development/python-modules/pylutron/default.nix
index 49ee5e278485..f486b45c6798 100644
--- a/nixpkgs/pkgs/development/python-modules/pylutron/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pylutron/default.nix
@@ -1,34 +1,34 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pylutron";
-  version = "0.2.12";
+  version = "0.2.13";
   pyproject = true;
 
+  disabled = pythonOlder "3.7";
+
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-UTn4HfyiyQAekIZD4I5lacYb7ySRhW8OUgiOg33JZtQ=";
+    hash = "sha256-s5qprIVPlq495XWKjgIuohDzPV0EfU43zkfQ2DvH04Y=";
   };
 
-  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";
+    changelog = "https://github.com/thecynic/pylutron/releases/tag/${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/pymarshal/default.nix b/nixpkgs/pkgs/development/python-modules/pymarshal/default.nix
index 755c03501e56..6a4736c3fb21 100644
--- a/nixpkgs/pkgs/development/python-modules/pymarshal/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymarshal/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, pythonOlder
 , bson
 , pytestCheckHook
 , pyyaml
@@ -12,7 +11,6 @@ buildPythonPackage rec {
   pname = "pymarshal";
   version = "2.2.0";
   format = "setuptools";
-  disabled = pythonOlder "3.0";
 
   src = fetchFromGitHub {
     owner = "stargateaudio";
diff --git a/nixpkgs/pkgs/development/python-modules/pymatgen/default.nix b/nixpkgs/pkgs/development/python-modules/pymatgen/default.nix
index 59981da7e780..5547279c0654 100644
--- a/nixpkgs/pkgs/development/python-modules/pymatgen/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymatgen/default.nix
@@ -32,7 +32,7 @@
 
 buildPythonPackage rec {
   pname = "pymatgen";
-  version = "2024.4.13";
+  version = "2024.5.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -41,7 +41,7 @@ buildPythonPackage rec {
     owner = "materialsproject";
     repo = "pymatgen";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vjasWQgwjtoM/6Y1HwK1otMFejRWEj+YBxaIYDDSeeo=";
+    hash = "sha256-ZMOZ4eFtIaIcBPGT6bgAV+47LEGWAAnF/ml68j0fXws=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/pymc/default.nix b/nixpkgs/pkgs/development/python-modules/pymc/default.nix
index 947aaa424186..3e991423cf6d 100644
--- a/nixpkgs/pkgs/development/python-modules/pymc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymc/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "pymc";
-  version = "5.14.0";
+  version = "5.15.0";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "pymc-devs";
     repo = "pymc";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ZVGMzkStKSPLgBoyzA8SOvsof7QRR7TLmLhh5NmD/F8=";
+    hash = "sha256-KJXQz7LES3AqLkq5FPnaECraYSM4vfuDyfRJSclz1RQ=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pymdown-extensions/default.nix b/nixpkgs/pkgs/development/python-modules/pymdown-extensions/default.nix
index d760b9cd0dd4..733f124d3655 100644
--- a/nixpkgs/pkgs/development/python-modules/pymdown-extensions/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymdown-extensions/default.nix
@@ -63,6 +63,11 @@ buildPythonPackage rec {
     pyyaml
   ];
 
+  disabledTests = [
+    # test artifact mismatch
+    "test_toc_tokens"
+  ];
+
   pythonImportsCheck = map (ext: "pymdownx.${ext}") extensions;
 
   passthru.tests = {
diff --git a/nixpkgs/pkgs/development/python-modules/pymilter/default.nix b/nixpkgs/pkgs/development/python-modules/pymilter/default.nix
index be0ee9bd2bc4..9cefa458d7e9 100644
--- a/nixpkgs/pkgs/development/python-modules/pymilter/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymilter/default.nix
@@ -1,4 +1,15 @@
-{ lib, python, buildPythonPackage, fetchFromGitHub, libmilter, bsddb3, pydns, iana-etc, libredirect }:
+{ lib
+, python
+, buildPythonPackage
+, fetchFromGitHub
+, fetchpatch
+, libmilter
+, bsddb3
+, pydns
+, iana-etc
+, libredirect
+, pyasyncore
+}:
 
 buildPythonPackage rec {
   pname = "pymilter";
@@ -13,7 +24,14 @@ buildPythonPackage rec {
   };
 
   buildInputs = [ libmilter ];
+  nativeCheckInputs = [ pyasyncore ];
   propagatedBuildInputs = [ bsddb3 pydns ];
+  patches = [ (fetchpatch {
+    name = "Remove-calls-to-the-deprecated-method-assertEquals";
+    url = "https://github.com/sdgathman/pymilter/pull/57.patch";
+    hash = "sha256-/5LlDR15nMR3l7rkVjT3w4FbDTFAAgNdERWlPNL2TVg=";
+    })
+  ];
 
   preBuild = ''
     sed -i 's/import thread/import _thread as thread/' Milter/greylist.py
diff --git a/nixpkgs/pkgs/development/python-modules/pymongo/default.nix b/nixpkgs/pkgs/development/python-modules/pymongo/default.nix
index 3d17ea66f1e7..1ca7ca08ad50 100644
--- a/nixpkgs/pkgs/development/python-modules/pymongo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymongo/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "pymongo";
-  version = "4.6.2";
+  version = "4.6.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-q30BrIMqFmPa1ZLMvZK7Dwd1vI+YoZI8Xhp9f+rUla8=";
+    hash = "sha256-QAB0CQuaYx8SC0LGGyIv10NJDBM6XS+ZwCCM78zMlk4=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pymysql/default.nix b/nixpkgs/pkgs/development/python-modules/pymysql/default.nix
index e7711f5902b9..1b5a00c27ac1 100644
--- a/nixpkgs/pkgs/development/python-modules/pymysql/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymysql/default.nix
@@ -1,19 +1,25 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, setuptools
 , cryptography
 }:
 
 buildPythonPackage rec {
   pname = "pymysql";
-  version = "1.0.2";
+  version = "1.1.0";
+  pyproject = true;
 
   src = fetchPypi {
     pname = "PyMySQL";
     inherit version;
-    sha256 = "816927a350f38d56072aeca5dfb10221fe1dc653745853d30a216637f5d7ad36";
+    hash = "sha256-TxOn34vzalHoHdnzYF/t5FpIeP4C+SNjSf2Co/BhL5Y=";
   };
 
+  build-system = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [ cryptography ];
 
   # Wants to connect to MySQL
diff --git a/nixpkgs/pkgs/development/python-modules/pynetbox/default.nix b/nixpkgs/pkgs/development/python-modules/pynetbox/default.nix
index 0a08f4affa59..1051764887b1 100644
--- a/nixpkgs/pkgs/development/python-modules/pynetbox/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pynetbox/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , fetchFromGitHub
 , setuptools-scm
+, packaging
 , requests
 , six
 , pytestCheckHook
@@ -25,6 +26,7 @@ buildPythonPackage rec {
   ];
 
   propagatedBuildInputs = [
+    packaging
     requests
     six
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/pynetdicom/default.nix b/nixpkgs/pkgs/development/python-modules/pynetdicom/default.nix
index 6f0407aacdff..c8e11897c727 100644
--- a/nixpkgs/pkgs/development/python-modules/pynetdicom/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pynetdicom/default.nix
@@ -29,10 +29,22 @@ buildPythonPackage rec {
 
   patches = [
     (fetchpatch {
-      name = "fix-python-3.11-test-attribute-errors";
+      name = "fix-python-3.11-test-attribute-errors.patch";
       url = "https://github.com/pydicom/pynetdicom/pull/754/commits/2126bd932d6dfb3f07045eb9400acb7eaa1b3069.patch";
       hash = "sha256-t6Lg0sTZSWIE5q5pkBvEoHDQ+cklDn8SgNBcFk1myp4=";
     })
+    (fetchpatch {
+      # https://github.com/pydicom/pynetdicom/pull/848
+      name = "replace-setup-with-setup_method1.patch";
+      url = "https://github.com/pydicom/pynetdicom/commit/09b4e0901445d46868668bc69a7b4f7f00cf6cbb.patch";
+      hash = "sha256-1ea1A/LU6qY+hd23b6H4OkKHQ0hI2/MYgBgZUZE0kRU=";
+    })
+    (fetchpatch {
+      # https://github.com/pydicom/pynetdicom/pull/848
+      name = "replace-setup-with-setup_method2.patch";
+      url = "https://github.com/pydicom/pynetdicom/commit/3966c2d749eeda718caccf9a88a0495d1823825d.patch";
+      hash = "sha256-C4MSfwwxDgr5T0XQMlR5j2wElPu83TqPhjyNDvfBjJs=";
+    })
   ];
 
   build-system = [ setuptools ];
@@ -86,7 +98,7 @@ buildPythonPackage rec {
   pytestFlagsArray = [
     # https://github.com/pydicom/pynetdicom/issues/923
     "-W"
-    "ignore::pytest.PytestRemovedIn8Warning"
+    "ignore::pytest.PytestRemovedIn9Warning"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/pynmea2/default.nix b/nixpkgs/pkgs/development/python-modules/pynmea2/default.nix
index 2bfdd61a6202..e4e9f37d2f50 100644
--- a/nixpkgs/pkgs/development/python-modules/pynmea2/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/pynmeagps/default.nix b/nixpkgs/pkgs/development/python-modules/pynmeagps/default.nix
index 7791bb13f315..fa306cf7b52b 100644
--- a/nixpkgs/pkgs/development/python-modules/pynmeagps/default.nix
+++ b/nixpkgs/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.36";
   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-n7dCr85TeBLxdrD1ZAA7PGJd9+3+xFJ8gjRU/JOFysY=";
   };
 
-  nativeBuildInputs = [ setuptools ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "--cov --cov-report html --cov-fail-under 95" ""
+  '';
+
+  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/nixpkgs/pkgs/development/python-modules/pynvml/default.nix b/nixpkgs/pkgs/development/python-modules/pynvml/default.nix
index f73f5bd7d56d..f84a8e0370c4 100644
--- a/nixpkgs/pkgs/development/python-modules/pynvml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pynvml/default.nix
@@ -6,6 +6,7 @@
 , addOpenGLRunpath
 , setuptools
 , pytestCheckHook
+, versioneer
 }:
 
 buildPythonPackage rec {
@@ -28,8 +29,14 @@ buildPythonPackage rec {
     })
   ];
 
+  # unvendor versioneer
+  postPatch = ''
+    rm versioneer.py
+  '';
+
   nativeBuildInputs = [
     setuptools
+    versioneer
   ];
 
   pythonImportsCheck = [ "pynvml" "pynvml.smi" ];
diff --git a/nixpkgs/pkgs/development/python-modules/pynws/default.nix b/nixpkgs/pkgs/development/python-modules/pynws/default.nix
index 5c3b5c7c49a2..c99595ee2570 100644
--- a/nixpkgs/pkgs/development/python-modules/pynws/default.nix
+++ b/nixpkgs/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,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
+  tenacity,
 }:
 
 buildPythonPackage rec {
   pname = "pynws";
-  version = "1.6.0";
-  format = "setuptools";
-  disabled = pythonOlder "3.6";
+  version = "1.8.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "MatthewFlamm";
-    repo = pname;
+    repo = "pynws";
     rev = "refs/tags/v${version}";
-    hash = "sha256-x56kfnmdVV0Fc7XSI60rrtEl4k3uzpIdZxTofUbkUHU=";
+    hash = "sha256-gC5IOW5sejXigBKfxLst8MwU/IkqSQrMZhmd4eza++s=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
     aiohttp
     metar
   ];
 
+  optional-dependencies.retry = [ tenacity ];
+
   nativeCheckInputs = [
     freezegun
     pytest-aiohttp
     pytest-asyncio
     pytest-cov
     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/nixpkgs/pkgs/development/python-modules/pyomo/default.nix b/nixpkgs/pkgs/development/python-modules/pyomo/default.nix
index 35ab0ecec509..b96dcac4fd35 100644
--- a/nixpkgs/pkgs/development/python-modules/pyomo/default.nix
+++ b/nixpkgs/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.7.2";
+  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-v3KVb9KZPbUlpRySzJV8dmApScKT06aJc8SULCHcnPI=";
   };
 
-  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; [ ];
+    mainProgram = "pyomo";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pyopenssl/default.nix b/nixpkgs/pkgs/development/python-modules/pyopenssl/default.nix
index 31e9e810c9ed..e59a9a4b43f7 100644
--- a/nixpkgs/pkgs/development/python-modules/pyopenssl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyopenssl/default.nix
@@ -9,18 +9,18 @@
 , pretend
 , sphinxHook
 , sphinx-rtd-theme
-, flaky
+, 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 = [
@@ -46,8 +46,8 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    flaky
     pretend
+    pytest-rerunfailures
     pytestCheckHook
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/pypass/default.nix b/nixpkgs/pkgs/development/python-modules/pypass/default.nix
index 7e609cbe1ccd..b900618e4dd2 100644
--- a/nixpkgs/pkgs/development/python-modules/pypass/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pypass/default.nix
@@ -3,7 +3,6 @@
 , buildPythonPackage
 , click
 , colorama
-, enum34
 , fetchPypi
 , git
 , gnugrep
@@ -12,7 +11,6 @@
 , pbr
 , pexpect
 , pythonAtLeast
-, pythonOlder
 , substituteAll
 , tree
 , xclip
@@ -53,7 +51,7 @@ buildPythonPackage rec {
     click
     colorama
     pexpect
-  ] ++ lib.optional (pythonOlder "3.4") enum34;
+  ];
 
   nativeCheckInputs = [ nose ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/pyphen/default.nix b/nixpkgs/pkgs/development/python-modules/pyphen/default.nix
index 15eb6342988f..6d6830e42478 100644
--- a/nixpkgs/pkgs/development/python-modules/pyphen/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyphen/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "pyphen";
-  version = "0.14.0";
+  version = "0.15.0";
   format = "pyproject";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-WWyLO+HBpwQRul9lF9nM/jCDx1iuK5SkXycHNG2OZvo=";
+    hash = "sha256-pDBiPeysU9w2kSQSUyY8uja53XpE/9JoC3Bq82jNovI=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pypng/default.nix b/nixpkgs/pkgs/development/python-modules/pypng/default.nix
index c79ec4f92a0e..71882ee1f2eb 100644
--- a/nixpkgs/pkgs/development/python-modules/pypng/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pypng/default.nix
@@ -1,27 +1,38 @@
 { lib
 , buildPythonPackage
-, fetchFromGitHub
+, 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
   ];
 
-  pythonImportsCheck = [ "png" ];
+  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
+  ];
+
+  # allow tests to use the binaries produced by this package
+  preCheck = ''
+    export PATH="$out/bin:$PATH"
+  '';
+
+  pythonImportsCheck = [ "png" "pngsuite" ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/pypng/setup-cfg-pngsuite.patch b/nixpkgs/pkgs/development/python-modules/pypng/setup-cfg-pngsuite.patch
new file mode 100644
index 000000000000..085aa47f7f46
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/pyproject-metadata/default.nix b/nixpkgs/pkgs/development/python-modules/pyproject-metadata/default.nix
index e5f5e157a52d..f0bdb9379ec8 100644
--- a/nixpkgs/pkgs/development/python-modules/pyproject-metadata/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyproject-metadata/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, flit-core
 , packaging
 , pytestCheckHook
 , pythonOlder
@@ -11,22 +12,22 @@
 
 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 = [
+  dependencies = [
     packaging
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/pyqt-builder/default.nix b/nixpkgs/pkgs/development/python-modules/pyqt-builder/default.nix
index 1bf96713a4fe..5bd7cca6189e 100644
--- a/nixpkgs/pkgs/development/python-modules/pyqt-builder/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyqt-builder/default.nix
@@ -3,23 +3,25 @@
 , fetchPypi
 , packaging
 , setuptools
+, setuptools-scm
 , sip
 , wheel
 }:
 
 buildPythonPackage rec {
   pname = "pyqt-builder";
-  version = "1.15.4";
+  version = "1.16.0";
   format = "pyproject";
 
   src = fetchPypi {
     pname = "PyQt-builder";
     inherit version;
-    hash = "sha256-OfjHXbF9nOF8trvz3xZQtc68HqTlvXOEPSHMlmErKuE=";
+    hash = "sha256-R7vSz6VDACAQj59AMB4WbL6pi27z5TlTNQvdTGsxqxg=";
   };
 
   nativeBuildInputs = [
     setuptools
+    setuptools-scm
     wheel
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/pyqtgraph/default.nix b/nixpkgs/pkgs/development/python-modules/pyqtgraph/default.nix
index e3e96571b1e8..f09ed4fa0cb7 100644
--- a/nixpkgs/pkgs/development/python-modules/pyqtgraph/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyqtgraph/default.nix
@@ -11,6 +11,7 @@
 , freefont_ttf
 , makeFontsConf
 , setuptools
+, python
 }:
 
 let
@@ -20,14 +21,14 @@ let
 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 = [
@@ -70,6 +71,7 @@ buildPythonPackage rec {
     homepage = "https://www.pyqtgraph.org/";
     changelog = "https://github.com/pyqtgraph/pyqtgraph/blob/master/CHANGELOG";
     license = licenses.mit;
+    broken = lib.versionAtLeast python.version "3.12";
     platforms = platforms.unix;
     maintainers = with maintainers; [ koral ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/pyrad/default.nix b/nixpkgs/pkgs/development/python-modules/pyrad/default.nix
index 8a7074888716..9e2cb672d95a 100644
--- a/nixpkgs/pkgs/development/python-modules/pyrad/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/pyrainbird/default.nix b/nixpkgs/pkgs/development/python-modules/pyrainbird/default.nix
index bca013babd9e..131cf9f551de 100644
--- a/nixpkgs/pkgs/development/python-modules/pyrainbird/default.nix
+++ b/nixpkgs/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.1";
   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-kRPRyEt31SJpNRXcTshGByKAfPzEj+CDNpEQp4Klgks=";
   };
 
   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/nixpkgs/pkgs/development/python-modules/pyramid-beaker/default.nix b/nixpkgs/pkgs/development/python-modules/pyramid-beaker/default.nix
index aad88af5f16a..a49e01a378f1 100644
--- a/nixpkgs/pkgs/development/python-modules/pyramid-beaker/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyramid-beaker/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "pyramid-beaker";
-  version = "0.8";
+  version = "0.9";
   format = "setuptools";
 
   src = fetchPypi {
     pname = "pyramid_beaker";
     inherit version;
-    sha256 = "0hflx3qkcdml1mwpq53sz46s7jickpfn0zy0ns2c7j445j66bp3p";
+    sha256 = "sha256-zMUT60z7W0Flfym25rKMor17O/n9qRMGoQKa7pLRz6U=";
   };
 
   checkPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pyrisco/default.nix b/nixpkgs/pkgs/development/python-modules/pyrisco/default.nix
index ee84881ff5f9..129d5935fb35 100644
--- a/nixpkgs/pkgs/development/python-modules/pyrisco/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyrisco/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "pyrisco";
-  version = "0.6.1";
+  version = "0.6.2";
   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-sksM84BvBVfegYtRo1NNRbDvqNCr/V4K2Ol9X2Il8D0=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyscard/default.nix b/nixpkgs/pkgs/development/python-modules/pyscard/default.nix
index 5fa9e60ae5c6..3fd9d3c2fbd4 100644
--- a/nixpkgs/pkgs/development/python-modules/pyscard/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyscard/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, setuptools
-, pkg-config
-, swig
-, pcsclite
-, PCSC
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  PCSC,
+  pcsclite,
+  pkg-config,
+  pytestCheckHook,
+  setuptools,
+  stdenv,
+  swig,
 }:
 
 let
@@ -16,8 +17,8 @@ let
 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/nixpkgs/pkgs/development/python-modules/pyscss/default.nix b/nixpkgs/pkgs/development/python-modules/pyscss/default.nix
index 912b4acc14e9..624217eba534 100644
--- a/nixpkgs/pkgs/development/python-modules/pyscss/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyscss/default.nix
@@ -3,9 +3,6 @@
 , fetchFromGitHub
 , pytestCheckHook
 , six
-, enum34
-, pathlib
-, pythonOlder
 }:
 
 buildPythonPackage rec {
@@ -21,8 +18,7 @@ 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
diff --git a/nixpkgs/pkgs/development/python-modules/pysendfile/default.nix b/nixpkgs/pkgs/development/python-modules/pysendfile/default.nix
index af3c07cb851c..0edd04ae331a 100644
--- a/nixpkgs/pkgs/development/python-modules/pysendfile/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysendfile/default.nix
@@ -1,31 +1,37 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, python
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pysendfile";
   version = "2.0.1";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "05qf0m32isflln1zjgxlpw0wf469lj86vdwwqyizp1h94x5l22ji";
+    hash = "sha256-UQpBSycJhvujx5y3bZCkyRDHAb+0P/mDpdTpKEYFDhc=";
   };
 
-  checkPhase = ''
-    # this test takes too long
-    sed -i 's/test_big_file/noop/' test/test_sendfile.py
-    ${python.executable} test/test_sendfile.py
-  '';
+  build-system = [ setuptools ];
+
+  # Tests depend on asynchat and asyncore
+  doCheck = false;
+
+  pythonImportsCheck = [ "sendfile" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
-    homepage = "https://github.com/giampaolo/pysendfile";
     description = "A 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;
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pyserial/default.nix b/nixpkgs/pkgs/development/python-modules/pyserial/default.nix
index a515c5acfcd1..ea51736d6dd9 100644
--- a/nixpkgs/pkgs/development/python-modules/pyserial/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyserial/default.nix
@@ -3,8 +3,6 @@
 , buildPythonPackage
 , fetchPypi
 , unittestCheckHook
-, pythonOlder
-, isPy3k
 }:
 
 buildPythonPackage rec {
@@ -12,9 +10,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=";
diff --git a/nixpkgs/pkgs/development/python-modules/pysigma-backend-insightidr/default.nix b/nixpkgs/pkgs/development/python-modules/pysigma-backend-insightidr/default.nix
index 1fef60d8acf5..c10bf0108761 100644
--- a/nixpkgs/pkgs/development/python-modules/pysigma-backend-insightidr/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysigma-backend-insightidr/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "pysigma-backend-insightidr";
-  version = "0.2.2";
+  version = "0.2.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "SigmaHQ";
     repo = "pySigma-backend-insightidr";
     rev = "refs/tags/v${version}";
-    hash = "sha256-B42MADteF0+GC/CPJPLaTGdGcQjC8KEsK9u3tBmtObg=";
+    hash = "sha256-wQMnnJ0KU+53MS3PIBkwIhUiyUdCrDbdUT6upk2Pp/8=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pysigma-backend-opensearch/default.nix b/nixpkgs/pkgs/development/python-modules/pysigma-backend-opensearch/default.nix
index 666816669929..5716a6ebd79e 100644
--- a/nixpkgs/pkgs/development/python-modules/pysigma-backend-opensearch/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysigma-backend-opensearch/default.nix
@@ -1,18 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pysigma
-, pysigma-backend-elasticsearch
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pysigma,
+  pysigma-backend-elasticsearch,
+  pytestCheckHook,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "pysigma-backend-opensearch";
-  version = "1.0.1";
+  version = "1.0.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,7 +22,7 @@ buildPythonPackage rec {
     owner = "SigmaHQ";
     repo = "pySigma-backend-opensearch";
     rev = "refs/tags/v${version}";
-    hash = "sha256-g3kGaNq07yMu3mnRDeZB3Ck8wwzK3HcOIzkl36cNOs8=";
+    hash = "sha256-VEMt9CKbhPRj1182WcLOqF9JOEzorrz9Yyqp0+FAA88=";
   };
 
   postPatch = ''
@@ -29,16 +30,13 @@ 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 = [
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
+
+  dependencies = [
     pysigma
     pysigma-backend-elasticsearch
   ];
@@ -48,9 +46,7 @@ buildPythonPackage rec {
     requests
   ];
 
-  pythonImportsCheck = [
-    "sigma.backends.opensearch"
-  ];
+  pythonImportsCheck = [ "sigma.backends.opensearch" ];
 
   disabledTests = [
     # Tests requires network access
diff --git a/nixpkgs/pkgs/development/python-modules/pysimplegui/default.nix b/nixpkgs/pkgs/development/python-modules/pysimplegui/default.nix
index 58deefb4f3d3..71234522f9fb 100644
--- a/nixpkgs/pkgs/development/python-modules/pysimplegui/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysimplegui/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "pysimplegui";
-  version = "5.0.3";
+  version = "5.0.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -15,7 +15,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "PySimpleGUI";
     inherit version;
-    hash = "sha256-bnjPVGMVfma/tn8oCg6FLMI1W+9rtHMKNdarbNg61GM=";
+    hash = "sha256-pThG6BBWxy98REUae91yBZDKK8Q1Zc1PHpoW7nhdmAw=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pyslurm/default.nix b/nixpkgs/pkgs/development/python-modules/pyslurm/default.nix
index b910da5b69e2..f65aae69cded 100644
--- a/nixpkgs/pkgs/development/python-modules/pyslurm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyslurm/default.nix
@@ -1,8 +1,8 @@
 { lib
 , pythonOlder
 , fetchFromGitHub
-, fetchpatch
 , buildPythonPackage
+, setuptools
 , cython
 , slurm
 }:
@@ -10,7 +10,7 @@
 buildPythonPackage rec {
   pname = "pyslurm";
   version = "23.11.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
@@ -21,15 +21,16 @@ 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 ];
 
-  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/nixpkgs/pkgs/development/python-modules/pysqlcipher3/default.nix b/nixpkgs/pkgs/development/python-modules/pysqlcipher3/default.nix
index 1b573628edda..1bfd129cf21e 100644
--- a/nixpkgs/pkgs/development/python-modules/pysqlcipher3/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysqlcipher3/default.nix
@@ -1,12 +1,10 @@
-{ 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=";
diff --git a/nixpkgs/pkgs/development/python-modules/pysqlitecipher/default.nix b/nixpkgs/pkgs/development/python-modules/pysqlitecipher/default.nix
index 6eaa1d13eb7d..34f474c50a32 100644
--- a/nixpkgs/pkgs/development/python-modules/pysqlitecipher/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysqlitecipher/default.nix
@@ -31,7 +31,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/nixpkgs/pkgs/development/python-modules/pystatgrab/default.nix b/nixpkgs/pkgs/development/python-modules/pystatgrab/default.nix
index 9ba3fb7b3785..574cc349d5de 100644
--- a/nixpkgs/pkgs/development/python-modules/pystatgrab/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pystatgrab/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , buildPythonPackage
 , cython
 , fetchFromGitHub
@@ -8,6 +9,7 @@
 , setuptools
 , unittestCheckHook
 , wheel
+, darwin
 }:
 
 buildPythonPackage rec {
@@ -33,7 +35,9 @@ buildPythonPackage rec {
 
   buildInputs = [
     libstatgrab
-  ];
+  ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
+    IOKit
+  ]);
 
   nativeCheckInputs = [
     unittestCheckHook
diff --git a/nixpkgs/pkgs/development/python-modules/pystemd/default.nix b/nixpkgs/pkgs/development/python-modules/pystemd/default.nix
index 44251a333ed9..57db690b04cb 100644
--- a/nixpkgs/pkgs/development/python-modules/pystemd/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pystemd/default.nix
@@ -1,7 +1,6 @@
 { stdenv
 , buildPythonPackage
 , lib
-, python
 , fetchPypi
 , systemd
 , lxml
@@ -19,8 +18,6 @@ buildPythonPackage rec {
     hash = "sha256-Tc+ksTpVaFxJ09F8EGMeyhjDN3D2Yxb47yM3uJUcwUQ=";
   };
 
-  disabled = python.pythonOlder "3.4";
-
   buildInputs = [ systemd ];
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/nixpkgs/pkgs/development/python-modules/pytado/default.nix b/nixpkgs/pkgs/development/python-modules/pytado/default.nix
index 8a9a3f4cf2fa..5d84a47702b0 100644
--- a/nixpkgs/pkgs/development/python-modules/pytado/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytado/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "pytado";
-  version = "0.17.5";
+  version = "0.17.6";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "wmalgadey";
     repo = "PyTado";
     rev = "refs/tags/${version}";
-    hash = "sha256-FjdqZc4Zt2sLYJpnD/MAzr8Y9lGHteHB5psQqheS84I=";
+    hash = "sha256-KcYxUKQuO7TLS4YPg2mrBjP+DMnvZeJokGzwmeM/CvE=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pytapo/default.nix b/nixpkgs/pkgs/development/python-modules/pytapo/default.nix
index d369ace859f6..f61e7089f2d2 100644
--- a/nixpkgs/pkgs/development/python-modules/pytapo/default.nix
+++ b/nixpkgs/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.21";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Zm/ll6vOFW05euRgJN+SghVmMkSGQc9CVZkRu3h6AQQ=";
+    hash = "sha256-rc9XhV99vzgoUF5ERFmJHHB9GMwq5Y44CJKg+g5tjOo=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     pycryptodome
     requests
     rtp
     urllib3
   ];
 
-  pythonImportsCheck = [
-    "pytapo"
-  ];
+  pythonImportsCheck = [ "pytapo" ];
 
   # Tests require actual hardware
   doCheck = false;
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-ansible/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-ansible/default.nix
index b73ae05a8cce..4e1a0c1c4153 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-ansible/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-ansible/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "pytest-ansible";
-  version = "24.1.2";
+  version = "24.1.3";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "ansible";
     repo = "pytest-ansible";
     rev = "refs/tags/v${version}";
-    hash = "sha256-NtGk+azpSZZm9PUf6Q1Qipo/zaUH+bed7k3oFnQyKjw=";
+    hash = "sha256-pQNm7Q9NAc/jLlR6f0132tpXyBoQaKpm7JoEgqOJL8U=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-fixture-config/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-fixture-config/default.nix
index 31ab985dbff2..5be97cd7471c 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-fixture-config/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-fixture-config/default.nix
@@ -1,17 +1,30 @@
-{ lib, buildPythonPackage, fetchPypi
-, setuptools-git, pytest }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  setuptools-git,
+  pytest,
+}:
 
 buildPythonPackage rec {
   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 ];
+  sourceRoot = "${src.name}/pytest-fixture-config";
+
+  nativeBuildInputs = [
+    setuptools
+    setuptools-git
+  ];
 
   buildInputs = [ pytest ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-markdown-docs/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-markdown-docs/default.nix
new file mode 100644
index 000000000000..46dcd7d94043
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-markdown-docs/default.nix
@@ -0,0 +1,48 @@
+{ 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/nixpkgs/pkgs/development/python-modules/pytest-mock/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-mock/default.nix
index f956a62e1a5a..966304cdc83d 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-mock/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-mock/default.nix
@@ -12,14 +12,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-mpl/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-mpl/default.nix
index f0ea49d1b767..2399379fdb24 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-mpl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-mpl/default.nix
@@ -5,7 +5,7 @@
 , pytest
 , jinja2
 , matplotlib
-, nose
+, pynose
 , pillow
 , pytestCheckHook
 }:
@@ -31,7 +31,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     jinja2
     matplotlib
-    nose
+    pynose
     pillow
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-mypy/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-mypy/default.nix
index bfe9fb613e24..84d12cfd825f 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-mypy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-mypy/default.nix
@@ -42,6 +42,6 @@ buildPythonPackage rec {
     description = "Mypy static type checker plugin for Pytest";
     homepage = "https://github.com/dbader/pytest-mypy";
     license = licenses.mit;
-    maintainers = [ ];
+    maintainers = with lib.maintainers; [ sigmanificient ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-order/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-order/default.nix
index 389ce90eddce..ebb7bbe09d43 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-order/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-order/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "pytest-order";
-  version = "1.2.0";
+  version = "1.2.1";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-lE+GttRBqnsdqA+AHGq2W4S766Ry0KehLrQ7omZQEBo=";
+    hash = "sha256-RFG9iCG6T6IQlFWi/MiCr2DvjlPgnSRNZ2dL4I9W6sM=";
   };
 
   buildInputs = [ pytest ];
@@ -27,10 +27,12 @@ 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/nixpkgs/pkgs/development/python-modules/pytest-playwright/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-playwright/default.nix
index df1045a19955..4c52a882988d 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-playwright/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-playwright/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "pytest-playwright";
-  version = "0.4.4";
+  version = "0.5.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "microsoft";
     repo = "playwright-pytest";
     rev = "refs/tags/v${version}";
-    hash = "sha256-jCK2i27wRGsv65zfzW+Ef72HNQd4Qu/Mw3HX66ZMQ9Y=";
+    hash = "sha256-HS0Qpr5R4dAoXe0bpPGU7JABB7CmwugReRD75XeJ8l4=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-postgresql/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-postgresql/default.nix
index 6eed5ef6ad2c..b5804dcf4977 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-postgresql/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-postgresql/default.nix
@@ -13,8 +13,8 @@
 
 buildPythonPackage rec {
   pname = "pytest-postgresql";
-  version = "5.0.0";
-  format = "pyproject";
+  version = "6.0.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -22,13 +22,13 @@ 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 "--cov" ""  \
+      --replace-fail "--max-worker-restart=0" ""
     sed -i 's#/usr/lib/postgresql/.*/bin/pg_ctl#${postgresql}/bin/pg_ctl#' pytest_postgresql/plugin.py
   '';
 
@@ -54,6 +54,7 @@ buildPythonPackage rec {
     # 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"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-server-fixtures/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-server-fixtures/default.nix
index 29f26251b022..1466371e1af4 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-server-fixtures/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-server-fixtures/default.nix
@@ -1,26 +1,45 @@
-{ lib, buildPythonPackage, fetchPypi
-, pytest, pytest-shutil, pytest-fixture-config, psutil
-, requests, future, retry }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  future,
+  psutil,
+  pytest,
+  pytest-shutil,
+  pytest-fixture-config,
+  requests,
+  retry,
+  six,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "pytest-server-fixtures";
-  version = "1.7.1";
-  format = "setuptools";
+  inherit (pytest-fixture-config) version src;
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-xecz0gqNDnc8pRPjYOS6JkeVLqlCj6K9BVFsYoHqPOc=";
-  };
+  sourceRoot = "${src.name}/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; [ ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-shutil/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-shutil/default.nix
index 480c15b87c36..d9c80a93510e 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-shutil/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-shutil/default.nix
@@ -1,13 +1,15 @@
 { lib
 , isPyPy
 , buildPythonPackage
-, fetchPypi
+, pytest-fixture-config
+, fetchpatch
 
-# build
-, pytest
+# build-time
+, setuptools
+, setuptools-git
 
 # runtime
-, setuptools-git
+, pytest
 , mock
 , path
 , execnet
@@ -15,32 +17,34 @@
 , six
 
 # tests
-, cmdline
 , pytestCheckHook
  }:
 
 buildPythonPackage rec {
   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=";
-  };
+  sourceRoot = "${src.name}/pytest-shutil";
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "contextlib2" 'contextlib2;python_version<"3"' \
-      --replace "path.py" "path"
-  '';
-
-  buildInputs = [
-    pytest
+  # 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-L8tXoQ9q8o6aP3TpJY/sUVVbUd/ebw0h6de6dBj1WNY=";
+      stripLen = 1;
+    })
   ];
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-git
+  ];
+
+  buildInputs = [ pytest ];
+
+  dependencies = [
     mock
     path
     execnet
@@ -49,7 +53,6 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    cmdline
     pytestCheckHook
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-virtualenv/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-virtualenv/default.nix
index 408430d5127c..494209517eb3 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-virtualenv/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-virtualenv/default.nix
@@ -1,21 +1,43 @@
-{ 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 {
   pname = "pytest-virtualenv";
-  version = "1.7.0";
-  format = "setuptools";
+  inherit (pytest-fixture-config) version src;
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "03w2zz3crblj1p6i8nq17946hbn3zqp9z7cfnifw47hi4a4fww12";
-  };
+  sourceRoot = "${src.name}/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.";
diff --git a/nixpkgs/pkgs/development/python-modules/python-creole/default.nix b/nixpkgs/pkgs/development/python-modules/python-creole/default.nix
index 7f27466fa2be..0291c0473f42 100644
--- a/nixpkgs/pkgs/development/python-modules/python-creole/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-creole/default.nix
@@ -86,6 +86,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/nixpkgs/pkgs/development/python-modules/python-dbusmock/default.nix b/nixpkgs/pkgs/development/python-modules/python-dbusmock/default.nix
index 2a676f72832e..cec0275dfdbe 100644
--- a/nixpkgs/pkgs/development/python-modules/python-dbusmock/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-dbusmock/default.nix
@@ -3,6 +3,7 @@
 , fetchFromGitHub
 , nose
 , dbus
+, gobject-introspection
 , dbus-python
 , pygobject3
 , bluez
@@ -40,6 +41,7 @@ in buildPythonPackage rec {
 
   nativeCheckInputs = [
     dbus
+    gobject-introspection
     pygobject3
     bluez
     pbap-client
diff --git a/nixpkgs/pkgs/development/python-modules/python-ecobee-api/default.nix b/nixpkgs/pkgs/development/python-modules/python-ecobee-api/default.nix
index 4d12ee0c99d7..ad51ef12d5c9 100644
--- a/nixpkgs/pkgs/development/python-modules/python-ecobee-api/default.nix
+++ b/nixpkgs/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.18";
+  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-WBVHlA7cAQGCFRNSANX6PqPQYMRw74GEAlTFwSBxVQU=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/python-glanceclient/default.nix b/nixpkgs/pkgs/development/python-modules/python-glanceclient/default.nix
index 9fd1f21a083d..0130c690ef4c 100644
--- a/nixpkgs/pkgs/development/python-modules/python-glanceclient/default.nix
+++ b/nixpkgs/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.6.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-gJm4TzxtIjvkpOlbN82MPbY0JmDdiwlEMGGxZvTR+Po=";
   };
 
   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/nixpkgs/pkgs/development/python-modules/python-homeassistant-analytics/default.nix b/nixpkgs/pkgs/development/python-modules/python-homeassistant-analytics/default.nix
index 633e8baf5853..4af23c95cc61 100644
--- a/nixpkgs/pkgs/development/python-modules/python-homeassistant-analytics/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-homeassistant-analytics/default.nix
@@ -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/nixpkgs/pkgs/development/python-modules/python-hosts/default.nix b/nixpkgs/pkgs/development/python-modules/python-hosts/default.nix
index 7452abb860c3..c866a5fc72d2 100644
--- a/nixpkgs/pkgs/development/python-modules/python-hosts/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-hosts/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "python-hosts";
-  version = "1.0.5";
+  version = "1.0.6";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-xabbGnvzXNiE0koQVq9dmEib5Cv7kg1JjpZAyb7IZM0=";
+    hash = "sha256-LfWfBzJ3UyArcHxrIUDsIa8pIr1WkUikf6F6v+IVLG4=";
   };
 
   # win_inet_pton is required for Windows support
diff --git a/nixpkgs/pkgs/development/python-modules/python-ironicclient/default.nix b/nixpkgs/pkgs/development/python-modules/python-ironicclient/default.nix
index 7e9a3b4ee7c2..feb8849b21d3 100644
--- a/nixpkgs/pkgs/development/python-modules/python-ironicclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-ironicclient/default.nix
@@ -20,12 +20,12 @@
 
 buildPythonPackage rec {
   pname = "python-ironicclient";
-  version = "5.5.0";
+  version = "5.6.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-JlO487QSPsBJZqPYRhsQYFA7noIN2q/stH4eZXAFLnY=";
+    hash = "sha256-zWlfy+Pfu0l7vBQnLOIP9vaXzx+i35k4oQqPUtLg3cE=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/python-jose/default.nix b/nixpkgs/pkgs/development/python-modules/python-jose/default.nix
index 6e3f406fe5a3..9739e5bf7f65 100644
--- a/nixpkgs/pkgs/development/python-modules/python-jose/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-jose/default.nix
@@ -64,7 +64,12 @@ buildPythonPackage rec {
 
   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}";
diff --git a/nixpkgs/pkgs/development/python-modules/python-jsonrpc-server/default.nix b/nixpkgs/pkgs/development/python-modules/python-jsonrpc-server/default.nix
index 2cb13c747742..4a659c1e26a5 100644
--- a/nixpkgs/pkgs/development/python-modules/python-jsonrpc-server/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-jsonrpc-server/default.nix
@@ -1,6 +1,6 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder
+{ lib, buildPythonPackage, fetchFromGitHub
 , pytestCheckHook, mock, pytest-cov, coverage
-, future, futures ? null, ujson}:
+, future, ujson}:
 
 buildPythonPackage rec {
   pname = "python-jsonrpc-server";
@@ -22,8 +22,7 @@ buildPythonPackage rec {
     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";
diff --git a/nixpkgs/pkgs/development/python-modules/python-keycloak/default.nix b/nixpkgs/pkgs/development/python-modules/python-keycloak/default.nix
index a4adbf787aac..9150b1a24036 100644
--- a/nixpkgs/pkgs/development/python-modules/python-keycloak/default.nix
+++ b/nixpkgs/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,13 +42,12 @@ 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; [ ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/python-ldap/default.nix b/nixpkgs/pkgs/development/python-modules/python-ldap/default.nix
index 5bc9f3fecfcc..c54395cabe7d 100644
--- a/nixpkgs/pkgs/development/python-modules/python-ldap/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-ldap/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonAtLeast,
+  pythonOlder,
 
-# build-system
-, setuptools
+  # build-system
+  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 {
@@ -24,7 +26,7 @@ buildPythonPackage rec {
   version = "3.4.4";
   pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.6" || pythonAtLeast "3.12"; # requires distutils
 
   src = fetchFromGitHub {
     owner = "python-ldap";
@@ -33,23 +35,19 @@ buildPythonPackage rec {
     hash = "sha256-v1cWoRGxbvvFnHqnwoIfmiQQcxfaA8Bf3+M5bE5PtuU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   buildInputs = [
     openldap
     cyrus_sasl
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pyasn1
     pyasn1-modules
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     # Needed by tests to setup a mockup ldap server.
diff --git a/nixpkgs/pkgs/development/python-modules/python-manilaclient/default.nix b/nixpkgs/pkgs/development/python-modules/python-manilaclient/default.nix
index b2fbfef19f8c..61fbc746f7cc 100644
--- a/nixpkgs/pkgs/development/python-modules/python-manilaclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-manilaclient/default.nix
@@ -22,12 +22,12 @@
 
 buildPythonPackage rec {
   pname = "python-manilaclient";
-  version = "4.8.0";
+  version = "4.9.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-TwvDtbYGkDZFIsr0GgwD2R0Il7pV2GCuDw3OZXxDXso=";
+    hash = "sha256-Q7ADjuGQh5C88WqT5II+NMYLYFwTip/bzZinca/xqFY=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/python-matter-server/default.nix b/nixpkgs/pkgs/development/python-modules/python-matter-server/default.nix
index b157eba228ac..98c0efd01d0a 100644
--- a/nixpkgs/pkgs/development/python-modules/python-matter-server/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-matter-server/default.nix
@@ -55,7 +55,7 @@ in
 
 buildPythonPackage rec {
   pname = "python-matter-server";
-  version = "5.9.0";
+  version = "5.10.0";
   format = "pyproject";
 
   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-rfpGclSgCBTxlTgVqgNz3ixoldB9M+6mLmogkNDDdWs=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/python-musicpd/default.nix b/nixpkgs/pkgs/development/python-modules/python-musicpd/default.nix
index cc4ab6b722f0..c105dcea14da 100644
--- a/nixpkgs/pkgs/development/python-modules/python-musicpd/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-musicpd/default.nix
@@ -5,12 +5,12 @@
 
 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=";
+    sha256 = "sha256-/FdM0UolVqhJNpS60Q/nra1hSHKL/LiSMX7/Hcipwco=";
   };
 
   format = "setuptools";
diff --git a/nixpkgs/pkgs/development/python-modules/python-roborock/default.nix b/nixpkgs/pkgs/development/python-modules/python-roborock/default.nix
index 49ea2cc277d3..1417b78a9235 100644
--- a/nixpkgs/pkgs/development/python-modules/python-roborock/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-roborock/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "python-roborock";
-  version = "2.0.0";
+  version = "2.2.2";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = "humbertogontijo";
     repo = "python-roborock";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vtT6hsyiP1FxWo5PezcjJACknCT9JEhqSQ6C4FpU+Jg=";
+    hash = "sha256-W/42NUs3fQKCxM6hlJTmNQ7E8FevxO3XJCOYyZHQsqs=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/python-tado/default.nix b/nixpkgs/pkgs/development/python-modules/python-tado/default.nix
index a273b33a2084..6fb45f4f7282 100644
--- a/nixpkgs/pkgs/development/python-modules/python-tado/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/python-telegram-bot/default.nix b/nixpkgs/pkgs/development/python-modules/python-telegram-bot/default.nix
index adb2fc81c977..a15e31941ecc 100644
--- a/nixpkgs/pkgs/development/python-modules/python-telegram-bot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-telegram-bot/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "python-telegram-bot";
-  version = "21.1";
+  version = "21.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     owner = "python-telegram-bot";
     repo = "python-telegram-bot";
     rev = "refs/tags/v${version}";
-    hash = "sha256-s5C3f17VP5ooH78/4JQMkzuV1byi7rFPTmVr3lZliFc=";
+    hash = "sha256-BZrcYZxivrZIkHKqi+x9M4A9XE9dD//2PqzRwA3vuGU=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/python3-gnutls/default.nix b/nixpkgs/pkgs/development/python-modules/python3-gnutls/default.nix
index 72f695326d75..6adaf3c03393 100644
--- a/nixpkgs/pkgs/development/python-modules/python3-gnutls/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python3-gnutls/default.nix
@@ -1,20 +1,22 @@
 { lib, fetchFromGitHub, substituteAll, buildPythonPackage, isPy3k, gnutls
-, twisted, pyopenssl, service-identity }:
+, 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=";
   };
 
+  nativeBuildInputs = [ setuptools ];
+
   propagatedBuildInputs = [ twisted pyopenssl service-identity ];
 
   patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/pytools/default.nix b/nixpkgs/pkgs/development/python-modules/pytools/default.nix
index 7689e40c5b8e..ed4ac27bf63a 100644
--- a/nixpkgs/pkgs/development/python-modules/pytools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytools/default.nix
@@ -11,13 +11,13 @@
 
 buildPythonPackage rec {
   pname = "pytools";
-  version = "2024.1.1";
+  version = "2024.1.2";
   format = "setuptools";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-LIjt+pkMjjJRZ8N2WfseEKPBEz3691K719hFZAK43P8=";
+    hash = "sha256-CBhx5FFQXEuYbrr6aK7qv9x76z+qG6pQ9yauviHh0Fc=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pytorch-lightning/default.nix b/nixpkgs/pkgs/development/python-modules/pytorch-lightning/default.nix
index f7a50ce337fc..780b2be18ca7 100644
--- a/nixpkgs/pkgs/development/python-modules/pytorch-lightning/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytorch-lightning/default.nix
@@ -20,14 +20,14 @@
 
 buildPythonPackage rec {
   pname = "pytorch-lightning";
-  version = "2.2.1";
+  version = "2.2.4";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "Lightning-AI";
     repo = "pytorch-lightning";
     rev = "refs/tags/${version}";
-    hash = "sha256-H2gbVCvGKbeHZVlvz6SmKI8Gzw649DxcwYgfGcehsmg=";
+    hash = "sha256-IkoSID7nEPbKrhEMlo/UaMcF80HYldvndFA54DoHT+M=";
   };
 
   preConfigure = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pytransportnswv2/default.nix b/nixpkgs/pkgs/development/python-modules/pytransportnswv2/default.nix
index a2cf2afb7087..2f4bc7370976 100644
--- a/nixpkgs/pkgs/development/python-modules/pytransportnswv2/default.nix
+++ b/nixpkgs/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.3.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    pname = "PyTransportNSWv2";
-    inherit version;
-    sha256 = "129rrqckqgfrwdx0b83dqphcv55cxs5i8jl1ascia7rpzjn109ah";
+    inherit pname version;
+    hash = "sha256-9bpIu+Uc6eFSEGeEfpVwfrhvLekR8qOd571qMnLTpVg=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/pytrydan/default.nix b/nixpkgs/pkgs/development/python-modules/pytrydan/default.nix
index 5a191bf800fe..6ee8162b4ba0 100644
--- a/nixpkgs/pkgs/development/python-modules/pytrydan/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytrydan/default.nix
@@ -1,22 +1,23 @@
-{ 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,
+  pytestCheckHook,
+  pythonOlder,
+  respx,
+  rich,
+  syrupy,
+  tenacity,
+  typer,
 }:
 
 buildPythonPackage rec {
   pname = "pytrydan";
-  version = "0.4.0";
+  version = "0.6.1";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -25,19 +26,17 @@ buildPythonPackage rec {
     owner = "dgomes";
     repo = "pytrydan";
     rev = "refs/tags/v${version}";
-    hash = "sha256-9PyRICtZ+0Ezinu28oFgFOSnOyCmD7zZbdc/chN+sCo=";
+    hash = "sha256-5sTHfxNV4JEonGke8ZZ/pXoLA15iCuJ/iSW1XwFMltg=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace " --cov=pytrydan --cov-report=term-missing:skip-covered" ""
+      --replace-fail " --cov=pytrydan --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     httpx
     orjson
     rich
@@ -52,16 +51,14 @@ buildPythonPackage rec {
     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/nixpkgs/pkgs/development/python-modules/pyvex/default.nix b/nixpkgs/pkgs/development/python-modules/pyvex/default.nix
index a3d62043d901..d3765866dc61 100644
--- a/nixpkgs/pkgs/development/python-modules/pyvex/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyvex/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "pyvex";
-  version = "9.2.101";
+  version = "9.2.102";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zI86NYe0b9ppm9Zv6+zfB3UclhIm1TTqcC9vrBn3NR8=";
+    hash = "sha256-P16jsBmFkuzMHcVTvGEK7/SzIkVpFJsUlxFeHCHivig=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/pyvista/default.nix b/nixpkgs/pkgs/development/python-modules/pyvista/default.nix
index e0bfb1246f52..c31819a693cb 100644
--- a/nixpkgs/pkgs/development/python-modules/pyvista/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyvista/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "pyvista";
-  version = "0.43.6";
+  version = "0.43.8";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = pname;
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-EhhnX7r8yHynEVahMSB6LxCAquQcUF4cI0S4oW+IZ/Y=";
+    hash = "sha256-ZAj0aIinaVet/zK8yF1LrB63hrb2dTmTROA8uNl0yug=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pywavelets/default.nix b/nixpkgs/pkgs/development/python-modules/pywavelets/default.nix
index a4d8117fc372..af598a1439ca 100644
--- a/nixpkgs/pkgs/development/python-modules/pywavelets/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pywavelets/default.nix
@@ -1,34 +1,44 @@
 { lib
 , buildPythonPackage
-, fetchPypi
-, isPy27
+, fetchFromGitHub
+, pythonOlder
+, meson-python
 , cython
-, nose
-, pytest
+, 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",' ""
+  '';
+
+  build-system = [
+    meson-python
+    cython
+    numpy
+  ];
 
-  buildInputs = [ cython ];
+  dependencies = [ numpy ];
 
-  propagatedBuildInputs = [ numpy ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  # 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
+  preCheck = ''
+    cd $out
   '';
 
   # ensure compiled modules are present
@@ -43,6 +53,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/nixpkgs/pkgs/development/python-modules/pywbem/default.nix b/nixpkgs/pkgs/development/python-modules/pywbem/default.nix
index bba152dd4367..4f06262c59d2 100644
--- a/nixpkgs/pkgs/development/python-modules/pywbem/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pywbem/default.nix
@@ -24,14 +24,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/pywlroots/default.nix b/nixpkgs/pkgs/development/python-modules/pywlroots/default.nix
index ec3936457391..a3d52e1bbb6b 100644
--- a/nixpkgs/pkgs/development/python-modules/pywlroots/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pywlroots/default.nix
@@ -20,14 +20,14 @@
 
 buildPythonPackage rec {
   pname = "pywlroots";
-  version = "0.16.7";
+  version = "0.16.8";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zfjcXQCXysG+JMw00YES/GQk/yjHH9kCksb9SlZt9wo=";
+    hash = "sha256-jAkDZKAm75MlAMNuX+21ZV6kHb53zgIOJctJC2bXH1k=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyzufall/default.nix b/nixpkgs/pkgs/development/python-modules/pyzufall/default.nix
deleted file mode 100644
index 71418c1607d0..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/development/python-modules/qcs-api-client/default.nix b/nixpkgs/pkgs/development/python-modules/qcs-api-client/default.nix
index 98e3b05812f1..c884dfe01e62 100644
--- a/nixpkgs/pkgs/development/python-modules/qcs-api-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qcs-api-client/default.nix
@@ -8,6 +8,7 @@
   iso8601,
   poetry-core,
   pydantic,
+  pydantic-settings,
   pyjwt,
   pytest-asyncio,
   pytestCheckHook,
@@ -60,6 +61,7 @@ buildPythonPackage rec {
     httpx
     iso8601
     pydantic
+    pydantic-settings
     pyjwt
     python-dateutil
     retrying
diff --git a/nixpkgs/pkgs/development/python-modules/qcs-sdk-python/default.nix b/nixpkgs/pkgs/development/python-modules/qcs-sdk-python/default.nix
index 100a7874fd18..d63eb97b9faa 100644
--- a/nixpkgs/pkgs/development/python-modules/qcs-sdk-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qcs-sdk-python/default.nix
@@ -1,5 +1,6 @@
 {
   lib,
+  stdenv,
   buildPythonPackage,
   fetchFromGitHub,
   pytest-asyncio,
@@ -7,6 +8,8 @@
   pythonOlder,
   quil,
   rustPlatform,
+  darwin,
+  libiconv,
   syrupy,
 }:
 
@@ -40,6 +43,12 @@ buildPythonPackage rec {
 
   dependencies = [ quil ];
 
+  buildInputs = lib.optionals stdenv.isDarwin [
+    darwin.apple_sdk.frameworks.Security
+    darwin.apple_sdk.frameworks.SystemConfiguration
+    libiconv
+  ];
+
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
diff --git a/nixpkgs/pkgs/development/python-modules/qdldl/default.nix b/nixpkgs/pkgs/development/python-modules/qdldl/default.nix
index a5af403d4d7a..10d05be78696 100644
--- a/nixpkgs/pkgs/development/python-modules/qdldl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qdldl/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "qdldl";
-  version = "0.1.7.post1";
+  version = "0.1.7.post2";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-eY2IwW4CU2rmXHHwa2Tj+/MbdNfke8EP+YFnaGMrOmQ=";
+    hash = "sha256-SxU5pewQzHV6/XFW1960AGAHythtd0yfD9w+NEFVV9M=";
   };
 
   dontUseCmakeConfigure = true;
diff --git a/nixpkgs/pkgs/development/python-modules/qdrant-client/default.nix b/nixpkgs/pkgs/development/python-modules/qdrant-client/default.nix
index 33fdd38d4edb..0a6a476979c1 100644
--- a/nixpkgs/pkgs/development/python-modules/qdrant-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qdrant-client/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "qdrant-client";
-  version = "1.9.0";
+  version = "1.9.1";
   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-1QYL2othFA/xTgdj549MA1aVDH6jjiuL+aN2Q/supp8=";
   };
 
   build-system = [ poetry-core ];
diff --git a/nixpkgs/pkgs/development/python-modules/qrcode/default.nix b/nixpkgs/pkgs/development/python-modules/qrcode/default.nix
index b5c3d2aec6b3..3d7ad90dbaaf 100644
--- a/nixpkgs/pkgs/development/python-modules/qrcode/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qrcode/default.nix
@@ -51,6 +51,9 @@ buildPythonPackage rec {
 
   disabledTests = lib.optionals (pythonAtLeast "3.12") [
     "test_change"
+  ] ++ [
+    # Attempts to open a file which doesn't exist in sandbox
+    "test_piped"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/qreactor/default.nix b/nixpkgs/pkgs/development/python-modules/qreactor/default.nix
index e4648919d9f7..77d2c30fa32b 100644
--- a/nixpkgs/pkgs/development/python-modules/qreactor/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qreactor/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, pythonOlder
 , fetchFromGitHub
 , twisted
 , qtpy
@@ -18,8 +17,6 @@ buildPythonPackage rec {
     sha256 = "1nb5iwg0nfz86shw28a2kj5pyhd4jvvxhf73fhnfbl8scgnvjv9h";
   };
 
-  disabled = pythonOlder "3.0";
-
   propagatedBuildInputs = [
     twisted qtpy
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/qtconsole/default.nix b/nixpkgs/pkgs/development/python-modules/qtconsole/default.nix
index db6f65abdda3..43dc6ce2a114 100644
--- a/nixpkgs/pkgs/development/python-modules/qtconsole/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qtconsole/default.nix
@@ -11,22 +11,27 @@
 , pythonOlder
 , pyzmq
 , qtpy
+, setuptools
 , traitlets
 }:
 
 buildPythonPackage rec {
   pname = "qtconsole";
-  version = "5.5.1";
-  format = "setuptools";
+  version = "5.5.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-oOgGxpUduUkGKOTfgMrslmm2UUnHukD5vwM8AlpbVrw=";
+    hash = "sha256-a1+xEnSyl0Y3Bq+E3LvVySJzsfYZ5tJdCIdLCohRaYk=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     ipykernel
     ipython-genutils
     jupyter-core
diff --git a/nixpkgs/pkgs/development/python-modules/qtile/default.nix b/nixpkgs/pkgs/development/python-modules/qtile/default.nix
index 6dc9cc011943..a4d8bb91ea16 100644
--- a/nixpkgs/pkgs/development/python-modules/qtile/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qtile/default.nix
@@ -34,7 +34,7 @@
 buildPythonPackage rec {
   pname = "qtile";
   version = "0.25.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "qtile";
@@ -59,13 +59,13 @@ buildPythonPackage rec {
         --replace /usr/include/libdrm ${lib.getDev libdrm}/include/libdrm
   '';
 
-  nativeBuildInputs = [
-    pkg-config
+  build-system = [
     setuptools
     setuptools-scm
+    pkg-config
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     (cairocffi.override { withXcffib = true; })
     dbus-next
     dbus-python
@@ -102,6 +102,6 @@ buildPythonPackage rec {
     description = "A 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/nixpkgs/pkgs/development/python-modules/quantile-forest/default.nix b/nixpkgs/pkgs/development/python-modules/quantile-forest/default.nix
index 3b6bd12cd4c8..0b6d5df933b1 100644
--- a/nixpkgs/pkgs/development/python-modules/quantile-forest/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/quantile-forest/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "quantile-forest";
-  version = "1.3.4";
+  version = "1.3.5";
   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-0zlj9nks5KsgsLSflRW+4uiYlYVQsF0HMkZ3zG3if2E=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/queuelib/default.nix b/nixpkgs/pkgs/development/python-modules/queuelib/default.nix
index e9643b813d77..d2622ffbf5fb 100644
--- a/nixpkgs/pkgs/development/python-modules/queuelib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/queuelib/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "queuelib";
-  version = "1.6.2";
+  version = "1.7.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4b207267f2642a8699a1f806045c56eb7ad1a85a10c0e249884580d139c2fcd2";
+    sha256 = "sha256-KFUWIJbPAjBRCJCzVDeeocD/GdEF0xR9NJ0kM7siKwg=";
   };
 
   buildInputs = [ pytest ];
diff --git a/nixpkgs/pkgs/development/python-modules/quil/default.nix b/nixpkgs/pkgs/development/python-modules/quil/default.nix
index 41f79d79bdf3..4043f8b332fd 100644
--- a/nixpkgs/pkgs/development/python-modules/quil/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/quil/default.nix
@@ -1,5 +1,6 @@
 {
   lib,
+  stdenv,
   buildPythonPackage,
   pythonOlder,
   fetchFromGitHub,
@@ -7,6 +8,7 @@
   numpy,
   pytestCheckHook,
   syrupy,
+  libiconv
 }:
 
 buildPythonPackage rec {
@@ -40,6 +42,8 @@ buildPythonPackage rec {
     rustPlatform.maturinBuildHook
   ];
 
+  buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
+
   dependencies = [ numpy ];
 
   pythonImportsCheck = [ "numpy" ];
diff --git a/nixpkgs/pkgs/development/python-modules/raincloudy/default.nix b/nixpkgs/pkgs/development/python-modules/raincloudy/default.nix
index 3a247bc6a81e..5db3430efb3d 100644
--- a/nixpkgs/pkgs/development/python-modules/raincloudy/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/rarfile/default.nix b/nixpkgs/pkgs/development/python-modules/rarfile/default.nix
index 4f3cbc28ea77..c0c462cb4478 100644
--- a/nixpkgs/pkgs/development/python-modules/rarfile/default.nix
+++ b/nixpkgs/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 = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/readme-renderer/default.nix b/nixpkgs/pkgs/development/python-modules/readme-renderer/default.nix
index 13a8074a5690..bcc961bc18ff 100644
--- a/nixpkgs/pkgs/development/python-modules/readme-renderer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/readme-renderer/default.nix
@@ -44,17 +44,8 @@ buildPythonPackage rec {
   ++ 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 = [
@@ -64,6 +55,7 @@ buildPythonPackage rec {
   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/nixpkgs/pkgs/development/python-modules/redis-om/default.nix b/nixpkgs/pkgs/development/python-modules/redis-om/default.nix
index 1549b891636f..4e84e3ea37c4 100644
--- a/nixpkgs/pkgs/development/python-modules/redis-om/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/redis-om/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "redis-om";
-  version = "0.2.2";
+  version = "0.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     owner = "redis";
     repo = "redis-om-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-E11wpTrE+HIT+jgn1zMC8L7RGas83DAJd1R0WWHp7Jc=";
+    hash = "sha256-jwFtRnj/jhH+AKjExdOCgUfgEWweFCXVuz6F3qQRcs0=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/redis/default.nix b/nixpkgs/pkgs/development/python-modules/redis/default.nix
index d987092e48f0..9e583447e101 100644
--- a/nixpkgs/pkgs/development/python-modules/redis/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/redis/default.nix
@@ -21,14 +21,14 @@
 
 buildPythonPackage rec {
   pname = "redis";
-  version = "5.0.1";
+  version = "5.0.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-DatJXNV1MGnTvGUKDd6Kj57d4W/FaRtomlZu2lgQDQ8=";
+    hash = "sha256-SXO650RMD77WSga4dEb3k2HLfk7BU4wCLWlu16UBVYA=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/referencing/default.nix b/nixpkgs/pkgs/development/python-modules/referencing/default.nix
index 0113f23e4742..3e7063e42ecc 100644
--- a/nixpkgs/pkgs/development/python-modules/referencing/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/relatorio/default.nix b/nixpkgs/pkgs/development/python-modules/relatorio/default.nix
index 14460fb9b17b..23a3a87df727 100644
--- a/nixpkgs/pkgs/development/python-modules/relatorio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/relatorio/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "relatorio";
-  version = "0.10.1";
+  version = "0.10.2";
 
   disabled = pythonOlder "3.5";
 
@@ -19,7 +19,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a0c72302d50d5dfa433ddab191672eec1dde1c6ed26330a378b720e5a3012e23";
+    sha256 = "sha256-zgCOmcR9FWj0lpi78U0G1CKR5kyNyr541HusIrBpF/Q=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/reolink-aio/default.nix b/nixpkgs/pkgs/development/python-modules/reolink-aio/default.nix
index b1fb08c4bdf3..65746304921a 100644
--- a/nixpkgs/pkgs/development/python-modules/reolink-aio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/reolink-aio/default.nix
@@ -1,17 +1,18 @@
-{ 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.8.10";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -20,23 +21,19 @@ buildPythonPackage rec {
     owner = "starkillerOG";
     repo = "reolink_aio";
     rev = "refs/tags/${version}";
-    hash = "sha256-MUhB8A51dj+FA3+lvBrFyAWizKq5CpYwo38E1euJsHs=";
+    hash = "sha256-qawrTTLp+qFUVn5TUQ73TcPu37c0EywzJl+8oFW8L04=";
   };
 
-  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;
diff --git a/nixpkgs/pkgs/development/python-modules/reportengine/default.nix b/nixpkgs/pkgs/development/python-modules/reportengine/default.nix
index 79e1a908f7eb..3eb6cf2a869c 100644
--- a/nixpkgs/pkgs/development/python-modules/reportengine/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/reportengine/default.nix
@@ -49,5 +49,8 @@ buildPythonPackage rec {
     homepage = "https://github.com/NNPDF/reportengine/";
     license = with licenses; [ gpl2Only ];
     maintainers = with maintainers; [ veprbl ];
+    # Incompatibility with ruamel >= 0.18
+    # https://github.com/NNPDF/reportengine/issues/60
+    broken = versionAtLeast ruamel-yaml.version "0.18";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/reportlab-qrcode/default.nix b/nixpkgs/pkgs/development/python-modules/reportlab-qrcode/default.nix
new file mode 100644
index 000000000000..97d1e9d13732
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/reportlab-qrcode/default.nix
@@ -0,0 +1,49 @@
+{ 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/nixpkgs/pkgs/development/python-modules/reportlab/default.nix b/nixpkgs/pkgs/development/python-modules/reportlab/default.nix
index ef0a575789e7..2024b2835a75 100644
--- a/nixpkgs/pkgs/development/python-modules/reportlab/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/reportlab/default.nix
@@ -14,7 +14,7 @@ let
   ft = freetype.overrideAttrs (oldArgs: { dontDisableStatic = true; });
 in buildPythonPackage rec {
   pname = "reportlab";
-  version = "4.1.0";
+  version = "4.2.0";
   pyproject = true;
 
   # See https://bitbucket.org/pypy/compatibility/wiki/reportlab%20toolkit
@@ -22,7 +22,7 @@ in buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Opn69BJpEVnAaLP/AcFTB84v0s9rhgGZQ0h04AIECoQ=";
+    hash = "sha256-R0+yjWNDGl1H11yQ1YA5MFDffUkaCceHffMpGi6fbQo=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/reproject/default.nix b/nixpkgs/pkgs/development/python-modules/reproject/default.nix
index ff6e3070cf7e..940e2d0daac5 100644
--- a/nixpkgs/pkgs/development/python-modules/reproject/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/reproject/default.nix
@@ -9,7 +9,6 @@
 , fetchPypi
 , fsspec
 , numpy
-, oldest-supported-numpy
 , pytest-astropy
 , pytestCheckHook
 , pythonOlder
@@ -20,26 +19,26 @@
 
 buildPythonPackage rec {
   pname = "reproject";
-  version = "0.13.0";
+  version = "0.13.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-lL6MkKVSWmV6KPkG/9fjc2c2dFQ14i9fiJAr3VFfcuI=";
+    hash = "sha256-Y+Ne7ZUgCieWcC4zqfrqPzmr/kGUdFroGfIPKWACaPY=";
   };
 
   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,6 +64,8 @@ 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/requests-mock/default.nix b/nixpkgs/pkgs/development/python-modules/requests-mock/default.nix
index 4e72ce67364a..9273875ab688 100644
--- a/nixpkgs/pkgs/development/python-modules/requests-mock/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/requests-mock/default.nix
@@ -4,24 +4,31 @@
 , fixtures
 , purl
 , pytestCheckHook
-, python
 , requests
 , requests-futures
-, six
+, 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/nixpkgs/pkgs/development/python-modules/requirements-detector/default.nix b/nixpkgs/pkgs/development/python-modules/requirements-detector/default.nix
index aab180853d5a..164500d3e218 100644
--- a/nixpkgs/pkgs/development/python-modules/requirements-detector/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/requirements-detector/default.nix
@@ -7,7 +7,6 @@
 , semver
 , pytestCheckHook
 , pythonOlder
-, pythonRelaxDepsHook
 , toml
 }:
 
@@ -25,16 +24,11 @@ buildPythonPackage rec {
     hash = "sha256-qmrHFQRypBJOI1N6W/Dtc5ss9JGqoPhFlbqrLHcb6vc=";
   };
 
-  pythonRelaxDeps = [
-    "astroid"
-  ];
-
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     astroid
     packaging
     toml
@@ -51,10 +45,12 @@ buildPythonPackage rec {
 
   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/nixpkgs/pkgs/development/python-modules/resend/default.nix b/nixpkgs/pkgs/development/python-modules/resend/default.nix
index 5ce129dd6716..ddd38de916f8 100644
--- a/nixpkgs/pkgs/development/python-modules/resend/default.nix
+++ b/nixpkgs/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 = "1.0.2";
   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-lBeVHG3MuHtEEXPgH116yNs9pBX3kEj5Oyws2deui/o=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/rich-rst/default.nix b/nixpkgs/pkgs/development/python-modules/rich-rst/default.nix
index 5db47dfc65ea..ef101fd2fccc 100644
--- a/nixpkgs/pkgs/development/python-modules/rich-rst/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rich-rst/default.nix
@@ -1,31 +1,33 @@
-{ 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.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "wasi-master";
-    repo = pname;
+    repo = "rich-rst";
     rev = "refs/tags/v${version}";
-    hash = "sha256-jFPboZ5/T2I6EuyVM+45lrLWen8Kqf94gWXS1WDf1qU=";
+    hash = "sha256-A3SPbu1N5X55c32S8z8UPpmniJT+mdqfb1+zQEJMA5k=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [ docutils rich ];
+  dependencies = [
+    docutils
+    rich
+  ];
 
-  # Module has no tests
-  doCheck = false;
+  nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "rich_rst" ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/riscv-config/default.nix b/nixpkgs/pkgs/development/python-modules/riscv-config/default.nix
index 298772e12cc7..dbbf8f7b29d6 100644
--- a/nixpkgs/pkgs/development/python-modules/riscv-config/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/riscv-config/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "riscv-config";
-  version = "3.18.1";
+  version = "3.18.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "riscv-software-src";
     repo = "riscv-config";
     rev = "refs/tags/${version}";
-    hash = "sha256-lBjSHfnuNPi4Ks5ZCRLqJx3/l4GMmMEEIud8ZVl/S4Q=";
+    hash = "sha256-ADmf7EN3D+8isZRFx6WRMYq91YHunGavuwy3a3M3gCc=";
   };
 
   pythonRelaxDeps = [ "pyyaml" ];
diff --git a/nixpkgs/pkgs/development/python-modules/rlcard/default.nix b/nixpkgs/pkgs/development/python-modules/rlcard/default.nix
new file mode 100644
index 000000000000..5477a50ba291
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rlcard/default.nix
@@ -0,0 +1,77 @@
+{ 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/nixpkgs/pkgs/development/python-modules/rnginline/default.nix b/nixpkgs/pkgs/development/python-modules/rnginline/default.nix
index acea2482f32c..7505cfd7346a 100644
--- a/nixpkgs/pkgs/development/python-modules/rnginline/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rnginline/default.nix
@@ -15,23 +15,28 @@
 buildPythonPackage rec {
   pname = "rnginline";
   version = "1.0.0";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-JWqzs+OqOynIAWYVgGrZiuiCqObAgGe6rBt0DcP3U6E=";
   };
 
-  nativeBuildInputs = [
+  pythonRelaxDeps = [
+    "docopt-ng"
+    "importlib-metadata"
+    "lxml"
+  ];
+
+  build-system = [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  pythonRelaxDeps = [
-    "docopt-ng"
+  nativeBuildInputs = [
+    pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     docopt-ng
     lxml
     typing-extensions
@@ -49,6 +54,7 @@ buildPythonPackage rec {
   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";
     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/nixpkgs/pkgs/development/python-modules/rns/default.nix b/nixpkgs/pkgs/development/python-modules/rns/default.nix
index 0df16e875cf1..6c3c582b2b0e 100644
--- a/nixpkgs/pkgs/development/python-modules/rns/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rns/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, netifaces
-, pyserial
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  netifaces,
+  pyserial,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "rns";
-  version = "0.7.3";
+  version = "0.7.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -19,14 +20,12 @@ buildPythonPackage rec {
     owner = "markqvist";
     repo = "Reticulum";
     rev = "refs/tags/${version}";
-    hash = "sha256-QcYjqqeXBKx+Ef00Bw1OJMWDMdQgp/fqh3r5yhsa0Kg=";
+    hash = "sha256-M6iI554lv6PF5sIdOoaMIlQHP5YU8WM8YxfHMWhLSdE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cryptography
     netifaces
     pyserial
@@ -35,9 +34,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/nixpkgs/pkgs/development/python-modules/roadlib/default.nix b/nixpkgs/pkgs/development/python-modules/roadlib/default.nix
index 303024a90f52..c2ac5e3cba69 100644
--- a/nixpkgs/pkgs/development/python-modules/roadlib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/roadlib/default.nix
@@ -1,30 +1,29 @@
-{ lib
-, adal
-, buildPythonPackage
-, fetchPypi
-, pyjwt
-, pythonOlder
-, setuptools
-, sqlalchemy
+{
+  lib,
+  adal,
+  buildPythonPackage,
+  fetchPypi,
+  pyjwt,
+  pythonOlder,
+  setuptools,
+  sqlalchemy,
 }:
 
 buildPythonPackage rec {
   pname = "roadlib";
-  version = "0.23.0";
+  version = "0.24.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-0hDiuF0dBRyR2B9dp4c7/jsC6li8uOduQBbhs6fFLfU=";
+    hash = "sha256-tQbJWHXxvjGhqGBI9nn8EL7rJcVyH095FfNSsxkrImQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     adal
     pyjwt
     sqlalchemy
@@ -33,9 +32,7 @@ buildPythonPackage rec {
   # Module has no test
   doCheck = false;
 
-  pythonImportsCheck = [
-    "roadtools.roadlib"
-  ];
+  pythonImportsCheck = [ "roadtools.roadlib" ];
 
   meta = with lib; {
     description = "ROADtools common components library";
diff --git a/nixpkgs/pkgs/development/python-modules/roadtx/default.nix b/nixpkgs/pkgs/development/python-modules/roadtx/default.nix
index 4ea50269cd76..d390acea281d 100644
--- a/nixpkgs/pkgs/development/python-modules/roadtx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/roadtx/default.nix
@@ -1,34 +1,33 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pycryptodomex
-, pyotp
-, pythonOlder
-, requests
-, roadlib
-, selenium
-, selenium-wire
-, setuptools
-, signxml
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pycryptodomex,
+  pyotp,
+  pythonOlder,
+  requests,
+  roadlib,
+  selenium,
+  selenium-wire,
+  setuptools,
+  signxml,
 }:
 
 buildPythonPackage rec {
   pname = "roadtx";
-  version = "1.7.0";
+  version = "1.8.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-qnumJbuBH+ajzfG+bLTrYPvB5uNnL8dJsTZoT2vo6g0=";
+    hash = "sha256-BJYBQBxgYbozY0rPgxpiduUxb6wEFBJxXY8TRVlLz5M=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pycryptodomex
     pyotp
     requests
@@ -38,9 +37,7 @@ buildPythonPackage rec {
     signxml
   ];
 
-  pythonImportsCheck = [
-    "roadtools.roadtx"
-  ];
+  pythonImportsCheck = [ "roadtools.roadtx" ];
 
   meta = with lib; {
     description = "ROADtools Token eXchange";
diff --git a/nixpkgs/pkgs/development/python-modules/rokuecp/default.nix b/nixpkgs/pkgs/development/python-modules/rokuecp/default.nix
index 0a204c11be28..47800983f5e3 100644
--- a/nixpkgs/pkgs/development/python-modules/rokuecp/default.nix
+++ b/nixpkgs/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.3";
+  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-XMJ2V59E4SEVlEhgc1hstLmtzl1gxwCsq+4vmkL3CPM=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/rotary-embedding-torch/default.nix b/nixpkgs/pkgs/development/python-modules/rotary-embedding-torch/default.nix
index a04262e40173..22720a759238 100644
--- a/nixpkgs/pkgs/development/python-modules/rotary-embedding-torch/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rotary-embedding-torch/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "rotary-embedding-torch";
-  version = "0.5.3";
+  version = "0.6.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "lucidrains";
     repo = "rotary-embedding-torch";
     rev = "refs/tags/${version}";
-    hash = "sha256-CCz/va5oydgU1JRDHKooRezbDbeGZHtD8Zy6fWJ2uRg=";
+    hash = "sha256-/gVBQ9lUzVN/eEtm6qPajw0TZs87JOC7d02qnQ8sdVk=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/rpy2/default.nix b/nixpkgs/pkgs/development/python-modules/rpy2/default.nix
index c10b23414b42..2f3e66b76ba1 100644
--- a/nixpkgs/pkgs/development/python-modules/rpy2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rpy2/default.nix
@@ -25,26 +25,20 @@
 }:
 
 buildPythonPackage rec {
-    version = "3.5.15";
+    version = "3.5.16";
     format = "setuptools";
     pname = "rpy2";
 
     disabled = isPyPy;
     src = fetchPypi {
       inherit version pname;
-      hash = "sha256-RE+uSoTcfyM7cOqrCqgTmO4BR8ThrjjdRSTXedbyWys=";
+      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
-
-      # https://github.com/rpy2/rpy2/pull/1094
-      (fetchpatch {
-        url = "https://github.com/rpy2/rpy2/commit/026d069a008163a62d12567bcb938410d0f9bf7a.diff";
-        hash = "sha256-x778upSY3zab5EiRyOcsbDpPj7vN/7XzefEs+wvkNg0=";
-      })
     ];
 
     postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/rq/default.nix b/nixpkgs/pkgs/development/python-modules/rq/default.nix
index 45c8627be5df..47a0a7dcfc5e 100644
--- a/nixpkgs/pkgs/development/python-modules/rq/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rq/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "rq";
-  version = "1.16.1";
+  version = "1.16.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = "rq";
     repo = "rq";
     rev = "refs/tags/v${version}";
-    hash = "sha256-1E7jPTSQCjuKZVFL4uZqL1WZHnxWSLTNcnpyvfHz7oY=";
+    hash = "sha256-8uhCV4aJNbY273jOa9D5OlgEG1w3hXVncClKQTO9Pyk=";
   };
 
   build-system = [
@@ -47,25 +47,26 @@ 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/";
diff --git a/nixpkgs/pkgs/development/python-modules/rst2pdf/default.nix b/nixpkgs/pkgs/development/python-modules/rst2pdf/default.nix
index f40da3a301f7..956767735cb8 100644
--- a/nixpkgs/pkgs/development/python-modules/rst2pdf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rst2pdf/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, installShellFiles
 , setuptools
 , setuptools-scm
 , wheel
@@ -31,6 +32,7 @@ buildPythonPackage rec {
   outputs = [ "out" "man" ];
 
   nativeBuildInputs = [
+    installShellFiles
     setuptools
     setuptools-scm
     wheel
@@ -62,8 +64,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 +74,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/nixpkgs/pkgs/development/python-modules/rtsp-to-webrtc/default.nix b/nixpkgs/pkgs/development/python-modules/rtsp-to-webrtc/default.nix
index 812a4fc1ba1f..5686b12f4492 100644
--- a/nixpkgs/pkgs/development/python-modules/rtsp-to-webrtc/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/rules/default.nix b/nixpkgs/pkgs/development/python-modules/rules/default.nix
index 3563b76affe7..cc153e44c6f3 100644
--- a/nixpkgs/pkgs/development/python-modules/rules/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rules/default.nix
@@ -2,6 +2,9 @@
 , buildPythonPackage
 , fetchFromGitHub
 
+# build-system
+, setuptools
+
 # tests
 , django
 , djangorestframework
@@ -10,16 +13,20 @@
 
 buildPythonPackage rec {
   pname = "rules";
-  version = "3.3.0";
-  format = "setuptools";
+  version = "3.4.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "dfunckt";
     repo = "django-rules";
     rev = "v${version}";
-    hash = "sha256-UFRfRwcvxEn0fD3ScJJ7f/EHd93BOpY3cEF9QDryJZY=";
+    hash = "sha256-fxLaxjni+0S59vtvKBduR0pYMwJWWBPzR5mnH+j6gVE=";
   };
 
+  build-system = [
+    setuptools
+  ];
+
   pythonImportsCheck = [
     "rules"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/s3fs/default.nix b/nixpkgs/pkgs/development/python-modules/s3fs/default.nix
index 46c7044759ed..c267f253102d 100644
--- a/nixpkgs/pkgs/development/python-modules/s3fs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/s3fs/default.nix
@@ -1,5 +1,4 @@
 { lib
-, stdenv
 , aiobotocore
 , aiohttp
 , buildPythonPackage
@@ -45,7 +44,6 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
     description = "A Pythonic file interface for S3";
     homepage = "https://github.com/fsspec/s3fs";
     changelog = "https://github.com/fsspec/s3fs/raw/${version}/docs/source/changelog.rst";
diff --git a/nixpkgs/pkgs/development/python-modules/s3transfer/default.nix b/nixpkgs/pkgs/development/python-modules/s3transfer/default.nix
index 124b44f097cc..52bf82fc502d 100644
--- a/nixpkgs/pkgs/development/python-modules/s3transfer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/s3transfer/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "s3transfer";
-  version = "0.10.0";
+  version = "0.10.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "boto";
     repo = "s3transfer";
     rev = "refs/tags/${version}";
-    hash = "sha256-21xycx1+84uY4gFr7N+ra98dpsEwxy9zeSl4QA66nUc=";
+    hash = "sha256-EHNkYviafnuU8AADp9oyaDuAnoPOdOVNSLCcoONnHPY=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/sacn/default.nix b/nixpkgs/pkgs/development/python-modules/sacn/default.nix
index 609d8969be6b..f03c7a263271 100644
--- a/nixpkgs/pkgs/development/python-modules/sacn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sacn/default.nix
@@ -6,14 +6,14 @@
 
 buildPythonPackage rec {
   pname = "sacn";
-  version = "1.9.0";
+  version = "1.9.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-LimA0I8y1tdjFk244iWvKJj0Rx3OEaYOSIJtirRHh4o=";
+    hash = "sha256-ppXWRBZVm4QroxZ19S388sRuI5zpaDgJrJqhnwefr3k=";
   };
 
   # no tests
diff --git a/nixpkgs/pkgs/development/python-modules/safety/default.nix b/nixpkgs/pkgs/development/python-modules/safety/default.nix
index 529ed4d8d4c2..00cd2758f0ba 100644
--- a/nixpkgs/pkgs/development/python-modules/safety/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/safety/default.nix
@@ -24,7 +24,7 @@
 
 buildPythonPackage rec {
   pname = "safety";
-  version = "3.0.1";
+  version = "3.2.0";
 
   disabled = pythonOlder "3.7";
 
@@ -32,7 +32,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-HyAA8DZS86C/xn+P0emLxXI8y3bhXLG91oVFw9gD3wE=";
+    hash = "sha256-i9XKtfPYphzg6m6Y8mfBAG0FYJfEXGRP7nr+/31ZScE=";
   };
 
   postPatch = ''
@@ -89,8 +89,12 @@ buildPythonPackage rec {
     "test_check_live_cached"
     "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)
   '';
diff --git a/nixpkgs/pkgs/development/python-modules/sagemaker/default.nix b/nixpkgs/pkgs/development/python-modules/sagemaker/default.nix
index 33e0c85697c1..49156ec55306 100644
--- a/nixpkgs/pkgs/development/python-modules/sagemaker/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sagemaker/default.nix
@@ -32,7 +32,7 @@
 
 buildPythonPackage rec {
   pname = "sagemaker";
-  version = "2.217.0";
+  version = "2.219.0";
   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-TZpRRkoAlXU+Ccgxq49t+Cz0JOIUvYp7ok3x3sphncE=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/samplerate/default.nix b/nixpkgs/pkgs/development/python-modules/samplerate/default.nix
index 7ac9950a6966..0b7d81a94d96 100644
--- a/nixpkgs/pkgs/development/python-modules/samplerate/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/samplerate/default.nix
@@ -2,33 +2,56 @@
 , stdenv
 , 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
diff --git a/nixpkgs/pkgs/development/python-modules/sarif-tools/default.nix b/nixpkgs/pkgs/development/python-modules/sarif-tools/default.nix
new file mode 100644
index 000000000000..785c26e34529
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sarif-tools/default.nix
@@ -0,0 +1,69 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, poetry-core
+, jsonpath-ng
+, jinja2
+, python
+, python-docx
+, matplotlib
+, pyyaml
+, pytestCheckHook
+, pythonOlder
+, pythonRelaxDepsHook
+}:
+
+buildPythonPackage rec {
+  pname = "sarif-tools";
+  version = "2.0.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "microsoft";
+    repo = "sarif-tools";
+    rev = "v${version}";
+    hash = "sha256-80amYGnf7xZdpxzTjBGwgg39YN/jJsEkTm0uAlVbH0w=";
+  };
+
+  disabled = pythonOlder "3.8";
+
+  nativeBuildInputs = [
+    poetry-core
+    pythonRelaxDepsHook
+  ];
+
+  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 = "A 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/nixpkgs/pkgs/development/python-modules/scalene/default.nix b/nixpkgs/pkgs/development/python-modules/scalene/default.nix
index 29a51e38b631..69004f67a196 100644
--- a/nixpkgs/pkgs/development/python-modules/scalene/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scalene/default.nix
@@ -18,24 +18,15 @@
 
 buildPythonPackage rec {
   pname = "scalene";
-  version = "1.5.38";
+  version = "1.5.41";
   pyproject = true;
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-LR1evkn2m6FNBmJnUUJubesxIPeHG6RDgLFBHDuxe38=";
+    hash = "sha256-akjxv9Qot2lGntZxkxfFqz65VboL1qduykfjyEg1Ivg=";
   };
 
-  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=";
-    })
-  ];
-
   nativeBuildInputs = [
     cython
     setuptools
@@ -61,14 +52,6 @@ buildPythonPackage rec {
     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"
-  ];
-
   # remove scalene directory to prevent pytest import confusion
   preCheck = ''
     rm -rf scalene
diff --git a/nixpkgs/pkgs/development/python-modules/schemdraw/default.nix b/nixpkgs/pkgs/development/python-modules/schemdraw/default.nix
index 441e668f81fc..08eecb1d8a2d 100644
--- a/nixpkgs/pkgs/development/python-modules/schemdraw/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/schemdraw/default.nix
@@ -14,8 +14,8 @@
 
 buildPythonPackage rec {
   pname = "schemdraw";
-  version = "0.18";
-  format = "pyproject";
+  version = "0.19";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -23,18 +23,18 @@ buildPythonPackage rec {
     owner = "cdelker";
     repo = pname;
     rev = version;
-    hash = "sha256-JJc3LA+fqB+2g7pPIZ8YMV921EyYpLZrHSJCYyYThZg=";
+    hash = "sha256-vqEHcazE5DNHr0FceOWLqq+RZmMK5ovHDVjy/2wbTJU=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pyparsing
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     matplotlib = [
       matplotlib
     ];
@@ -59,6 +59,8 @@ buildPythonPackage rec {
     substituteInPlace test/test_styles.ipynb --replace "font='Times', " ""
   '';
 
+  preCheck = "rm test/test_pictorial.ipynb";   # Tries to download files
+
   pytestFlagsArray = [ "--nbval-lax" ];
 
   pythonImportsCheck = [ "schemdraw" ];
diff --git a/nixpkgs/pkgs/development/python-modules/schwifty/default.nix b/nixpkgs/pkgs/development/python-modules/schwifty/default.nix
index 1a33c71f7ff5..6a74fb741577 100644
--- a/nixpkgs/pkgs/development/python-modules/schwifty/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/schwifty/default.nix
@@ -7,6 +7,7 @@
 , hatch-vcs
 
 # dependencies
+, importlib-resources
 , iso3166
 , pycountry
 
@@ -21,14 +22,14 @@
 
 buildPythonPackage rec {
   pname = "schwifty";
-  version = "2024.1.1.post0";
-  format = "pyproject";
+  version = "2024.4.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ZFDu+stuKdsVc8bTuSZ4LZX8BuQhORjyEMosnrk1rX0=";
+    hash = "sha256-1EV2oi2LBcjw2U7nKqdVUVDlFCzR8RqX5tVIciw1trg=";
   };
 
   nativeBuildInputs = [
@@ -39,6 +40,8 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     iso3166
     pycountry
+  ] ++ lib.optionals (pythonOlder "3.12") [
+    importlib-resources
   ];
 
   passthru.optional-dependencies = {
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-bio/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-bio/default.nix
index c08f992f2293..7068063a8cb5 100644
--- a/nixpkgs/pkgs/development/python-modules/scikit-bio/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/scikit-build/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-build/default.nix
index acaf74e10953..0d35ccf4a8ed 100644
--- a/nixpkgs/pkgs/development/python-modules/scikit-build/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scikit-build/default.nix
@@ -92,6 +92,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"
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-learn/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-learn/default.nix
index bbcb44de2c02..88927aa4f20b 100644
--- a/nixpkgs/pkgs/development/python-modules/scikit-learn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scikit-learn/default.nix
@@ -2,7 +2,6 @@
 , lib
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 
 # build-system
 , cython
@@ -16,6 +15,7 @@
 , glibcLocales
 , llvmPackages
 , pytestCheckHook
+, pythonRelaxDepsHook
 , pytest-xdist
 , pillow
 , joblib
@@ -25,23 +25,21 @@
 
 buildPythonPackage rec {
   pname = "scikit-learn";
-  version = "1.4.1.post1";
+  version = "1.4.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-k9PUlv8ZZUcPmXfQXl7DN2+x5jsQ5P2l450jwtiWmjA=";
+    hash = "sha256-2qHEcdlbrQgMbkS0lGyTkKSEKtwwglcsIOT4iE456Vk=";
   };
 
-  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=";
-    })
-  ];
+  # Avoid build-system requirements causing failure
+  prePatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "numpy==2.0.0rc1" "numpy"
+  '';
 
   buildInputs = [
     pillow
@@ -52,6 +50,7 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     gfortran
+    pythonRelaxDepsHook
   ];
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-posthocs/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-posthocs/default.nix
index e8f3933299a7..1aba1d935c4e 100644
--- a/nixpkgs/pkgs/development/python-modules/scikit-posthocs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scikit-posthocs/default.nix
@@ -16,7 +16,7 @@
 buildPythonPackage rec {
   pname = "scikit-posthocs";
   version = "0.9.0";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "maximtrp";
@@ -25,13 +25,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
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-rf/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-rf/default.nix
index aa49911009eb..3ee1f89adf4c 100644
--- a/nixpkgs/pkgs/development/python-modules/scikit-rf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scikit-rf/default.nix
@@ -32,7 +32,7 @@
 
 buildPythonPackage rec {
   pname = "scikit-rf";
-  version = "0.32.0";
+  version = "1.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -40,8 +40,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "scikit-rf";
     repo = pname;
-    rev = "refs/tags/v.${version}";
-    hash = "sha256-J7V4nQ8OxW4w75OyiMdUal8k5oXSn96g4w6k1+KV1Dw=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-TtRj9pqm5153y78MzhlVpL1EvNiNJyjUH1aOlAWU0WE=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/scipy/default.nix b/nixpkgs/pkgs/development/python-modules/scipy/default.nix
index 64e261c37403..57769c7f6afe 100644
--- a/nixpkgs/pkgs/development/python-modules/scipy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scipy/default.nix
@@ -25,6 +25,9 @@
 , xsimd
 , blas
 , lapack
+
+# Reverse dependency
+, sage
 }:
 
 let
@@ -193,6 +196,7 @@ in buildPythonPackage {
     # Pass it the names of the datasets to update their hashes
     ++ (builtins.attrNames datasetsHashes)
     ;
+    tests = { inherit sage; };
   };
 
   SCIPY_USE_G77_ABI_WRAPPER = 1;
diff --git a/nixpkgs/pkgs/development/python-modules/scooby/default.nix b/nixpkgs/pkgs/development/python-modules/scooby/default.nix
index 869a1a589501..229ba0526a97 100644
--- a/nixpkgs/pkgs/development/python-modules/scooby/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scooby/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "scooby";
-  version = "0.9.2";
+  version = "0.10.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "banesullivan";
     repo = "scooby";
     rev = "refs/tags/v${version}";
-    hash = "sha256-x6GPRo0OuXJtN41urviY0joZKzq0SQjUdRBpIylgcXY=";
+    hash = "sha256-KXhLN8KPz61l+4v88+kVSvodT6OXDJ3Pw9A9aFWSqYE=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/scrapy/default.nix b/nixpkgs/pkgs/development/python-modules/scrapy/default.nix
index 68bb9460c14f..058f1f8f5607 100644
--- a/nixpkgs/pkgs/development/python-modules/scrapy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scrapy/default.nix
@@ -5,6 +5,7 @@
 , cryptography
 , cssselect
 , fetchPypi
+, fetchpatch
 , glibcLocales
 , installShellFiles
 , itemadapter
@@ -43,6 +44,16 @@ buildPythonPackage rec {
     hash = "sha256-czoDnHQj5StpvygQtTMgk9TkKoSEYDWcB7Auz/j3Pr4=";
   };
 
+  patches = [
+    # https://github.com/scrapy/scrapy/pull/6316
+    # fix test_get_func_args. remove on next update
+    (fetchpatch {
+      name = "test_get_func_args.patch";
+      url = "https://github.com/scrapy/scrapy/commit/b1fe97dc6c8509d58b29c61cf7801eeee1b409a9.patch";
+      hash = "sha256-POlmsuW4SD9baKwZieKfmlp2vtdlb7aKQ62VOmNXsr0=";
+    })
+  ];
+
   nativeBuildInputs = [
     installShellFiles
     setuptools
diff --git a/nixpkgs/pkgs/development/python-modules/sdkmanager/default.nix b/nixpkgs/pkgs/development/python-modules/sdkmanager/default.nix
index 2900c012cf79..ebace96d136b 100644
--- a/nixpkgs/pkgs/development/python-modules/sdkmanager/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sdkmanager/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "sdkmanager";
-  version = "0.6.6";
+  version = "0.6.7";
   format = "setuptools";
 
   disabled = pythonOlder "3.5";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "fdroid";
     repo = pname;
     rev = version;
-    hash = "sha256-Vuht2gH9ivNG7PgG+XKtkdKoszkkoI91reQKg6D50xs=";
+    hash = "sha256-8Iq3sVp9/dZi4zNZIgNm38ntoA2koS/Ism+pIVATr4Q=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/setuptools-gettext/default.nix b/nixpkgs/pkgs/development/python-modules/setuptools-gettext/default.nix
index 394f4c4693fa..31440a40e5a3 100644
--- a/nixpkgs/pkgs/development/python-modules/setuptools-gettext/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/setuptools/default.nix b/nixpkgs/pkgs/development/python-modules/setuptools/default.nix
index 46a2597ed141..c7cfd09dc49d 100644
--- a/nixpkgs/pkgs/development/python-modules/setuptools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/setuptools/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "setuptools";
-  version = "69.2.0";
+  version = "69.5.1";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "pypa";
     repo = "setuptools";
     rev = "refs/tags/v${version}";
-    hash = "sha256-kll4zYFQn4g/8Fq0Y5vLvDXtotxYMbiNAgGa0sClFQk=";
+    hash = "sha256-X0ntFlDIhUjxtWzz0LxybQSuxhRpHlMeBYtOGwqDl4A=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/setuptools/setuptools-distutils-C++.patch b/nixpkgs/pkgs/development/python-modules/setuptools/setuptools-distutils-C++.patch
index 399e1682357d..16dfd34c2def 100644
--- a/nixpkgs/pkgs/development/python-modules/setuptools/setuptools-distutils-C++.patch
+++ b/nixpkgs/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 539f09d8f..a3d3020cb 100644
 --- a/setuptools/_distutils/cygwinccompiler.py
 +++ b/setuptools/_distutils/cygwinccompiler.py
-@@ -101,14 +101,19 @@ class CygwinCCompiler(UnixCCompiler):
+@@ -99,14 +99,19 @@ class CygwinCCompiler(UnixCCompiler):
          self.cxx = os.environ.get('CXX', 'g++')
  
          self.linker_dll = self.cc
@@ -12,17 +12,17 @@ index 47efa377..5cdbbe10 100644
          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,
+             compiler_cxx='%s -mcygwin -O -Wall' % self.cxx,
              linker_exe='%s -mcygwin' % self.cc,
-             linker_so=('{} -mcygwin {}'.format(self.linker_dll, shared_option)),
+             linker_so=(f'{self.linker_dll} -mcygwin {shared_option}'),
 +            linker_exe_cxx='%s -mcygwin' % self.cxx,
 +            linker_so_cxx=('%s -mcygwin %s' %
 +                (self.linker_dll_cxx, shared_option)),
          )
  
          # Include the appropriate MSVC runtime library if Python was built
-@@ -140,9 +145,12 @@ class CygwinCCompiler(UnixCCompiler):
+@@ -138,9 +143,12 @@ class CygwinCCompiler(UnixCCompiler):
                  raise CompileError(msg)
          else:  # for other files use the C-compiler
              try:
@@ -38,24 +38,24 @@ index 47efa377..5cdbbe10 100644
              except DistutilsExecError as msg:
                  raise CompileError(msg)
  
-@@ -278,9 +286,12 @@ class Mingw32CCompiler(CygwinCCompiler):
+@@ -276,9 +284,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_so=f'{self.linker_dll} {shared_option}',
 +            linker_exe_cxx='%s' % self.cxx,
 +            linker_so_cxx='%s %s' % (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 1a38e9fa7..034ed6566 100644
 --- a/setuptools/_distutils/sysconfig.py
 +++ b/setuptools/_distutils/sysconfig.py
-@@ -297,6 +297,7 @@ def customize_compiler(compiler):  # noqa: C901
+@@ -300,6 +300,7 @@ def customize_compiler(compiler):  # noqa: C901
              cflags,
              ccshared,
              ldshared,
@@ -63,7 +63,7 @@ index a40a7231..e5aad4f4 100644
              shlib_suffix,
              ar,
              ar_flags,
-@@ -306,11 +307,14 @@ def customize_compiler(compiler):  # noqa: C901
+@@ -309,11 +310,14 @@ def customize_compiler(compiler):  # noqa: C901
              'CFLAGS',
              'CCSHARED',
              'LDSHARED',
@@ -78,7 +78,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
+@@ -325,19 +329,27 @@ def customize_compiler(compiler):  # noqa: C901
              cxx = os.environ['CXX']
          if 'LDSHARED' in os.environ:
              ldshared = os.environ['LDSHARED']
@@ -107,7 +107,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
+@@ -346,13 +358,17 @@ def customize_compiler(compiler):  # noqa: C901
              archiver = ar + ' ' + ar_flags
  
          cc_cmd = cc + ' ' + cflags
@@ -127,10 +127,10 @@ index a40a7231..e5aad4f4 100644
          )
  
 diff --git a/setuptools/_distutils/unixccompiler.py b/setuptools/_distutils/unixccompiler.py
-index 6ca2332a..5ac64128 100644
+index 0248bde87..9508e6cff 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 +144,7 @@ index 6ca2332a..5ac64128 100644
          'archiver': ["ar", "-cr"],
          'ranlib': None,
      }
-@@ -181,8 +184,13 @@ class UnixCCompiler(CCompiler):
+@@ -184,8 +187,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 +159,7 @@ index 6ca2332a..5ac64128 100644
          except DistutilsExecError as msg:
              raise CompileError(msg)
  
-@@ -250,7 +258,8 @@ class UnixCCompiler(CCompiler):
+@@ -253,7 +261,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/nixpkgs/pkgs/development/python-modules/shap/default.nix b/nixpkgs/pkgs/development/python-modules/shap/default.nix
index 2bc1a8f5c2ec..2e0b5c0f814c 100644
--- a/nixpkgs/pkgs/development/python-modules/shap/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/shap/default.nix
@@ -31,7 +31,7 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/shimmy/default.nix b/nixpkgs/pkgs/development/python-modules/shimmy/default.nix
new file mode 100644
index 000000000000..cbe0ca7cc8d7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/shimmy/default.nix
@@ -0,0 +1,92 @@
+{ 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 pyspiel
+    "tests/test_openspiel.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 = "An 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/nixpkgs/pkgs/development/python-modules/shiv/default.nix b/nixpkgs/pkgs/development/python-modules/shiv/default.nix
index a508ee2ec695..d799069324d9 100644
--- a/nixpkgs/pkgs/development/python-modules/shiv/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/shiv/default.nix
@@ -11,12 +11,12 @@
 
 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 ];
diff --git a/nixpkgs/pkgs/development/python-modules/sigstore-protobuf-specs/default.nix b/nixpkgs/pkgs/development/python-modules/sigstore-protobuf-specs/default.nix
index 5e89670edef6..56da9cd5f403 100644
--- a/nixpkgs/pkgs/development/python-modules/sigstore-protobuf-specs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sigstore-protobuf-specs/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "sigstore-protobuf-specs";
-  version = "0.3.0";
+  version = "0.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -16,7 +16,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "sigstore_protobuf_specs";
     inherit version;
-    hash = "sha256-MyKttzmSvKDz3G1MLDi6wpCGoR0mMamDrbJ5jljjKlQ=";
+    hash = "sha256-xAthl1uVeukG6ymlvHBA7AFbaLa0YAXMWAXmKUk+jew=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/sigtools/default.nix b/nixpkgs/pkgs/development/python-modules/sigtools/default.nix
index 87dc4e91e6e9..7e9e7971e137 100644
--- a/nixpkgs/pkgs/development/python-modules/sigtools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sigtools/default.nix
@@ -3,7 +3,6 @@
 , buildPythonPackage
 , fetchPypi
 , mock
-, pythonOlder
 , repeated-test
 , setuptools-scm
 , sphinx
@@ -15,8 +14,6 @@ buildPythonPackage rec {
   version = "4.0.1";
   format = "pyproject";
 
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-S44TWpzU0uoA2mcMCTNy105nK6OruH9MmNjnPepURFw=";
diff --git a/nixpkgs/pkgs/development/python-modules/simple-term-menu/default.nix b/nixpkgs/pkgs/development/python-modules/simple-term-menu/default.nix
index 7a348b1f602d..f6b808cf31c8 100644
--- a/nixpkgs/pkgs/development/python-modules/simple-term-menu/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/simple-term-menu/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, pythonOlder
 , fetchPypi
 , setuptools
 }:
@@ -10,8 +9,6 @@ buildPythonPackage rec {
   version = "1.6.4";
   pyproject = true;
 
-  disabled = pythonOlder "3.4";
-
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-vpxdvY3xKkBLFM2Oldb8AtWMYOJVX2Xd3kF3fEh/s7k=";
diff --git a/nixpkgs/pkgs/development/python-modules/skein/default.nix b/nixpkgs/pkgs/development/python-modules/skein/default.nix
index ff0884330b39..738a6b21d8e1 100644
--- a/nixpkgs/pkgs/development/python-modules/skein/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/skein/default.nix
@@ -2,6 +2,7 @@
 , callPackage
 , fetchPypi
 , isPy27
+, pythonOlder
 , lib
 , cryptography
 , grpcio
@@ -10,6 +11,8 @@
 , hadoop
 , pytestCheckHook
 , python
+, setuptools
+, versioneer
 }:
 
 buildPythonPackage rec {
@@ -25,7 +28,8 @@ 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 = ''
@@ -37,8 +41,17 @@ buildPythonPackage rec {
   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" ];
 
   nativeCheckInputs = [ pytestCheckHook ];
@@ -51,12 +64,12 @@ 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";
     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/nixpkgs/pkgs/development/python-modules/skorch/default.nix b/nixpkgs/pkgs/development/python-modules/skorch/default.nix
index 01d23f596dd9..ab128f978571 100644
--- a/nixpkgs/pkgs/development/python-modules/skorch/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/skorch/default.nix
@@ -2,6 +2,7 @@
 , stdenv
 , buildPythonPackage
 , fetchPypi
+, fetchpatch
 , pythonOlder
 , numpy
 , scikit-learn
@@ -26,6 +27,13 @@ buildPythonPackage rec {
     hash = "sha256-39XVBlCmbg162z9uL84GZrU+v+M8waXbGdVV72ZYf84=";
   };
 
+  # Remove at next skorch release:
+  patches = [ (fetchpatch {
+    name = "unbreak-tests-with-sklearn-1.4";
+    url = "https://github.com/skorch-dev/skorch/commit/1f7a779d0aa78589e17262c206f5775f2fcd75f8.diff";
+    hash = "sha256-X3SgjgDeq3PlBI13cC56LIL1dV1e+Z3tsBj9sz5pizo=";
+  }) ];
+
   disabled = pythonOlder "3.8";
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/skytemple-ssb-debugger/default.nix b/nixpkgs/pkgs/development/python-modules/skytemple-ssb-debugger/default.nix
index 324f34f33524..7b50a7ae6c19 100644
--- a/nixpkgs/pkgs/development/python-modules/skytemple-ssb-debugger/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/skytemple-ssb-debugger/default.nix
@@ -17,7 +17,7 @@
 , skytemple-files
 , skytemple-icons
 , skytemple-ssb-emulator
-, wrapGAppsHook
+, wrapGAppsHook3
 }:
 
 buildPythonPackage rec {
@@ -33,7 +33,7 @@ buildPythonPackage rec {
   };
 
   buildInputs = [ gtk3 gtksourceview4 ];
-  nativeBuildInputs = [ gobject-introspection wrapGAppsHook ];
+  nativeBuildInputs = [ gobject-introspection wrapGAppsHook3 ];
   propagatedBuildInputs = [
     explorerscript
     ndspy
diff --git a/nixpkgs/pkgs/development/python-modules/slack-bolt/default.nix b/nixpkgs/pkgs/development/python-modules/slack-bolt/default.nix
index 94291d7a9cc4..8b2e41c782c4 100644
--- a/nixpkgs/pkgs/development/python-modules/slack-bolt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/slack-bolt/default.nix
@@ -1,33 +1,35 @@
-{ 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,
+  numpy,
+  pyramid,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  sanic,
+  setuptools,
+  sanic-testing,
+  slack-sdk,
+  starlette,
+  tornado,
+  uvicorn,
+  websocket-client,
+  websockets,
+  werkzeug,
 }:
 
 buildPythonPackage rec {
@@ -44,19 +46,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 +97,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)"
   '';
diff --git a/nixpkgs/pkgs/development/python-modules/slack-sdk/default.nix b/nixpkgs/pkgs/development/python-modules/slack-sdk/default.nix
index 2782b5eea5db..4ef216531c62 100644
--- a/nixpkgs/pkgs/development/python-modules/slack-sdk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/slack-sdk/default.nix
@@ -1,27 +1,28 @@
-{ stdenv
-, lib
-, aiodns
-, aiohttp
-, boto3
-, buildPythonPackage
-, codecov
-, fetchFromGitHub
-, flake8
-, flask-sockets
-, moto
-, pythonOlder
-, psutil
-, pytest-asyncio
-, pytestCheckHook
-, setuptools
-, sqlalchemy
-, websocket-client
-, websockets
+{
+  lib,
+  stdenv,
+  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.27.2";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -30,7 +31,7 @@ buildPythonPackage rec {
     owner = "slackapi";
     repo = "python-slack-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-fBHu4e6pSt8yzXbLWr5cwjRFDfvdH2jzpSNzdMBg4N0=";
+    hash = "sha256-1I08OUseiwCN9vUd56f9IFzCSB9kGjTLojyWm2dIimE=";
   };
 
   postPatch = ''
@@ -38,11 +39,9 @@ buildPythonPackage rec {
       --replace-fail ', "pytest-runner"' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiodns
     aiohttp
     boto3
@@ -78,15 +77,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/nixpkgs/pkgs/development/python-modules/slackclient/default.nix b/nixpkgs/pkgs/development/python-modules/slackclient/default.nix
index 9769f22727a3..5c9c6ed8a52e 100644
--- a/nixpkgs/pkgs/development/python-modules/slackclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/slackclient/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "slackclient";
-  version = "3.27.1";
+  version = "3.27.2";
   format =  "setuptools";
 
   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-1I08OUseiwCN9vUd56f9IFzCSB9kGjTLojyWm2dIimE=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/slicedimage/default.nix b/nixpkgs/pkgs/development/python-modules/slicedimage/default.nix
index 680bb0f6a5be..5287d25fb349 100644
--- a/nixpkgs/pkgs/development/python-modules/slicedimage/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/slicedimage/default.nix
@@ -3,15 +3,12 @@
 , fetchFromGitHub
 , boto3
 , diskcache
-, enum34
 , packaging
-, pathlib
 , numpy
 , requests
 , scikit-image
 , six
 , pytestCheckHook
-, isPy27
 , tifffile
 }:
 
@@ -36,7 +33,7 @@ buildPythonPackage rec {
     scikit-image
     six
     tifffile
-  ] ++ lib.optionals isPy27 [ pathlib enum34 ];
+  ];
 
   nativeCheckInputs = [
     pytestCheckHook
diff --git a/nixpkgs/pkgs/development/python-modules/slicer/default.nix b/nixpkgs/pkgs/development/python-modules/slicer/default.nix
index f678dfb2eaa2..41b3e434bc71 100644
--- a/nixpkgs/pkgs/development/python-modules/slicer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/slicer/default.nix
@@ -12,47 +12,25 @@
 
 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 ];
 
-  disabledTests = [
-    # IndexError: too many indices for array
-    "test_slicer_sparse"
-    "test_operations_2d"
-  ];
-
   meta = with lib; {
     description = "Wraps tensor-like objects and provides a uniform slicing interface via __getitem__";
     homepage = "https://github.com/interpretml/slicer";
diff --git a/nixpkgs/pkgs/development/python-modules/smart-meter-texas/default.nix b/nixpkgs/pkgs/development/python-modules/smart-meter-texas/default.nix
index 556f978c7312..de9f007af7ba 100644
--- a/nixpkgs/pkgs/development/python-modules/smart-meter-texas/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/smart-meter-texas/default.nix
@@ -5,13 +5,14 @@
 , 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 +20,19 @@ 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/nixpkgs/pkgs/development/python-modules/smart-open/default.nix b/nixpkgs/pkgs/development/python-modules/smart-open/default.nix
index b9622276bdf8..470de7e118e0 100644
--- a/nixpkgs/pkgs/development/python-modules/smart-open/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/smart-open/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , pythonOlder
 , fetchFromGitHub
+, fetchpatch
 , azure-common
 , azure-core
 , azure-storage-blob
@@ -31,6 +32,16 @@ buildPythonPackage rec {
     hash = "sha256-4HOTaF6AKXGlVCvSGKnnaH73aa4IO0aRxz03XQ4gSd8=";
   };
 
+  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=";
+    })
+  ];
+
   build-system = [
     setuptools
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/smtpdfix/default.nix b/nixpkgs/pkgs/development/python-modules/smtpdfix/default.nix
index 5d34cd6693bf..3d541263c05a 100644
--- a/nixpkgs/pkgs/development/python-modules/smtpdfix/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/smtpdfix/default.nix
@@ -13,12 +13,12 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix b/nixpkgs/pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix
index 9f194eb25357..a029348d4ffa 100644
--- a/nixpkgs/pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "snakemake-storage-plugin-s3";
-  version = "0.2.10";
+  version = "0.2.11";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "snakemake";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-k21DRQdSUFkdwNb7MZJmClhIg+pdSc7H6FkDrbf4DT8=";
+    hash = "sha256-pAMrWJe4+PWHglZ/C83Af+uHBg9wupfSlH4W8CvO9as=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/snitun/default.nix b/nixpkgs/pkgs/development/python-modules/snitun/default.nix
index 10df69781826..a0192ee1188e 100644
--- a/nixpkgs/pkgs/development/python-modules/snitun/default.nix
+++ b/nixpkgs/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.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/nixpkgs/pkgs/development/python-modules/snowflake-sqlalchemy/default.nix b/nixpkgs/pkgs/development/python-modules/snowflake-sqlalchemy/default.nix
index d8857b971a31..66824e6ccd0f 100644
--- a/nixpkgs/pkgs/development/python-modules/snowflake-sqlalchemy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/snowflake-sqlalchemy/default.nix
@@ -9,14 +9,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/soco/default.nix b/nixpkgs/pkgs/development/python-modules/soco/default.nix
index 347273e453e6..191f963c7594 100644
--- a/nixpkgs/pkgs/development/python-modules/soco/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/softlayer/default.nix b/nixpkgs/pkgs/development/python-modules/softlayer/default.nix
index 8ce880889d66..232097f29f25 100644
--- a/nixpkgs/pkgs/development/python-modules/softlayer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/softlayer/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "softlayer";
-  version = "6.1.11";
+  version = "6.2.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -29,8 +29,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = pname;
     repo = "softlayer-python";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-2iN3T58aICQlGwr10/e/mWE9pA4rbJCBTE1jTu3GeGk=";
+    rev = "refs/tags/v.${version}";
+    hash = "sha256-xlfVxQFsBKKpEsVmPlxn0sSyePNEmhly6wS/lTvP3DA=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/solax/default.nix b/nixpkgs/pkgs/development/python-modules/solax/default.nix
index ffba0140becd..f63ea26d5adf 100644
--- a/nixpkgs/pkgs/development/python-modules/solax/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/solax/default.nix
@@ -13,21 +13,21 @@
 
 buildPythonPackage rec {
   pname = "solax";
-  version = "3.0.5";
+  version = "3.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-PQ7qJCNfXGNF2RK6pHwf0U1DXgv2j2uQ64Nv/qh8f8s=";
+    hash = "sha256-vc1NAbcQQxjpXnjZvTsnebzMc/LoMwBveDHBxBbhnEo=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     async-timeout
     voluptuous
diff --git a/nixpkgs/pkgs/development/python-modules/speechrecognition/default.nix b/nixpkgs/pkgs/development/python-modules/speechrecognition/default.nix
index a6e839ead5ce..8629af8a075f 100644
--- a/nixpkgs/pkgs/development/python-modules/speechrecognition/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/spglib/default.nix b/nixpkgs/pkgs/development/python-modules/spglib/default.nix
index 2939ab51989c..5255fedd044b 100644
--- a/nixpkgs/pkgs/development/python-modules/spglib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/spglib/default.nix
@@ -20,12 +20,12 @@
 
 buildPythonPackage rec {
   pname = "spglib";
-  version = "2.3.1";
+  version = "2.4.0";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-c24l7GfCIMsg+rcBfE/mOC7t7iIwdtV/QEc0KxvGjOM=";
+    hash = "sha256-bmP57mG3DxU6ItO1ULGD2lMfiQR1kX/OIDutRZeqwkM=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx-autoapi/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx-autoapi/default.nix
index ca80a717ba54..f10e8be83da6 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinx-autoapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinx-autoapi/default.nix
@@ -53,6 +53,8 @@ buildPythonPackage rec {
     # failing typing assertions
     "test_integration"
     "test_annotations"
+    # sphinx.errors.SphinxWarning: cannot cache unpickable configuration value: 'autoapi_prepare_jinja_env' (because it contains a function, class, or module object)
+    "test_custom_jinja_filters"
   ];
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx-autobuild/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx-autobuild/default.nix
index d4ad4cedab8c..50189474d4c1 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinx-autobuild/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinx-autobuild/default.nix
@@ -1,21 +1,32 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
+
+# build-system
 , flit-core
+
+# dependencies
 , colorama
 , sphinx
-, livereload
+, 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 = [
@@ -25,11 +36,15 @@ buildPythonPackage rec {
   dependencies = [
     colorama
     sphinx
-    livereload
+    starlette
+    uvicorn
+    watchfiles
+    websockets
   ];
 
-  # No tests included.
-  doCheck = false;
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
 
   pythonImportsCheck = [ "sphinx_autobuild" ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx-autodoc-typehints/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx-autodoc-typehints/default.nix
index e5bba673e4ce..45ef02367fbe 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinx-autodoc-typehints/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinx-autodoc-typehints/default.nix
@@ -10,7 +10,7 @@
 
 let
   pname = "sphinx-autodoc-typehints";
-  version = "2.0.0";
+  version = "2.1.0";
 in
 
 buildPythonPackage {
@@ -22,7 +22,7 @@ buildPythonPackage {
   src = fetchPypi {
     pname = "sphinx_autodoc_typehints";
     inherit version;
-    hash = "sha256-fyzawucP2Xh5Jrbp5UHNTe0eg40rRv2iobsKdexbfzo=";
+    hash = "sha256-Ub+Nx3xPunR+MvBzUAKpFQB0fQVTyuYWhjhI6PXkn+g=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx-intl/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx-intl/default.nix
index 1fdf937ae650..0e719aaa6e73 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinx-intl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinx-intl/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "sphinx-intl";
-  version = "2.1.0";
-  format = "setuptools";
+  version = "2.2.0";
+  format = "pyproject";
 
  src = fetchFromGitHub {
     owner = "sphinx-doc";
     repo = pname;
     rev = version;
-    hash = "sha256-U/YCviGrsZNruVzfP0P2dGcB0K0Afh+XUZtp71OeP6c=";
+    hash = "sha256-4sFKrUSk8DqPbEM+Q3cRijXyxRSIdkIEAI/mAmB0wB0=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx-jupyterbook-latex/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx-jupyterbook-latex/default.nix
index 3d015a15f44a..9918f80f6dab 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinx-jupyterbook-latex/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinx-jupyterbook-latex/default.nix
@@ -12,6 +12,7 @@
 , sphinx-external-toc
 , sphinxcontrib-bibtex
 , texsoup
+, defusedxml
 }:
 
 buildPythonPackage rec {
@@ -47,6 +48,7 @@ buildPythonPackage rec {
     sphinx-external-toc
     sphinxcontrib-bibtex
     texsoup
+    defusedxml
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx-pytest/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx-pytest/default.nix
index 7bc41418fe46..e89183641e40 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinx-pytest/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinx-pytest/default.nix
@@ -4,6 +4,7 @@
 , flit-core
 , pytest
 , sphinx
+, defusedxml
 , pytestCheckHook
 }:
 
@@ -36,6 +37,7 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    defusedxml
     pytestCheckHook
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx-rtd-theme/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx-rtd-theme/default.nix
index 1e8e0cd4b1e7..61e443333b3e 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinx-rtd-theme/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinx-rtd-theme/default.nix
@@ -40,6 +40,11 @@ buildPythonPackage rec {
     readthedocs-sphinx-ext
   ];
 
+  disabledTests = [
+    # docutils 0.21 compat
+    "test_basic"
+  ];
+
   pythonRelaxDeps = [
     "docutils"
     "sphinxcontrib-jquery"
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx/default.nix
index 43b7ebcd99ee..6608cbfff56c 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinx/default.nix
@@ -1,14 +1,13 @@
 { lib
 , buildPythonPackage
-, pythonAtLeast
 , pythonOlder
 , fetchFromGitHub
 , isPyPy
 
-# nativeBuildInputs
+# build-system
 , flit-core
 
-# propagatedBuildInputs
+# dependencies
 , babel
 , alabaster
 , docutils
@@ -26,8 +25,10 @@
 , sphinxcontrib-qthelp
 , sphinxcontrib-serializinghtml
 , sphinxcontrib-websupport
+, tomli
 
 # check phase
+, defusedxml
 , filelock
 , html5lib
 , pytestCheckHook
@@ -36,7 +37,7 @@
 
 buildPythonPackage rec {
   pname = "sphinx";
-  version = "7.2.6";
+  version = "7.3.7";
   format = "pyproject";
   disabled = pythonOlder "3.9";
 
@@ -51,14 +52,14 @@ 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 = [
+  build-system = [
     flit-core
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     alabaster
     babel
     docutils
@@ -76,6 +77,8 @@ buildPythonPackage rec {
     sphinxcontrib-serializinghtml
     # extra[docs]
     sphinxcontrib-websupport
+  ] ++ lib.optionals (pythonOlder "3.11") [
+    tomli
   ] ++ lib.optionals (pythonOlder "3.10") [
     importlib-metadata
   ];
@@ -83,6 +86,7 @@ buildPythonPackage rec {
   __darwinAllowLocalNetworking = true;
 
   nativeCheckInputs = [
+    defusedxml
     filelock
     html5lib
     pytestCheckHook
@@ -110,6 +114,8 @@ buildPythonPackage rec {
     "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 isPyPy [
     # PyPy has not __builtins__ which get asserted
     # https://doc.pypy.org/en/latest/cpython_differences.html#miscellaneous
@@ -122,9 +128,6 @@ buildPythonPackage rec {
     "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"
   ];
 
   meta = {
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix
index 240e51c72418..4d7373310410 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-confluencebuilder";
-  version = "2.5.1";
+  version = "2.5.2";
   format = "pyproject";
 
   src = fetchPypi {
     pname = "sphinxcontrib_confluencebuilder";
     inherit version;
-    hash = "sha256-PQpkwQ95UVJwDGTAq1xdcSvd07FZpZfA/4jq3ywlMas=";
+    hash = "sha256-FwjjlMTIhAD/v4Ig+uqrJJybdPqpPG+7OMuJwSqWo84=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-jquery/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-jquery/default.nix
index fef662c85dae..0ca9fad7b731 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-jquery/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-jquery/default.nix
@@ -3,6 +3,7 @@
 , fetchFromGitHub
 , fetchpatch
 , flit-core
+, defusedxml
 , pytestCheckHook
 , sphinx
 }:
@@ -42,6 +43,7 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    defusedxml
     pytestCheckHook
     sphinx
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix
index fb44f8ce343a..a52ebdd83d6f 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-tikz";
-  version = "0.4.18";
+  version = "0.4.19";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-+IQV2uoKqAGQzq0te6z7vi+NnvQGZ0Sb7XjhdT05Tzo=";
+    hash = "sha256-gen+bH4NvEbxnxr5HStisB1BqyKIS4n1VoHyAK4mXUk=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/spsdk/default.nix b/nixpkgs/pkgs/development/python-modules/spsdk/default.nix
index b64ef4a3d910..35b10ef7c97c 100644
--- a/nixpkgs/pkgs/development/python-modules/spsdk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/spsdk/default.nix
@@ -107,7 +107,6 @@ buildPythonPackage rec {
   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";
diff --git a/nixpkgs/pkgs/development/python-modules/sqlalchemy-utils/default.nix b/nixpkgs/pkgs/development/python-modules/sqlalchemy-utils/default.nix
index 1ace2eab9590..8b0a1a374754 100644
--- a/nixpkgs/pkgs/development/python-modules/sqlalchemy-utils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sqlalchemy-utils/default.nix
@@ -38,23 +38,17 @@
 
 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
-
-    (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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/sqlalchemy/default.nix b/nixpkgs/pkgs/development/python-modules/sqlalchemy/default.nix
index ae1f22b4c2f6..aa557ca55553 100644
--- a/nixpkgs/pkgs/development/python-modules/sqlalchemy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sqlalchemy/default.nix
@@ -40,7 +40,7 @@
 
 buildPythonPackage rec {
   pname = "sqlalchemy";
-  version = "2.0.29";
+  version = "2.0.30";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -49,7 +49,7 @@ buildPythonPackage rec {
     owner = "sqlalchemy";
     repo = "sqlalchemy";
     rev = "refs/tags/rel_${lib.replaceStrings [ "." ] [ "_" ] version}";
-    hash = "sha256-jEkuvwq/KKjcsREWDvvTFT87kgu3TSBR3JaseOs54qc=";
+    hash = "sha256-l6VxBK4RT/sAFkz3g633MrfQH9Bvp/JE12mdtqjsxd8=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/sqlbag/default.nix b/nixpkgs/pkgs/development/python-modules/sqlbag/default.nix
index 8b21d89ad5da..8ff8305b4d4f 100644
--- a/nixpkgs/pkgs/development/python-modules/sqlbag/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sqlbag/default.nix
@@ -1,11 +1,9 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, isPy27
 , psycopg2
 , pymysql
 , sqlalchemy
-, pathlib
 , six
 , flask
 , pendulum
@@ -17,7 +15,6 @@
 , pytest-sugar
 , postgresql
 , postgresqlTestHook
-,
 }:
 buildPythonPackage rec {
   pname = "sqlbag";
@@ -46,8 +43,7 @@ buildPythonPackage rec {
       pymysql
 
       setuptools # needed for 'pkg_resources'
-    ]
-    ++ lib.optional isPy27 pathlib;
+    ];
 
   nativeCheckInputs = [
     pytestCheckHook
@@ -91,5 +87,6 @@ buildPythonPackage rec {
     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/nixpkgs/pkgs/development/python-modules/sqlite-anyio/default.nix b/nixpkgs/pkgs/development/python-modules/sqlite-anyio/default.nix
new file mode 100644
index 000000000000..80926de7f47a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sqlite-anyio/default.nix
@@ -0,0 +1,42 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  hatchling,
+  anyio,
+  pytestCheckHook,
+  trio,
+}:
+
+buildPythonPackage rec {
+  pname = "sqlite-anyio";
+  version = "0.2.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "davidbrochart";
+    repo = "sqlite-anyio";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-6khHta7Rzp3g8G/xZnsNZuURFB35JyHz04NTzNJIiBw=";
+  };
+
+  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";
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sqlmap/default.nix b/nixpkgs/pkgs/development/python-modules/sqlmap/default.nix
index 9771771c8d0f..08a23ed4f273 100644
--- a/nixpkgs/pkgs/development/python-modules/sqlmap/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sqlmap/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "sqlmap";
-  version = "1.8.4";
+  version = "1.8.5";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zTFdGDzvPlNebsepPxXn2++22YANlDu82yprs7eHfac=";
+    hash = "sha256-ADs0Tfd8iR1OSGkV7pFdRw0RDHbxk6Ztje1AvSIdWqI=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/sqlparse/default.nix b/nixpkgs/pkgs/development/python-modules/sqlparse/default.nix
index c0afa5eeb7c1..2e63191e033c 100644
--- a/nixpkgs/pkgs/development/python-modules/sqlparse/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sqlparse/default.nix
@@ -1,10 +1,10 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, flit-core
+, hatchling
 , installShellFiles
 , pytestCheckHook
-, isPy3k
+, pythonOlder
 
 # for passthru.tests
 , django
@@ -15,18 +15,19 @@
 
 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 ];
 
@@ -40,11 +41,12 @@ buildPythonPackage rec {
 
   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/nixpkgs/pkgs/development/python-modules/sqlsoup/default.nix b/nixpkgs/pkgs/development/python-modules/sqlsoup/default.nix
deleted file mode 100644
index d75621cc6345..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/development/python-modules/srt/default.nix b/nixpkgs/pkgs/development/python-modules/srt/default.nix
index 8fb0d7276141..9bd76b15d2bd 100644
--- a/nixpkgs/pkgs/development/python-modules/srt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/srt/default.nix
@@ -3,7 +3,6 @@
 , fetchPypi
 , hypothesis
 , pytestCheckHook
-, pythonOlder
 }:
 
 buildPythonPackage rec {
@@ -11,8 +10,6 @@ buildPythonPackage rec {
   version = "3.5.3";
   format = "setuptools";
 
-  disabled = pythonOlder "2.7";
-
   src = fetchPypi {
     inherit pname version;
     sha256 = "sha256-SIQxUEOk8HQP0fh47WyqN2rAbXDhNfMGptxEYy7tDMA=";
diff --git a/nixpkgs/pkgs/development/python-modules/stack-data/default.nix b/nixpkgs/pkgs/development/python-modules/stack-data/default.nix
index d6cbacf3abd0..a3fe6964f755 100644
--- a/nixpkgs/pkgs/development/python-modules/stack-data/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/stack-data/default.nix
@@ -3,39 +3,33 @@
 , cython
 , executing
 , fetchFromGitHub
-, git
 , lib
 , littleutils
 , pure-eval
 , pygments
 , pytestCheckHook
 , setuptools-scm
-, toml
 , 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 +40,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 +59,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/nixpkgs/pkgs/development/python-modules/starlette-wtf/default.nix b/nixpkgs/pkgs/development/python-modules/starlette-wtf/default.nix
index 3ca744a71f2f..bacbbb0a1c59 100644
--- a/nixpkgs/pkgs/development/python-modules/starlette-wtf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/starlette-wtf/default.nix
@@ -13,14 +13,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/stashy/default.nix b/nixpkgs/pkgs/development/python-modules/stashy/default.nix
index fbac0df71f1d..24a157360636 100644
--- a/nixpkgs/pkgs/development/python-modules/stashy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/stashy/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , decorator
 , fetchPypi
-, pythonOlder
 , requests
  }:
 
@@ -10,7 +9,6 @@ buildPythonPackage rec {
   pname = "stashy";
   version = "0.7";
   format = "setuptools";
-  disabled = pythonOlder "3.4";
 
   src = fetchPypi {
     inherit pname version;
diff --git a/nixpkgs/pkgs/development/python-modules/statsmodels/default.nix b/nixpkgs/pkgs/development/python-modules/statsmodels/default.nix
index d92e618c99be..24dc020859d8 100644
--- a/nixpkgs/pkgs/development/python-modules/statsmodels/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/statsmodels/default.nix
@@ -3,37 +3,39 @@
 , cython
 , fetchPypi
 , numpy
-, oldest-supported-numpy
 , packaging
 , pandas
 , patsy
-, pythonAtLeast
 , 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
   ];
 
   dependencies = [
@@ -56,5 +58,7 @@ buildPythonPackage rec {
     homepage = "https://www.github.com/statsmodels/statsmodels";
     changelog = "https://github.com/statsmodels/statsmodels/releases/tag/v${version}";
     license = licenses.bsd3;
+    # Fails at build time
+    broken = stdenv.isDarwin;
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/stdlibs/default.nix b/nixpkgs/pkgs/development/python-modules/stdlibs/default.nix
index 677d282f0653..fb9c0f54479f 100644
--- a/nixpkgs/pkgs/development/python-modules/stdlibs/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/stem/default.nix b/nixpkgs/pkgs/development/python-modules/stem/default.nix
index 7d9dc7564a09..bebab6f59d6d 100644
--- a/nixpkgs/pkgs/development/python-modules/stem/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/stem/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , pythonOlder
 , fetchFromGitHub
+, fetchpatch
 , setuptools
 , cryptography
 , mock
@@ -23,6 +24,14 @@ buildPythonPackage rec {
     hash = "sha256-Oc73Jx31SLzuhT9Iym5HHszKfflKZ+3aky5flXudvmI=";
   };
 
+  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
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/stickytape/default.nix b/nixpkgs/pkgs/development/python-modules/stickytape/default.nix
index 99e63ebd3dfb..71d5327ef5cf 100644
--- a/nixpkgs/pkgs/development/python-modules/stickytape/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/stickytape/default.nix
@@ -1,10 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, nose
-, pytestCheckHook
-, pythonOlder
-, spur
 }:
 
 buildPythonPackage rec {
@@ -12,8 +8,6 @@ buildPythonPackage rec {
   version = "0.2.1";
   format = "setuptools";
 
-  disabled = pythonOlder "3.4";
-
   src = fetchFromGitHub {
     owner = "mwilliamson";
     repo = pname;
diff --git a/nixpkgs/pkgs/development/python-modules/stim/default.nix b/nixpkgs/pkgs/development/python-modules/stim/default.nix
index 3e95b74ef9ef..ca76e41880af 100644
--- a/nixpkgs/pkgs/development/python-modules/stim/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/stim/default.nix
@@ -32,7 +32,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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/stix2-patterns/default.nix b/nixpkgs/pkgs/development/python-modules/stix2-patterns/default.nix
index b291e2cd7242..4ca5ee040a75 100644
--- a/nixpkgs/pkgs/development/python-modules/stix2-patterns/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/stix2-patterns/default.nix
@@ -1,12 +1,12 @@
-{ lib
-, antlr4-python3-runtime
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, pytestCheckHook
-, wheel
-, six
+{
+  lib,
+  antlr4-python3-runtime,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  six,
 }:
 
 buildPythonPackage rec {
@@ -25,26 +25,19 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "antlr4-python3-runtime~=" "antlr4-python3-runtime>="
+      --replace-fail "antlr4-python3-runtime~=" "antlr4-python3-runtime>="
   '';
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     antlr4-python3-runtime
     six
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "stix2patterns"
-  ];
+  pythonImportsCheck = [ "stix2patterns" ];
 
   disabledTestPaths = [
     # Exception: Could not deserialize ATN with version  (expected 4)
diff --git a/nixpkgs/pkgs/development/python-modules/stone/default.nix b/nixpkgs/pkgs/development/python-modules/stone/default.nix
index a2053f60aeeb..5f374859e017 100644
--- a/nixpkgs/pkgs/development/python-modules/stone/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/stone/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "stone";
-  version = "3.3.3";
+  version = "3.3.6";
   pyproject = true;
 
   # distutils removal, https://github.com/dropbox/stone/issues/323
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "dropbox";
     repo = "stone";
     rev = "refs/tags/v${version}";
-    hash = "sha256-l86j2fd6x57bKt/TFGiyg+ZFjZFFCo43rE48MoPvXWc=";
+    hash = "sha256-Og0hUUCCd9wRdHUhZBl62rDAunP2Bph5COsCw/T1kUA=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/strct/default.nix b/nixpkgs/pkgs/development/python-modules/strct/default.nix
index c5f9bc2f994b..5148958b9789 100644
--- a/nixpkgs/pkgs/development/python-modules/strct/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/strct/default.nix
@@ -1,6 +1,5 @@
 { lib
 , fetchFromGitHub
-, fetchpatch
 , buildPythonPackage
 , setuptools
 , pytestCheckHook
@@ -9,36 +8,26 @@
 
 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 \
+    substituteInPlace pyproject.toml \
       --replace-fail  \
-        "--cov" \
-        "#--cov"
-
-    # configure correct version, which fails due to missing .git
-    substituteInPlace versioneer.py strct/_version.py \
-      --replace-fail '"0+unknown"' '"${version}"'
+        '"--cov' \
+        '#"--cov'
   '';
 
+  # don't append .dev0 to version
+  env.RELEASING_PROCESS = "1";
+
   nativeBuildInputs = [
     setuptools
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/streamlit/default.nix b/nixpkgs/pkgs/development/python-modules/streamlit/default.nix
index 7dc7395749b3..4b36ad61faa0 100644
--- a/nixpkgs/pkgs/development/python-modules/streamlit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/streamlit/default.nix
@@ -33,14 +33,14 @@
 
 buildPythonPackage rec {
   pname = "streamlit";
-  version = "1.33.0";
+  version = "1.34.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-qNqP9G9blIxW0tx6ynphz42ZX08hdEz4IliudeYwBLo=";
+    hash = "sha256-E1o7eaaGsxMrc/IERQrW6IneBPM0nWkpJeCfDiHnS1I=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/streamz/default.nix b/nixpkgs/pkgs/development/python-modules/streamz/default.nix
index ff12abf47ae3..87a54da43115 100644
--- a/nixpkgs/pkgs/development/python-modules/streamz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/streamz/default.nix
@@ -1,16 +1,18 @@
-{ stdenv
-, lib
+{ lib
+, stdenv
 , buildPythonPackage
+, pythonOlder
+, fetchPypi
+, setuptools
 , confluent-kafka
+, dask
+, dask-expr
 , distributed
-, fetchpatch
-, fetchPypi
 , flaky
 , graphviz
 , networkx
 , pytest-asyncio
 , pytestCheckHook
-, pythonOlder
 , requests
 , six
 , toolz
@@ -21,7 +23,7 @@
 buildPythonPackage rec {
   pname = "streamz";
   version = "0.6.4";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
@@ -30,7 +32,11 @@ buildPythonPackage rec {
     hash = "sha256-VXfWkEwuxInBQVQJV3IQXgGVRkiBmYfUZCBMbjyWNPM=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     networkx
     six
     toolz
@@ -40,6 +46,8 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     confluent-kafka
+    dask
+    dask-expr
     distributed
     flaky
     graphviz
diff --git a/nixpkgs/pkgs/development/python-modules/stripe/default.nix b/nixpkgs/pkgs/development/python-modules/stripe/default.nix
index fe31361a65be..9017a5b7a6ff 100644
--- a/nixpkgs/pkgs/development/python-modules/stripe/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/stripe/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "stripe";
-  version = "9.4.0";
+  version = "9.6.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-D94cu/Re4Nd71/vYVhiG37bawPNuWp5T/cpKc4biPsw=";
+    hash = "sha256-kwXYSc6nFdxZxeOdAYkUdbguEO252V7h2BiUV+XeeS8=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/succulent/default.nix b/nixpkgs/pkgs/development/python-modules/succulent/default.nix
index 74d369acefc1..f3d90ec52abf 100644
--- a/nixpkgs/pkgs/development/python-modules/succulent/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/succulent/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , fetchFromGitHub
 , flask
+, lxml
 , pandas
 , pyyaml
 , poetry-core
@@ -9,14 +10,15 @@
 , pythonRelaxDepsHook
 , pythonOlder
 , toml-adapt
+, xmltodict
 }:
 
 buildPythonPackage rec {
   pname = "succulent";
   version = "0.3.3";
-  format = "pyproject";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "firefly-cpp";
@@ -27,7 +29,6 @@ buildPythonPackage rec {
 
   pythonRelaxDeps = [
     "flask"
-    "pandas"
   ];
 
   nativeBuildInputs = [
@@ -37,8 +38,10 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     flask
+    lxml
     pandas
     pyyaml
+    xmltodict
   ];
 
   nativeCheckInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/summarytools/default.nix b/nixpkgs/pkgs/development/python-modules/summarytools/default.nix
index 4bbbae78c88b..58457768fe0e 100644
--- a/nixpkgs/pkgs/development/python-modules/summarytools/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/sunpy/default.nix b/nixpkgs/pkgs/development/python-modules/sunpy/default.nix
index 17aa79c34020..88a803fa46fb 100644
--- a/nixpkgs/pkgs/development/python-modules/sunpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sunpy/default.nix
@@ -31,14 +31,14 @@
 
 buildPythonPackage rec {
   pname = "sunpy";
-  version = "5.1.1";
+  version = "5.1.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-k2fsmvKjl/zVljiyAHII1O6vntJOPo3CWWwmsYlsLh8=";
+    hash = "sha256-1/oz2Ir1K7nR6B2TPZzSjbyiADyQyRlzE9KqTg7EwkA=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/superqt/default.nix b/nixpkgs/pkgs/development/python-modules/superqt/default.nix
index e7c3aaa04589..a54f3df4a7f5 100644
--- a/nixpkgs/pkgs/development/python-modules/superqt/default.nix
+++ b/nixpkgs/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.6";
+  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-AJXX460sm0rrimizkiBIjYFRtWbscEjlwo5ZLcgjzcA=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/sympy/default.nix b/nixpkgs/pkgs/development/python-modules/sympy/default.nix
index d2a10492153e..1954f8bc591f 100644
--- a/nixpkgs/pkgs/development/python-modules/sympy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sympy/default.nix
@@ -3,6 +3,9 @@
 , fetchPypi
 , glibcLocales
 , mpmath
+
+# Reverse dependency
+, sage
 }:
 
 buildPythonPackage rec {
@@ -27,6 +30,8 @@ buildPythonPackage rec {
     export LANG="en_US.UTF-8"
   '';
 
+  passthru.tests = { inherit sage; };
+
   meta = with lib; {
     description = "A Python library for symbolic mathematics";
     mainProgram = "isympy";
diff --git a/nixpkgs/pkgs/development/python-modules/tablib/default.nix b/nixpkgs/pkgs/development/python-modules/tablib/default.nix
index 679f8df11559..66388b285686 100644
--- a/nixpkgs/pkgs/development/python-modules/tablib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tablib/default.nix
@@ -17,14 +17,14 @@
 
 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 = ''
diff --git a/nixpkgs/pkgs/development/python-modules/tabula-py/default.nix b/nixpkgs/pkgs/development/python-modules/tabula-py/default.nix
index bdc31012cf2d..4556443136b2 100644
--- a/nixpkgs/pkgs/development/python-modules/tabula-py/default.nix
+++ b/nixpkgs/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.1";
   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-C06du4mhpnF2qxcEMZxp5O/8xpNaj9Jp8LFaxBkGF/Q=";
   };
 
   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/nixpkgs/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix b/nixpkgs/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix
index 502e791ddd30..5b0513a0d831 100644
--- a/nixpkgs/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix
+++ b/nixpkgs/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.1149";
   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-3c5MxP2u539++7R6ZMfRMqcxu9THTAWGjaPSdGbqTC8=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/tensordict/default.nix b/nixpkgs/pkgs/development/python-modules/tensordict/default.nix
index 6c64ca00c5ee..6dceda423658 100644
--- a/nixpkgs/pkgs/development/python-modules/tensordict/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tensordict/default.nix
@@ -11,11 +11,12 @@
 , h5py
 , pytestCheckHook
 , stdenv
+, pythonAtLeast
 }:
 
 buildPythonPackage rec {
   pname = "tensordict";
-  version = "0.3.1";
+  version = "0.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,17 +25,17 @@ buildPythonPackage rec {
     owner = "pytorch";
     repo = "tensordict";
     rev = "refs/tags/v${version}";
-    hash = "sha256-eCx1r7goqOdGX/0mSGCiLhdGQTh4Swa5aFiLSsL56p0=";
+    hash = "sha256-wKEzNaaazGEkoElzp93RIlq/r5uRUdM7UyDy/DygIEc=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     torch
     wheel
     which
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cloudpickle
     numpy
     torch
@@ -72,5 +73,7 @@ buildPythonPackage rec {
     homepage = "https://github.com/pytorch/tensordict";
     license = licenses.mit;
     maintainers = with maintainers; [ GaetanLepage ];
+    # No python 3.12 support yet: https://github.com/pytorch/rl/issues/2035
+    broken = pythonAtLeast "3.12";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/bin.nix b/nixpkgs/pkgs/development/python-modules/tensorflow/bin.nix
index 104002361926..7bb535258dd3 100644
--- a/nixpkgs/pkgs/development/python-modules/tensorflow/bin.nix
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow/bin.nix
@@ -22,7 +22,7 @@
 , tensorboard
 , config
 , cudaSupport ? config.cudaSupport
-, cudaPackagesGoogle
+, cudaPackages
 , zlib
 , python
 , keras-applications
@@ -31,6 +31,7 @@
 , astunparse
 , flatbuffers
 , h5py
+, llvmPackages
 , typing-extensions
 }:
 
@@ -43,7 +44,7 @@ assert ! (stdenv.isDarwin && cudaSupport);
 
 let
   packages = import ./binary-hashes.nix;
-  inherit (cudaPackagesGoogle) cudatoolkit cudnn;
+  inherit (cudaPackages) cudatoolkit cudnn;
 in buildPythonPackage {
   pname = "tensorflow" + lib.optionalString cudaSupport "-gpu";
   inherit (packages) version;
@@ -51,12 +52,16 @@ in buildPythonPackage {
 
   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 {});
+    platform = stdenv.system;
+    cuda = lib.optionalString cudaSupport "_gpu";
+    key = "${platform}_${pyVerNoDot}${cuda}";
+  in fetchurl (packages.${key} or (throw "tensoflow-bin: unsupported system: ${stdenv.system}"));
 
-  propagatedBuildInputs = [
+  buildInputs = [
+    llvmPackages.openmp
+  ];
+
+  dependencies = [
     astunparse
     flatbuffers
     typing-extensions
@@ -81,7 +86,7 @@ in buildPythonPackage {
     h5py
   ] ++ lib.optional (!isPy3k) mock;
 
-  nativeBuildInputs = [ wheel ] ++ lib.optionals cudaSupport [ addOpenGLRunpath ];
+  build-system = [ wheel ] ++ lib.optionals cudaSupport [ addOpenGLRunpath ];
 
   preConfigure = ''
     unset SOURCE_DATE_EPOCH
@@ -91,7 +96,6 @@ in buildPythonPackage {
 
     pushd dist
 
-    orig_name="$(echo ./*.whl)"
     wheel unpack --dest unpacked ./*.whl
     rm ./*.whl
     (
@@ -113,7 +117,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
   '';
@@ -168,6 +171,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}"
       )
 
@@ -199,16 +203,16 @@ in buildPythonPackage {
     "tensorflow.python.framework"
   ];
 
-  passthru = {
-    cudaPackages = cudaPackagesGoogle;
-  };
-
   meta = with lib; {
     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" ];
+    platforms = platforms.all;
+    # Cannot import tensortfow on python 3.12 as it still dependends on distutils:
+    # ModuleNotFoundError: No module named 'distutils'
+    # https://github.com/tensorflow/tensorflow/issues/58073
+    broken = pythonAtLeast "3.12";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/binary-hashes.nix b/nixpkgs/pkgs/development/python-modules/tensorflow/binary-hashes.nix
index 9204d1652d03..93d951cf6a1a 100644
--- a/nixpkgs/pkgs/development/python-modules/tensorflow/binary-hashes.nix
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow/binary-hashes.nix
@@ -1,39 +1,83 @@
 {
-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.16.1";
+x86_64-linux_39 = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow_cpu-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
+  sha256 = "0j4311fav3b4wdhw9wb3zvc3grvgxddl28i4kwnbsvvjb191pcs5";
+};
+x86_64-linux_310 = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow_cpu-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
+  sha256 = "0b8q3r2ql7rknlshiv3bh3hj9zll0dn6w0wdxnqgg18cljys5nhh";
+};
+x86_64-linux_311 = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow_cpu-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
+  sha256 = "12vv2jxybdfa8nq7r2y53vl7lvmaacb1xmy2368hkwqm2ld4mplg";
+};
+x86_64-linux_312 = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow_cpu-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
+  sha256 = "0vvv3cr10r6kgkalk3hydqz18y4lp990pm4vwq8mbwdi101m59mf";
+};
+x86_64-linux_39_gpu = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
+  sha256 = "17v85433ns360rcccx7pnkhjzd003cr8p6rj51wqb3gl7gkldf83";
+};
+x86_64-linux_310_gpu = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
+  sha256 = "0w3jd7siamvhgd7si59zpv3rdpq3s2ii3hhcdaimji66axv095hy";
+};
+x86_64-linux_311_gpu = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
+  sha256 = "014liy5wnbi2d2lnr8lqhd7221a4a1v6gzih7nv5qfnf1h86234k";
+};
+x86_64-linux_312_gpu = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl";
+  sha256 = "0qd09bxfnad969y2h3mlzib51y6xcsqipq1w278k1fl8ayxky4ja";
+};
+aarch64-linux_39 = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+  sha256 = "1n3qf0snjwrc0lcahls4bi2qhpd4yrd531b80vlq89j0gjkjl5cj";
+};
+aarch64-linux_310 = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+  sha256 = "1aygypgm5fbpskf6xvzni2yd9l49hf3ls855z2aq0as73m3m81df";
+};
+aarch64-linux_311 = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+  sha256 = "1c0bqiq2hbzcqhaym3s3s0dsp06m07mqgvm35z14nz395pxgjzb1";
+};
+aarch64-linux_312 = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+  sha256 = "1ai2hrmn1il0hididdvhd005pjcn6hjivpgcw7dbhmdv6vacs4n6";
+};
+x86_64-darwin_39 = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow-2.16.1-cp39-cp39-macosx_10_15_x86_64.whl";
+  sha256 = "0dkcd1v0ivjp6v5pngg0x461wci94nxvwprc6jwgi7rqgyx3zkz9";
+};
+x86_64-darwin_310 = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow-2.16.1-cp310-cp310-macosx_10_15_x86_64.whl";
+  sha256 = "0rnlxrb4q2cgqaifalhpji15g1f3m9flqfvfj2p2sv3lvmbg2ydb";
+};
+x86_64-darwin_311 = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow-2.16.1-cp311-cp311-macosx_10_15_x86_64.whl";
+  sha256 = "1xc9lis61adk2y22a82i3rvc0j7qznf4fqwg2pd1665zlhybi9gq";
+};
+x86_64-darwin_312 = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow-2.16.1-cp312-cp312-macosx_10_15_x86_64.whl";
+  sha256 = "10g8y02ncp5l7f133vank6h01palc445h6s9jndmmy7vm33c7jh9";
+};
+aarch64-darwin_39 = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow-2.16.1-cp39-cp39-macosx_12_0_arm64.whl";
+  sha256 = "0541ldysc1a06xcb632340gn1c33w245lzqwq2f2p6hm2ifqp1a2";
+};
+aarch64-darwin_310 = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow-2.16.1-cp310-cp310-macosx_12_0_arm64.whl";
+  sha256 = "1crrd4izayqwji5gxjw1g9qppkvfsc8p1mr7z6hiipxidys6ldwf";
+};
+aarch64-darwin_311 = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow-2.16.1-cp311-cp311-macosx_12_0_arm64.whl";
+  sha256 = "0kg4g4p563nhw0l2jzydhw4ycyj3dkgqzzm0m3z8k7vzsb8na86c";
+};
+aarch64-darwin_312 = {
+  url = "https://storage.googleapis.com/tensorflow/versions/2.16.1/tensorflow-2.16.1-cp312-cp312-macosx_12_0_arm64.whl";
+  sha256 = "1hnzfpfncw8fa84y0jivpfyb5cbbd4cvpln72wkcxpvhj23nvw5v";
 };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/default.nix b/nixpkgs/pkgs/development/python-modules/tensorflow/default.nix
index 069b87b76f84..2c44b89aefea 100644
--- a/nixpkgs/pkgs/development/python-modules/tensorflow/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow/default.nix
@@ -1,7 +1,7 @@
 { stdenv, bazel_5, buildBazelPackage, lib, fetchFromGitHub, symlinkJoin
 , addOpenGLRunpath, fetchpatch, fetchzip, linkFarm
 # Python deps
-, buildPythonPackage, pythonOlder, python
+, buildPythonPackage, pythonAtLeast, pythonOlder, python
 # Python libraries
 , numpy, tensorboard, abseil-cpp, absl-py
 , packaging, setuptools, wheel, keras-preprocessing, google-pasta
@@ -19,8 +19,8 @@
 # https://groups.google.com/a/tensorflow.org/forum/#!topic/developers/iRCt5m4qUz0
 , config
 , cudaSupport ? config.cudaSupport
-, cudaPackagesGoogle
-, cudaCapabilities ? cudaPackagesGoogle.cudaFlags.cudaCapabilities
+, cudaPackages
+, cudaCapabilities ? cudaPackages.cudaFlags.cudaCapabilities
 , mklSupport ? false, mkl
 , tensorboardSupport ? true
 # XLA without CUDA is broken
@@ -50,15 +50,15 @@ let
   # __ZN4llvm11SmallPtrSetIPKNS_10AllocaInstELj8EED1Ev in any of the
   # translation units, so the build fails at link time
   stdenv =
-    if cudaSupport then cudaPackagesGoogle.backendStdenv
+    if cudaSupport then cudaPackages.backendStdenv
     else if originalStdenv.isDarwin then llvmPackages.stdenv
     else originalStdenv;
-  inherit (cudaPackagesGoogle) cudatoolkit nccl;
+  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};
+  cudnn = 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=";
@@ -490,8 +490,8 @@ let
       broken =
         stdenv.isDarwin
         || !(xlaSupport -> cudaSupport)
-        || !(cudaSupport -> builtins.hasAttr cudnnAttribute cudaPackagesGoogle)
-        || !(cudaSupport -> cudaPackagesGoogle ? cudatoolkit);
+        || !(cudaSupport -> builtins.hasAttr cudnnAttribute cudaPackages)
+        || !(cudaSupport -> cudaPackages ? cudatoolkit);
     } // lib.optionalAttrs stdenv.isDarwin {
       timeout = 86400; # 24 hours
       maxSilent = 14400; # 4h, double the default of 7200s
@@ -500,7 +500,7 @@ let
 
 in buildPythonPackage {
   inherit version pname;
-  disabled = pythonOlder "3.8";
+  disabled = pythonAtLeast "3.12";
 
   src = bazel-build.python;
 
@@ -594,7 +594,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/nixpkgs/pkgs/development/python-modules/tensorflow/prefetcher.sh b/nixpkgs/pkgs/development/python-modules/tensorflow/prefetcher.sh
index 136d982f2f60..acd2bc0857b3 100755
--- a/nixpkgs/pkgs/development/python-modules/tensorflow/prefetcher.sh
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow/prefetcher.sh
@@ -1,22 +1,33 @@
 #!/usr/bin/env bash
 
-version="2.15.0"
+version="2.16.1"
 
-bucket="https://storage.googleapis.com/tensorflow"
+bucket="https://storage.googleapis.com/tensorflow/versions/${version}"
 
 # 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"
+"x86_64-darwin_39 $bucket/tensorflow-${version}-cp39-cp39-macosx_10_15_x86_64.whl"
+"x86_64-darwin_310 $bucket/tensorflow-${version}-cp310-cp310-macosx_10_15_x86_64.whl"
+"x86_64-darwin_311 $bucket/tensorflow-${version}-cp311-cp311-macosx_10_15_x86_64.whl"
+"x86_64-darwin_312 $bucket/tensorflow-${version}-cp312-cp312-macosx_10_15_x86_64.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
diff --git a/nixpkgs/pkgs/development/python-modules/tesla-fleet-api/default.nix b/nixpkgs/pkgs/development/python-modules/tesla-fleet-api/default.nix
index fad5795a930e..95b4e84390b1 100644
--- a/nixpkgs/pkgs/development/python-modules/tesla-fleet-api/default.nix
+++ b/nixpkgs/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.5.11";
   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-CwgIWTcLHlV+0ZoSUduQIX/lzmz65dFb+rWkQ/qfKY4=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/testcontainers/default.nix b/nixpkgs/pkgs/development/python-modules/testcontainers/default.nix
index 66607ed06fff..975537d1fc88 100644
--- a/nixpkgs/pkgs/development/python-modules/testcontainers/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/testcontainers/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "testcontainers";
-  version = "4.4.0";
+  version = "4.4.1";
   disabled = pythonOlder "3.9";
 
   pyproject = true;
@@ -20,14 +20,14 @@ buildPythonPackage rec {
     owner = "testcontainers";
     repo = "testcontainers-python";
     rev = "refs/tags/testcontainers-v${version}";
-    hash = "sha256-1iwbfArEjYxpEpMlmJ8rzVLXA8OSNT7ozkpTVTIL91U=";
+    hash = "sha256-osWppbptWpBSHcrHlAqNpn6j2n/qQ7iCobH3TVqB2bc=";
   };
 
   postPatch = ''
     echo "${version}" > VERSION
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/textdistance/default.nix b/nixpkgs/pkgs/development/python-modules/textdistance/default.nix
index c362e936eb32..9f386dc2bc82 100644
--- a/nixpkgs/pkgs/development/python-modules/textdistance/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/textdistance/default.nix
@@ -6,14 +6,14 @@
 
 buildPythonPackage rec {
   pname = "textdistance";
-  version = "4.6.1";
+  version = "4.6.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-JYllgBse+FaGppq/bDzv3F2iHC+9iMkMaHJfV6fUXyE=";
+    hash = "sha256-AeH7z3uHHrj0GRHZT0YbC5nPgAM4TuDhw0ylwaerLtA=";
   };
 
   # There aren't tests
diff --git a/nixpkgs/pkgs/development/python-modules/theano/default.nix b/nixpkgs/pkgs/development/python-modules/theano/default.nix
index 78a2a0836e76..ef8b80953390 100644
--- a/nixpkgs/pkgs/development/python-modules/theano/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/theano/default.nix
@@ -53,7 +53,7 @@ in buildPythonPackage rec {
   version = "1.0.5";
   format = "setuptools";
 
-  disabled = isPyPy || pythonOlder "2.6" || (isPy3k && pythonOlder "3.3");
+  disabled = isPyPy || pythonOlder "2.6";
 
   src = fetchPypi {
     inherit pname version;
diff --git a/nixpkgs/pkgs/development/python-modules/thriftpy2/default.nix b/nixpkgs/pkgs/development/python-modules/thriftpy2/default.nix
index e6a696dec9bb..4a125dd1775b 100644
--- a/nixpkgs/pkgs/development/python-modules/thriftpy2/default.nix
+++ b/nixpkgs/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.0";
+  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-Pjy9OPwFfKaw+XVl7IbbAKPz050TlqI4+yLqSITOkSY=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/tidalapi/default.nix b/nixpkgs/pkgs/development/python-modules/tidalapi/default.nix
index 8c3c2429dc72..dcd27bffb2bc 100644
--- a/nixpkgs/pkgs/development/python-modules/tidalapi/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/tifffile/default.nix b/nixpkgs/pkgs/development/python-modules/tifffile/default.nix
index 30d99043f04c..21931254d202 100644
--- a/nixpkgs/pkgs/development/python-modules/tifffile/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tifffile/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "tifffile";
-  version = "2024.2.12";
+  version = "2024.4.18";
   format = "setuptools";
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-SSCj7I6OAD5nPTxlMYY8me7dVw0bi34UHAcu14/4Aw0=";
+    hash = "sha256-X/zXe513w6raEnhjGvXIrHiEOEUv2i6xubYNVVPpXII=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/timm/default.nix b/nixpkgs/pkgs/development/python-modules/timm/default.nix
index 18ac893e9261..087b25003acc 100644
--- a/nixpkgs/pkgs/development/python-modules/timm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/timm/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "timm";
-  version = "0.9.16";
+  version = "1.0.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -24,14 +24,14 @@ buildPythonPackage rec {
     owner = "huggingface";
     repo = "pytorch-image-models";
     rev = "refs/tags/v${version}";
-    hash = "sha256-IWEDKuI2565Z07q1MxTpzKS+CROPR6SyaD5fKcQ5eXk=";
+    hash = "sha256-h2J1v2zXUMGRKBBqq+RnxrXKOzlD5RRrVoODWSuj9Ms=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     pdm-backend
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     huggingface-hub
     pyyaml
     safetensors
@@ -64,11 +64,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/nixpkgs/pkgs/development/python-modules/tinytuya/default.nix b/nixpkgs/pkgs/development/python-modules/tinytuya/default.nix
new file mode 100644
index 000000000000..36c15f79825a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tinytuya/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+
+# build-system
+, setuptools
+
+# dependencies
+, cryptography
+, requests
+, colorama
+}:
+
+buildPythonPackage rec {
+  pname = "tinytuya";
+  version = "1.13.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "jasonacox";
+    repo = "tinytuya";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-44x5P+Ej/d6B5n53iDuLDBzkeZZvArpcgzXLJBcIJe0=";
+  };
+
+  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/nixpkgs/pkgs/development/python-modules/torch/bin.nix b/nixpkgs/pkgs/development/python-modules/torch/bin.nix
index d92767b87d4b..f952351083dc 100644
--- a/nixpkgs/pkgs/development/python-modules/torch/bin.nix
+++ b/nixpkgs/pkgs/development/python-modules/torch/bin.nix
@@ -25,7 +25,7 @@ let
   pyVerNoDot = builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion;
   srcs = import ./binary-hashes.nix version;
   unsupported = throw "Unsupported system";
-  version = "2.2.2";
+  version = "2.3.0";
 in buildPythonPackage {
   inherit version;
 
@@ -34,7 +34,7 @@ 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;
 
@@ -109,7 +109,7 @@ in buildPythonPackage {
     # 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" ];
+    platforms = [ "aarch64-darwin" "aarch64-linux" "x86_64-linux" ];
     hydraPlatforms = []; # output size 3.2G on 1.11.0
     maintainers = with maintainers; [ junjihashimoto ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/torch/binary-hashes.nix b/nixpkgs/pkgs/development/python-modules/torch/binary-hashes.nix
index 8cd3bccc121c..eb4f9883e574 100644
--- a/nixpkgs/pkgs/development/python-modules/torch/binary-hashes.nix
+++ b/nixpkgs/pkgs/development/python-modules/torch/binary-hashes.nix
@@ -6,86 +6,81 @@
 # To add a new version, run "prefetch.sh 'new-version'" to paste the generated file as follows.
 
 version : builtins.getAttr version {
-  "2.2.2" = {
+  "2.3.0" = {
     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.3.0-cp38-cp38-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.3.0%2Bcu121-cp38-cp38-linux_x86_64.whl";
+      hash = "sha256-lZi5WfVk7j6+NgOwugHSQXTKgBb+ypgQTwMB8UkGF8o=";
     };
     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.3.0-cp39-cp39-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.3.0%2Bcu121-cp39-cp39-linux_x86_64.whl";
+      hash = "sha256-PMFeTCaCqFUYEhogUNa+eXbZj8SEO7wTtvW+4nWhtu4=";
     };
     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.3.0-cp310-cp310-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.3.0%2Bcu121-cp310-cp310-linux_x86_64.whl";
+      hash = "sha256-ChKqmqa8RC3/iCOsi0jZkf0HcVYuqjhZP5yBltZfcAc=";
     };
     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.3.0-cp311-cp311-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.3.0%2Bcu121-cp311-cp311-linux_x86_64.whl";
+      hash = "sha256-XffjyzlhAYqJHk7e8eC8HzMEqNlD+BskqMa/aHykmmc=";
     };
-    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.3.0-cp312-cp312-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.3.0%2Bcu121-cp312-cp312-linux_x86_64.whl";
+      hash = "sha256-8VtvVJ7rxuayKyZ1Tk8dfkRpvNLUuh6qtXJorYC8ypY=";
     };
     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.3.0-cp38-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.3.0-cp38-none-macosx_11_0_arm64.whl";
+      hash = "sha256-aun2SwlRa6pO+JCvBnLcmBwgsfDYKc4RXUQgokfoj7o=";
     };
     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.3.0-cp39-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.3.0-cp39-none-macosx_11_0_arm64.whl";
+      hash = "sha256-dg+L7f9QbOnm4QNJj5senhWAngCDaFlMOma/dKilE4A=";
     };
     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.3.0-cp310-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.3.0-cp310-none-macosx_11_0_arm64.whl";
+      hash = "sha256-dY75ON6HomU7unS5H3A0WMFVafFWK/S2xjxi2cWgwfU=";
     };
     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.3.0-cp311-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.3.0-cp311-none-macosx_11_0_arm64.whl";
+      hash = "sha256-0k4ygibY4q98+A/LHS8dEI4N4yd3+rSqorN7l2XYvnM=";
+    };
+    aarch64-darwin-312 = {
+      name = "torch-2.3.0-cp312-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.3.0-cp312-none-macosx_11_0_arm64.whl";
+      hash = "sha256-3KmGIUJns0Blp5AAzuVCMuYrQd/x7Cyrmrw/yLPe4K0=";
     };
     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.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-RunxqfQgKcBuY/v5yXE0PYsqCIZyO8T/McZ6m3pHNXM=";
     };
     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.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-N7zdkm811ccvGm0oIpczJEuyZTqPp3nEwQ3ZfjMNa6I=";
     };
     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.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-fiTBOMO6zIxRHGuCEfCcO/VH08vjdWMhrOwb3OQP7Gs=";
     };
     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.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-FHmS068B4/KncqaId+iTeYnlfEIluCpJidPNlYLIvNE=";
+    };
+    aarch64-linux-312 = {
+      name = "torch-2.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-bhOCYa8GzZAqgmUmCCreU0tmCTudj2/y1AHOQ5qiNQw=";
     };
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/torch/default.nix b/nixpkgs/pkgs/development/python-modules/torch/default.nix
index 3bd019375046..452b2f8598ec 100644
--- a/nixpkgs/pkgs/development/python-modules/torch/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/torch/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchFromGitHub, fetchpatch, buildPythonPackage, python,
+{ stdenv, lib, fetchFromGitHub, buildPythonPackage, python,
   config, cudaSupport ? config.cudaSupport, cudaPackages,
   autoAddDriverRunpath,
   effectiveMagma ?
@@ -14,7 +14,7 @@
   buildDocs ? false,
 
   # Native build inputs
-  cmake, linkFarm, symlinkJoin, which, pybind11, removeReferencesTo,
+  cmake, symlinkJoin, which, pybind11, removeReferencesTo,
   pythonRelaxDepsHook,
 
   # Build inputs
@@ -130,7 +130,7 @@ let
 in buildPythonPackage rec {
   pname = "torch";
   # Don't forget to update torch-bin to the same version.
-  version = "2.2.2";
+  version = "2.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8.0";
@@ -148,7 +148,7 @@ in buildPythonPackage rec {
     repo = "pytorch";
     rev = "refs/tags/v${version}";
     fetchSubmodules = true;
-    hash = "sha256-la9wL9pOlgrSfq5V8aRKXt3hjW+Er/6484m0oUujlzk=";
+    hash = "sha256-UmH4Mv5QL7Mz4Y4pvxn8F1FGBR/UzYZjE2Ys8Oc0FWQ=";
   };
 
   patches = lib.optionals cudaSupport [
@@ -205,8 +205,8 @@ in buildPythonPackage rec {
   # 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
+    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)'
   '';
 
@@ -495,7 +495,7 @@ in buildPythonPackage rec {
   requiredSystemFeatures = [ "big-parallel" ];
 
   passthru = {
-    inherit cudaSupport cudaPackages;
+    inherit cudaSupport cudaPackages rocmSupport rocmPackages;
     # 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
diff --git a/nixpkgs/pkgs/development/python-modules/torch/prefetch.sh b/nixpkgs/pkgs/development/python-modules/torch/prefetch.sh
index 7b9c26de35f2..88cbfa2c346e 100755
--- a/nixpkgs/pkgs/development/python-modules/torch/prefetch.sh
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/torchaudio/bin.nix b/nixpkgs/pkgs/development/python-modules/torchaudio/bin.nix
index dc69195b693a..29b923b92858 100644
--- a/nixpkgs/pkgs/development/python-modules/torchaudio/bin.nix
+++ b/nixpkgs/pkgs/development/python-modules/torchaudio/bin.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "torchaudio";
-  version = "2.2.2";
+  version = "2.3.0";
   format = "wheel";
 
   src =
@@ -27,9 +27,15 @@ buildPythonPackage rec {
     in
     fetchurl srcs;
 
-  disabled = (pythonOlder "3.8") || (pythonAtLeast "3.12");
+  disabled = (pythonOlder "3.8") || (pythonAtLeast "3.13");
 
-  buildInputs = with cudaPackages; [
+  buildInputs = [
+    # We need to patch the lib/_torchaudio_ffmpeg[4-6]
+    ffmpeg_4.dev
+    ffmpeg_5.dev
+    ffmpeg_6.dev
+    sox
+  ] ++ lib.optionals stdenv.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
@@ -37,24 +43,18 @@ buildPythonPackage rec {
     # $out/${sitePackages}/torchaudio/lib/libtorchaudio*.so wants libnvToolsExt.so.2 but torch/lib only ships
     # libnvToolsExt-$hash.so.1
     cuda_nvtx
+  ]);
 
-    # We need to patch the lib/_torchaudio_ffmpeg[4-6]
-    ffmpeg_4.dev
-    ffmpeg_5.dev
-    ffmpeg_6.dev
-    sox
-  ];
-
-  nativeBuildInputs = [
+  nativeBuildInputs = lib.optionals stdenv.isLinux [
     autoPatchelfHook
     addOpenGLRunpath
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     torch-bin
   ];
 
-  preInstall = ''
+  preInstall = lib.optionals stdenv.isLinux ''
     addAutoPatchelfSearchPath "${torch-bin}/${python.sitePackages}/torch"
   '';
 
@@ -72,7 +72,7 @@ buildPythonPackage rec {
     # 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" ];
+    platforms = [ "aarch64-linux" "x86_64-linux" "aarch64-darwin" ];
     maintainers = with maintainers; [ junjihashimoto ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/torchaudio/binary-hashes.nix b/nixpkgs/pkgs/development/python-modules/torchaudio/binary-hashes.nix
index a15dffc4856a..379ea48073e4 100644
--- a/nixpkgs/pkgs/development/python-modules/torchaudio/binary-hashes.nix
+++ b/nixpkgs/pkgs/development/python-modules/torchaudio/binary-hashes.nix
@@ -6,86 +6,81 @@
 # To add a new version, run "prefetch.sh 'new-version'" to paste the generated file as follows.
 
 version : builtins.getAttr version {
-  "2.2.2" = {
+  "2.3.0" = {
     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.3.0-cp38-cp38-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.3.0%2Bcu121-cp38-cp38-linux_x86_64.whl";
+      hash = "sha256-Q/Iv/36izuH9uzAqE26aC51XFTUXaaYn1JDGfKzsCfQ=";
     };
     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.3.0-cp39-cp39-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.3.0%2Bcu121-cp39-cp39-linux_x86_64.whl";
+      hash = "sha256-4n2qE/jPQ8sLyq81TIEj7qlpBsg/FDNCZiCSvMH7atc=";
     };
     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.3.0-cp310-cp310-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.3.0%2Bcu121-cp310-cp310-linux_x86_64.whl";
+      hash = "sha256-OLSTk/jDItyqKdGeWsv1oLGXjPG3GURatnDx+0huOqY=";
     };
     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.3.0-cp311-cp311-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.3.0%2Bcu121-cp311-cp311-linux_x86_64.whl";
+      hash = "sha256-jdZpE+ewjGPHayGwcGEwwkruTtStwLwS+NYt+YtcbqA=";
     };
-    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.3.0-cp312-cp312-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.3.0%2Bcu121-cp312-cp312-linux_x86_64.whl";
+      hash = "sha256-IA7PUlHYPRTook/X9V3odqrSVR/5jqvxzdhCeQXJXFU=";
     };
     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.3.0-cp38-cp38-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.3.0-cp38-cp38-macosx_11_0_arm64.whl";
+      hash = "sha256-e6kyZUVdw2M4XpjAz8rrWGt0Aa+KLIJIEe4UZhNKTzA=";
     };
     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.3.0-cp39-cp39-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.3.0-cp39-cp39-macosx_11_0_arm64.whl";
+      hash = "sha256-9Lkzd28go2r13cV5aPyz2jTdA4gduNZ2Dz4RdoA7nPg=";
     };
     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.3.0-cp310-cp310-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.3.0-cp310-cp310-macosx_11_0_arm64.whl";
+      hash = "sha256-NCEI2oOqGaRXyaEosSBvrbYDdTtRzKAiufWFqsL0dUw=";
     };
     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.3.0-cp311-cp311-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.3.0-cp311-cp311-macosx_11_0_arm64.whl";
+      hash = "sha256-NByjBIzm7cxzFRmzAYfwsTrLJFxO/hb5JfafnVM1RuE=";
+    };
+    aarch64-darwin-312 = {
+      name = "torchaudio-2.3.0-cp312-cp312-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.3.0-cp312-cp312-macosx_11_0_arm64.whl";
+      hash = "sha256-U1FEovu6lfuzuIMiT/z0R4jkzsurvknEoa4+enT3FIU=";
     };
     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.3.0-cp38-cp38-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.3.0-cp38-cp38-linux_aarch64.whl";
+      hash = "sha256-7Rhm9QjcaJxPaC0zCy7UyDEI01hl5PuJQxgZNk2K2e0=";
     };
     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.3.0-cp39-cp39-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.3.0-cp39-cp39-linux_aarch64.whl";
+      hash = "sha256-0kO7ih7iY8LNr7n+7RVpw3QtgTVzHo94GN4S9ODIPig=";
     };
     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.3.0-cp310-cp310-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.3.0-cp310-cp310-linux_aarch64.whl";
+      hash = "sha256-5btQt6SHTtlwhsnlFt2QsQPZVO3LXtSzb0/CLEAApac=";
     };
     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.3.0-cp311-cp311-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.3.0-cp311-cp311-linux_aarch64.whl";
+      hash = "sha256-Ye2wKunA7+pDmfnB+JlgETayTzXUMFSChOqOr2zL474=";
+    };
+    aarch64-linux-312 = {
+      name = "torchaudio-2.3.0-cp312-cp312-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.3.0-cp312-cp312-linux_aarch64.whl";
+      hash = "sha256-ZoqLaU5VIs/yjNXgLQGqG3XOlAqp+0BICJK9xiOxc10=";
     };
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/torchaudio/default.nix b/nixpkgs/pkgs/development/python-modules/torchaudio/default.nix
index 3ca33cc36b65..2ad66d1691a4 100644
--- a/nixpkgs/pkgs/development/python-modules/torchaudio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/torchaudio/default.nix
@@ -9,20 +9,56 @@
 , 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.3.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pytorch";
     repo = "audio";
     rev = "refs/tags/v${version}";
-    hash = "sha256-rW4xLUFTpGpUeMnTBdrI/2OjgZX1ihK0EfcVK6snmpk=";
+    hash = "sha256-8EPoZ/dfxrQjdtE0rZ+2pOaXxlyhRuweYnVuA9i0Fgc=";
   };
 
   patches = [
@@ -33,6 +69,11 @@ buildPythonPackage rec {
     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 = {
@@ -55,7 +96,11 @@ buildPythonPackage rec {
     ninja
   ] ++ lib.optionals cudaSupport [
     cudaPackages.cuda_nvcc
-  ];
+  ] ++ lib.optionals rocmSupport (with rocmPackages; [
+    clr
+    rocblas
+    hipblas
+  ]);
 
   buildInputs = [
     ffmpeg-full
@@ -73,6 +118,11 @@ buildPythonPackage rec {
   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
@@ -82,7 +132,7 @@ buildPythonPackage rec {
     homepage = "https://pytorch.org/";
     changelog = "https://github.com/pytorch/audio/releases/tag/v${version}";
     license = licenses.bsd2;
-    platforms = platforms.unix;
+    platforms = [ "aarch64-darwin" "aarch64-linux" "x86_64-linux" ];
     maintainers = with maintainers; [ junjihashimoto ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/torchaudio/prefetch.sh b/nixpkgs/pkgs/development/python-modules/torchaudio/prefetch.sh
index 89422ff7c65e..e4a9b9c90f6c 100755
--- a/nixpkgs/pkgs/development/python-modules/torchaudio/prefetch.sh
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/torchgpipe/default.nix b/nixpkgs/pkgs/development/python-modules/torchgpipe/default.nix
deleted file mode 100644
index f96add92f0cc..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/development/python-modules/torchmetrics/default.nix b/nixpkgs/pkgs/development/python-modules/torchmetrics/default.nix
index e5c05c6dd497..c9485359cb87 100644
--- a/nixpkgs/pkgs/development/python-modules/torchmetrics/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/torchmetrics/default.nix
@@ -8,6 +8,7 @@
 , scikit-learn
 , scikit-image
 , packaging
+, pretty-errors
 , psutil
 , py-deprecate
 , torch
@@ -20,7 +21,7 @@
 
 let
   pname = "torchmetrics";
-  version = "1.3.2";
+  version = "1.4.0.post0";
 in
 buildPythonPackage {
   inherit pname version;
@@ -32,13 +33,14 @@ buildPythonPackage {
     owner = "Lightning-AI";
     repo = "torchmetrics";
     rev = "refs/tags/v${version}";
-    hash = "sha256-0lverGF8HVlnwWmnCjScWoSfWPLZlMF2cHDG+uxNCCQ=";
+    hash = "sha256-tQqlLfdk8rSJqwR3rC7kqnM+pLFYZSPHfI7RmIi2Iq4=";
   };
 
-  propagatedBuildInputs = [
+  dependencies = [
     numpy
     lightning-utilities
     packaging
+    pretty-errors
     py-deprecate
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/torchrl/default.nix b/nixpkgs/pkgs/development/python-modules/torchrl/default.nix
index 591e59302ea6..76592f6adf7a 100644
--- a/nixpkgs/pkgs/development/python-modules/torchrl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/torchrl/default.nix
@@ -12,13 +12,22 @@
 , ale-py
 , gym
 , pygame
+, torchsnapshot
 , gymnasium
 , mujoco
+, h5py
+, huggingface-hub
+, minari
+, pandas
+, pillow
+, requests
+, scikit-learn
+, torchvision
+, tqdm
 , moviepy
 , git
 , hydra-core
 , tensorboard
-, tqdm
 , wandb
 , packaging
 , tensordict
@@ -27,11 +36,12 @@
 , pytestCheckHook
 , pyyaml
 , scipy
+, stdenv
 }:
 
 buildPythonPackage rec {
   pname = "torchrl";
-  version = "0.3.1";
+  version = "0.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -40,17 +50,17 @@ buildPythonPackage rec {
     owner = "pytorch";
     repo = "rl";
     rev = "refs/tags/v${version}";
-    hash = "sha256-lETW996IKPUGgZpe+cyzrXvVmDSwj5G4XFreFmGxReQ=";
+    hash = "sha256-8wSyyErqveP9zZS/UGvWVBYyylu9BuA447GEjXIzBIk=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     ninja
     setuptools
     wheel
     which
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cloudpickle
     numpy
     packaging
@@ -64,10 +74,24 @@ buildPythonPackage rec {
       gym
       pygame
     ];
+    checkpointing = [
+      torchsnapshot
+    ];
     gym-continuous = [
       gymnasium
       mujoco
     ];
+    offline-data = [
+      h5py
+      huggingface-hub
+      minari
+      pandas
+      pillow
+      requests
+      scikit-learn
+      torchvision
+      tqdm
+    ];
     rendering = [
       moviepy
     ];
@@ -103,6 +127,7 @@ buildPythonPackage rec {
     pytestCheckHook
     pyyaml
     scipy
+    torchvision
   ]
   ++ passthru.optional-dependencies.atari
   ++ passthru.optional-dependencies.gym-continuous
@@ -137,5 +162,7 @@ buildPythonPackage rec {
     changelog = "https://github.com/pytorch/rl/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ GaetanLepage ];
+    # ~3k tests fail with: RuntimeError: internal error
+    broken = stdenv.isLinux && stdenv.isAarch64;
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/torchsnapshot/default.nix b/nixpkgs/pkgs/development/python-modules/torchsnapshot/default.nix
new file mode 100644
index 000000000000..62f6fd6b24de
--- /dev/null
+++ b/nixpkgs/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 = "A 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.isDarwin;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/torchvision/bin.nix b/nixpkgs/pkgs/development/python-modules/torchvision/bin.nix
index 70026bb363df..eda64ff4a038 100644
--- a/nixpkgs/pkgs/development/python-modules/torchvision/bin.nix
+++ b/nixpkgs/pkgs/development/python-modules/torchvision/bin.nix
@@ -16,7 +16,7 @@ let
   pyVerNoDot = builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion;
   srcs = import ./binary-hashes.nix version;
   unsupported = throw "Unsupported system";
-  version = "0.17.2";
+  version = "0.18.0";
 in buildPythonPackage {
   inherit version;
 
@@ -26,7 +26,7 @@ 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 [
@@ -63,7 +63,7 @@ in buildPythonPackage {
     # 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" ];
+    platforms = [ "aarch64-darwin" "x86_64-linux" "aarch64-linux" ];
     maintainers = with maintainers; [ junjihashimoto ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/torchvision/binary-hashes.nix b/nixpkgs/pkgs/development/python-modules/torchvision/binary-hashes.nix
index 3a5654b18ca7..d1dfd0c46ed5 100644
--- a/nixpkgs/pkgs/development/python-modules/torchvision/binary-hashes.nix
+++ b/nixpkgs/pkgs/development/python-modules/torchvision/binary-hashes.nix
@@ -6,66 +6,81 @@
 # To add a new version, run "prefetch.sh 'new-version'" to paste the generated file as follows.
 
 version : builtins.getAttr version {
-  "0.17.2" = {
+  "0.18.0" = {
     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.18.0-cp38-cp38-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.18.0%2Bcu121-cp38-cp38-linux_x86_64.whl";
+      hash = "sha256-wkg7LMYiePuqa2fSqdgI0kUET4tkqCFZbq5o7GoNXtA=";
     };
     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.18.0-cp39-cp39-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.18.0%2Bcu121-cp39-cp39-linux_x86_64.whl";
+      hash = "sha256-G/4MZ/1UYaOlk/jxfhVE8Hpr1mhuFVIA3SRJRwdPzVE=";
     };
     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.18.0-cp310-cp310-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.18.0%2Bcu121-cp310-cp310-linux_x86_64.whl";
+      hash = "sha256-E+G0jcXOQcy4EAqz3Sb98x2PHpBOzyhlrFJEkwE9DfU=";
     };
     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.18.0-cp311-cp311-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.18.0%2Bcu121-cp311-cp311-linux_x86_64.whl";
+      hash = "sha256-HlFneVIPySFX1sskWsD9P3mHL+gchLhZOo8umYEG9bE=";
     };
-    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.18.0-cp312-cp312-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.18.0%2Bcu121-cp312-cp312-linux_x86_64.whl";
+      hash = "sha256-cA9gGb6+6eDuiwvL2xWIgJyUouuUeh/eLgatw0tg2io=";
     };
     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.18.0-cp38-cp38-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.18.0-cp38-cp38-macosx_11_0_arm64.whl";
+      hash = "sha256-IRWhkGwBX12pzu3ECpgzE7D9biyKFxCKkpkXBvUfaYc=";
     };
     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.18.0-cp39-cp39-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.18.0-cp39-cp39-macosx_11_0_arm64.whl";
+      hash = "sha256-deIuz0ShO4+VuK1CHAJhKC2FnGGBa62soZWeBzzN1pE=";
     };
     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.18.0-cp310-cp310-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.18.0-cp310-cp310-macosx_11_0_arm64.whl";
+      hash = "sha256-3WFiij0YnGhSoS3F7UzS7s5m0tZ/Nahmyxbx3LBsjGI=";
     };
     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.18.0-cp311-cp311-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.18.0-cp311-cp311-macosx_11_0_arm64.whl";
+      hash = "sha256-aJalIWi+/hEF+zyTNShzkO0ifnHR5OxNaLYuijCZ/Ak=";
+    };
+    aarch64-darwin-312 = {
+      name = "torchvision-0.18.0-cp312-cp312-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.18.0-cp312-cp312-macosx_11_0_arm64.whl";
+      hash = "sha256-652DwOHbtU7LD7BMh/eGMz46b7i5xACsp8MQgfmqVwc=";
+    };
+    aarch64-linux-38 = {
+      name = "torchvision-0.18.0-cp38-cp38-linux_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.18.0-cp38-cp38-linux_aarch64.whl";
+      hash = "sha256-kl0KgszPb5hsGLKbQ5KpQttly9tzwToSnISTgi65428=";
+    };
+    aarch64-linux-39 = {
+      name = "torchvision-0.18.0-cp39-cp39-linux_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.18.0-cp39-cp39-linux_aarch64.whl";
+      hash = "sha256-Nu/YcAHGvuI4PgQ+RqAlr/sDF5dHyPR3e5kYUn/851Y=";
+    };
+    aarch64-linux-310 = {
+      name = "torchvision-0.18.0-cp310-cp310-linux_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.18.0-cp310-cp310-linux_aarch64.whl";
+      hash = "sha256-Uzf2rPof6VnVyzQNAaAGFNazHOekgkzLlUNahcUnO5U=";
+    };
+    aarch64-linux-311 = {
+      name = "torchvision-0.18.0-cp311-cp311-linux_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.18.0-cp311-cp311-linux_aarch64.whl";
+      hash = "sha256-5aJNYgzqFKS7ifJKorUGIwwKFqOtpX/FOtgM/SVqISg=";
+    };
+    aarch64-linux-312 = {
+      name = "torchvision-0.18.0-cp312-cp312-linux_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.18.0-cp312-cp312-linux_aarch64.whl";
+      hash = "sha256-qWSvvH3fUKRrlBR39sNXKbQW3u3ROXVr79SIJF4uIm0=";
     };
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/torchvision/default.nix b/nixpkgs/pkgs/development/python-modules/torchvision/default.nix
index 496a8c08710b..6ae31186731a 100644
--- a/nixpkgs/pkgs/development/python-modules/torchvision/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/torchvision/default.nix
@@ -17,7 +17,7 @@ let
   inherit (cudaPackages) backendStdenv;
 
   pname = "torchvision";
-  version = "0.17.2";
+  version = "0.18.0";
 in
 buildPythonPackage {
   inherit pname version;
@@ -26,7 +26,7 @@ buildPythonPackage {
     owner = "pytorch";
     repo = "vision";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Y7TkdbdrdiXQO2pBkUePCLw1EYQjsAqkV2OTMzxbU78=";
+    hash = "sha256-VWbalbLSV5a+t9eAO7QzQ/e11KkhGg6MHgd5vXcAUXc=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/torchvision/prefetch.sh b/nixpkgs/pkgs/development/python-modules/torchvision/prefetch.sh
index e80718a50530..47ccbd935c8a 100755
--- a/nixpkgs/pkgs/development/python-modules/torchvision/prefetch.sh
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/total-connect-client/default.nix b/nixpkgs/pkgs/development/python-modules/total-connect-client/default.nix
index e7b85cf199b6..6770e65194cc 100644
--- a/nixpkgs/pkgs/development/python-modules/total-connect-client/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/tpm2-pytss/default.nix b/nixpkgs/pkgs/development/python-modules/tpm2-pytss/default.nix
index 7b5fd56b0a10..0346943304a2 100644
--- a/nixpkgs/pkgs/development/python-modules/tpm2-pytss/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tpm2-pytss/default.nix
@@ -1,5 +1,6 @@
 { lib
 , stdenv
+, fetchurl
 , substituteAll
 , buildPythonPackage
 , fetchPypi
@@ -37,6 +38,10 @@ buildPythonPackage rec {
   patches = [
     # Fix hardcoded `fapi-config.json` configuration path
     ./fapi-config.patch
+    (fetchurl {
+      url = "https://github.com/tpm2-software/tpm2-pytss/pull/571/commits/b02fdc8e259fe977c1065389c042be69e2985bdf.patch";
+      hash = "sha256-+jZFv+s9p52JxtUcNeJx7ayzKDVtPoQSSGgyZqPDuEc=";
+    })
   ] ++ lib.optionals isCross [
     # pytss will regenerate files from headers of tpm2-tss.
     # Those headers are fed through a compiler via pycparser. pycparser expects `cpp`
diff --git a/nixpkgs/pkgs/development/python-modules/trafilatura/default.nix b/nixpkgs/pkgs/development/python-modules/trafilatura/default.nix
index 35212c343443..a8183bf3f841 100644
--- a/nixpkgs/pkgs/development/python-modules/trafilatura/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/trafilatura/default.nix
@@ -1,35 +1,43 @@
-{ 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.9.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-a4eN/b1cXftV0Pgwfyt9wVrDRYBU90hh/5ihcvXjhyA=";
+    hash = "sha256-5oM9KauKE+2FOTfXyR5oaLxi774QIUrCsQZDbdI9FBI=";
   };
 
-  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 = '$out/bin/trafilatura'"
+  '';
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     certifi
     charset-normalizer
     courlan
@@ -39,34 +47,22 @@ buildPythonPackage rec {
     urllib3
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   disabledTests = [
     # Disable tests that require an internet connection
+    "test_cli_pipeline"
+    "test_crawl_page"
     "test_download"
     "test_fetch"
-    "test_redirection"
     "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; {
     description = "Python package and command-line tool designed to gather text on the Web";
diff --git a/nixpkgs/pkgs/development/python-modules/traitlets/default.nix b/nixpkgs/pkgs/development/python-modules/traitlets/default.nix
index 5394e7f4091a..51336a0f9195 100644
--- a/nixpkgs/pkgs/development/python-modules/traitlets/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/traitlets/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "traitlets";
-  version = "5.14.1";
+  version = "5.14.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-hYUQWzcaBLgxakPVzinAmFdcLkd4ULYrhIuWTxREUn4=";
+    hash = "sha256-jN2DwEDat9He6CJnjl9dEAtRT3tysBYVsm/FcYkW/fk=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/transformers/default.nix b/nixpkgs/pkgs/development/python-modules/transformers/default.nix
index 5bcbeb035f67..4883f7118287 100644
--- a/nixpkgs/pkgs/development/python-modules/transformers/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/transformers/default.nix
@@ -54,7 +54,7 @@
 
 buildPythonPackage rec {
   pname = "transformers";
-  version = "4.40.1";
+  version = "4.41.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -63,14 +63,14 @@ buildPythonPackage rec {
     owner = "huggingface";
     repo = "transformers";
     rev = "refs/tags/v${version}";
-    hash = "sha256-w9BVJwYS2QV58UTOpcoQwdC+dxZuhLS2h8PqN5W2Yjc=";
+    hash = "sha256-FUYQeEksjDasFvQraycNFAx3cLHfDdPpgZssqN8OIJw=";
   };
 
   build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     filelock
     huggingface-hub
     numpy
diff --git a/nixpkgs/pkgs/development/python-modules/transitions/default.nix b/nixpkgs/pkgs/development/python-modules/transitions/default.nix
index 8ed221cd23e9..7e73b9c73aba 100644
--- a/nixpkgs/pkgs/development/python-modules/transitions/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/transitions/default.nix
@@ -15,12 +15,12 @@
 
 buildPythonPackage rec {
   pname = "transitions";
-  version = "0.9.0";
+  version = "0.9.1";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-L1TRG9siV3nX5ykBHpOp+3F2aM49xl+NT1pde6L0jhA=";
+    hash = "sha256-NULDcQjpPirl8hUgjsVzLJSncpN4VKECzXNFuWf+5hs=";
   };
 
   build-system = [
diff --git a/nixpkgs/pkgs/development/python-modules/trio-asyncio/default.nix b/nixpkgs/pkgs/development/python-modules/trio-asyncio/default.nix
index a74b3889facd..258bb61b66e8 100644
--- a/nixpkgs/pkgs/development/python-modules/trio-asyncio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/trio-asyncio/default.nix
@@ -1,6 +1,6 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , setuptools
 , greenlet
 , trio
@@ -14,27 +14,28 @@
 
 buildPythonPackage rec {
   pname = "trio-asyncio";
-  version = "0.14.0";
+  version = "0.14.1";
   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-634fcYAn5J1WW71J/USAMkJaZI8JmKoQneQEhz2gYFc=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace '"pytest-runner"' ""
+      --replace-fail '"pytest-runner"' ""
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     greenlet
     trio
     outcome
@@ -43,18 +44,16 @@ buildPythonPackage rec {
     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"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/trio-websocket/default.nix b/nixpkgs/pkgs/development/python-modules/trio-websocket/default.nix
index 98fdcfae0c16..8ffa3de60fc3 100644
--- a/nixpkgs/pkgs/development/python-modules/trio-websocket/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/trio-websocket/default.nix
@@ -2,6 +2,8 @@
 , stdenv
 , buildPythonPackage
 , fetchFromGitHub
+, pythonOlder
+, setuptools
 , exceptiongroup
 , pytest-trio
 , pytestCheckHook
@@ -12,20 +14,25 @@
 
 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 = [
@@ -34,7 +41,16 @@ buildPythonPackage rec {
     trustme
   ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [
+  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.isDarwin [
     # Failed: DID NOT RAISE <class 'ValueError'>
     "test_finalization_dropped_exception"
     # Timing related
diff --git a/nixpkgs/pkgs/development/python-modules/trio/default.nix b/nixpkgs/pkgs/development/python-modules/trio/default.nix
index cc276fef5c52..84215b5122a6 100644
--- a/nixpkgs/pkgs/development/python-modules/trio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/trio/default.nix
@@ -1,6 +1,6 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , pythonOlder
 , stdenv
 
@@ -37,26 +37,23 @@ let
 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"
-  '';
-
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     attrs
     idna
     outcome
@@ -103,11 +100,8 @@ buildPythonPackage rec {
     "src/trio/_tests/tools/test_gen_exports.py"
   ];
 
-  pytestFlagsArray = [
-    "-W" "ignore::DeprecationWarning"
-  ];
-
   meta = {
+    changelog = "https://github.com/python-trio/trio/blob/v${version}/docs/source/history.rst";
     description = "An async/await-native I/O library for humans and snake people";
     homepage = "https://github.com/python-trio/trio";
     license = with lib.licenses; [ mit asl20 ];
diff --git a/nixpkgs/pkgs/development/python-modules/trove-classifiers/default.nix b/nixpkgs/pkgs/development/python-modules/trove-classifiers/default.nix
index 64829175c198..61ef9858d2dd 100644
--- a/nixpkgs/pkgs/development/python-modules/trove-classifiers/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/trove-classifiers/default.nix
@@ -10,14 +10,14 @@
 let
   self = buildPythonPackage rec {
     pname = "trove-classifiers";
-    version = "2024.3.3";
+    version = "2024.4.10";
     pyproject = true;
 
     disabled = pythonOlder "3.7";
 
     src = fetchPypi {
       inherit pname version;
-      hash = "sha256-337f+cZ/+GtzNiiZgzCxgOgdElseCWU22DrA/XlnP9w=";
+      hash = "sha256-SfQLtqdGtyocuk+NVe6CUhac2g9wgC4/0k8Et/slpJI=";
     };
 
     postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/truncnorm/default.nix b/nixpkgs/pkgs/development/python-modules/truncnorm/default.nix
new file mode 100644
index 000000000000..b9b9d77b22f6
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/trytond/default.nix b/nixpkgs/pkgs/development/python-modules/trytond/default.nix
index 5e89da7f3504..1a00120a80da 100644
--- a/nixpkgs/pkgs/development/python-modules/trytond/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/trytond/default.nix
@@ -25,14 +25,14 @@
 
 buildPythonPackage rec {
   pname = "trytond";
-  version = "7.0.9";
+  version = "7.2.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-DlPuIaGTpJu4FyLOTNAy2CAEJHoe7+8e34wacz8C7d8=";
+    hash = "sha256-gIWWzm7emSwgKoO5geNIXUqKNsDiq6fle5OHb+KvhLE=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/tubes/default.nix b/nixpkgs/pkgs/development/python-modules/tubes/default.nix
index 28d7b7bc4be2..7d593371d11e 100644
--- a/nixpkgs/pkgs/development/python-modules/tubes/default.nix
+++ b/nixpkgs/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
@@ -23,8 +34,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "a data-processing and flow-control engine for event-driven programs";
-    homepage    = "https://github.com/twisted/tubes";
-    license     = licenses.mit;
+    homepage = "https://github.com/twisted/tubes";
+    license = licenses.mit;
     maintainers = with maintainers; [ exarkun ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/type-infer/default.nix b/nixpkgs/pkgs/development/python-modules/type-infer/default.nix
index 55af22a1c94b..d9b1b0717f95 100644
--- a/nixpkgs/pkgs/development/python-modules/type-infer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/type-infer/default.nix
@@ -10,6 +10,7 @@
 , numpy
 , pandas
 , psutil
+, py3langid
 , python-dateutil
 , scipy
 , toml
@@ -24,7 +25,7 @@ let
 in
 buildPythonPackage rec {
   pname = "type-infer";
-  version = "0.0.18";
+  version = "0.0.20";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -33,7 +34,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "type_infer";
     inherit version;
-    hash = "sha256-nA5TlyHpCueFWqUggS7T/eKSLlffp0pIyGCouwXPZ28=";
+    hash = "sha256-F+gfA7ofrbMEE5SrVt9H3s2mZKQLyr6roNUmL4EMJbI=";
   };
 
   nativeBuildInputs = [
@@ -48,6 +49,7 @@ buildPythonPackage rec {
     numpy
     pandas
     psutil
+    py3langid
     python-dateutil
     scipy
     toml
diff --git a/nixpkgs/pkgs/development/python-modules/typer/default.nix b/nixpkgs/pkgs/development/python-modules/typer/default.nix
index b072f3a6d8ca..a1f0a9033e10 100644
--- a/nixpkgs/pkgs/development/python-modules/typer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/typer/default.nix
@@ -4,9 +4,8 @@
 , click
 , colorama
 , coverage
-, fetchpatch
 , fetchPypi
-, flit-core
+, pdm-backend
 , pytest-sugar
 , pytest-xdist
 , pytestCheckHook
@@ -18,27 +17,18 @@
 
 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
+    pdm-backend
   ];
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/types-beautifulsoup4/default.nix b/nixpkgs/pkgs/development/python-modules/types-beautifulsoup4/default.nix
index 687dadc3eb65..57c1f550b2e4 100644
--- a/nixpkgs/pkgs/development/python-modules/types-beautifulsoup4/default.nix
+++ b/nixpkgs/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.20240511";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-435M+hGwOwF3VzLlbSwBDLJO4Qd4Yne65rwPo+MFtoY=";
+    hash = "sha256-AE9glv3YOxnNv2yxDk6uV7ECBezMNl0Kadd9qDYBLig=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/types-pillow/default.nix b/nixpkgs/pkgs/development/python-modules/types-pillow/default.nix
index adb92251b8f1..db173d39e74b 100644
--- a/nixpkgs/pkgs/development/python-modules/types-pillow/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-pillow/default.nix
@@ -5,13 +5,13 @@
 
 buildPythonPackage rec {
   pname = "types-pillow";
-  version = "10.2.0.20240331";
+  version = "10.2.0.20240415";
   format = "setuptools";
 
   src = fetchPypi {
     inherit version;
     pname = "types-Pillow";
-    hash = "sha256-xgTjmutwcZ5GPTWRV6Iji/wOgb+cZYN1cD97mM/WB9o=";
+    hash = "sha256-3WBYAnY5vNxmuniyKMwl/a5CUkwhUMeMgE2kJ+fnbnA=";
   };
 
   # Modules doesn't have tests
diff --git a/nixpkgs/pkgs/development/python-modules/types-protobuf/default.nix b/nixpkgs/pkgs/development/python-modules/types-protobuf/default.nix
index c09cb206cf04..6482d4e30ba1 100644
--- a/nixpkgs/pkgs/development/python-modules/types-protobuf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-protobuf/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "types-protobuf";
-  version = "4.24.0.20240311";
+  version = "4.25.0.20240417";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-yAQm+fubIa7lFGkelqsypc1pSoLirAeWSzUsPn4Bgrw=";
+    hash = "sha256-w07/F7mzoK22gwYi8PMCSE5MCJ9TOkbj8UdWgxNUQ1I=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/types-pyopenssl/default.nix b/nixpkgs/pkgs/development/python-modules/types-pyopenssl/default.nix
index d7cf53e4ff68..586e5138aaac 100644
--- a/nixpkgs/pkgs/development/python-modules/types-pyopenssl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-pyopenssl/default.nix
@@ -6,13 +6,13 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/types-python-dateutil/default.nix b/nixpkgs/pkgs/development/python-modules/types-python-dateutil/default.nix
index 04f146e40e54..0bee1e8ddca2 100644
--- a/nixpkgs/pkgs/development/python-modules/types-python-dateutil/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-python-dateutil/default.nix
@@ -6,12 +6,12 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/types-pytz/default.nix b/nixpkgs/pkgs/development/python-modules/types-pytz/default.nix
index bf1b49ccc918..8f86e7be43d8 100644
--- a/nixpkgs/pkgs/development/python-modules/types-pytz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-pytz/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "types-pytz";
-  version = "2024.1.0.20240203";
+  version = "2024.1.0.20240417";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-yTdR7iDfxuBUoBSPj1InuaALeckKTTyfRkcRpzF5yJ4=";
+    hash = "sha256-aBDIofaPIf3w9PN0pDJIfHdkWgrAsx3kv0aQzyGtOYE=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/types-pyyaml/default.nix b/nixpkgs/pkgs/development/python-modules/types-pyyaml/default.nix
index c8735dbfe6de..35f02941b6d5 100644
--- a/nixpkgs/pkgs/development/python-modules/types-pyyaml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-pyyaml/default.nix
@@ -5,13 +5,13 @@
 
 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
diff --git a/nixpkgs/pkgs/development/python-modules/types-s3transfer/default.nix b/nixpkgs/pkgs/development/python-modules/types-s3transfer/default.nix
index eb90a554174e..30533010fbe0 100644
--- a/nixpkgs/pkgs/development/python-modules/types-s3transfer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-s3transfer/default.nix
@@ -6,13 +6,13 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/types-setuptools/default.nix b/nixpkgs/pkgs/development/python-modules/types-setuptools/default.nix
index a2a0a9f125bd..557a065c68e9 100644
--- a/nixpkgs/pkgs/development/python-modules/types-setuptools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-setuptools/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "types-setuptools";
-  version = "69.2.0.20240317";
+  version = "69.5.0.20240415";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-tgfExIhC7z7kncDH/pwbrXVwCwceEBi7TX46xJLUcEg=";
+    hash = "sha256-6mSvCpamdPjEC6NMCcJU88cLw/IYxr/6HQkSvZFYSi8=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/types-toml/default.nix b/nixpkgs/pkgs/development/python-modules/types-toml/default.nix
index 140664989f3b..db58fbc181b5 100644
--- a/nixpkgs/pkgs/development/python-modules/types-toml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-toml/default.nix
@@ -5,12 +5,12 @@
 
 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/nixpkgs/pkgs/development/python-modules/types-ujson/default.nix b/nixpkgs/pkgs/development/python-modules/types-ujson/default.nix
index eb46df9c9337..cbd3c4c7c08b 100644
--- a/nixpkgs/pkgs/development/python-modules/types-ujson/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/typing-extensions/default.nix b/nixpkgs/pkgs/development/python-modules/typing-extensions/default.nix
index eb1c9c58d690..b20fe1a05106 100644
--- a/nixpkgs/pkgs/development/python-modules/typing-extensions/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/typing-extensions/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "typing-extensions";
-  version = "4.10.0";
+  version = "4.11.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -15,7 +15,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "typing_extensions";
     inherit version;
-    hash = "sha256-sKvXyJ6PuW+Y2xjYYQb/HZCraSAE63Rs9u2iaC+Rs8s=";
+    hash = "sha256-g/CFvVylnIApX8KoKrXaxnnL4CufM/fYOvaOJBvqUbA=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/ucsmsdk/default.nix b/nixpkgs/pkgs/development/python-modules/ucsmsdk/default.nix
index 7d285b062880..f2442d2a6078 100644
--- a/nixpkgs/pkgs/development/python-modules/ucsmsdk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ucsmsdk/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "ucsmsdk";
-  version = "0.9.16";
+  version = "0.9.17";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "CiscoUcs";
     repo = "ucsmsdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-9ksHA8uvBv370/6Umt5iz/4F8VsDDI9X8kVc5Lv0RVk=";
+    hash = "sha256-Ejn99MArKZjCHsl81WSHfpWV3Kz/mBrItIa0tPVProU=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/ufo2ft/default.nix b/nixpkgs/pkgs/development/python-modules/ufo2ft/default.nix
index 5cbcf1370372..d167d66b3529 100644
--- a/nixpkgs/pkgs/development/python-modules/ufo2ft/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ufo2ft/default.nix
@@ -6,6 +6,7 @@
 , cu2qu
 , defcon
 , fetchPypi
+, fontmath
 , fonttools
 , pytestCheckHook
 , pythonOlder
@@ -17,14 +18,14 @@
 
 buildPythonPackage rec {
   pname = "ufo2ft";
-  version = "3.1.0";
+  version = "3.2.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-5EUrML1Yd88tVEP+Kd9TmXm+5Ejk/XIH/USYBakK/wQ=";
+    hash = "sha256-5HWhRxKs4KQdC1v0LaLgndgMwtcGKLVz9tYtesdJ8Oo=";
   };
 
   nativeBuildInputs = [
@@ -38,6 +39,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     cu2qu
+    fontmath
     fonttools
     defcon
     compreffor
diff --git a/nixpkgs/pkgs/development/python-modules/unittest-xml-reporting/default.nix b/nixpkgs/pkgs/development/python-modules/unittest-xml-reporting/default.nix
index 36768b0fccb7..030ab4337ec7 100644
--- a/nixpkgs/pkgs/development/python-modules/unittest-xml-reporting/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/unstructured/default.nix b/nixpkgs/pkgs/development/python-modules/unstructured/default.nix
index 3b797ed297d7..1340b1c79c7e 100644
--- a/nixpkgs/pkgs/development/python-modules/unstructured/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/unstructured/default.nix
@@ -56,7 +56,7 @@
 , grpcio
 }:
 let
-  version = "0.13.2";
+  version = "0.13.7";
   optional-dependencies = {
     huggingflace = [
       langdetect
@@ -90,7 +90,7 @@ buildPythonPackage {
     owner = "Unstructured-IO";
     repo = "unstructured";
     rev = "refs/tags/${version}";
-    hash = "sha256-6pR/tewHWstgIqqD8Jwj+AQutdhXU5aufm6RiEpXr9s=";
+    hash = "sha256-Ekfa454mL7isMX79bd/YXPPHnetSzo1Mlg/XJakYyDM=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/uproot/default.nix b/nixpkgs/pkgs/development/python-modules/uproot/default.nix
index 4fd55870b0f4..094e118340ff 100644
--- a/nixpkgs/pkgs/development/python-modules/uproot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/uproot/default.nix
@@ -19,7 +19,7 @@
 
 buildPythonPackage rec {
   pname = "uproot";
-  version = "5.3.2";
+  version = "5.3.7";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -28,15 +28,15 @@ buildPythonPackage rec {
     owner = "scikit-hep";
     repo = "uproot5";
     rev = "refs/tags/v${version}";
-    hash = "sha256-dq362pevqgLx5KwZ19zQ6aOn5NCyiqynPCF7YdI6tkw=";
+    hash = "sha256-ptfT31eUNSpVaZfXAyRcIc2T2p82rXmzUyySSVbI9lI=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-vcs
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     awkward
     cramjam
     numpy
@@ -76,6 +76,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,6 +84,7 @@ 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"
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/uptime/default.nix b/nixpkgs/pkgs/development/python-modules/uptime/default.nix
index 7dd3710b81d3..d20bd4dc5506 100644
--- a/nixpkgs/pkgs/development/python-modules/uptime/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/uqbar/default.nix b/nixpkgs/pkgs/development/python-modules/uqbar/default.nix
index c7c6e8e2eea6..046e3425a785 100644
--- a/nixpkgs/pkgs/development/python-modules/uqbar/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/uqbar/default.nix
@@ -4,21 +4,23 @@
 , 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 = ''
@@ -40,6 +42,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  checkInputs = [
+    defusedxml
+    typing-extensions
+  ];
+
   disabledTests = [
     # UnboundLocalError: local variable 'output_path' referenced before assignment
     "test_01"
diff --git a/nixpkgs/pkgs/development/python-modules/uvicorn/default.nix b/nixpkgs/pkgs/development/python-modules/uvicorn/default.nix
index 6201bb615726..2694880594b0 100644
--- a/nixpkgs/pkgs/development/python-modules/uvicorn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/uvicorn/default.nix
@@ -17,16 +17,16 @@
 
 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,9 +34,9 @@ buildPythonPackage rec {
     "testsout"
   ];
 
-  nativeBuildInputs = [ hatchling ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     h11
   ] ++ lib.optionals (pythonOlder "3.11") [
diff --git a/nixpkgs/pkgs/development/python-modules/uxsim/add-qt-plugin-path-to-env.patch b/nixpkgs/pkgs/development/python-modules/uxsim/add-qt-plugin-path-to-env.patch
new file mode 100644
index 000000000000..42f001085d05
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uxsim/add-qt-plugin-path-to-env.patch
@@ -0,0 +1,24 @@
+diff --git a/uxsim/__init__.py b/uxsim/__init__.py
+index 01e1ad1..de1f0fd 100644
+--- a/uxsim/__init__.py
++++ b/uxsim/__init__.py
+@@ -1,8 +1,14 @@
+-from .uxsim import *
+-from .utils import *
++import os
++
+ from .analyzer import *
++from .utils import *
++from .uxsim import *
++
++# Only set our own plugin path if it's not already set
++if not os.getenv("QT_PLUGIN_PATH"): 
++    os.environ["QT_PLUGIN_PATH"] = "$NIX_QT_PLUGIN_PATH"
+ 
+ __version__ = "1.1.1"
+ __author__ = "Toru Seo"
+ __copyright__ = "Copyright (c) 2023 Toru Seo"
+-__license__ = "MIT License"
+\ No newline at end of file
++__license__ = "MIT License"
+
diff --git a/nixpkgs/pkgs/development/python-modules/uxsim/default.nix b/nixpkgs/pkgs/development/python-modules/uxsim/default.nix
new file mode 100644
index 000000000000..e08eec1d6cf6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uxsim/default.nix
@@ -0,0 +1,69 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+  wheel,
+  qt5,
+  hackgen-font,
+  python3,
+  matplotlib,
+  numpy,
+  pandas,
+  pillow,
+  pyqt5,
+  scipy,
+  tqdm,
+}:
+buildPythonPackage rec {
+  pname = "uxsim";
+  version = "1.1.1";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "toruseo";
+    repo = "UXsim";
+    rev = "v${version}";
+    hash = "sha256-qPAFodvx+Z7RsRhzdTq1TRsbvrUFaqRJZxYg3FM6q8A=";
+  };
+
+  patches = [
+    ./add-qt-plugin-path-to-env.patch
+  ];
+
+  nativeBuildInputs = [
+    setuptools
+    wheel
+  ];
+
+  propagatedBuildInputs = [
+    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/${python3.sitePackages}/uxsim/__init__.py \
+      --replace-fail '$NIX_QT_PLUGIN_PATH' '${qt5.qtbase.bin}/${qt5.qtbase.qtPluginPrefix}'
+
+    mkdir -p $out/${python3.sitePackages}/uxsim/files
+    ln -s ${hackgen-font}/share/fonts/hackgen/HackGen-Regular.ttf $out/${python3.sitePackages}/uxsim/files/
+  '';
+
+  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/nixpkgs/pkgs/development/python-modules/validator-collection/default.nix b/nixpkgs/pkgs/development/python-modules/validator-collection/default.nix
index 8625956d7754..60cc3c9c6f5e 100644
--- a/nixpkgs/pkgs/development/python-modules/validator-collection/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/validator-collection/default.nix
@@ -135,6 +135,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/nixpkgs/pkgs/development/python-modules/validators/default.nix b/nixpkgs/pkgs/development/python-modules/validators/default.nix
index 8e29effda9a2..4a5e2f7df1cf 100644
--- a/nixpkgs/pkgs/development/python-modules/validators/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/validators/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "validators";
-  version = "0.22.0";
-  format = "pyproject";
+  version = "0.28.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -17,26 +18,20 @@ buildPythonPackage rec {
     owner = "python-validators";
     repo = "validators";
     rev = "refs/tags/${version}";
-    hash = "sha256-Qu6Tu9uIluT1KBJYkFjDFt9AWN2Kez3uCYDQknXqYrU=";
+    hash = "sha256-r3SQvt96y8e9odWxz0GjVKH3+Pa0Lqs+tbhryeGaZUU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  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/nixpkgs/pkgs/development/python-modules/versioningit/default.nix b/nixpkgs/pkgs/development/python-modules/versioningit/default.nix
index a58f2d6133aa..f5c6180b2344 100644
--- a/nixpkgs/pkgs/development/python-modules/versioningit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/versioningit/default.nix
@@ -17,14 +17,14 @@
 
 buildPythonPackage rec {
   pname = "versioningit";
-  version = "3.0.0";
+  version = "3.1.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-TjzkemQk2FCunlXhsTSgIOn8vLiVM48QfytcUdNMnBs=";
+    hash = "sha256-eqxxPDGlPrNnprvC6LPejMK4bRDUXFEBr9ZRRGyxD9c=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/virt-firmware/default.nix b/nixpkgs/pkgs/development/python-modules/virt-firmware/default.nix
index 8f2f0c073609..f319de6370fb 100644
--- a/nixpkgs/pkgs/development/python-modules/virt-firmware/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/virt-firmware/default.nix
@@ -1,4 +1,6 @@
 { lib
+, pkgs
+, stdenv
 , buildPythonPackage
 , fetchPypi
 , setuptools
@@ -9,31 +11,35 @@
 
 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";
diff --git a/nixpkgs/pkgs/development/python-modules/virtualenv-clone/default.nix b/nixpkgs/pkgs/development/python-modules/virtualenv-clone/default.nix
index 51c1d12b184d..2ae7abe457db 100644
--- a/nixpkgs/pkgs/development/python-modules/virtualenv-clone/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/virtualenv-clone/default.nix
@@ -20,7 +20,7 @@ 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'"
diff --git a/nixpkgs/pkgs/development/python-modules/virtualenv/default.nix b/nixpkgs/pkgs/development/python-modules/virtualenv/default.nix
index 44ca0ff4f4f3..d2b60338121b 100644
--- a/nixpkgs/pkgs/development/python-modules/virtualenv/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/virtualenv/default.nix
@@ -21,14 +21,14 @@
 
 buildPythonPackage rec {
   pname = "virtualenv";
-  version = "20.25.1";
+  version = "20.25.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-4I4T7NynoL1TeY81bVgxQ0r6Wwe5Pwq98Hl7egb/4Zc=";
+    hash = "sha256-e7VUu9/qrMM0n6YU6lv/asMA/HwzXp+s86O8/HA/Rb4=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/waybackpy/default.nix b/nixpkgs/pkgs/development/python-modules/waybackpy/default.nix
new file mode 100644
index 000000000000..1faa3beaef8f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/waybackpy/default.nix
@@ -0,0 +1,34 @@
+{ 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/nixpkgs/pkgs/development/python-modules/wcmatch/default.nix b/nixpkgs/pkgs/development/python-modules/wcmatch/default.nix
index fa5a75c13268..7f86afe62117 100644
--- a/nixpkgs/pkgs/development/python-modules/wcmatch/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wcmatch/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "wcmatch";
-  version = "8.5.1";
+  version = "8.5.2";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-wAiMf2Qmz2vyflMOK3tzQDGQX35JBHX9g8fFAIq1gbM=";
+    hash = "sha256-pwIiuG3qgvs4Ldh7cyeMEHVsE4vW+PcU4hgxKIh7nrI=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/weasel/default.nix b/nixpkgs/pkgs/development/python-modules/weasel/default.nix
index 26418749c80f..e38c815d7c7f 100644
--- a/nixpkgs/pkgs/development/python-modules/weasel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/weasel/default.nix
@@ -33,6 +33,7 @@ buildPythonPackage rec {
   pythonRelaxDeps = [
     "cloudpathlib"
     "smart-open"
+    "typer"
   ];
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/weaviate-client/default.nix b/nixpkgs/pkgs/development/python-modules/weaviate-client/default.nix
index f92ef94177d5..8e5b16ef0015 100644
--- a/nixpkgs/pkgs/development/python-modules/weaviate-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/weaviate-client/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "weaviate-client";
-  version = "4.5.6";
+  version = "4.6.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "weaviate";
     repo = "weaviate-python-client";
     rev = "refs/tags/v${version}";
-    hash = "sha256-P1GiTsRDbJssoLZR//c+b4IJ2Zyb/0PaBLL+wmmI6zc=";
+    hash = "sha256-BegAiAOhVafH7NWVgayRbdLKBYjWmD5zC6P7tU11XKM=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/development/python-modules/webauthn/default.nix b/nixpkgs/pkgs/development/python-modules/webauthn/default.nix
index ad28892290ee..f1197fe4a7af 100644
--- a/nixpkgs/pkgs/development/python-modules/webauthn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/webauthn/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "webauthn";
-  version = "2.0.0";
+  version = "2.1.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "duo-labs";
     repo = "py_webauthn";
     rev = "refs/tags/v${version}";
-    hash = "sha256-StqoSrzErV13/OUpSWbI+6N5tSFPEpvnmQcDiZMaXPI=";
+    hash = "sha256-AfQ3lt0WvoThU5kCE7MzhAXwbqmNaCrUqOMWI937hO4=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/webdataset/default.nix b/nixpkgs/pkgs/development/python-modules/webdataset/default.nix
index 5f18d28f9fbd..1215d5a1c8c4 100644
--- a/nixpkgs/pkgs/development/python-modules/webdataset/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/webdataset/default.nix
@@ -16,14 +16,14 @@
 }:
 buildPythonPackage rec {
   pname = "webdataset";
-  version = "0.2.86";
+  version = "0.2.90";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "webdataset";
     repo = "webdataset";
     rev = "refs/tags/${version}";
-    hash = "sha256-aTjxoSoQ9LH4gcFmV+7Aj0HNIpvsFHTrxFUpAtB3nkM=";
+    hash = "sha256-selj7XD7NS831lbPnx/4o46bNpsxuFdSEIIb4S2b7S0=";
   };
 
   nativeBuildInputs = [
@@ -51,21 +51,26 @@ buildPythonPackage rec {
   disabledTests = [
     # requires network
     "test_batched"
+    "test_cache_dir"
+    "test_concurrent_download_and_open"
     "test_dataloader"
     "test_decode_handlers"
     "test_decoder"
-    "test_decoder"
     "test_download"
     "test_handlers"
     "test_pipe"
+    "test_remote_file"
     "test_shard_syntax"
     "test_torchvision"
-    "test_torchvision"
     "test_unbatched"
     "test_yaml3"
   ] ++ lib.optionals stdenv.isDarwin [
     # pickling error
     "test_background_download"
+  ] ++ lib.optionals (stdenv.isx86_64 && stdenv.isDarwin) [
+    "test_concurrent_access"
+    # fails to patch 'init_process_group' from torch.distributed
+    "TestDistributedChunkedSampler"
   ] ++ lib.optionals (stdenv.isAarch64 && stdenv.isLinux) [
     # segfaults on aarch64-linux
     "test_webloader"
@@ -78,6 +83,7 @@ buildPythonPackage rec {
     description = "A 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";
+    changelog = "https://github.com/webdataset/webdataset/releases/tag/${version}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ iynaix ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/webexteamssdk/default.nix b/nixpkgs/pkgs/development/python-modules/webexteamssdk/default.nix
index 1e81e90af9a6..30eeb64d83a1 100644
--- a/nixpkgs/pkgs/development/python-modules/webexteamssdk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/webexteamssdk/default.nix
@@ -1,28 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, future
-, pyjwt
-, pythonOlder
-, requests
-, requests-toolbelt
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  future,
+  pyjwt,
+  pythonOlder,
+  requests,
+  requests-toolbelt,
+  setuptools,
+  versioneer,
 }:
 
 buildPythonPackage rec {
   pname = "webexteamssdk";
   version = "1.6.1";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "CiscoDevNet";
-    repo = pname;
-    rev = "v${version}";
+    repo = "webexteamssdk";
+    rev = "refs/tags/v${version}";
     hash = "sha256-xlkmXl4tVm48drXmkUijv9GNXzJcDnfSKbOMciPIRRo=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    # Remove vendorized versioneer
+    rm versioneer.py
+  '';
+
+  build-system = [
+    setuptools
+    versioneer
+  ];
+
+  dependencies = [
     future
     pyjwt
     requests
@@ -32,13 +45,12 @@ buildPythonPackage rec {
   # Tests require a Webex Teams test domain
   doCheck = false;
 
-  pythonImportsCheck = [
-    "webexteamssdk"
-  ];
+  pythonImportsCheck = [ "webexteamssdk" ];
 
   meta = with lib; {
     description = "Python module for Webex Teams APIs";
     homepage = "https://github.com/CiscoDevNet/webexteamssdk";
+    changelog = "https://github.com/WebexCommunity/WebexPythonSDK/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/werkzeug/default.nix b/nixpkgs/pkgs/development/python-modules/werkzeug/default.nix
index 51e380ece2a1..80ed4c53539a 100644
--- a/nixpkgs/pkgs/development/python-modules/werkzeug/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/werkzeug/default.nix
@@ -3,7 +3,6 @@
 , buildPythonPackage
 , pythonOlder
 , fetchPypi
-, fetchpatch2
 
 # build-system
 , flit-core
@@ -29,24 +28,16 @@
 
 buildPythonPackage rec {
   pname = "werkzeug";
-  version = "3.0.1";
+  version = "3.0.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-UH6BHs6nKxikBJR63tSzOQ4duPgmtJTXZVDvRbs7Hcw=";
+    hash = "sha256-45tkWmrJKCJYjns5ppLngockzq4LDXAu+WcB+Q5wEo0=";
   };
 
-  patches = [
-    (fetchpatch2 {
-      name = "werkzeug-pytest8-compat.patch";
-      url = "https://github.com/pallets/werkzeug/commit/4e5bdca7f8227d10cae828f8064fb98190ace4aa.patch";
-      hash = "sha256-lVknzvC+HIM6TagpyIOhnb+7tx0UXuGw0tINjsujISI=";
-    })
-  ];
-
   nativeBuildInputs = [
     flit-core
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/wheel-inspect/default.nix b/nixpkgs/pkgs/development/python-modules/wheel-inspect/default.nix
index bf2ff4ece67b..30c8b30a095c 100644
--- a/nixpkgs/pkgs/development/python-modules/wheel-inspect/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wheel-inspect/default.nix
@@ -11,6 +11,7 @@
 , pytestCheckHook
 , pythonOlder
 , readme-renderer
+, setuptools
 , wheel-filename
 }:
 
@@ -53,10 +54,14 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    jsonschema
     pytestCheckHook
   ];
 
+  checkInputs = [
+    setuptools
+    jsonschema
+  ];
+
   pythonImportsCheck = [
     "wheel_inspect"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/wheel/default.nix b/nixpkgs/pkgs/development/python-modules/wheel/default.nix
index 14339d2056f3..6a682fc300c9 100644
--- a/nixpkgs/pkgs/development/python-modules/wheel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wheel/default.nix
@@ -6,14 +6,14 @@
 
 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 \
diff --git a/nixpkgs/pkgs/development/python-modules/wheezy-template/default.nix b/nixpkgs/pkgs/development/python-modules/wheezy-template/default.nix
index 0baba9c564e5..53a0bf2867d0 100644
--- a/nixpkgs/pkgs/development/python-modules/wheezy-template/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wheezy-template/default.nix
@@ -5,11 +5,11 @@
 
 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" ];
diff --git a/nixpkgs/pkgs/development/python-modules/willow/default.nix b/nixpkgs/pkgs/development/python-modules/willow/default.nix
index 2b0058357d88..cb4d128eb246 100644
--- a/nixpkgs/pkgs/development/python-modules/willow/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/willow/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, pythonOlder
 
 # build-system
 , flit-core
@@ -26,8 +25,6 @@ buildPythonPackage rec {
   version = "1.8.0";
   format = "pyproject";
 
-  disabled = pythonOlder "2.7";
-
   src = fetchFromGitHub {
     owner = "wagtail";
     repo = "Willow";
diff --git a/nixpkgs/pkgs/development/python-modules/winacl/default.nix b/nixpkgs/pkgs/development/python-modules/winacl/default.nix
index ab27147d6519..3ff55cf32a72 100644
--- a/nixpkgs/pkgs/development/python-modules/winacl/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/wktutils/default.nix b/nixpkgs/pkgs/development/python-modules/wktutils/default.nix
index 549e7f480b08..23529f04a356 100644
--- a/nixpkgs/pkgs/development/python-modules/wktutils/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/wled/default.nix b/nixpkgs/pkgs/development/python-modules/wled/default.nix
index 7d90c554907c..fe0b4b9a19cf 100644
--- a/nixpkgs/pkgs/development/python-modules/wled/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wled/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "wled";
-  version = "0.17.0";
+  version = "0.17.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.11";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "frenck";
     repo = "python-wled";
     rev = "refs/tags/v${version}";
-    hash = "sha256-y32zynkVsn5vWw+BZ6ZRf9zemGOWJMN4yfNQZ0bRpos=";
+    hash = "sha256-9682AbcADhd9m5XrYeDFiX+sJCCe+pnuvntJDnpzJ+U=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/woob/default.nix b/nixpkgs/pkgs/development/python-modules/woob/default.nix
index abc876b388a8..96a3f5ebc9c0 100644
--- a/nixpkgs/pkgs/development/python-modules/woob/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/woob/default.nix
@@ -2,6 +2,7 @@
 , babel
 , buildPythonPackage
 , fetchFromGitLab
+, fetchpatch
 , pythonRelaxDepsHook
 , html2text
 , lxml
@@ -11,6 +12,7 @@
 , pycountry
 , pytestCheckHook
 , python-dateutil
+, python-jose
 , pythonOlder
 , pyyaml
 , requests
@@ -35,6 +37,14 @@ 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
@@ -47,6 +57,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     babel
     python-dateutil
+    python-jose
     html2text
     lxml
     packaging
diff --git a/nixpkgs/pkgs/development/python-modules/wsgidav/default.nix b/nixpkgs/pkgs/development/python-modules/wsgidav/default.nix
index db7e85e1937e..c05415323093 100644
--- a/nixpkgs/pkgs/development/python-modules/wsgidav/default.nix
+++ b/nixpkgs/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/nixpkgs/pkgs/development/python-modules/wsgitools/default.nix b/nixpkgs/pkgs/development/python-modules/wsgitools/default.nix
index 948f932271c1..17eb56ec4e2b 100644
--- a/nixpkgs/pkgs/development/python-modules/wsgitools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wsgitools/default.nix
@@ -1,18 +1,32 @@
-{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";
diff --git a/nixpkgs/pkgs/development/python-modules/wurlitzer/default.nix b/nixpkgs/pkgs/development/python-modules/wurlitzer/default.nix
index ee93a2c6454d..a5af618cb8ff 100644
--- a/nixpkgs/pkgs/development/python-modules/wurlitzer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wurlitzer/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "wurlitzer";
-  version = "3.0.3";
+  version = "3.1.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Ik9f5wYYvjhywF393IxFcZHsGHBlRZYnn8we2t6+Pls=";
+    hash = "sha256-sx07GKtrg5SzrbiyGEGtbUtrsZW5tkKVOHLburTCmyo=";
   };
 
   nativeCheckInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/wxpython/4.2.nix b/nixpkgs/pkgs/development/python-modules/wxpython/4.2.nix
index 70175f58c449..c2e4f1b0c36e 100644
--- a/nixpkgs/pkgs/development/python-modules/wxpython/4.2.nix
+++ b/nixpkgs/pkgs/development/python-modules/wxpython/4.2.nix
@@ -2,7 +2,7 @@
 , stdenv
 , buildPythonPackage
 , setuptools
-, pythonOlder
+, pythonAtLeast
 , fetchPypi
 , substituteAll
 
@@ -43,7 +43,7 @@ buildPythonPackage rec {
   pname = "wxpython";
   version = "4.2.1";
   format = "other";
-  disabled = pythonOlder "3.7";
+  disabled = pythonAtLeast "3.12";
 
   src = fetchPypi {
     pname = "wxPython";
diff --git a/nixpkgs/pkgs/development/python-modules/xarray-dataclasses/default.nix b/nixpkgs/pkgs/development/python-modules/xarray-dataclasses/default.nix
index aae2cdd7f1d7..44d19a689008 100644
--- a/nixpkgs/pkgs/development/python-modules/xarray-dataclasses/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xarray-dataclasses/default.nix
@@ -4,6 +4,7 @@
 , pythonOlder
 , poetry-core
 , pytestCheckHook
+, pythonRelaxDepsHook
 , numpy
 , typing-extensions
 , xarray
@@ -25,6 +26,11 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
+    pythonRelaxDepsHook
+  ];
+
+  pythonRelaxDeps = [
+    "xarray"
   ];
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/xcffib/default.nix b/nixpkgs/pkgs/development/python-modules/xcffib/default.nix
index b0b00da0dc32..ff5215ccb4cc 100644
--- a/nixpkgs/pkgs/development/python-modules/xcffib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xcffib/default.nix
@@ -47,11 +47,15 @@ buildPythonPackage rec {
     "xcffib"
   ];
 
+  # Tests use xvfb
+  __darwinAllowLocalNetworking = true;
+
   meta = with lib; {
     description = "A 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/nixpkgs/pkgs/development/python-modules/xdot/default.nix b/nixpkgs/pkgs/development/python-modules/xdot/default.nix
index f0bfe71fcbb0..3cf0564c70a3 100644
--- a/nixpkgs/pkgs/development/python-modules/xdot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xdot/default.nix
@@ -3,7 +3,7 @@
 , fetchFromGitHub
 , python
 , xvfb-run
-, wrapGAppsHook
+, wrapGAppsHook3
 , gobject-introspection
 , pygobject3
 , graphviz
@@ -25,7 +25,7 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     gobject-introspection
-    wrapGAppsHook
+    wrapGAppsHook3
   ];
   propagatedBuildInputs = [
     pygobject3
diff --git a/nixpkgs/pkgs/development/python-modules/xiaomi-ble/default.nix b/nixpkgs/pkgs/development/python-modules/xiaomi-ble/default.nix
index 221346d2c76a..02f6bc25c86a 100644
--- a/nixpkgs/pkgs/development/python-modules/xiaomi-ble/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xiaomi-ble/default.nix
@@ -1,23 +1,24 @@
-{ 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,
+  pythonRelaxDepsHook,
+  sensor-state-data,
 }:
 
 buildPythonPackage rec {
   pname = "xiaomi-ble";
-  version = "0.28.0";
+  version = "0.29.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -26,7 +27,7 @@ buildPythonPackage rec {
     owner = "Bluetooth-Devices";
     repo = "xiaomi-ble";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Va/fzGDjBR/h1lUN47AixZnDYzEPNXQKTVXILKayhBc=";
+    hash = "sha256-+zMjnLUzI8ctucvxXts7V4lN4Gp0ZQtArhpXUCBvhF0=";
   };
 
   postPatch = ''
@@ -34,14 +35,11 @@ buildPythonPackage rec {
       --replace-fail " --cov=xiaomi_ble --cov-report=term-missing:skip-covered" ""
   '';
 
-  build-system = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
 
-  pythonRelaxDeps = [
-    "pycryptodomex"
-  ];
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
+
+  pythonRelaxDeps = [ "pycryptodomex" ];
 
   dependencies = [
     bleak
@@ -54,13 +52,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/nixpkgs/pkgs/development/python-modules/xmldiff/default.nix b/nixpkgs/pkgs/development/python-modules/xmldiff/default.nix
index 6356b9bff352..2fc4a739e258 100644
--- a/nixpkgs/pkgs/development/python-modules/xmldiff/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xmldiff/default.nix
@@ -10,7 +10,7 @@
 buildPythonPackage rec {
   pname = "xmldiff";
   version = "2.6.3";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -19,7 +19,11 @@ buildPythonPackage rec {
     hash = "sha256-GbAws/o30fC1xa2a2pBZiEw78sdRxd2PHrTtSc/j/GA=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     lxml
     setuptools
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/xmlsec/default.nix b/nixpkgs/pkgs/development/python-modules/xmlsec/default.nix
index 94af405e8f64..28dfd80dcd9d 100644
--- a/nixpkgs/pkgs/development/python-modules/xmlsec/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xmlsec/default.nix
@@ -15,12 +15,12 @@
 
 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 ];
diff --git a/nixpkgs/pkgs/development/python-modules/xmltodict/default.nix b/nixpkgs/pkgs/development/python-modules/xmltodict/default.nix
index bd4e2cbb0f2d..3b06401c3924 100644
--- a/nixpkgs/pkgs/development/python-modules/xmltodict/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xmltodict/default.nix
@@ -2,14 +2,12 @@
 , buildPythonPackage
 , fetchPypi
 , pytestCheckHook
-, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "xmltodict";
   version = "0.13.0";
   format = "setuptools";
-  disabled = pythonOlder "3.4";
 
   src = fetchPypi {
     inherit pname version;
diff --git a/nixpkgs/pkgs/development/python-modules/yalexs/default.nix b/nixpkgs/pkgs/development/python-modules/yalexs/default.nix
index 0400906ea883..88b13859455d 100644
--- a/nixpkgs/pkgs/development/python-modules/yalexs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/yalexs/default.nix
@@ -19,7 +19,7 @@
 
 buildPythonPackage rec {
   pname = "yalexs";
-  version = "3.0.1";
+  version = "3.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -28,7 +28,7 @@ buildPythonPackage rec {
     owner = "bdraco";
     repo = "yalexs";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+FdQQzQhKhIOEnOym2DNT9uQL2uAbfE8tUXUHIFFK2I=";
+    hash = "sha256-+Sn+d6CuxIUEDLkDvcq7OT3AumElJFfWCwM02LPIeyg=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/yamale/default.nix b/nixpkgs/pkgs/development/python-modules/yamale/default.nix
index 96d69aaddea7..b02cec6577cf 100644
--- a/nixpkgs/pkgs/development/python-modules/yamale/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/yamale/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "yamale";
-  version = "5.2.0";
+  version = "5.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "23andMe";
     repo = "yamale";
     rev = "refs/tags/${version}";
-    hash = "sha256-UTtase1b8Zjaixhp/g0tLtT6QZS4cyaSHcFz+h9Qoos=";
+    hash = "sha256-iiiQAZ050FintRSV3l2zfikTNmphhJgrn+4tUHORiSk=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/yapf/default.nix b/nixpkgs/pkgs/development/python-modules/yapf/default.nix
index 70f31fe5308b..01b84b2f3dc2 100644
--- a/nixpkgs/pkgs/development/python-modules/yapf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/yapf/default.nix
@@ -66,6 +66,7 @@ buildPythonPackage rec {
       takes away some of the drudgery of maintaining your code.
     '';
     license = lib.licenses.asl20;
+    mainProgram = "yapf";
     maintainers = with lib.maintainers; [ AndersonTorres siddharthist ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/ydiff/default.nix b/nixpkgs/pkgs/development/python-modules/ydiff/default.nix
index 04f9be193aac..fa91086ed5d5 100644
--- a/nixpkgs/pkgs/development/python-modules/ydiff/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ydiff/default.nix
@@ -1,15 +1,15 @@
-{ lib, buildPythonPackage, fetchPypi, docutils, pygments
+{ 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";
+    sha256 = "sha256-ii6EWI7zHT5SVwD6lksfmqth8MnEYoHgU0GlbgHc17g=";
   };
 
   patchPhase = ''
@@ -26,11 +26,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/nixpkgs/pkgs/development/python-modules/yolink-api/default.nix b/nixpkgs/pkgs/development/python-modules/yolink-api/default.nix
index c1b4703ea4d4..8a567cd5a51e 100644
--- a/nixpkgs/pkgs/development/python-modules/yolink-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/yolink-api/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "yolink-api";
-  version = "0.4.3";
+  version = "0.4.4";
   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-yRxv3Itj+SkLtj5rErOzJoxj0JhsAWrdi0DucKZKKIU=";
   };
 
   build-system = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/youless-api/default.nix b/nixpkgs/pkgs/development/python-modules/youless-api/default.nix
index ff10359238b4..5c923e0bb313 100644
--- a/nixpkgs/pkgs/development/python-modules/youless-api/default.nix
+++ b/nixpkgs/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 = "1.1.1";
+  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-J3YRRVcA4LYxuJMi//LJO8Qt8hapJruZGzONODE3SsQ=";
   };
 
-  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/nixpkgs/pkgs/development/python-modules/yq/default.nix b/nixpkgs/pkgs/development/python-modules/yq/default.nix
index 6a7c58c7d895..febf3aad2fd1 100644
--- a/nixpkgs/pkgs/development/python-modules/yq/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/yq/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "yq";
-  version = "3.4.1";
+  version = "3.4.3";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-tVjatvFcA+JKHESHiVALINbzB+6cpMk2E4fzZYFjAA0=";
+    hash = "sha256-ulhqGm8wz3BbL5IgZxLfIoHNMgKAIQ57e4Cty48lbjs=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/ytmusicapi/default.nix b/nixpkgs/pkgs/development/python-modules/ytmusicapi/default.nix
index 380738008361..edaae03db7cc 100644
--- a/nixpkgs/pkgs/development/python-modules/ytmusicapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ytmusicapi/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 = "ytmusicapi";
-  version = "1.6.0";
+  version = "1.7.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,30 +19,26 @@ buildPythonPackage rec {
     owner = "sigma67";
     repo = "ytmusicapi";
     rev = "refs/tags/${version}";
-    hash = "sha256-DqTcdWVivE2R51qm3XQ7cDnD1a90AocmX9TG+M5reto=";
+    hash = "sha256-HMWb9NScT4rRMFsUXw6TW/T0P1eH0a46OegUZ0JceiE=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
     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/nixpkgs/pkgs/development/python-modules/zarr/default.nix b/nixpkgs/pkgs/development/python-modules/zarr/default.nix
index fcb57b3731dd..826a496445f6 100644
--- a/nixpkgs/pkgs/development/python-modules/zarr/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zarr/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "zarr";
-  version = "2.17.1";
+  version = "2.17.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Vks6oHISJUb+aaD6IXNvRmsg+tQXVDNLYmGfCIzkYmE=";
+    hash = "sha256-LLqmy040LUUVLUp6SyATwzf806jnvJglNWAYDeYFUs4=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/zdaemon/default.nix b/nixpkgs/pkgs/development/python-modules/zdaemon/default.nix
index 54c096b64257..4e72500da1dc 100644
--- a/nixpkgs/pkgs/development/python-modules/zdaemon/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zdaemon/default.nix
@@ -7,14 +7,14 @@
 
 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 = [
diff --git a/nixpkgs/pkgs/development/python-modules/zephyr-python-api/default.nix b/nixpkgs/pkgs/development/python-modules/zephyr-python-api/default.nix
index 8ff111b605fa..c91feacb7f6d 100644
--- a/nixpkgs/pkgs/development/python-modules/zephyr-python-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zephyr-python-api/default.nix
@@ -7,12 +7,13 @@
 
 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 ];
diff --git a/nixpkgs/pkgs/development/python-modules/zha-quirks/default.nix b/nixpkgs/pkgs/development/python-modules/zha-quirks/default.nix
index 03413fc6f1fc..c512dd55bc1f 100644
--- a/nixpkgs/pkgs/development/python-modules/zha-quirks/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zha-quirks/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "zha-quirks";
-  version = "0.0.114";
+  version = "0.0.115";
   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-qqPBCLYS6yLpK8PzC3atQ73yi15XE3ywIUBVO7JPYVE=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/zha/default.nix b/nixpkgs/pkgs/development/python-modules/zha/default.nix
index d6d23f46611a..0987ddfab283 100644
--- a/nixpkgs/pkgs/development/python-modules/zha/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zha/default.nix
@@ -45,6 +45,7 @@ buildPythonPackage rec {
   '';
 
   pythonRelaxDeps = [
+    "bellows"
     "universal-silabs-flasher"
     "zha-quirks"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/ziafont/default.nix b/nixpkgs/pkgs/development/python-modules/ziafont/default.nix
index 788dda332941..d50e5fdefe17 100644
--- a/nixpkgs/pkgs/development/python-modules/ziafont/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ziafont/default.nix
@@ -9,9 +9,8 @@
 
 buildPythonPackage rec {
   pname = "ziafont";
-  version = "0.7";
-
-  format = "pyproject";
+  version = "0.8";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -19,10 +18,10 @@ buildPythonPackage rec {
     owner = "cdelker";
     repo = pname;
     rev = version;
-    hash = "sha256-DQEVWYOgiGSP3WlmZzEweyRa0UY7fxjjpbued+5EH5I=";
+    hash = "sha256-C+dC+mNquDuj6RfJpiEbeuGZOIXcgSrTB4XM21reBPs=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/ziamath/default.nix b/nixpkgs/pkgs/development/python-modules/ziamath/default.nix
index c2d72a25f810..592e486edce1 100644
--- a/nixpkgs/pkgs/development/python-modules/ziamath/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ziamath/default.nix
@@ -11,8 +11,8 @@
 
 buildPythonPackage rec {
   pname = "ziamath";
-  version = "0.9";
-  format = "pyproject";
+  version = "0.10";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -20,14 +20,14 @@ buildPythonPackage rec {
     owner = "cdelker";
     repo = pname;
     rev = version;
-    hash = "sha256-ISd+J7R8qZ0NXdlyHMj+torzr+541UAhNCSaUH8ytSQ=";
+    hash = "sha256-Drssi+YySh4OhVYAOvgIwzeeu5dQbUUXuhwTedhUUt8=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     ziafont
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/zigpy/default.nix b/nixpkgs/pkgs/development/python-modules/zigpy/default.nix
index 0a32dea6649a..a52549728bb6 100644
--- a/nixpkgs/pkgs/development/python-modules/zigpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zigpy/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , aiohttp
 , aioresponses
 , aiosqlite
@@ -24,7 +25,7 @@
 
 buildPythonPackage rec {
   pname = "zigpy";
-  version = "0.63.5";
+  version = "0.64.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -33,7 +34,7 @@ buildPythonPackage rec {
     owner = "zigpy";
     repo = "zigpy";
     rev = "refs/tags/${version}";
-    hash = "sha256-iZxHXxheyoA5vo0Pxojs7QE8rSyTpsYpJ6/OzDSZJ20=";
+    hash = "sha256-4p/CUAZQLiADWzjXMOeYUX0OJgZczHrI2/sVRuXiFSI=";
   };
 
   postPatch = ''
@@ -72,9 +73,9 @@ buildPythonPackage rec {
   ];
 
   disabledTests = [
-    # # Our two manual scans succeeded and the periodic one was attempted
-    # assert len(mock_scan.mock_calls) == 3
-    # AssertionError: assert 4 == 3
+    # assert quirked.quirk_metadata.quirk_location.endswith("zigpy/tests/test_quirks_v2.py]-line:104") is False
+    "test_quirks_v2"
+  ] ++ lib.optionals (stdenv.isLinux && stdenv.isx86_64) [
     "test_periodic_scan_priority"
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/zipp/default.nix b/nixpkgs/pkgs/development/python-modules/zipp/default.nix
index 6555d172ce2e..9ddbd4b43313 100644
--- a/nixpkgs/pkgs/development/python-modules/zipp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zipp/default.nix
@@ -9,14 +9,14 @@
 
 let zipp = buildPythonPackage rec {
   pname = "zipp";
-  version = "3.17.0";
+  version = "3.18.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-hOZKHCjPfpHtIHi7jMjCWcsZt2lCCWyNe4SUdpDKuvA=";
+    hash = "sha256-KITtIufYlh3hyaBRQutpokfxICkbwCBqAKdkLwm1txU=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/zlib-ng/default.nix b/nixpkgs/pkgs/development/python-modules/zlib-ng/default.nix
index 7cb498bbb12f..71f2c0b768ae 100644
--- a/nixpkgs/pkgs/development/python-modules/zlib-ng/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zlib-ng/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "zlib-ng";
-  version = "0.4.1";
+  version = "0.4.3";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pycompression";
     repo = "python-zlib-ng";
     rev = "v${version}";
-    hash = "sha256-uK6Md8ZOVUNwXCjzM4zTVr3WBwzLdnvT9n8yBvf968k=";
+    hash = "sha256-M0R39vUX3JMDEDJfsRzg1ipxbWJ/kl0FzW6ZUMXvGDs=";
   };
 
   nativeBuildInputs = [