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/APScheduler/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/FormEncode/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/Mako/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/Markups/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/Nikola/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/ROPGadget/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/absl-py/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/accupy/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/actdiag/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/adafruit-platformdetect/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/adal/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/adax/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/adb-enhanced/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/adb-shell/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/adblock/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/adjusttext/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/aenum/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/afdko/default.nix66
-rw-r--r--nixpkgs/pkgs/development/python-modules/afdko/no-pypi-build-tools.patch24
-rw-r--r--nixpkgs/pkgs/development/python-modules/afdko/use-dynamic-system-antlr4-runtime.patch43
-rw-r--r--nixpkgs/pkgs/development/python-modules/affinity/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/afsapi/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/agate/default.nix66
-rw-r--r--nixpkgs/pkgs/development/python-modules/ailment/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioambient/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioapns/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioasuswrt/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiobotocore/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiobroadlink/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiocoap/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioconsole/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiocron/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiocurrencylayer/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioeafm/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioesphomeapi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiofiles/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioflo/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioftp/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiogithubapi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioguardian/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohomekit/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohttp-apispec/unstable.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohttp-remotes/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohttp-socks/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohttp-wsgi/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohttp/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohue/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiohwenergy/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiojobs/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiolookin/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiolyric/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiomusiccast/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/aionanoleaf/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/aionotify/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/aionotion/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiopg/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiopulse/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiopvapi/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiopvpc/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiorecollect/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioridwell/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiosenz/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioshelly/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiosmtpd/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiostream/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiounifi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiounittest/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiovlc/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiowatttime/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioymaps/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/airthings-cloud/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/airtouch4pyapi/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/alectryon/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/alembic/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/allure-pytest/default.nix80
-rw-r--r--nixpkgs/pkgs/development/python-modules/allure-python-commons-test/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/allure-python-commons/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/amazon_kclpy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/amberelectric/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/amqtt/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/androguard/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/android-backup/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/angr/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/angrcli/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/angrop/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansible-lint/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansible-runner/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansible/base.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansible/collections.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/ansible/core.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/antlr4-python2-runtime/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/anybadge/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/anyio/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aocd/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/apache-airflow/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/apcaccess/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/apispec/3.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/application/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/apprise/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/approvaltests/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/aprslib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/apsw/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/apycula/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/archinfo/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/argh/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/argon2_cffi/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/arrayqueues/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/arrow/2.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/arrow/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/arviz/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ascii-magic/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/ase/3.17.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/ase/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/asgiref/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/asn1/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/astor/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/astroid/1.6.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/astroid/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/astropy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/async-upnp-client/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/async_stagger/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/async_timeout/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/asyncio-dgram/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/asyncio-nats-client/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/asyncio-rlock/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/asyncio_mqtt/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/asyncmy/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/asyncpg/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/asyncssh/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/atom/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/atomman/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/atpublic/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/aubio/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/audiotools/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/authcaptureproxy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/authheaders/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/autobahn/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/autoit-ripper/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/automate-home/default.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/autopep8/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/av/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/avro/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/awesomeversion/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/awkward/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aws-lambda-builders/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aws-sam-translator/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/awscrt/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-appconfiguration/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-core/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-cosmos/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-eventgrid/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-eventhub/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-identity/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-keyvault-certificates/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-keyvault-keys/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-keyvault/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-loganalytics/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-authorization/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-billing/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-commerce/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-consumption/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-containerinstance/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-core/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-dns/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-eventhub/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-loganalytics/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-maps/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-monitor/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-msi/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-network/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservicesbackup/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-redhatopenshift/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-redis/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-relay/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-servicefabricmanagedclusters/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-servicelinker/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-signalr/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-storage/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-mgmt-subscription/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-nspkg/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-servicebus/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-storage-blob/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-storage-file-share/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-storage/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-synapse-artifacts/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/b2sdk/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/backports_lzma/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/backports_os/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/bacpypes/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/bagit/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/bandit/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/baron/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/base58/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/bayesian-optimization/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/bc-python-hcl2/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/bcrypt/3_1.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/bcrypt/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/bellows/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/bidict/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/bids-validator/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/bimmer-connected/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/binwalk/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/bitbucket-api/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/bitbucket-cli/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/bitlist/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/bitstruct/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/black/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/bleak/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/blebox-uniapi/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/blessed/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/blinkpy/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/blis/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/blivet/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/block-io/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/blockdiag/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/blocksat-cli/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/blspy/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/blspy/dont_fetch_dependencies.patch14
-rw-r--r--nixpkgs/pkgs/development/python-modules/bokeh/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/bond-api/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/boost-histogram/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/bootstrapped-pip/2.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/bootstrapped-pip/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/boschshcpy/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/boto3/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/botocore/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/box2d/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/bpython/clipboard-make-which-substitutable.patch27
-rw-r--r--nixpkgs/pkgs/development/python-modules/bpython/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/bracex/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/braintree/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/brelpy/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/brother-ql/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/brotlicffi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/brotlipy/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/browsermob-proxy/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/bsdiff4/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/bugwarrior/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/buienradar/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/build/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/buildbot/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/buildbot/pkg.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/buildbot/plugins.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/buildbot/worker.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/buildcatrust/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/buildout-nix/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/buildout-nix/nix.patch28
-rw-r--r--nixpkgs/pkgs/development/python-modules/buildout/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/bumps/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/bx-python/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/cachecontrol/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/cachetools/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/cachey/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/cadquery/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/cairocffi/0_9.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/cairocffi/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/cairocffi/dlopen-paths-0.9.patch47
-rw-r--r--nixpkgs/pkgs/development/python-modules/cairocffi/generic.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/cairosvg/1_x.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/cairosvg/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/caldav/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/can/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/canonicaljson/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/capstone/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/carbon/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/cart/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/cartopy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/casa-formats-io/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/casbin/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/castepxbin/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cdcs/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/cddb/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/cdecimal/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/celery/default.nix97
-rw-r--r--nixpkgs/pkgs/development/python-modules/cement/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/certbot-dns-cloudflare/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/certbot-dns-google/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/certbot-dns-rfc2136/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/certbot-dns-route53/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/certbot/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/certifi/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/certifi/python2.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/cffi/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/cfn-lint/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/cftime/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/chalice/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/channels-redis/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/charset-normalizer/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/chart-studio/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cherrypy/17.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/chess/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/chex/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/chiapos/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/chiapos/dont_fetch_dependencies.patch9
-rw-r--r--nixpkgs/pkgs/development/python-modules/circuitbreaker/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/cirq-aqt/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/cirq-core/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/cirq-google/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/cirq-ionq/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/cirq-pasqal/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/cirq-rigetti/default.nix72
-rw-r--r--nixpkgs/pkgs/development/python-modules/cirq-web/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/cirq/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/claripy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cle/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/cleo/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/cli-helpers/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cliapp/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/click-didyoumean/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/click-repl/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/click/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/clickgen/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/clickhouse-driver/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/cliff/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cliff/tests.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/clize/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/closure-linter/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/cloudsmith-api/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cloudsplaining/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/clustershell/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/clvm-rs/bump-cargo-lock.patch11
-rw-r--r--nixpkgs/pkgs/development/python-modules/clvm-rs/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/cmarkgfm/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/cmd2/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cmdtest/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/cock/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/coconut/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/cocotb-bus/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/cocotb/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cogapp/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/coilmq/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/colanderalchemy/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/colorcet/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/colorclass/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/colored/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/colorlog/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/colormath/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/colorspacious/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/cometblue-lite/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/commoncode/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/conda/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/confight/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/configparser/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/consonance/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/construct/2.10.54.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/construct/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/convertdate/2.2.x.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/coveralls/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cozy/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/cppe/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/cpyparsing/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/crashtest/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/crccheck/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/crownstone-cloud/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/crownstone-core/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/crownstone-sse/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/crownstone-uart/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cryptography/3.3.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/cryptography/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/crytic-compile/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cssselect2/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/cupy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/curtsies/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cvxpy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cwcwidth/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/cx_freeze/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cx_oracle/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cycler/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cyclonedx-python-lib/default.nix66
-rw-r--r--nixpkgs/pkgs/development/python-modules/cysignals/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/cytoolz/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/darcsver/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/dash-core-components/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/dash-html-components/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/dash-table/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/dash/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask-image/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask-ml/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask-mpi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dask/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/databricks-cli/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/databricks-connect/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/datamodeldict/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/datasets/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/datasette/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/datashader/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/datatable/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/dateparser/0.x.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/dateparser/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/dbus/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dbutils/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ddt/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/debian-inspector/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/debtcollector/tests.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/debugpy/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/decorator/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/deemix/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/deep-translator/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/deep_merge/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/deepdiff/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/deepdish/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/deepmerge/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/deezer-py/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/deezer-python/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/defcon/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/delegator-py/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/deltachat/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/deskcon/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/detect-secrets/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/devolo-home-control-api/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/devolo-plc-api/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/devtools/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/digi-xbee/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/digitalocean/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/dingz/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/discordpy/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/diskcache/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/distlib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/distributed/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-cleanup/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-configurations/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-csp/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-debug-toolbar/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-extensions/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-filter/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-formtools/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-graphiql-debug-toolbar/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-haystack/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-ipware/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-jinja2/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-js-asset/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-mptt/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-paintstore/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-prometheus/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-prometheus/drop-untestable-database-backends.patch38
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-ranged-response/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-redis/default.nix82
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-rq/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-sites/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-statici18n/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-storages/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-tables2/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-taggit/default.nix (renamed from nixpkgs/pkgs/development/python-modules/django_taggit/default.nix)29
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-timezone-field/default.nix62
-rw-r--r--nixpkgs/pkgs/development/python-modules/django/2.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/django/3.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_compressor/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_environ/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_evolution/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_redis/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/django_reversion/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/djangoql/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/djangorestframework-simplejwt/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/djangorestframework/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dlib/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/dm-tree/cmake.patch141
-rw-r--r--nixpkgs/pkgs/development/python-modules/dm-tree/default.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/dnspython/1.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/dnspythonchia/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/doc8/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/docker/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/docplex/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/docstring-parser/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/docstring-to-markdown/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/docstring-to-markdown/remove-coverage-tests.patch16
-rw-r--r--nixpkgs/pkgs/development/python-modules/docutils/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/dogpile-cache/default.nix (renamed from nixpkgs/pkgs/development/python-modules/dogpile.cache/default.nix)20
-rw-r--r--nixpkgs/pkgs/development/python-modules/dogpile.core/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/dotmap/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/downloader-cli/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/drf-yasg/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dropbox/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/dsmr-parser/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/dtopt/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/duckdb/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/duet/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/dulwich/0_19.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/dulwich/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/easy-thumbnails/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/ebaysdk/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/ecs-logging/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/editdistance-s/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/editdistance/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/edward/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/eggdeps/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/einops/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/elastic-apm/default.nix90
-rw-r--r--nixpkgs/pkgs/development/python-modules/elasticsearch/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/elementpath/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/elgato/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/eliot/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/eliqonline/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/elmax-api/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/elmax/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/emoji/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/empy/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/emv/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/entry-points-txt/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/enturclient/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/env-canada/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/environs/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/envisage/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/envoy-reader/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/ephem/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/esprima/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/etcd/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/etelemetry/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/eth-hash/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/eventlet/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/eventlib/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/exchangelib/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/exchangelib/skip_failing_test.patch18
-rw-r--r--nixpkgs/pkgs/development/python-modules/executing/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/explorerscript/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/extractcode/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/extractcode/libarchive.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/factory_boy/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/faker/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/fakeredis/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/falcon/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/faraday-agent-parameters-types/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/faraday-plugins/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastapi/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastcore/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastecdsa/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastnumbers/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastpbkdf2/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastprogress/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastrlock/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/fasttext/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/faulthandler/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/fdint/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/fe25519/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/feedparser/5.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/ffmpeg-progress-yield/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/fido2/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/fields/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/filebrowser_safe/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/filelock/3.2.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/filelock/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/filetype/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/finitude/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/fiona/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/fire/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/fjaraskupan/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/flake8-debugger/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/flake8-future-import/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/flake8-future-import/fix-annotations-version-10.patch (renamed from nixpkgs/pkgs/development/python-modules/flake8-future-import/fix-annotations-version.patch)0
-rw-r--r--nixpkgs/pkgs/development/python-modules/flake8-future-import/fix-annotations-version-11.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/flake8-length/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/flake8-polyfill/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/flake8/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/flashtext/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-admin/default.nix96
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-appbuilder/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-httpauth/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-ldap-login/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-openid/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-paginate/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-session/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-talisman/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-wtf/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/flexmock/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/flit-core/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/flit/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/flower/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/flufl/bounce.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/flufl/i18n.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/flufl/lock.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/flup/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/flux-led/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/folium/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/fontmath/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/fontparts/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/fonttools/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/formbox/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/fountains/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/fpyutils/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/freezegun/0.3.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/freezegun/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/frigidaire/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/fritzconnection/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/frozendict/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/fs/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/fsspec/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ftputil/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/fudge/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/funcparserlib/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/funcy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/furl/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/future-fstrings/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/future-typing/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/gaphas/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/gateone/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/gbinder-python/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/gcsfs/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/gdown/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/gdrivefs/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/ge25519/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/gehomesdk/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/gekitchen/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/genanki/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/generic/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/geoip2/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/geopandas/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/geopy/2.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/gevent-websocket/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/geventhttpclient/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ghapi/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/ghp-import/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ghrepo-stats/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/gigalixir/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/gin-config/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/gistyc/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/git-filter-repo/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/gitdb/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/github-to-sqlite/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/github3_py/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/glances-api/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/glcontext/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/glean-parser/default.nix61
-rw-r--r--nixpkgs/pkgs/development/python-modules/glean-sdk/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/glean-sdk/fix-spawned-process-environment.patch20
-rw-r--r--nixpkgs/pkgs/development/python-modules/glfw/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/glom/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/glymur/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/gmpy2/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/gntp/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/gnutls/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/goalzero/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/goodwe/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-api-core/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-api-python-client/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-auth-httplib2/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-auth/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-appengine-logging/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-asset/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-audit-log/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-automl/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-bigquery/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-container/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-core/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-datacatalog/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-dataproc/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-datastore/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-dlp/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-error-reporting/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-iam-logging/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-iam/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-kms/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-language/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-logging/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-monitoring/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-org-policy/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-os-config/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-pubsub/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-redis/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-resource-manager/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-secret-manager/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-spanner/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-speech/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-storage/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-tasks/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-testutils/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-texttospeech/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-trace/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-translate/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-videointelligence/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-vision/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-websecurityscanner/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-nest-sdm/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-re2/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-resumable-media/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/goveelights/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/gplaycli/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/gprof2dot/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/gradient-utils/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/gradient/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/grammalecte/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/graph-tool/2.x.x.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/graphene-django/default.nix65
-rw-r--r--nixpkgs/pkgs/development/python-modules/graphene/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/graphql-core/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/graphql-subscription-manager/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/graphviz/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/graphviz/hardcode-graphviz-path.patch98
-rw-r--r--nixpkgs/pkgs/development/python-modules/graphviz/paths.patch79
-rw-r--r--nixpkgs/pkgs/development/python-modules/grappelli_safe/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/graspologic/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/greeclimate/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/green/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/greenlet/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/grpcio-status/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/grpcio-tools/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/gruut-ipa/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/gruut/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/gsd/1.7.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/gsd/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/gspread/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/gssapi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/guessit/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/gunicorn/19.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/gviz-api/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/gvm-tools/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/gyp/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/h5py/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/ha-av/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/ha-philipsjs/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/hacking/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/hahomematic/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/halo/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/halohome/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/hangups/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/hass-nabucasa/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/hatasmota/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/hbmqtt/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/hdfs/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/headerparser/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/heatzypy/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/herepy/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/hg-evolve/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/hg-git/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/hgsvn/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/hid/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/hidapi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/hjson/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/hole/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/holidays/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/holoviews/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/homematicip/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/howdoi/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/hsaudiotag/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/hstspreload/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/html2text/2018.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/html5lib/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/http_signature/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/httpcore/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/httplib2/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/httpretty/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/httpx-socks/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/httpx/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/huawei-lte-api/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/hug/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/huggingface-hub/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/humanize/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/hvplot/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/hwi/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/hydra-check/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/hydrawiser/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/hyperopt/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/hypothesis/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/hypothesmith/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/hyppo/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/i3ipc/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/ibis/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/icalendar/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/icmplib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/idasen/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/identify/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/idna/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ifcopenshell/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/ignite/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/igraph/default.nix (renamed from nixpkgs/pkgs/development/python-modules/python-igraph/default.nix)6
-rw-r--r--nixpkgs/pkgs/development/python-modules/ihatemoney/default.nix64
-rw-r--r--nixpkgs/pkgs/development/python-modules/ihatemoney/remove_flask_script.patch284
-rw-r--r--nixpkgs/pkgs/development/python-modules/image-go-nord/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/imageio/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/imagesize/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/imap-tools/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/imapclient/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/imbalanced-learn/0.4.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/img2pdf/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/imgaug/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/impacket/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/importlib-metadata/2.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/importlib-metadata/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/importlib-resources/2.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/importlib-resources/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/influxdb-client/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/influxdb/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/inform/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/injector/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/inotify/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/insegel/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/intake-parquet/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/intake/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/intensity-normalization/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/internetarchive/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipfshttpclient/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipydatawidgets/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipykernel/4.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipykernel/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipympl/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipyparallel/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipython/5.nix72
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipython/7.16.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipython/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipyvue/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ipywidgets/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ircrobots/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/ircstates/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/isbnlib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/islpy/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/ismartgate/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/iso3166/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/iso4217/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/isodate/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/isort/4.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/iterm2/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaconv/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaeger-client/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/janus/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaraco-context/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaraco_functools/2.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaraco_functools/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaraco_stream/2.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaraco_text/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/jax/cache-fix.patch12
-rw-r--r--nixpkgs/pkgs/development/python-modules/jax/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaxlib/bin.nix90
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaxlib/default.nix345
-rw-r--r--nixpkgs/pkgs/development/python-modules/jc/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/jdatetime/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jedi-language-server/default.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/jedi/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/jellyfin-apiclient-python/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/jellyfish/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jenkins-job-builder/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/jinja2/2.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/jinja2/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/jmp/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/joblib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/johnnycanencrypt/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/josepy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jproperties/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/jschema-to-python/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/json-schema-for-humans/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonpointer/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonrpc-websocket/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonrpclib/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonschema/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/jsonwatch/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/jug/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter-client/default.nix (renamed from nixpkgs/pkgs/development/python-modules/jupyter_client/default.nix)4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter-repo2docker/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter-server-mathjax/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter-sphinx/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter-telemetry/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter_client/5.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter_console/5.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter_console/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter_core/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyter_server/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyterhub-systemdspawner/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyterlab-git/default.nix74
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyterlab/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupyterlab_server/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/jupytext/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/justbackoff/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/k5test/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/kajiki/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/kaldi-active-grammar/fork.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/karton-autoit-ripper/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/karton-dashboard/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/keepkey/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/keras-preprocessing/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/keras/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/keyboard/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/keyring/2.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/keyring/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/keystone-engine/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/keyutils/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/kivy/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/kiwisolver/1_1.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/kmapper/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/knack/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/koji/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/kombu/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/konfig/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/kubernetes/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/labelbox/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/labgrid/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/langcodes/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/language-data/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/larch/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/lasagne/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/launchpadlib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/lc7001/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/ldap/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ldappool/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ldaptor/19.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/le/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/leather/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/ledgerblue/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ledgerwallet/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/levenshtein/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/lexid/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/libarchive-c/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/libarcus/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/libasyncns/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/libcloud/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/libcst/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/liblzfse/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/libnacl/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/libpyvivotek/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/librouteros/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/libsavitar/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/libtmux/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/libusb1/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/libversion/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/libvirt/5.9.0.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/libvirt/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/life360/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/lightblue/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/lightgbm/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/lightwave2/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/limnoria/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/line_profiler/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/linecache2/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/linkify-it-py/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/liquidctl/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/livelossplot/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/livestreamer-curses/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/livestreamer/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/llfuse/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/lmdb/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/log-symbols/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/logfury/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/losant-rest/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/lsassy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/lsi/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/ludios_wpull/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/luftdaten/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/luhn/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/lupupy/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/luxor/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/luxtronik/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/lxc/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/lxml/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/lz4/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/m3u8/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/maestral/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/magicgui/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/mahotas/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/mailman-hyperkitty/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/mailsuite/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/makefun/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/manimpango/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/manticore/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/mapsplotlib/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/mariadb/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/marionette_driver.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozcrash.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozdevice.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozfile.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozhttpd.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozinfo.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozlog.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/moznetwork.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozprocess.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozprofile.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozrunner.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/moztest.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/marionette-harness/mozversion.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/markdown-include/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/markdown-it-py/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/markdown/3_1.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/markdown/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/mask-rcnn/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/mathlibtools/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/matlink-gpapi/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/matplotlib-inline/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/matplotlib/2.nix80
-rw-r--r--nixpkgs/pkgs/development/python-modules/matplotlib/default.nix73
-rw-r--r--nixpkgs/pkgs/development/python-modules/matrix-nio/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/mautrix/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/maya/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mayavi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mcstatus/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/md-toc/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/mdformat/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/mdit-py-plugins/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/mdp/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/mdurl/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/mediafile/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/meliae/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/memory-allocator/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/meross-iot/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/meshlabxml/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/meshtastic/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/mesonpep517/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/metakernel/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/metaphone/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/mill-local/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/millheater/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/miniaudio/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/minidump/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/minio/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/misaka/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/mistletoe/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mistune/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mitmproxy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mitogen/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mizani/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/ml-collections/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/mlflow/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/mne-python/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mnemonic/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mocket/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mockito/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mohawk/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/moinmoin/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/moinmoin/fix_tests.patch16
-rw-r--r--nixpkgs/pkgs/development/python-modules/monkeyhex/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/monty/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/moonraker-api/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/more-itertools/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/motionblinds/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/motioneye-client/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/mouseinfo/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/mouseinfo/fix-xlib-version.patch14
-rw-r--r--nixpkgs/pkgs/development/python-modules/mouseinfo/pillow-version.patch20
-rw-r--r--nixpkgs/pkgs/development/python-modules/mox3/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/mozsvc/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/mozterm/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/mpd/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/mrbob/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/mrkd/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/ms-active-directory/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/msal/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/msgpack/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/msoffcrypto-tool/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/msrplib/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/mujson/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/multidict/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/multimethod/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/multiprocess/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/multitasking/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/murmurhash/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mutagen/1.43.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/mutagen/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/mutf8/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/muttils/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/mwdblib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mwlib-ext/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/mwlib-rl/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/mwlib/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/myfitnesspal/default.nix61
-rw-r--r--nixpkgs/pkgs/development/python-modules/myhome/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/mypy-boto3-s3/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/mypy-protobuf/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/mypy/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/mypy/extensions.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/mysqlclient/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/namebench/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/napari-console/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/napari-plugin-engine/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/napari-svg/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/napari/default.nix75
-rw-r--r--nixpkgs/pkgs/development/python-modules/nassl/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/natsort/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbclient/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbconvert/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbdime/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbformat/2.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbsmoke/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbval/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/nbxmpp/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/neo4j-driver/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/nessclient/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/netcdf4/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/netdata/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/nettigo-air-monitor/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/networkx/2.2.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/networkx/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/nevow/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/nexia/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/niko-home-control/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/nilearn/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/nipype/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/nitime/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/nitransforms/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/nix-prefetch-github/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/nltk/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/nmapthon2/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/nmigen/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/normality/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/nose-focus/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/nose-of-yeti/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/notebook/2.nix76
-rw-r--r--nixpkgs/pkgs/development/python-modules/notebook/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/notifications-python-client/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/notify/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/ntc-templates/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/nuitka/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/nulltype/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/numba/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/numexpr/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/numpy/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/nunavut/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/nwdiag/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/nxt-python/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/oath/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/oauthlib/3.1.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/obfsproxy/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/objax/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/ocrmypdf/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/ocrmypdf/paths.patch61
-rw-r--r--nixpkgs/pkgs/development/python-modules/oemthermostat/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/ofxtools/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/oletools/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/omnikinverter/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/onnx/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/oocsi/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/open-garage/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/open-meteo/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/openai/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/openbabel-bindings/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/openpyxl/2.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/openpyxl/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/openrazer/daemon.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/openrouteservice/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/opensensemap-api/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/openstacksdk/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/opt-einsum/2.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/optuna/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/ormar/default.nix80
-rw-r--r--nixpkgs/pkgs/development/python-modules/orvibo/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/os-service-types/tests.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/oslo-concurrency/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/oslo-config/tests.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/oslo-context/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/oslo-db/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/oslo-log/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/oslo-utils/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/oslotest/tests.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/osmpythontools/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/osmpythontools/remove-test-only-dependencies.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/p1monitor/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/packaging/2.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/packbits/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/packet-python/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pagerduty/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/paho-mqtt/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/panacotta/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pandas-stubs/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/pandas/2.nix119
-rw-r--r--nixpkgs/pkgs/development/python-modules/pandas/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pandocfilters/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/panel/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/papermill/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/papis-python-rofi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/param/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/paramiko/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/parfive/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/parquet/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/parse-type/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/parsedmarc/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/parsy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/parts/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/passlib/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/paste/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pastel/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pastescript/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/path.py/2.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/pathy/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/patsy/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pbr/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pbr/tests.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/pc-ble-driver-py/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/pcodedmp/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/pdfkit/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pdfminer_six/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/pdftotext/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pdoc3/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pebble/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pecan/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/peewee/default.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/pelican/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pendulum/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pep257/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pep440/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pep8-naming/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/pescea/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/pex/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pexpect/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pg8000/1_12.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pg8000/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/pglast/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pgpy/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/phik/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/phonenumbers/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/phonopy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/piccata/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pikepdf/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pikepdf/paths.patch8
-rw-r--r--nixpkgs/pkgs/development/python-modules/pillow/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pint/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/pip-tools/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pip/20.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/pip/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/pipx/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pkginfo/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pkutils/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/plac/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/plaid-python/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/platformdirs/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/plexapi/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/plotly/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pluggy/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/plugwise/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/plumbum/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/plyer/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/plyvel/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/poetry-core/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/poetry/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/polarizationsolver/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/policy-sentry/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/policyuniverse/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pontos/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/poppler-qt5/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/portend/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/potentials/default.nix62
-rw-r--r--nixpkgs/pkgs/development/python-modules/prance/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/praw/6.3.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/praw/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pre-commit-hooks/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pre-commit/default.nix66
-rw-r--r--nixpkgs/pkgs/development/python-modules/pre-commit/hook-tmpl-use-the-hardcoded-path-to-pre-commit.patch15
-rw-r--r--nixpkgs/pkgs/development/python-modules/pre-commit/languages-use-the-hardcoded-path-to-python-binaries.patch26
-rw-r--r--nixpkgs/pkgs/development/python-modules/precis-i18n/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/preshed/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/prettytable/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/progressbar231/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/prometheus-client/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/prompt-toolkit/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/proto-plus/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/protobuf/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/proton-client/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/protonvpn-nm-lib/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/prov/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/prox-tv/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/proxy-py/default.nix63
-rw-r--r--nixpkgs/pkgs/development/python-modules/proxy_tools/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/psautohint/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/psycopg2/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/psygnal/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/publicsuffix/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pubnub/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pudb/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/pulp/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pur/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/pvo/default.nix61
-rw-r--r--nixpkgs/pkgs/development/python-modules/pwntools/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/pxml/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/py-nightscout/default.nix50
-rw-r--r--nixpkgs/pkgs/development/python-modules/py-synologydsm-api/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/py-zabbix/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/py/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/py17track/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/py3exiv2/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/py3status/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/py4j/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyTelegramBotAPI/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyads/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyaftership/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyahocorasick/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyairvisual/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyamf/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyaml/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyarrow/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyathena/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyatmo/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyatome/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyatspi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyatv/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyautogui/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyautogui/fix-locateOnWindow-and-xlib.patch30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybalboa/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybase64/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybids/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pybind11/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyblosxom/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycairo/1.18.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycairo/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycangjie/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycapnp/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycarddav/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycares/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycarwings2/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycassa/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycfdns/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/pychromecast/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyclip/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycm/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycmarkgfm/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycocotools/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycodestyle/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycollada/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycountry/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycparser/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycryptodome/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycryptodomex/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycryptopp/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyct/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pycurl2/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydal/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydeck/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydeconz/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydelijn/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydexcom/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydicom/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydmd/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydns/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydocstyle/2.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydocstyle/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyduke-energy/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydyf/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyebus/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyeclib/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyecowitt/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyefergy/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyemby/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyenvisalink/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyephember/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyerfa/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyevilgenius/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyexcel/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyexcelerator/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyexiv2/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyezviz/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyfaidx/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyfakefs/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyflakes/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyflunearyou/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyfronius/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygame/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygame/fix-dependency-finding.patch30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygetwindow/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygit2/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygls/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygmt/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygobject/3.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygogo/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygtksourceview/codegendir.patch25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygtksourceview/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyhamcrest/1.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyhaversion/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyhomematic/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyhomeworks/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyicu/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyinsteon/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyiqvia/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyisy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyjet/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyjwt/1.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykakasi/default.nix62
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykeepass/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykeyatome/default.nix59
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykickstart/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykodi/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykrakenapi/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/pykulersky/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylama/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylama/paths.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylast/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylaunches/default.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylgnetcast/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylibacl/0.5.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylint-django/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylint/1.9.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylint/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylitterbot/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylsp-mypy/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pylutron-caseta/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymarshal/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymatgen/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymavlink/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymazda/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymelcloud/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymetno/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymongo/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pympler/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymsgbox/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymumble/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymunk/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymysensors/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynacl/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynest2d/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynetbox/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynetdicom/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynina/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynput/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynrrd/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynvim/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pynvml/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyobjc/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyocr/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyoctoprintapi/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyopencl/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyopenssl/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyopenuv/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyp/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypandoc/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypdf/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyperclip/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyperf/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypinyin/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypoint/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypoolstation/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypoppler/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypoppler/pypoppler-0.39.0.patch23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypoppler/pypoppler-poppler.c.patch12
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyppeteer/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pypresence/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyproj/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyqt-builder/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyqt/5.x.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyqtgraph/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyquil/default.nix105
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyramid/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyramid_mako/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyramid_multiauth/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyrect/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyreport/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyrmvtransport/default.nix (renamed from nixpkgs/pkgs/development/python-modules/PyRMVtransport/default.nix)9
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyro-ppl/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyro4/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyro5/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysam/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysaml2/default.nix79
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysatochip/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyscard/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyscf/default.nix91
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyscf/h5py.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyscreeze/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysecuritas/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyside/apiextractor.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyside/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyside/generatorrunner.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyside2-tools/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyside2/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysimplegui/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyskyqhub/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyskyqremote/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyslurm/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysma/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysmappee/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysmart-smartx/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysmart/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysmartapp/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysmartthings/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysnooper/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysnow/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysolcast/default.nix61
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyspark/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysparse/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyspcwebgw/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyspinel/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyspnego/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyspotify/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pystache/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pystray/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyswitchbot/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytado/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytaglib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytap2/default.nix42
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytautulli/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytenable/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-aio/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-annotate/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-arraydiff/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-astropy/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-asyncio/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-cases/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-datadir/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-doctestplus/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-dotenv/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-flake8/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-flakes/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-freezegun/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-helpers-namespace/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-httpserver/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-httpx/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-json-report/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-localserver/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-mock/2.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-mypy-plugins/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-raisin/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-repeat/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-sanic/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-services/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-snapshot/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-subprocess/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-testmon/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-trio/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-xdist/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest/4.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest/5.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-box/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-cinderclient/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-codon-tables/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-crontab/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-csxcad/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-datemath/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-didl-lite/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-dotenv/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-ecobee-api/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-engineio/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-gammu/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-gnupg/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-google-nest/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-gvm/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-hglib/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-hpilo/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-http-client/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-ironicclient/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-izone/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-jenkins/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-jsonrpc-server/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-language-server/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-levenshtein/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-lsp-black/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-lsp-server/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-lzo/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-magic/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-manilaclient/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-mapnik/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-miio/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-mimeparse/default.nix (renamed from nixpkgs/pkgs/development/python-modules/python_mimeparse/default.nix)2
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-nest/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-nmap/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-olm/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-opendata-transport/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-openstackclient/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-otr/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-pidfile/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-pipedrive/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-redis-lock/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-sat/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-slugify/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-smarttub/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-socketio/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-socks/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-songpal/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-string-utils/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-swiftclient/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-telegram-bot/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-utils/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-vipaccess/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python2-pythondialog/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/python3-saml/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/python_statsd/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/pythonegardia/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/pythonirclib/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/pythonmagick/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/pythonnet/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/pythonocc-core/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytibber/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytile/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytm/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytmx/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytomlpp/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytools/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytorch/bin.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytorch/binary-hashes.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytorch/default.nix2
-rwxr-xr-xnixpkgs/pkgs/development/python-modules/pytorch/prefetch.sh13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytraccar/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytradfri/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytube/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyturbojpeg/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytweening/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytwitchapi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytz-deprecation-shim/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytz/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyuavcan/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyupgrade/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyuptimerobot/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyvcd/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyversasense/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyvesync/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyvex/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyvicare/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyvips/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyvis/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyvolumio/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywal/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywavelets/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywayland/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywbem/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyweatherflowrest/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywebdav/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywebview/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywemo/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywick/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywilight/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywizlight/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/pywlroots/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyworld/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyxb/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyxdg/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyxml/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyzerproc/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyzmq/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/qcelemental/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/qcengine/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/qcs-api-client/default.nix69
-rw-r--r--nixpkgs/pkgs/development/python-modules/qiling/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/qimage2ndarray/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/qiskit-aer/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/qiskit-aqua/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/qiskit-finance/default.nix78
-rw-r--r--nixpkgs/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/qiskit-machine-learning/default.nix87
-rw-r--r--nixpkgs/pkgs/development/python-modules/qiskit-nature/default.nix80
-rw-r--r--nixpkgs/pkgs/development/python-modules/qiskit-optimization/default.nix63
-rw-r--r--nixpkgs/pkgs/development/python-modules/qiskit-terra/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/qiskit/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/qmk-dotty-dict/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/qnap-qsw/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/qserve/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/qtawesome/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/qtconsole/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/qtpy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/quantum-gateway/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/questionary/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/qutip/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/r2pipe/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/radio_beam/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/rapidfuzz/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/rcssmin/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/rdflib-jsonld/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/rdflib/default.nix66
-rw-r--r--nixpkgs/pkgs/development/python-modules/rdkit/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/readme_renderer/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/rebulk/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/reflink/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/regenmaschine/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/regex/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/reikna/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/related/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/remotecv/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/remotecv/install_requires.patch16
-rw-r--r--nixpkgs/pkgs/development/python-modules/renault-api/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/reolink/default.nix69
-rw-r--r--nixpkgs/pkgs/development/python-modules/reportlab/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests-cache/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests-kerberos/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests-kerberos/fix_setup.patch9
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests-toolbelt/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/responses/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/respx/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/restfly/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/restrictedpython/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/restview/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/rfc3339-validator/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/rfc3339/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/rfc6555/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/rfc6555/disable_network_tests.patch31
-rw-r--r--nixpkgs/pkgs/development/python-modules/rflink/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/rhpl/builder.sh13
-rw-r--r--nixpkgs/pkgs/development/python-modules/rhpl/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/rich/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ring-doorbell/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ritassist/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/rjsmin/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/rki-covid-parser/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/rnginline/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/robotframework-ride/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/robotframework-sshlibrary/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/robotframework/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/rokuecp/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/rollbar/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/roombapy/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/ropgadget/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpcq/default.nix61
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpkg/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpy2/2.nix108
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpy2/r-libs-site.patch20
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpyc/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/rq/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/rsa/4_0.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/rsa/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/rtoml/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/ruamel-base/default.nix (renamed from nixpkgs/pkgs/development/python-modules/ruamel_base/default.nix)12
-rw-r--r--nixpkgs/pkgs/development/python-modules/ruamel-yaml-clib/default.nix (renamed from nixpkgs/pkgs/development/python-modules/ruamel_yaml_clib/default.nix)16
-rw-r--r--nixpkgs/pkgs/development/python-modules/ruamel-yaml/default.nix (renamed from nixpkgs/pkgs/development/python-modules/ruamel_yaml/default.nix)25
-rw-r--r--nixpkgs/pkgs/development/python-modules/ruamel_ordereddict/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/ruamel_yaml/0.16.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/ruffus/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/runsnakerun/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/ruyaml/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/rzpipe/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/s3fs/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sagemaker/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/samsungtvws/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sandboxlib/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/sanic-auth/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/sanic-routing/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sanic-testing/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sanic/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/sarge/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/sarif-om/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/schedule/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/schema-salad/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/schema/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-build/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-fmm/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-hep-testdata/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-image/add-testing-data.patch17
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-image/default.nix68
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-learn/0.20.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-learn/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikit-survival/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/scikits-odes/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/scipy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/scp/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/scrapy/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/screeninfo/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/screenlogicpy/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/scs/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/seaborn/0.9.1.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/seaborn/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/seatconnect/default.nix63
-rw-r--r--nixpkgs/pkgs/development/python-modules/secp256k1/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/semantic/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/send2trash/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/sendgrid/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/sense-energy/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/sentry-sdk/default.nix131
-rw-r--r--nixpkgs/pkgs/development/python-modules/sepaxml/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/seqdiag/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/seqeval/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/serversyncstorage/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/setupmeta/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/setuptools-scm/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/setuptools-scm/tests.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/setuptools/44.0.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/setuptools/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/setuptoolsdarcs/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/sfepy/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/sh/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/shamir-mnemonic/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/shap/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/shapely/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/shapely/library-paths.patch96
-rw-r--r--nixpkgs/pkgs/development/python-modules/shiboken2/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/shortuuid/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/sievelib/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/signify/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/sigtools/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/simple-di/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/simple-rest-client/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/simple-salesforce/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/simpleai/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/simpleeval/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/simplejson/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/simplenote/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/simpleparse/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/simplisafe-python/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/singledispatch/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/siosocks/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/sip/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/sipsimple/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/skodaconnect/default.nix61
-rw-r--r--nixpkgs/pkgs/development/python-modules/skorch/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/skytemple-files/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/skytemple-rust/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/slack-sdk/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/slackclient/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/slicer/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/slither-analyzer/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/slowaes/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/slugid/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/smartdc/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/smbprotocol/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/smbus-cffi/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/smpplib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/snakeviz/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/snowballstemmer/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/snowflake-connector-python/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/snowflake-sqlalchemy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/snug/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/socialscan/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/socid-extractor/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/soco/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/softlayer/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/solax/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/solo-python/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/somajo/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/somecomfort/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sopel/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sounddevice/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/soundfile/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/soupsieve/1.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/soupsieve/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/spacy-alignments/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/spacy-transformers/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/spacy/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/spacy/legacy.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/spambayes/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/spectral-cube/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/spglib/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx-material/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx/0001-test-images-Use-normalization-equivalent-character.patch35
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinx/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib-actdiag/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib-nwdiag/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib-seqdiag/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib-spelling/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/sphinxext-opengraph/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/spiderpy/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/splinter/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/spur/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/spyder-kernels/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/spyder/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlalchemy-citext/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlalchemy-i18n/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlalchemy-mixins/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlalchemy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlite-utils/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlite3dbm/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlmap/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlparse/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlsoup/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/squaremap/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/srpenergy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/srsly/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ssdeep/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/sslyze/default.nix83
-rw-r--r--nixpkgs/pkgs/development/python-modules/stanza/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/starkbank-ecdsa/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/starlette/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/stashy/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/staticjinja/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/statsmodels/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/stdiomask/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/stdlib-list/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/stem/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/stestr/tests.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/stevedore/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/stickytape/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/stompclient/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/streamz/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/strictyaml/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/stringtemplate/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/stripe/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/striprtf/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/structlog/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/stumpy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/subarulink/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/subliminal/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/subprocess-tee/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/subprocess32/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/subzerod/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/suds/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/suds/suds-0.4-CVE-2013-2217.patch19
-rw-r--r--nixpkgs/pkgs/development/python-modules/sunpy/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/superqt/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/supervisor/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/sure/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/surepy/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/svgwrite/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/swagger-spec-validator/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/swagger-ui-bundle/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/swspotify/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/sybase/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/sympy/1_5.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/sympy/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/systembridge/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/tableaudocumentapi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/tables/3.5.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/tables/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/tablib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/tago/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/tailscale/default.nix61
-rw-r--r--nixpkgs/pkgs/development/python-modules/tarman/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/taskw/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/telethon/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/tempest/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/tempora/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorboard-plugin-profile/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorboardx/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow-estimator/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow/bin.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow/binary-hashes.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow/default.nix159
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow/llvm_bazel_fix_macos_10_12_sdk.patch12
-rwxr-xr-xnixpkgs/pkgs/development/python-modules/tensorflow/prefetcher.sh12
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow/relax-dependencies-metadata.patch46
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow/relax-dependencies.patch51
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow/system-protobuf.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensorflow/workspace.patch18
-rw-r--r--nixpkgs/pkgs/development/python-modules/terminado/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/termplotlib/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/termplotlib/gnuplot-subprocess.patch26
-rw-r--r--nixpkgs/pkgs/development/python-modules/tern/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/tesla-wall-connector/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/teslajsonpy/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/testfixtures/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/testtools/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/textdistance/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/textfsm/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/thinc/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/threadloop/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/threadpoolctl/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/thumbor/0001-Don-t-use-which-implementation-to-find-required-exec.patch277
-rw-r--r--nixpkgs/pkgs/development/python-modules/thumbor/default.nix90
-rw-r--r--nixpkgs/pkgs/development/python-modules/tifffile/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/time-machine/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/tinycss2/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/tld/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/tmdb3/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/todoist/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/toggl-cli/default.nix76
-rw-r--r--nixpkgs/pkgs/development/python-modules/tokenize-rt/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/tokenizers/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/tokenserver/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/tololib/default.nix49
-rw-r--r--nixpkgs/pkgs/development/python-modules/tomli/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/tomli/fix-backwards-compatibility-load.patch21
-rw-r--r--nixpkgs/pkgs/development/python-modules/toolz/2.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/toolz/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/torchaudio/bin.nix52
-rw-r--r--nixpkgs/pkgs/development/python-modules/torchaudio/binary-hashes.nix26
-rwxr-xr-xnixpkgs/pkgs/development/python-modules/torchaudio/prefetch.sh37
-rw-r--r--nixpkgs/pkgs/development/python-modules/torchvision/bin.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/torchvision/binary-hashes.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/torchvision/default.nix4
-rwxr-xr-xnixpkgs/pkgs/development/python-modules/torchvision/prefetch.sh13
-rw-r--r--nixpkgs/pkgs/development/python-modules/tornado/4.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/tornado/5.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/total-connect-client/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/tox/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/tqdm/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/traitlets/4.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/traitlets/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/traits/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/transformers/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/translatepy/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/treeo/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/trezor/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/trezor_agent/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/trimesh/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/trio-asyncio/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/trio/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/trytond/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/ttystatus/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/tubeup/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/tumpa/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/tuya-iot-py-sdk/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/tweedledum/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/tweepy/default.nix44
-rw-r--r--nixpkgs/pkgs/development/python-modules/twentemilieu/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/twilio/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/twill/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/twitterapi/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/txtorcon/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/typecode/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/typecode/libmagic.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/typed-ast/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/typed-settings/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/typeguard/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/typer/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-decorator/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-protobuf/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-pytz/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-requests/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-setuptools/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-toml/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-typed-ast/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/typical/default.nix80
-rw-r--r--nixpkgs/pkgs/development/python-modules/typical/use-poetry-core.patch13
-rw-r--r--nixpkgs/pkgs/development/python-modules/typing-inspect/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/tzlocal/default.nix33
-rw-r--r--nixpkgs/pkgs/development/python-modules/uamqp/default.nix60
-rw-r--r--nixpkgs/pkgs/development/python-modules/ufonormalizer/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ujson/2.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/ujson/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ukkonen/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/umap-learn/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/umemcache/default.nix20
-rw-r--r--nixpkgs/pkgs/development/python-modules/uncompyle6/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/unicode-slugify/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/unicorn/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/unidecode/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/unrardll/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/uonet-request-signer-hebe/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/upass/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/uproot/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/uptime-kuma-monitor/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/uranium/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/uritools/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/urllib3/2.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/urllib3/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/usbtmc/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/uvicorn/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/uvloop/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/validators/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/variants/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/vcver/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/vdirsyncer/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/vehicle/default.nix61
-rw-r--r--nixpkgs/pkgs/development/python-modules/velbus-aio/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/venstarcolortouch/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/vilfo-api-client/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/virtualenv-clone/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/virtualenv/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/vispy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/vivisect/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/volkszaehler/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/voluptuous-serialize/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/vowpalwabbit/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/vpk/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/vsts-cd-manager/default.nix3
-rw-r--r--nixpkgs/pkgs/development/python-modules/vt-py/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/vulcan-api/default.nix57
-rw-r--r--nixpkgs/pkgs/development/python-modules/wakeonlan/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/wasabi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/watchdog/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/watermark/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/wavefile/default.nix64
-rw-r--r--nixpkgs/pkgs/development/python-modules/wavefile/libsndfile.py.patch18
-rw-r--r--nixpkgs/pkgs/development/python-modules/wavinsentio/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/wcmatch/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/weasyprint/default.nix102
-rw-r--r--nixpkgs/pkgs/development/python-modules/weasyprint/library-paths.patch59
-rw-r--r--nixpkgs/pkgs/development/python-modules/webargs/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/websockets/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/webssh/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/weconnect-mqtt/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/weconnect/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/werkzeug/1.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/werkzeug/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/west/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/wfuzz/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/wheel-filename/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/wheel-inspect/default.nix65
-rw-r--r--nixpkgs/pkgs/development/python-modules/wheel/0001-tests-Rename-a-a-o-_-.py-_-.py.patch37
-rw-r--r--nixpkgs/pkgs/development/python-modules/wheel/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/widgetsnbextension/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/wiffi/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/winacl/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/winsspi/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/wled/default.nix23
-rw-r--r--nixpkgs/pkgs/development/python-modules/worldengine/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/wptserve/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/wrapt/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/wsgiproxy/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/wtf-peewee/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/xapp/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/xarray/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/xattr/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/xcaplib/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/xcffib/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/xdg/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/xdis/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/xdot/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/xgboost/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/xkbcommon/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/xknx/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/xmind/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/xml2rfc/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/xmlschema/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/xpybutil/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/xstatic-jquery-ui/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/yalexs/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/yamale/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/yamlfix/default.nix55
-rw-r--r--nixpkgs/pkgs/development/python-modules/yappi/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/yara-python/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/yarl/default.nix43
-rw-r--r--nixpkgs/pkgs/development/python-modules/yenc/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/yfinance/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/youless-api/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/youtube-search-python/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/youtube-transcript-api/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/yq/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/yt/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/ytmusicapi/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/z3c-checkversions/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/zarr/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/zbase32/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/zeroconf/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/zeversolarlocal/default.nix58
-rw-r--r--nixpkgs/pkgs/development/python-modules/zfec/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/zha-quirks/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/zigpy-deconz/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/zigpy-znp/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/zigpy/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/zipp/1.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/zipp/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_lifecycleevent/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_proxy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_schema/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/zope_testrunner/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/zopfli/default.nix11
-rwxr-xr-xnixpkgs/pkgs/development/python-modules/zstandard/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/zulip/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/zwave-js-server-python/default.nix11
2127 files changed, 24648 insertions, 14193 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/APScheduler/default.nix b/nixpkgs/pkgs/development/python-modules/APScheduler/default.nix
index 8556294e2b68..e0ebf564163f 100644
--- a/nixpkgs/pkgs/development/python-modules/APScheduler/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/APScheduler/default.nix
@@ -21,13 +21,13 @@
 
 buildPythonPackage rec {
   pname = "APScheduler";
-  version = "3.8.0";
+  version = "3.8.1";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "793b2d37c52ece53e34626619e6142e99b20b59a12155f39e1e6932e324f079d";
+    sha256 = "5cf344ebcfbdaa48ae178c029c055cec7bc7a4a47c21e315e4d1f08bd35f2355";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/FormEncode/default.nix b/nixpkgs/pkgs/development/python-modules/FormEncode/default.nix
index 7a3967404c94..4244d358c8dd 100644
--- a/nixpkgs/pkgs/development/python-modules/FormEncode/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/FormEncode/default.nix
@@ -1,34 +1,49 @@
-{ lib, buildPythonPackage, fetchPypi, dnspython, pycountry, nose, setuptools-scm, six, isPy27 }:
+{ lib
+, buildPythonPackage
+, isPy27
+, fetchPypi
+, setuptools-scm
+, six
+, dnspython
+, pycountry
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "FormEncode";
-  version = "2.0.0";
+  version = "2.0.1";
 
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "049pm276140h30xgzwylhpii24xcln1qfdlfmbj69sqpfhlr5szj";
+    sha256 = "8f2974112c2557839d5bae8b76490104c03830785d923abbdef148bf3f710035";
   };
 
   postPatch = ''
-    sed -i 's/setuptools_scm_git_archive//' setup.py
-    sed -i 's/use_scm_version=.*,/version="${version}",/' setup.py
+    sed -i '/setuptools_scm_git_archive/d' setup.py
   '';
 
   nativeBuildInputs = [ setuptools-scm ];
+
   propagatedBuildInputs = [ six ];
 
-  checkInputs = [ dnspython pycountry nose ];
+  checkInputs = [
+    dnspython
+    pycountry
+    pytestCheckHook
+  ];
 
-  preCheck = ''
-    # requires dns resolving
-    sed -i 's/test_unicode_ascii_subgroup/noop/' formencode/tests/test_email.py
-  '';
+  disabledTests = [
+    # requires network for DNS resolution
+    "test_doctests"
+    "test_unicode_ascii_subgroup"
+  ];
 
   meta = with lib; {
     description = "FormEncode validates and converts nested structures";
     homepage = "http://formencode.org";
     license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/Mako/default.nix b/nixpkgs/pkgs/development/python-modules/Mako/default.nix
index cf3028612698..4c16861823fd 100644
--- a/nixpkgs/pkgs/development/python-modules/Mako/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/Mako/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "Mako";
-  version = "1.1.5";
+  version = "1.1.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "169fa52af22a91900d852e937400e79f535496191c63712e3b9fda5a9bed6fc3";
+    sha256 = "4e9e345a41924a954251b95b4b28e14a301145b544901332e658907a7464b6b2";
   };
 
   propagatedBuildInputs = [ markupsafe ];
diff --git a/nixpkgs/pkgs/development/python-modules/Markups/default.nix b/nixpkgs/pkgs/development/python-modules/Markups/default.nix
index bacfe95a9a13..1fa304f57a8a 100644
--- a/nixpkgs/pkgs/development/python-modules/Markups/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/Markups/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "Markups";
-  version = "3.1.2";
+  version = "3.1.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2954d53656d9ec84f2f6c077e91a1de534e05647f20d327757283bbb5a857770";
+    sha256 = "ab9747a72c1c6457418eb4276c79871977c13a654618e4f12e2a1f0990fbf2fc";
   };
 
   checkInputs = [ markdown docutils pygments pyyaml ];
diff --git a/nixpkgs/pkgs/development/python-modules/Nikola/default.nix b/nixpkgs/pkgs/development/python-modules/Nikola/default.nix
index ae18ce5dc319..faa17a838396 100644
--- a/nixpkgs/pkgs/development/python-modules/Nikola/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/Nikola/default.nix
@@ -30,7 +30,7 @@
 , pytestCheckHook
 , pythonOlder
 , requests
-, ruamel_yaml
+, ruamel-yaml
 , stdenv
 , toml
 , typogrify
@@ -41,12 +41,12 @@
 
 buildPythonPackage rec {
   pname = "Nikola";
-  version = "8.1.3";
+  version = "8.2.0";
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "05eac356bb4273cdd05d2dd6ad676226133496c457af91987c3f0d40e2fe57ef";
+    sha256 = "9998fedfcb932e19e3b54faeb497a49cde8b15163af764c5afe5847fef5ec1ff";
   };
 
   propagatedBuildInputs = [
@@ -75,7 +75,7 @@ buildPythonPackage rec {
     pyphen
     PyRSS2Gen
     requests
-    ruamel_yaml
+    ruamel-yaml
     toml
     typogrify
     unidecode
diff --git a/nixpkgs/pkgs/development/python-modules/ROPGadget/default.nix b/nixpkgs/pkgs/development/python-modules/ROPGadget/default.nix
deleted file mode 100644
index 6be0ed48e289..000000000000
--- a/nixpkgs/pkgs/development/python-modules/ROPGadget/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi
-, capstone}:
-
-buildPythonPackage rec {
-  pname = "ROPGadget";
-  version = "6.6";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "dc61186e0114ec67ec7ce374df8fd2ddc2a7cba129a1242338e900a7483fba22";
-  };
-
-  propagatedBuildInputs = [ capstone ];
-
-  meta = with lib; {
-    description = "Tool to search for gadgets in binaries to facilitate ROP exploitation";
-    homepage = "http://shell-storm.org/project/ROPgadget/";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ bennofs ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/absl-py/default.nix b/nixpkgs/pkgs/development/python-modules/absl-py/default.nix
index 8ad21f54bbd1..30a0e68dea0c 100644
--- a/nixpkgs/pkgs/development/python-modules/absl-py/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/absl-py/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "absl-py";
-  version = "0.13.0";
+  version = "0.15.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6953272383486044699fd0e9f00aad167a27e08ce19aae66c6c4b10e7e767793";
+    sha256 = "72d782fbeafba66ba3e525d46bccac949b9a174dbf66233e50ece09ee688dc81";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/accupy/default.nix b/nixpkgs/pkgs/development/python-modules/accupy/default.nix
index 67aba7342148..fff517c84fbe 100644
--- a/nixpkgs/pkgs/development/python-modules/accupy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/accupy/default.nix
@@ -1,6 +1,6 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , pythonOlder
 , mpmath
 , numpy
@@ -11,17 +11,19 @@
 , pytestCheckHook
 , matplotlib
 , dufte
-, isPy27
+, perfplot
 }:
 
 buildPythonPackage rec {
   pname = "accupy";
-  version = "0.3.4";
-  disabled = isPy27;
+  version = "0.3.6";
+  disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "36506aca53154528997ac22aee6292c83da0f4850bb375c149512b5284bd4948";
+  src = fetchFromGitHub {
+    owner = "nschloe";
+    repo = pname;
+    rev = version;
+    sha256 = "0sxkwpp2xy2jgakhdxr4nh1cspqv8l89kz6s832h05pbpyc0n767";
   };
 
   nativeBuildInputs = [
@@ -39,6 +41,7 @@ buildPythonPackage rec {
   ] ++ lib.optional (pythonOlder "3.8") importlib-metadata;
 
   checkInputs = [
+    perfplot
     pytestCheckHook
     matplotlib
     dufte
diff --git a/nixpkgs/pkgs/development/python-modules/actdiag/default.nix b/nixpkgs/pkgs/development/python-modules/actdiag/default.nix
index 92917f6ea954..dd0a1c20cc76 100644
--- a/nixpkgs/pkgs/development/python-modules/actdiag/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/actdiag/default.nix
@@ -1,18 +1,44 @@
-{ lib, buildPythonPackage, fetchPypi
-, nose, docutils, blockdiag, reportlab }:
+{ lib
+, blockdiag
+, buildPythonPackage
+, fetchFromGitHub
+, nose
+, pytestCheckHook
+, pythonOlder
+, setuptools
+}:
 
 buildPythonPackage rec {
   pname = "actdiag";
-  version = "2.0.0";
+  version = "3.0.0";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0g51v9dmdq18z33v332f1f0cmb3hqgaga5minj0mc2sglark1s7h";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "blockdiag";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-WmprkHOgvlsOIg8H77P7fzEqxGnj6xaL7Df7urRkg3o=";
   };
 
-  propagatedBuildInputs = [ blockdiag docutils ];
+  propagatedBuildInputs = [
+    blockdiag
+    setuptools
+  ];
+
+  checkInputs = [
+    nose
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "src/actdiag/tests/"
+  ];
 
-  checkInputs = [ nose reportlab ];
+  pythonImportsCheck = [
+    "actdiag"
+  ];
 
   meta = with lib; {
     description = "Generate activity-diagram image from spec-text file (similar to Graphviz)";
diff --git a/nixpkgs/pkgs/development/python-modules/adafruit-platformdetect/default.nix b/nixpkgs/pkgs/development/python-modules/adafruit-platformdetect/default.nix
index 1d25bcae10ef..9e32e903e82f 100644
--- a/nixpkgs/pkgs/development/python-modules/adafruit-platformdetect/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/adafruit-platformdetect/default.nix
@@ -6,19 +6,25 @@
 
 buildPythonPackage rec {
   pname = "adafruit-platformdetect";
-  version = "3.16.0";
+  version = "3.18.0";
+  format = "setuptools";
 
   src = fetchPypi {
     pname = "Adafruit-PlatformDetect";
     inherit version;
-    sha256 = "sha256-/60f++CemVbeUwRSzQ5dZpoQE4btRiRhnVHHDPIn3Xc=";
+    sha256 = "593f3719580b31b3dffab0817414a3aa548ed609659ad216ceb8cf31cc51ec9b";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
+  nativeBuildInputs = [
+    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 b555188b4b5c..d3826013c8ee 100644
--- a/nixpkgs/pkgs/development/python-modules/adal/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/adal/default.nix
@@ -16,6 +16,6 @@ buildPythonPackage rec {
     description = "Library to make it easy for python application to authenticate to Azure Active Directory (AAD) in order to access AAD protected web resources";
     homepage = "https://github.com/AzureAD/azure-activedirectory-library-for-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ phreedom ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/adax/default.nix b/nixpkgs/pkgs/development/python-modules/adax/default.nix
index 867b08e28a3d..c7b0dcb45b31 100644
--- a/nixpkgs/pkgs/development/python-modules/adax/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/adax/default.nix
@@ -8,14 +8,16 @@
 
 buildPythonPackage rec {
   pname = "adax";
-  version = "0.1.1";
+  version = "0.2.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "Danielhiversen";
     repo = "pyadax";
     rev = version;
-    sha256 = "sha256-ekpI5GTLbKjlbWH9GSmpp/3URurc7UN+agxMfyGxrVA=";
+    sha256 = "sha256-EMSX2acklwWOYiEeLHYG5mwdiGnWAUo5dGMiHCmZrko=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/adb-enhanced/default.nix b/nixpkgs/pkgs/development/python-modules/adb-enhanced/default.nix
index 62922efa530c..c38851160c22 100644
--- a/nixpkgs/pkgs/development/python-modules/adb-enhanced/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/adb-enhanced/default.nix
@@ -1,8 +1,15 @@
-{ lib, jdk11, fetchFromGitHub, buildPythonPackage, docopt, psutil, pythonOlder }:
+{ lib
+, buildPythonPackage
+, docopt
+, fetchFromGitHub
+, jdk11
+, psutil
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "adb-enhanced";
-  version = "2.5.11";
+  version = "2.5.12";
 
   disabled = pythonOlder "3.4";
 
@@ -10,20 +17,25 @@ buildPythonPackage rec {
     owner = "ashishb";
     repo = pname;
     rev = version;
-    sha256 = "sha256-jb5O7Qxk2xAX5sax6nqywcGBJao5Xfff9s1yvdfvDCs=";
+    sha256 = "sha256-OZSLk5qXX6rEclo6JC8o/7Mz0Y2sJqUsLhnrVK4gkVI=";
   };
 
+  propagatedBuildInputs = [
+    psutil
+    docopt
+  ];
+
   postPatch = ''
     substituteInPlace adbe/adb_enhanced.py \
       --replace "cmd = 'java" "cmd = '${jdk11}/bin/java"
   '';
 
-  propagatedBuildInputs = [ psutil docopt ];
-
-  # Disable tests because they require a dedicated android emulator
+  # Disable tests because they require a dedicated Android emulator
   doCheck = false;
 
-  pythonImportsCheck = [ "adbe" ];
+  pythonImportsCheck = [
+    "adbe"
+  ];
 
   meta = with lib; {
     description = "Tool for Android testing and development";
diff --git a/nixpkgs/pkgs/development/python-modules/adb-shell/default.nix b/nixpkgs/pkgs/development/python-modules/adb-shell/default.nix
index 9094b1c780cf..bc71e3721288 100644
--- a/nixpkgs/pkgs/development/python-modules/adb-shell/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/adb-shell/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "adb-shell";
-  version = "0.4.1";
+  version = "0.4.2";
 
   disabled = !isPy3k;
 
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "JeffLIrion";
     repo = "adb_shell";
     rev = "v${version}";
-    sha256 = "sha256-E7sX+N6d5Otwp1AbdPCnQJ2YT/k89+6kMJDLt8U2Dsg=";
+    sha256 = "sha256-8tclSjmLlTAIeq6t7YPGtJwvSwtlzQ7sRAQatcQRzeY=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/adblock/default.nix b/nixpkgs/pkgs/development/python-modules/adblock/default.nix
index 2763684c0d4a..941beb544731 100644
--- a/nixpkgs/pkgs/development/python-modules/adblock/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/adblock/default.nix
@@ -1,12 +1,12 @@
-{ stdenv
-, lib
+{ lib
+, stdenv
 , fetchFromGitHub
 , buildPythonPackage
 , rustPlatform
 , pkg-config
 , openssl
 , publicsuffix-list
-, isPy27
+, pythonOlder
 , libiconv
 , CoreFoundation
 , Security
@@ -16,34 +16,46 @@
 
 buildPythonPackage rec {
   pname = "adblock";
-  version = "0.5.0";
-  disabled = isPy27;
+  version = "0.5.1";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.6";
 
   # Pypi only has binary releases
   src = fetchFromGitHub {
     owner = "ArniDagur";
     repo = "python-adblock";
     rev = version;
-    sha256 = "sha256-JjmMfL24778T6LCuElXsD7cJxQ+RkqbNEnEqwoN24WE=";
+    sha256 = "sha256-f6PmEHVahQv8t+WOkE8DO2emivHG2t14hUSIf/l8omY=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-w+/W4T3ukRHNpCPjhlHZLPn6sgCpz4QHVD8VW+Rw5BI=";
+    hash = "sha256-x0mcykHWhheD2ycELcfR1ZQ/6WfFQzY+L/LmMipP4Rc=";
   };
 
-  format = "pyproject";
-
-  nativeBuildInputs = [ pkg-config ]
-    ++ (with rustPlatform; [ cargoSetupHook maturinBuildHook ]);
+  nativeBuildInputs = [
+    pkg-config
+  ] ++ (with rustPlatform; [
+    cargoSetupHook
+    maturinBuildHook
+  ]);
 
-  buildInputs = [ openssl ]
-    ++ lib.optionals stdenv.isDarwin [ libiconv CoreFoundation Security ];
+  buildInputs = [
+    openssl
+  ] ++ lib.optionals stdenv.isDarwin [
+    libiconv
+    CoreFoundation
+    Security
+  ];
 
   PSL_PATH = "${publicsuffix-list}/share/publicsuffix/public_suffix_list.dat";
 
-  checkInputs = [ pytestCheckHook toml ];
+  checkInputs = [
+    pytestCheckHook
+    toml
+  ];
 
   preCheck = ''
     # import from $out instead
@@ -55,12 +67,15 @@ buildPythonPackage rec {
     "tests/test_typestubs.py"
   ];
 
-  pythonImportsCheck = [ "adblock" "adblock.adblock" ];
+  pythonImportsCheck = [
+    "adblock"
+    "adblock.adblock"
+  ];
 
   meta = with lib; {
-    description = "Python wrapper for Brave's adblocking library, which is written in Rust";
+    description = "Python wrapper for Brave's adblocking library";
     homepage = "https://github.com/ArniDagur/python-adblock/";
     maintainers = with maintainers; [ petabyteboy dotlambda ];
-    license = with licenses; [ asl20 mit ];
+    license = with licenses; [ asl20 /* or */ mit ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/adjusttext/default.nix b/nixpkgs/pkgs/development/python-modules/adjusttext/default.nix
index 82613ffa52aa..9685f5c9969d 100644
--- a/nixpkgs/pkgs/development/python-modules/adjusttext/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/adjusttext/default.nix
@@ -1,13 +1,15 @@
-{ buildPythonPackage
-, numpy
-, matplotlib
+{ lib
+, buildPythonPackage
 , fetchFromGitHub
-, lib
+, matplotlib
+, numpy
+, packaging
 }:
 
 buildPythonPackage rec {
   pname = "adjusttext";
   version = "0.7.3";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "Phlya";
@@ -16,12 +18,21 @@ buildPythonPackage rec {
     sha256 = "02apaznnnmwmrn342f22dj5dldn56gdl9v5qix07ah6kgp9503yw";
   };
 
-  propagatedBuildInputs = [ matplotlib numpy ];
+  nativeBuildInputs = [
+    packaging
+  ];
+
+  propagatedBuildInputs = [
+    matplotlib
+    numpy
+  ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "adjustText" ];
+  pythonImportsCheck = [
+    "adjustText"
+  ];
 
   meta = with lib; {
     description = "Iteratively adjust text position in matplotlib plots to minimize overlaps";
diff --git a/nixpkgs/pkgs/development/python-modules/aenum/default.nix b/nixpkgs/pkgs/development/python-modules/aenum/default.nix
index 35ccf68808c3..c63b3b4ffdf8 100644
--- a/nixpkgs/pkgs/development/python-modules/aenum/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aenum/default.nix
@@ -8,16 +8,17 @@
 
 buildPythonPackage rec {
   pname = "aenum";
-  version = "3.1.0";
+  version = "3.1.5";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-h/Dp70+ChXirBq8w5NeUQEO/Ts0/S3vRy+N+IXPN6Uo=";
+    sha256 = "sha256-LrrYWQtqAYPA2Yk1I7RY7c6YeuRTMznFrBhc+sMtrxo=";
   };
 
   checkInputs = [
     pyparsing
-  ] ;
+  ];
 
   # py2 likes to reorder tests
   doCheck = isPy3k;
@@ -28,12 +29,14 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [ "aenum" ];
+  pythonImportsCheck = [
+    "aenum"
+  ];
 
   meta = with lib; {
     description = "Advanced Enumerations (compatible with Python's stdlib Enum), NamedTuples, and NamedConstants";
-    maintainers = with maintainers; [ vrthra ];
-    license = licenses.bsd3;
     homepage = "https://github.com/ethanfurman/aenum";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ vrthra ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/afdko/default.nix b/nixpkgs/pkgs/development/python-modules/afdko/default.nix
index 9a4dbbab3745..d0de050c86f9 100644
--- a/nixpkgs/pkgs/development/python-modules/afdko/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/afdko/default.nix
@@ -1,38 +1,48 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi, fetchpatch, pythonOlder, python
+{ lib, stdenv, buildPythonPackage, fetchPypi, pythonOlder
 , fonttools, defcon, lxml, fs, unicodedata2, zopfli, brotlipy, fontpens
 , brotli, fontmath, mutatormath, booleanoperations
 , ufoprocessor, ufonormalizer, psautohint, tqdm
-, setuptools-scm
+, setuptools-scm, scikit-build
+, cmake
+, antlr4_9
 , pytestCheckHook
+# Enables some expensive tests, useful for verifying an update
+, runAllTests ? false
+, afdko
 }:
 
 buildPythonPackage rec {
   pname = "afdko";
-  version = "3.5.1";
+  version = "3.7.1";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1qg7dgl81yq0sp50pkhgvmf8az1svx20zmpkfa68ka9d0ssh1wjw";
+    sha256 = "05hj2mw3ppfjaig5zdk5db9vfrbbq5gmv5rzggmvvrj0yyfpr0pd";
   };
 
+  format = "pyproject";
+
+  nativeBuildInputs = [
+    setuptools-scm
+    scikit-build
+    cmake
+  ];
+
+  buildInputs = [
+    antlr4_9.runtime.cpp
+  ];
+
   patches = [
-    # Skip date-dependent test. See
-    # https://github.com/adobe-type-tools/afdko/pull/1232
-    # https://github.com/NixOS/nixpkgs/pull/98158#issuecomment-704321117
-    (fetchpatch {
-      url = "https://github.com/adobe-type-tools/afdko/commit/2c36ad10f9d964759f643e8ed7b0972a27aa26bd.patch";
-      sha256 = "0p6a485mmzrbfldfbhgfghsypfiad3cabcw7qlw2rh993ivpnibf";
-    })
-    # fix tests for fonttools 4.21.1
-    (fetchpatch {
-      url = "https://github.com/adobe-type-tools/afdko/commit/0919e7454a0a05a1b141c23bf8134c67e6b688fc.patch";
-      sha256 = "0glly85swyl1kcc0mi8i0w4bm148bb001jz1winz5drfrw3a63jp";
-    })
+    # Don't try to install cmake and ninja using pip
+    ./no-pypi-build-tools.patch
+    # Use antlr4 runtime from nixpkgs and link it dynamically
+    ./use-dynamic-system-antlr4-runtime.patch
   ];
 
-  nativeBuildInputs = [ setuptools-scm ];
+  # setup.py will always (re-)execute cmake in buildPhase
+  dontConfigure = true;
 
   propagatedBuildInputs = [
     booleanoperations
@@ -53,13 +63,15 @@ buildPythonPackage rec {
     tqdm
   ];
 
-  # tests are broken on non x86_64
-  # https://github.com/adobe-type-tools/afdko/issues/1163
-  # https://github.com/adobe-type-tools/afdko/issues/1216
-  doCheck = stdenv.isx86_64;
   checkInputs = [ pytestCheckHook ];
-  preCheck = "export PATH=$PATH:$out/bin";
-  disabledTests = [
+  preCheck = ''
+    export PATH=$PATH:$out/bin
+
+    # Update tests to match ufinormalizer-0.6.1 expectations:
+    #   https://github.com/adobe-type-tools/afdko/issues/1418
+    find tests -name layerinfo.plist -delete
+  '';
+  disabledTests = lib.optionals (!runAllTests) [
     # Disable slow tests, reduces test time ~25 %
     "test_report"
     "test_post_overflow"
@@ -68,8 +80,16 @@ buildPythonPackage rec {
     "test_filename_without_dir"
     "test_overwrite"
     "test_options"
+  ] ++ lib.optionals stdenv.hostPlatform.isAarch64 [
+    # aarch64-only (?) failure, unknown reason so far
+    # https://github.com/adobe-type-tools/afdko/issues/1425
+    "test_spec"
   ];
 
+  passthru.tests = {
+    fullTestsuite = afdko.override { runAllTests = true; };
+  };
+
   meta = with lib; {
     description = "Adobe Font Development Kit for OpenType";
     homepage = "https://adobe-type-tools.github.io/afdko/";
diff --git a/nixpkgs/pkgs/development/python-modules/afdko/no-pypi-build-tools.patch b/nixpkgs/pkgs/development/python-modules/afdko/no-pypi-build-tools.patch
new file mode 100644
index 000000000000..4acc351e7bd7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/afdko/no-pypi-build-tools.patch
@@ -0,0 +1,24 @@
+commit 72b0ab672d1080049431eeee07ae6d2556ae9e4a
+Author: sternenseemann <sternenseemann@systemli.org>
+Date:   Tue Oct 5 18:17:20 2021 +0200
+
+    Don't use pypi distributions of build tools
+    
+    We want to use regular cmake and ninja and not the pypi projects which
+    somehow wrap and vendor a version of the proper tool.
+
+diff --git a/setup.py b/setup.py
+index 50deb781..81417971 100644
+--- a/setup.py
++++ b/setup.py
+@@ -196,9 +196,7 @@ def main():
+           setup_requires=[
+               'wheel',
+               'setuptools_scm',
+-              'scikit-build',
+-              'cmake',
+-              'ninja'
++              'scikit-build'
+           ],
+           tests_require=[
+               'pytest',
diff --git a/nixpkgs/pkgs/development/python-modules/afdko/use-dynamic-system-antlr4-runtime.patch b/nixpkgs/pkgs/development/python-modules/afdko/use-dynamic-system-antlr4-runtime.patch
new file mode 100644
index 000000000000..25e399e78d9b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/afdko/use-dynamic-system-antlr4-runtime.patch
@@ -0,0 +1,43 @@
+commit 105daa26f09034af58eb13ac7c5c4ff5420c1724
+Author: sternenseemann <sternenseemann@systemli.org>
+Date:   Tue Oct 5 18:16:10 2021 +0200
+
+    Link against system antlr4 runtime, dynamically
+    
+    Instead of cloning a antlr4 version from git, use the system one. Also
+    don't link it statically, but dynamically by default (the library is
+    called antlr4-runtime, not antlr4_static).
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index d7f86fb6..c43c4456 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -36,13 +36,13 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
+ # https://www.antlr.org/download/antlr4-cpp-runtime-4.9.2-source.zip
+ # set(ANTLR4_ZIP_REPOSITORY "/path_to_antlr4_archive/a4.zip")
+ 
+-add_definitions(-DANTLR4CPP_STATIC)
+ set(ANTLR4_WITH_STATIC_CRT OFF)
+ # Use slightly more recent commit than 4.9.2 to deal with utfcpp test
+ # compilation problems
+ # set(ANTLR4_TAG tags/4.9.2)
+ set(ANTLR4_TAG 916f03366edf15bf8b50010b11d479c189bf9f96)
+-include(ExternalAntlr4Cpp)
++find_path(ANTLR4_HEADER antlr4-runtime.h PATH_SUFFIXES antlr4-runtime)
++set(ANTLR4_INCLUDE_DIRS ${ANTLR4_HEADER})
+ 
+ # sanitizer support
+ # work around https://github.com/pypa/setuptools/issues/1928 with environment
+diff --git a/c/makeotf/lib/hotconv/CMakeLists.txt b/c/makeotf/lib/hotconv/CMakeLists.txt
+index 82257bf2..02eb2e30 100644
+--- a/c/makeotf/lib/hotconv/CMakeLists.txt
++++ b/c/makeotf/lib/hotconv/CMakeLists.txt
+@@ -69,7 +69,7 @@ add_library(hotconv STATIC
+ 
+ set_property(TARGET hotconv PROPERTY C_STANDARD 99)
+ target_include_directories(hotconv PRIVATE AFTER $<$<COMPILE_LANGUAGE:CXX>:${ANTLR4_INCLUDE_DIRS}>)
+-target_link_libraries(hotconv PUBLIC antlr4_static)
++target_link_libraries(hotconv PUBLIC antlr4-runtime)
+ 
+ if ( CMAKE_COMPILER_IS_GNUCC )
+     target_compile_options(hotconv PRIVATE -Wall -Wno-attributes)
diff --git a/nixpkgs/pkgs/development/python-modules/affinity/default.nix b/nixpkgs/pkgs/development/python-modules/affinity/default.nix
deleted file mode 100644
index c6eb9543024b..000000000000
--- a/nixpkgs/pkgs/development/python-modules/affinity/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k }:
-
-buildPythonPackage rec {
-  pname = "affinity";
-  version = "0.1.0";
-
-  # syntax error
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1i6j7kszvnzh5vh9k48cqwx2kzf73a6abgv9s6bf0j2zmfjl2wb6";
-  };
-
-  meta = {
-    description = "control processor affinity on windows and linux";
-    homepage    = "http://cheeseshop.python.org/pypi/affinity";
-    license     = with lib.licenses; [ psfl ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/afsapi/default.nix b/nixpkgs/pkgs/development/python-modules/afsapi/default.nix
new file mode 100644
index 000000000000..8ad6fa98ff6e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/afsapi/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, lxml
+, pytest-aiohttp
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "afsapi";
+  version = "0.0.4";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "zhelev";
+    repo = "python-afsapi";
+    rev = version;
+    sha256 = "aevxhHuRedDs0JxeMlYSKHDQwcIs7miRm4FCtssdE0w=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    lxml
+  ];
+
+  checkInputs = [
+    pytest-aiohttp
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "async_tests.py"
+  ];
+
+  pythonImportsCheck = [
+    "afsapi"
+  ];
+
+  meta = with lib; {
+    description = "Python implementation of the Frontier Silicon API";
+    homepage = "https://github.com/zhelev/python-afsapi";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/agate/default.nix b/nixpkgs/pkgs/development/python-modules/agate/default.nix
index a2b622dd2116..04266bc3d883 100644
--- a/nixpkgs/pkgs/development/python-modules/agate/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/agate/default.nix
@@ -1,37 +1,73 @@
-{ lib, fetchFromGitHub, buildPythonPackage, isPy3k
-, six, pytimeparse, parsedatetime, Babel
-, isodate, python-slugify, leather
-, glibcLocales, nose, lxml, cssselect, unittest2 }:
+{ lib
+, Babel
+, buildPythonPackage
+, cssselect
+, fetchFromGitHub
+, glibcLocales
+, isodate
+, leather
+, lxml
+, nose
+, parsedatetime
+, PyICU
+, python-slugify
+, pytimeparse
+, pythonOlder
+, pytz
+, six
+}:
 
 buildPythonPackage rec {
   pname = "agate";
-  version = "1.6.1";
+  version = "1.6.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
-  # PyPI tarball does not include all test files
-  # https://github.com/wireservice/agate/pull/716
   src = fetchFromGitHub {
     owner = "wireservice";
     repo = pname;
     rev = version;
-    sha256 = "077zj8xad8hsa3nqywvf7ircirmx3krxdipl8wr3dynv3l3khcpl";
+    sha256 = "sha256-tuUoLvztCYHIPJTBgw1eByM0zfaHDyc+h7SWsxutKos=";
   };
 
   propagatedBuildInputs = [
-    six pytimeparse parsedatetime Babel
-    isodate python-slugify leather
+    Babel
+    isodate
+    leather
+    parsedatetime
+    python-slugify
+    pytimeparse
+    six
+  ];
+
+  checkInputs = [
+    cssselect
+    glibcLocales
+    lxml
+    nose
+    PyICU
+    pytz
   ];
 
-  checkInputs = [ glibcLocales nose lxml cssselect ]
-    ++ lib.optional (!isPy3k) unittest2;
+  postPatch = ''
+    # No Python 2 support, thus constraint is not needed
+    substituteInPlace setup.py \
+      --replace "'parsedatetime>=2.1,!=2.5,!=2.6'," "'parsedatetime>=2.1',"
+  '';
 
   checkPhase = ''
     LC_ALL="en_US.UTF-8" nosetests tests
   '';
 
+  pythonImportsCheck = [
+    "agate"
+  ];
+
   meta = with lib; {
-    description = "A Python data analysis library that is optimized for humans instead of machines";
-    homepage    = "https://github.com/wireservice/agate";
-    license     = with licenses; [ mit ];
+    description = "Python data analysis library that is optimized for humans instead of machines";
+    homepage = "https://github.com/wireservice/agate";
+    license = with licenses; [ mit ];
     maintainers = with maintainers; [ vrthra ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/ailment/default.nix b/nixpkgs/pkgs/development/python-modules/ailment/default.nix
index 8d719f4c3357..ca74671ab81a 100644
--- a/nixpkgs/pkgs/development/python-modules/ailment/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ailment/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "ailment";
-  version = "9.0.10159";
+  version = "9.1.10913";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "angr";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-45wdHlAkuzLqwy3B7bEm2fhHD8iT5xSVmeRGOa2SNnI=";
+    sha256 = "sha256-S+ntSC9KySj2njkxEkr7p2TDsBqY0Gf+zzwomnGwSEk=";
   };
 
   propagatedBuildInputs = [ pyvex ];
diff --git a/nixpkgs/pkgs/development/python-modules/aioambient/default.nix b/nixpkgs/pkgs/development/python-modules/aioambient/default.nix
index 3e5c0c8dfe89..2396b24f6d9f 100644
--- a/nixpkgs/pkgs/development/python-modules/aioambient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioambient/default.nix
@@ -16,17 +16,24 @@
 
 buildPythonPackage rec {
   pname = "aioambient";
-  version = "1.3.0";
+  version = "2021.12.0";
   format = "pyproject";
-  disabled = pythonOlder "3.6";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "sha256-blejTXyLe3B2kNytBh+zJz0Q0xDP+Vo2SV9gc7OX6S0=";
+    sha256 = "sha256-nFCLMpkuSVPecKrtJ/z7KuyGw4Z9X79wKXmWsewbxvY=";
   };
 
+  postPatch = ''
+    # https://github.com/bachya/aioambient/pull/97
+    substituteInPlace pyproject.toml \
+      --replace 'websockets = ">=8.1,<10.0"' 'websockets = ">=8.1,<11.0"'
+  '';
+
   nativeBuildInputs = [
     poetry-core
   ];
@@ -47,9 +54,13 @@ buildPythonPackage rec {
   ];
 
   # Ignore the examples directory as the files are prefixed with test_
-  disabledTestPaths = [ "examples/" ];
+  disabledTestPaths = [
+    "examples/"
+  ];
 
-  pythonImportsCheck = [ "aioambient" ];
+  pythonImportsCheck = [
+    "aioambient"
+  ];
 
   meta = with lib; {
     description = "Python library for the Ambient Weather API";
diff --git a/nixpkgs/pkgs/development/python-modules/aioapns/default.nix b/nixpkgs/pkgs/development/python-modules/aioapns/default.nix
index b9428449d2c8..47e8de0f8d26 100644
--- a/nixpkgs/pkgs/development/python-modules/aioapns/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioapns/default.nix
@@ -30,6 +30,6 @@ buildPythonPackage rec {
     description = "An efficient APNs Client Library for Python/asyncio";
     homepage = "https://github.com/Fatal1ty/aioapns";
     license = licenses.asl20;
-    maintainers = with maintainers; [ superherointj ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/aioasuswrt/default.nix b/nixpkgs/pkgs/development/python-modules/aioasuswrt/default.nix
index a6bd79e80ef1..c2a8bded2b6b 100644
--- a/nixpkgs/pkgs/development/python-modules/aioasuswrt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioasuswrt/default.nix
@@ -9,22 +9,18 @@
 
 buildPythonPackage rec {
   pname = "aioasuswrt";
-  version = "1.3.4";
+  version = "1.4.0";
 
   src = fetchFromGitHub {
     owner = "kennedyshead";
     repo = pname;
-    rev = version;
-    sha256 = "101d76zarvilzfmcy8n3bjqzyars8hsjzr0zc80d4rngv4vhrki1";
+    rev = "V${version}";
+    sha256 = "1iv9f22v834g8wrjcynjn2azpzk8gsczv71jf7dw8aix0n04h325";
   };
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "--cov-report html" "" \
-      --replace "--cov-report term-missing" ""
-  '';
-
-  propagatedBuildInputs = [ asyncssh ];
+  propagatedBuildInputs = [
+    asyncssh
+  ];
 
   checkInputs = [
     pytest-asyncio
@@ -32,7 +28,15 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "aioasuswrt" ];
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "--cov-report html" "" \
+      --replace "--cov-report term-missing" ""
+  '';
+
+  pythonImportsCheck = [
+    "aioasuswrt"
+  ];
 
   meta = with lib; {
     description = "Python module for Asuswrt";
diff --git a/nixpkgs/pkgs/development/python-modules/aiobotocore/default.nix b/nixpkgs/pkgs/development/python-modules/aiobotocore/default.nix
index f6024c953fda..9fbbbac43ef8 100644
--- a/nixpkgs/pkgs/development/python-modules/aiobotocore/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiobotocore/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "aiobotocore";
-  version = "1.4.1";
+  version = "1.4.2";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "09f06723d1d69c6d407d9a356ca65ab42a5b7b73a45be4b1ed0ed1a6b6057a9f";
+    sha256 = "c2f4ef325aaa839e9e2a53346b4c1c203656783a4985ab36fd4c2a9ef2dc1d2b";
   };
 
   # relax version constraints: aiobotocore works with newer botocore versions
diff --git a/nixpkgs/pkgs/development/python-modules/aiobroadlink/default.nix b/nixpkgs/pkgs/development/python-modules/aiobroadlink/default.nix
new file mode 100644
index 000000000000..d921f3c08049
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiobroadlink/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, cryptography
+, fetchPypi
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "aiobroadlink";
+  version = "0.1.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-uTUtDhL9VtWZE+Y6ZJY4prmlE+Yh2UrCg5+eSyAQzMk=";
+  };
+
+  propagatedBuildInputs = [
+    cryptography
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "aiobroadlink"
+  ];
+
+  meta = with lib; {
+    description = "Python module to control various Broadlink devices";
+    homepage = "https://github.com/frawau/aiobroadlink";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiocoap/default.nix b/nixpkgs/pkgs/development/python-modules/aiocoap/default.nix
index e169b886f88e..2e8fd124fa2b 100644
--- a/nixpkgs/pkgs/development/python-modules/aiocoap/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiocoap/default.nix
@@ -8,14 +8,16 @@
 
 buildPythonPackage rec {
   pname = "aiocoap";
-  version = "0.4.1";
+  version = "0.4.3";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "chrysn";
     repo = pname;
     rev = version;
-    sha256 = "0k7ii2l3n139f8712ja6w3z73xiwlfsjgdc4k5c514ni2w6w2yjc";
+    sha256 = "sha256-fTRDx9VEXDoMKM78YYL+mBEdvhbLtHiHdo66kwRnNhA=";
   };
 
   propagatedBuildInputs = [
@@ -38,7 +40,9 @@ buildPythonPackage rec {
     "test_uri_parser"
   ];
 
-  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 f56d31b034dd..795b50d81166 100644
--- a/nixpkgs/pkgs/development/python-modules/aioconsole/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioconsole/default.nix
@@ -16,14 +16,14 @@
 # wrapped to be able to find aioconsole and any other packages.
 buildPythonPackage rec {
   pname = "aioconsole";
-  version = "0.3.2";
+  version = "0.3.3";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "vxgmichel";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0bximaalakw1dxan1lxar33l8hnmxqn0fg62hmdmprmra72z4bm8";
+    sha256 = "1hjdhj1y9xhq1i36r7g2lccsicbvgm7lzkyrxygs16dw11ah46mx";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/aiocron/default.nix b/nixpkgs/pkgs/development/python-modules/aiocron/default.nix
new file mode 100644
index 000000000000..56f3561d84f3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiocron/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+, croniter
+, tzlocal
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "aiocron";
+  version = "1.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-SFRlE/ry63kB5lpk66e2U8gBBu0A7ZyjQZw9ELZVWgE=";
+  };
+
+  propagatedBuildInputs = [
+    croniter
+    tzlocal
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    tzlocal
+  ];
+
+  postPatch = ''
+    sed -i "/--cov/d" setup.cfg
+    sed -i "/--ignore/d" setup.cfg
+  '';
+
+  postInstall = ''
+    rm -rf $out/${python.sitePackages}/tests
+  '';
+
+  pythonImportsCheck = [ "aiocron" ];
+
+  meta = with lib; {
+    description = "Crontabs for asyncio";
+    homepage = "https://github.com/gawel/aiocron/";
+    license = licenses.mit;
+    maintainers = [ maintainers.starcraft66 ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiocurrencylayer/default.nix b/nixpkgs/pkgs/development/python-modules/aiocurrencylayer/default.nix
new file mode 100644
index 000000000000..777c8905c7d5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiocurrencylayer/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, httpx
+, poetry-core
+, pytest-asyncio
+, pytest-httpx
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "aiocurrencylayer";
+  version = "1.0.2";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "home-assistant-ecosystem";
+    repo = pname;
+    rev = version;
+    sha256 = "EVqnrMatOk2I6hiCkiT5FOWvMY9LEK8LlSHqi0x9kuQ=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    httpx
+  ];
+
+  checkInputs = [
+    pytest-asyncio
+    pytest-httpx
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "aiocurrencylayer"
+  ];
+
+  meta = with lib; {
+    description = "Python API for interacting with currencylayer";
+    homepage = "https://github.com/home-assistant-ecosystem/aiocurrencylayer";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aioeafm/default.nix b/nixpkgs/pkgs/development/python-modules/aioeafm/default.nix
index be91e0e95575..d8b8c11cef99 100644
--- a/nixpkgs/pkgs/development/python-modules/aioeafm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioeafm/default.nix
@@ -1,6 +1,5 @@
 { lib
 , aiohttp
-, async-timeout
 , buildPythonPackage
 , fetchFromGitHub
 , poetry
diff --git a/nixpkgs/pkgs/development/python-modules/aioesphomeapi/default.nix b/nixpkgs/pkgs/development/python-modules/aioesphomeapi/default.nix
index 5b69a3326155..5023b0325233 100644
--- a/nixpkgs/pkgs/development/python-modules/aioesphomeapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioesphomeapi/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "aioesphomeapi";
-  version = "10.0.0";
+  version = "10.6.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "esphome";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-ZVexJt1CE7Q0j9QzrPFLYYSXzoWYtfw1BWwL/hnAkD0=";
+    sha256 = "1z9pybis8yi938i3cgzma4w452ik9vggyyhs3y542zpk4183d7xw";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/aiofiles/default.nix b/nixpkgs/pkgs/development/python-modules/aiofiles/default.nix
index 05027dc0170d..592f8facaebb 100644
--- a/nixpkgs/pkgs/development/python-modules/aiofiles/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiofiles/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "aiofiles";
-  version = "0.7.0";
+  version = "0.8.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "Tinche";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0vvk9j8cfdqvq8hw2qc6ajfzsy8x1afabf83mxafffq92rwknd4y";
+    sha256 = "sha256-V7F+xalFGMgTgT30Gmd9FVV3cPndI/i9cB5vEuW/KVc=";
   };
 
   nativeBuildInputs = [
@@ -33,9 +33,17 @@ buildPythonPackage rec {
 
   disabledTests = lib.optionals stdenv.isDarwin [
     "test_sendfile_file"
+
+    # require loopback networking:
+    "test_sendfile_socket"
+    "test_serve_small_bin_file_sync"
+    "test_serve_small_bin_file"
+    "test_slow_file"
   ];
 
-  pythonImportsCheck = [ "aiofiles" ];
+  pythonImportsCheck = [
+    "aiofiles"
+  ];
 
   meta = {
     description = "File support for asyncio";
diff --git a/nixpkgs/pkgs/development/python-modules/aioflo/default.nix b/nixpkgs/pkgs/development/python-modules/aioflo/default.nix
index 8fe61282ab86..70b41a0af310 100644
--- a/nixpkgs/pkgs/development/python-modules/aioflo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioflo/default.nix
@@ -6,35 +6,42 @@
 , poetry-core
 , pytest-aiohttp
 , pytest-asyncio
-, pytest-cov
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "aioflo";
-  version = "0.4.3";
+  version = "2021.11.0";
   format = "pyproject";
 
+  disabled = pythonOlder "3.6";
+
   src = fetchFromGitHub {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "sha256-Dap3yjFIS+k/LLNg+vmYmiFQCOEPNp27p0GCMpn/edA=";
+    sha256 = "sha256-7NrOoc1gi8YzZaKvCnHnzAKPlMnMhqxjdyZGN5H/8TQ=";
   };
 
-  nativeBuildInputs = [ poetry-core ];
+  nativeBuildInputs = [
+    poetry-core
+  ];
 
-  propagatedBuildInputs = [ aiohttp ];
+  propagatedBuildInputs = [
+    aiohttp
+  ];
 
   checkInputs = [
     aresponses
     pytest-aiohttp
     pytest-asyncio
-    pytest-cov
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "aioflo" ];
+  pythonImportsCheck = [
+    "aioflo"
+  ];
 
   meta = with lib; {
     description = "Python library for Flo by Moen Smart Water Detectors";
diff --git a/nixpkgs/pkgs/development/python-modules/aioftp/default.nix b/nixpkgs/pkgs/development/python-modules/aioftp/default.nix
index a610dba76614..e9988249e270 100644
--- a/nixpkgs/pkgs/development/python-modules/aioftp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioftp/default.nix
@@ -1,43 +1,47 @@
 { lib
+, async-timeout
 , buildPythonPackage
 , fetchPypi
-, isPy27
-, pytest
 , pytest-asyncio
 , pytest-cov
+, pytestCheckHook
+, pythonOlder
+, siosocks
 , trustme
-, async-timeout
 }:
 
 buildPythonPackage rec {
   pname = "aioftp";
-  version = "0.18.1";
-  disabled = isPy27;
+  version = "0.20.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b5a412c748722dd679c4c2e30dd40d70a7c8879636f6eb4489fdbca72965b125";
+    sha256 = "sha256-N8qiKsWPaFT/t5p1eSHS0BydoXv4AL6y8gP4z4P9fsE=";
   };
 
+  propagatedBuildInputs = [
+    siosocks
+  ];
+
   checkInputs = [
-    pytest
+    async-timeout
     pytest-asyncio
     pytest-cov
+    pytestCheckHook
     trustme
-    async-timeout
   ];
 
-  doCheck = false; # requires siosocks, not packaged yet
-  checkPhase = ''
-    pytest
-  '';
-
-  pythonImportsCheck = [ "aioftp" ];
+  pythonImportsCheck = [
+    "aioftp"
+  ];
 
   meta = with lib; {
-    description = "Ftp client/server for asyncio";
+    description = "Python FTP client/server for asyncio";
     homepage = "https://github.com/aio-libs/aioftp";
     license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/aiogithubapi/default.nix b/nixpkgs/pkgs/development/python-modules/aiogithubapi/default.nix
index 7ec85d90f7d3..9249df059bf0 100644
--- a/nixpkgs/pkgs/development/python-modules/aiogithubapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiogithubapi/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "aiogithubapi";
-  version = "21.8.1";
+  version = "21.11.0";
 
   disabled = pythonOlder "3.8";
 
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "ludeeus";
     repo = pname;
     rev = version;
-    sha256 = "1l59bb956gymi2dkgg88mr0nc80wqvw2dv69qf4f1xr3jxy03qa2";
+    sha256 = "sha256-sxWgLd+oQv9qNOpyAYXsBcqGbo/ugNXzGF5nbdcNLFw=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/aioguardian/default.nix b/nixpkgs/pkgs/development/python-modules/aioguardian/default.nix
index 71e1fb43dd5d..439035229a76 100644
--- a/nixpkgs/pkgs/development/python-modules/aioguardian/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioguardian/default.nix
@@ -4,24 +4,24 @@
 , asyncio-dgram
 , asynctest
 , buildPythonPackage
+, docutils
 , fetchFromGitHub
 , poetry-core
 , pytest-aiohttp
 , pytest-asyncio
 , pytestCheckHook
-, pythonAtLeast
 , voluptuous
 }:
 
 buildPythonPackage rec {
   pname = "aioguardian";
-  version = "1.0.8";
+  version = "2021.11.0";
 
   src = fetchFromGitHub {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "0nqsacg0yrsqr6qax4486ffk8r88ra5yixxd6r88jwscm2bmjg3p";
+    sha256 = "sha256-jQIRACm0d0a5mQqlwxSTgLZfJFvGLWuJTb/MacppmS4=";
   };
 
   format = "pyproject";
@@ -34,6 +34,7 @@ buildPythonPackage rec {
     aiohttp
     async-timeout
     asyncio-dgram
+    docutils
     voluptuous
   ];
 
@@ -45,9 +46,18 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTestPaths = [ "examples/" ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'docutils = "<0.18"' 'docutils = "*"'
+  '';
 
-  pythonImportsCheck = [ "aioguardian" ];
+  disabledTestPaths = [
+    "examples/"
+  ];
+
+  pythonImportsCheck = [
+    "aioguardian"
+  ];
 
   meta = with lib; {
     description = " Python library to interact with Elexa Guardian devices";
diff --git a/nixpkgs/pkgs/development/python-modules/aiohomekit/default.nix b/nixpkgs/pkgs/development/python-modules/aiohomekit/default.nix
index 562a39a96f08..1caf183fef80 100644
--- a/nixpkgs/pkgs/development/python-modules/aiohomekit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiohomekit/default.nix
@@ -6,20 +6,22 @@
 , poetry-core
 , pytest-aiohttp
 , pytestCheckHook
-, pythonAtLeast
+, pythonOlder
 , zeroconf
 }:
 
 buildPythonPackage rec {
   pname = "aiohomekit";
-  version = "0.6.3";
+  version = "0.6.4";
   format = "pyproject";
 
+  disabled = pythonOlder "3.7";
+
   src = fetchFromGitHub {
     owner = "Jc2k";
     repo = pname;
     rev = version;
-    sha256 = "sha256-XBinbhYUB9BuQxxmWfZUw276uNam4DgBpiCAjT7KDlg=";
+    sha256 = "sha256-+W1nsJsiVL4hjtNUyKOsQNyX0Bki/C1FvmoD2OCwqeM=";
   };
 
   nativeBuildInputs = [
@@ -42,7 +44,9 @@ buildPythonPackage rec {
     "tests/test_ip_pairing.py"
   ];
 
-  pythonImportsCheck = [ "aiohomekit" ];
+  pythonImportsCheck = [
+    "aiohomekit"
+  ];
 
   meta = with lib; {
     description = "Python module that implements the HomeKit protocol";
diff --git a/nixpkgs/pkgs/development/python-modules/aiohttp-apispec/unstable.nix b/nixpkgs/pkgs/development/python-modules/aiohttp-apispec/unstable.nix
new file mode 100644
index 000000000000..73a28de7b40d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiohttp-apispec/unstable.nix
@@ -0,0 +1,37 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder
+, aiohttp, webargs, fetchFromGitHub, callPackage
+}:
+
+let
+  apispec3 = callPackage ../apispec/3.nix {};
+  jinja2 = callPackage ../jinja2/2.nix {};
+in
+buildPythonPackage rec {
+  pname = "aiohttp-apispec";
+  version = "unstable-2021-21-08";
+
+  # unstable so we can use latest webargs
+  src = fetchFromGitHub {
+    owner = "maximdanilchenko";
+    repo = "aiohttp-apispec";
+    rev = "cfa19646394480dda289f6b7af19b7d50f245d81";
+    sha256 = "uEgDRAlMjTa4rvdE3fkORCHIlCLzxPJJ2/m4ZRU3eIQ=";
+    fetchSubmodules = false;
+  };
+
+  propagatedBuildInputs = [ aiohttp webargs apispec3 jinja2 ];
+
+  pythonImportsCheck = [
+    "aiohttp_apispec"
+  ];
+
+  # Requires pytest-sanic, currently broken in nixpkgs
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Build and document REST APIs with aiohttp and apispec";
+    homepage = "https://github.com/maximdanilchenko/aiohttp-apispec/";
+    license = licenses.mit;
+    maintainers = [ maintainers.viric ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiohttp-remotes/default.nix b/nixpkgs/pkgs/development/python-modules/aiohttp-remotes/default.nix
index f3abbddfd957..1867567178e4 100644
--- a/nixpkgs/pkgs/development/python-modules/aiohttp-remotes/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiohttp-remotes/default.nix
@@ -1,27 +1,50 @@
-{ lib, fetchpatch, buildPythonPackage, fetchPypi
-, aiohttp, pytest, pytest-cov, pytest-aiohttp
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchPypi
+, pytest-aiohttp
+, pytestCheckHook
+, pythonOlder
+, typing-extensions
 }:
 
 buildPythonPackage rec {
-  pname = "aiohttp_remotes";
-  version = "1.0.0";
+  pname = "aiohttp-remotes";
+  version = "1.1.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "1vv2ancxsaxlls9sinigjnrqyx95n7cphq37m8nwifkhvs0idv6a";
+    pname = "aiohttp_remotes";
+    inherit version;
+    sha256 = "e44f2c5fd5fc3305477c89bb25f14570589100cc58c48b36745d4239839d3174";
   };
 
-  propagatedBuildInputs = [ aiohttp ];
+  propagatedBuildInputs = [
+    aiohttp
+  ] ++ lib.optionals (pythonOlder "3.7") [
+    typing-extensions
+  ];
+
+  checkInputs = [
+    pytest-aiohttp
+    pytestCheckHook
+  ];
 
-  checkInputs = [ pytest pytest-cov pytest-aiohttp ];
-  checkPhase = ''
-    python -m pytest
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace " --no-cov-on-fail --cov-branch --cov=aiohttp_remotes --cov-report=term --cov-report=html" ""
   '';
 
+  pythonImportsCheck = [
+    "aiohttp_remotes"
+  ];
+
   meta = with lib; {
-    homepage = "https://github.com/wikibusiness/aiohttp-remotes";
     description = "A set of useful tools for aiohttp.web server";
+    homepage = "https://github.com/wikibusiness/aiohttp-remotes";
     license = licenses.mit;
-    maintainers = [ maintainers.qyliss ];
+    maintainers = with maintainers; [ qyliss ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/aiohttp-socks/default.nix b/nixpkgs/pkgs/development/python-modules/aiohttp-socks/default.nix
index 4e75f56a8dab..e782eed49b7f 100644
--- a/nixpkgs/pkgs/development/python-modules/aiohttp-socks/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiohttp-socks/default.nix
@@ -2,18 +2,19 @@
 
 buildPythonPackage rec {
   pname = "aiohttp-socks";
-  version = "0.6.0";
+  version = "0.7.1";
 
   src = fetchPypi {
     inherit version;
     pname = "aiohttp_socks";
-    sha256 = "04w010bvi719ifpc3sshav95k10hf9nq8czn9yglkj206yxcypdr";
+    sha256 = "sha256-IhXKxIke8/oUt9YA7TQ+0PCmcMI7EOQUKqhis9sgNBo=";
   };
 
   propagatedBuildInputs = [ aiohttp attrs python-socks ];
 
   # Checks needs internet access
   doCheck = false;
+  pythonImportsCheck = [ "aiohttp_socks" ];
 
   disabled = pythonOlder "3.5.3";
 
diff --git a/nixpkgs/pkgs/development/python-modules/aiohttp-wsgi/default.nix b/nixpkgs/pkgs/development/python-modules/aiohttp-wsgi/default.nix
index 18364bdce691..1e4763453209 100644
--- a/nixpkgs/pkgs/development/python-modules/aiohttp-wsgi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiohttp-wsgi/default.nix
@@ -26,6 +26,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  disabledTests = [
+    # makes http request to another server
+    # https://github.com/etianen/aiohttp-wsgi/issues/32
+    "testEnviron"
+  ];
+
   pythonImportsCheck = [ "aiohttp_wsgi" ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/aiohttp/default.nix b/nixpkgs/pkgs/development/python-modules/aiohttp/default.nix
index d6203c1ebeb2..f96fa8820384 100644
--- a/nixpkgs/pkgs/development/python-modules/aiohttp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiohttp/default.nix
@@ -3,15 +3,22 @@
 , buildPythonPackage
 , fetchPypi
 , pythonOlder
-, async-timeout
+# install_requires
 , attrs
-, chardet
-, idna-ssl
+, charset-normalizer
 , multidict
-, typing-extensions
+, async-timeout
 , yarl
+, frozenlist
+, aiosignal
+, aiodns
+, brotli
+, cchardet
+, asynctest
+, typing-extensions
+, idna-ssl
+# tests_require
 , async_generator
-, brotlipy
 , freezegun
 , gunicorn
 , pytest-mock
@@ -22,32 +29,39 @@
 
 buildPythonPackage rec {
   pname = "aiohttp";
-  version = "3.7.4.post0";
+  version = "3.8.1";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "493d3299ebe5f5a7c66b9819eacdcfbbaaf1a8e84911ddffcdc48888497afecf";
+    sha256 = "fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578";
   };
 
   postPatch = ''
-    substituteInPlace setup.cfg --replace " --cov=aiohttp" ""
+    sed -i '/--cov/d' setup.cfg
   '';
 
   propagatedBuildInputs = [
-    async-timeout
     attrs
-    chardet
+    charset-normalizer
     multidict
-    typing-extensions
+    async-timeout
     yarl
+    typing-extensions
+    frozenlist
+    aiosignal
+    aiodns
+    brotli
+    cchardet
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    asynctest
+    typing-extensions
   ] ++ lib.optionals (pythonOlder "3.7") [
     idna-ssl
   ];
 
   checkInputs = [
     async_generator
-    brotlipy
     freezegun
     gunicorn
     pytest-mock
@@ -58,7 +72,9 @@ buildPythonPackage rec {
 
   disabledTests = [
     # Disable tests that require network access
+    "test_client_session_timeout_zero"
     "test_mark_formdata_as_processed"
+    "test_requote_redirect_url_default"
   ] ++ lib.optionals stdenv.is32bit [
     "test_cookiejar"
   ] ++ lib.optionals stdenv.isDarwin [
@@ -66,6 +82,10 @@ buildPythonPackage rec {
     "test_close"
   ];
 
+  disabledTestPaths = [
+    "test_proxy_functional.py" # FIXME package proxy.py
+  ];
+
   __darwinAllowLocalNetworking = true;
 
   # aiohttp in current folder shadows installed version
diff --git a/nixpkgs/pkgs/development/python-modules/aiohue/default.nix b/nixpkgs/pkgs/development/python-modules/aiohue/default.nix
index 645563495c35..1f479311af05 100644
--- a/nixpkgs/pkgs/development/python-modules/aiohue/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiohue/default.nix
@@ -2,19 +2,21 @@
 , buildPythonPackage
 , fetchPypi
 , aiohttp
+, asyncio-throttle
 }:
 
 buildPythonPackage rec {
   pname = "aiohue";
-  version = "2.6.3";
+  version = "3.0.11";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-zpwkDKPrE5TFZQO0A1ifTQ7n+TRFpXi3jai3h5plyGM=";
+    sha256 = "sha256-McC5DX3Cti9eGpPniywNY2DvbAqHSFwhek85TJN/zn0=";
   };
 
   propagatedBuildInputs = [
     aiohttp
+    asyncio-throttle
   ];
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/aiohwenergy/default.nix b/nixpkgs/pkgs/development/python-modules/aiohwenergy/default.nix
new file mode 100644
index 000000000000..b9b2801f750d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiohwenergy/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "aiohwenergy";
+  version = "0.4.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "DCSBL";
+    repo = pname;
+    rev = version;
+    sha256 = "Rs7kD+jN/z0j4KmkitquB+cm2UcYG87YHczZR0A4axI=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "aiohwenergy"
+  ];
+
+  meta = with lib; {
+    description = "Python library to interact with the HomeWizard Energy devices API";
+    homepage = "https://github.com/DCSBL/aiohwenergy";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiojobs/default.nix b/nixpkgs/pkgs/development/python-modules/aiojobs/default.nix
index 20c068080c9c..0ae7c3e8a06c 100644
--- a/nixpkgs/pkgs/development/python-modules/aiojobs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiojobs/default.nix
@@ -1,6 +1,6 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , pythonOlder
 , aiohttp
 , pytestCheckHook
@@ -10,13 +10,16 @@
 
 buildPythonPackage rec {
   pname = "aiojobs";
-  version = "0.3.0";
+  version = "1.0.0";
   format = "flit";
-  disabled = pythonOlder "3.5";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-9mMdQtxDCPfYg6u9cNTpdvP8w1o7oejq5dSvSUCh4MM=";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "aio-libs";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "EQwD0b2B9qFVd/8thKInaio0hpPzvVIjvCN0TcARu2w=";
   };
 
   nativeBuildInputs = [
@@ -32,11 +35,13 @@ buildPythonPackage rec {
     pytest-aiohttp
   ];
 
-  pythonImportsCheck = [ "aiojobs" ];
+  pythonImportsCheck = [
+    "aiojobs"
+  ];
 
   meta = with lib; {
-    homepage = "https://github.com/aio-libs/aiojobs";
     description = "Jobs scheduler for managing background task (asyncio)";
+    homepage = "https://github.com/aio-libs/aiojobs";
     license = licenses.asl20;
     maintainers = with maintainers; [ cmcdragonkai ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/aiolookin/default.nix b/nixpkgs/pkgs/development/python-modules/aiolookin/default.nix
new file mode 100644
index 000000000000..0af203d8fb7b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiolookin/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, faker
+, fetchFromGitHub
+, pytest-aiohttp
+, pytest-mock
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "aiolookin";
+  version = "0.0.4";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "ANMalko";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-Kqys76c/9Mw3ETgF0N4rA9mz5DELwTMjAK38PPN8Ahs=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  checkInputs = [
+    faker
+    pytest-aiohttp
+    pytest-mock
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Not all tests are ready yet
+    "test_successful"
+  ];
+
+  pythonImportsCheck = [
+    "aiolookin"
+  ];
+
+  meta = with lib; {
+    description = "Python client for interacting with LOOKin devices";
+    homepage = "https://github.com/ANMalko/aiolookin";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiolyric/default.nix b/nixpkgs/pkgs/development/python-modules/aiolyric/default.nix
index 4c20e38d8cfe..44e532a6149d 100644
--- a/nixpkgs/pkgs/development/python-modules/aiolyric/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiolyric/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "aiolyric";
-  version = "1.0.7";
+  version = "1.0.8";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "timmo001";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-3UyWUsamluJclwrQD+MuUPLhNJoNU4/8w1m92OLWyrg=";
+    sha256 = "sha256-A4EkqSIQ5p4E4DPLYu9a/lmb1sFhwDqFLhjhZS6Zf5c=";
   };
 
   propagatedBuildInputs = [ aiohttp ];
diff --git a/nixpkgs/pkgs/development/python-modules/aiomusiccast/default.nix b/nixpkgs/pkgs/development/python-modules/aiomusiccast/default.nix
index 55b5d4215135..6d1116bfefa8 100644
--- a/nixpkgs/pkgs/development/python-modules/aiomusiccast/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiomusiccast/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "aiomusiccast";
-  version = "0.11.0";
+  version = "0.14.3";
 
   format = "pyproject";
 
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "vigonotion";
     repo = "aiomusiccast";
     rev = version;
-    sha256 = "sha256-58l9bmGmSRFHqiKwHtGcAu2H+JnKjsZZg+fxbLW5xBg=";
+    hash = "sha256-ELdNxeU9dajWr4VeOyuvNrSi7B+ImVJM/BlZsw3tcKE=";
   };
 
   nativeBuildInputs = [
@@ -32,7 +32,9 @@ buildPythonPackage rec {
   # upstream has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "aiomusiccast" ];
+  pythonImportsCheck = [
+    "aiomusiccast"
+  ];
 
   meta = with lib; {
     description = "Companion library for musiccast devices intended for the Home Assistant integration";
diff --git a/nixpkgs/pkgs/development/python-modules/aionanoleaf/default.nix b/nixpkgs/pkgs/development/python-modules/aionanoleaf/default.nix
index 65b5e37f431b..61b958d84486 100644
--- a/nixpkgs/pkgs/development/python-modules/aionanoleaf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aionanoleaf/default.nix
@@ -3,12 +3,12 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pythonOlder
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "aionanoleaf";
-  version = "0.0.3";
+  version = "0.1.1";
+  format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "milanmeu";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-fUVpPxaeuvuw9ZX5fc2Jc/LdBDhCRdFlghvhSmBK/z0=";
+    sha256 = "10gi8fpv3xkdjaqig84723m3j0kxgxvqwqvjxmysq2sw4cjmsvz6";
   };
 
   propagatedBuildInputs = [
@@ -26,7 +26,9 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "aionanoleaf" ];
+  pythonImportsCheck = [
+    "aionanoleaf"
+  ];
 
   meta = with lib; {
     description = "Python wrapper for the Nanoleaf API";
diff --git a/nixpkgs/pkgs/development/python-modules/aionotify/default.nix b/nixpkgs/pkgs/development/python-modules/aionotify/default.nix
index 93177733dedc..e653f4cca74e 100644
--- a/nixpkgs/pkgs/development/python-modules/aionotify/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aionotify/default.nix
@@ -27,6 +27,6 @@ buildPythonPackage rec {
     description = "Simple, asyncio-based inotify library for Python";
     license = with lib.licenses; [ bsd2 ];
     platforms = platforms.linux;
-    maintainers = with lib.maintainers; [ thiagokokada ];
+    maintainers = with lib.maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/aionotion/default.nix b/nixpkgs/pkgs/development/python-modules/aionotion/default.nix
index 459a06d57d4c..4e161ba6804b 100644
--- a/nixpkgs/pkgs/development/python-modules/aionotion/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aionotion/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "aionotion";
-  version = "3.0.2";
+  version = "2021.10.0";
   format = "pyproject";
   disabled = pythonOlder "3.6";
 
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "1328g2245h9gcrnzrbcxaxw78723d0skznrrj8k77fbijxdc4kwv";
+    sha256 = "sha256-5bu2XveDi2e6lGdI/T+0apqXzcnqdztVtaHEpp+Vkzs=";
   };
 
   nativeBuildInputs = [ poetry-core ];
diff --git a/nixpkgs/pkgs/development/python-modules/aiopg/default.nix b/nixpkgs/pkgs/development/python-modules/aiopg/default.nix
index 07e265f8fc0b..520dd5695ace 100644
--- a/nixpkgs/pkgs/development/python-modules/aiopg/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiopg/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "aiopg";
-  version = "1.3.2";
+  version = "1.3.3";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "aio-libs";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-e7USw3Bx6cpLu9PKDC+eEdPTSjriuSX2Sg+9BeRa9Ko=";
+    sha256 = "sha256-GHKsI6JATiwUg+YlGhWPBqtYl+GyXWNiDi/hzPDl2hE=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/aiopulse/default.nix b/nixpkgs/pkgs/development/python-modules/aiopulse/default.nix
index 3df005d17907..c2d4add41dac 100644
--- a/nixpkgs/pkgs/development/python-modules/aiopulse/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiopulse/default.nix
@@ -2,15 +2,19 @@
 , buildPythonPackage
 , fetchPypi
 , async-timeout
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "aiopulse";
-  version = "0.4.2";
+  version = "0.4.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0fnscm27l77c8cd7jhbn35axyalq61kksy3fcqzv21fz55lklsm0";
+    sha256 = "sha256-Wp8NUjRlO+6ASqIt3C0YJRh0EKcEukXVMp4I+TCTElo=";
   };
 
   propagatedBuildInputs = [
@@ -20,7 +24,9 @@ buildPythonPackage rec {
   # tests are not present
   doCheck = false;
 
-  pythonImportsCheck = [ "aiopulse" ];
+  pythonImportsCheck = [
+    "aiopulse"
+  ];
 
   meta = with lib; {
     description = "Python Rollease Acmeda Automate Pulse hub protocol implementation";
diff --git a/nixpkgs/pkgs/development/python-modules/aiopvapi/default.nix b/nixpkgs/pkgs/development/python-modules/aiopvapi/default.nix
index b8614d0c97d2..3aa3116b0f5e 100644
--- a/nixpkgs/pkgs/development/python-modules/aiopvapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiopvapi/default.nix
@@ -2,21 +2,24 @@
 , aiohttp
 , async-timeout
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , pytestCheckHook
 , pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "aiopvapi";
-  version = "1.6.14";
+  version = "1.6.19";
   format = "setuptools";
 
   disabled = pythonOlder "3.5";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "02bl7q166j6rb8av9n1jz11xlwhrzmbkjq70mwr86qaj63pcxrak";
+  src = fetchFromGitHub {
+    owner = "sander76";
+    repo = "aio-powerview-api";
+    # no tags on git, no sdist on pypi: https://github.com/sander76/aio-powerview-api/issues/12
+    rev = "89711e2a0cb4640eb458767d289dcfa3acafb10f";
+    sha256 = "18gbz9rcf183syvxvvhhl62af3b7463rlqxxs49w4m805hkvirdp";
   };
 
   propagatedBuildInputs = [
@@ -28,7 +31,16 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "aiopvapi" ];
+  postPatch = ''
+    # async_timeout 4.0.0 removes loop, https://github.com/sander76/aio-powerview-api/pull/13
+    # Patch doesn't apply due to different line endings
+    substituteInPlace aiopvapi/helpers/aiorequest.py \
+      --replace ", loop=self.loop)" ")"
+  '';
+
+  pythonImportsCheck = [
+    "aiopvapi"
+  ];
 
   meta = with lib; {
     description = "Python API for the PowerView API";
diff --git a/nixpkgs/pkgs/development/python-modules/aiopvpc/default.nix b/nixpkgs/pkgs/development/python-modules/aiopvpc/default.nix
index efbe695673aa..ae069ae18266 100644
--- a/nixpkgs/pkgs/development/python-modules/aiopvpc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiopvpc/default.nix
@@ -15,15 +15,16 @@
 
 buildPythonPackage rec {
   pname = "aiopvpc";
-  version = "2.2.0";
-  disabled = pythonOlder "3.8";
+  version = "3.0.0";
   format = "pyproject";
 
+  disabled = pythonOlder "3.8";
+
   src = fetchFromGitHub {
     owner = "azogue";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1hk3giwzzlcqnpw9kx3zrr808nmdb7qwac60fki5395qffd2fpqw";
+    sha256 = "sha256-eTCQddoZIaCs7iKGNBC8aSq6ek4vwYXgIXx35UlME/k=";
   };
 
   nativeBuildInputs = [
@@ -49,7 +50,9 @@ buildPythonPackage rec {
       " --cov --cov-report term --cov-report html" ""
   '';
 
-  pythonImportsCheck = [ "aiopvpc" ];
+  pythonImportsCheck = [
+    "aiopvpc"
+  ];
 
   meta = with lib; {
     description = "Python module to download Spanish electricity hourly prices (PVPC)";
diff --git a/nixpkgs/pkgs/development/python-modules/aiorecollect/default.nix b/nixpkgs/pkgs/development/python-modules/aiorecollect/default.nix
index 2f62a31e129c..79bc2a787b96 100644
--- a/nixpkgs/pkgs/development/python-modules/aiorecollect/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiorecollect/default.nix
@@ -6,20 +6,22 @@
 , freezegun
 , poetry-core
 , pytest-asyncio
-, pytest-cov
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "aiorecollect";
-  version = "1.0.8";
+  version = "2021.10.0";
   format = "pyproject";
 
+  disabled = pythonOlder "3.7";
+
   src = fetchFromGitHub {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "sha256-5+v+TlLOgaIA8svpbgFSEWZAUVBRq3zqf8QbidKgygI=";
+    sha256 = "sha256-cLutszJ8VXGcqb8kZv7Qn1ZD/LRYjVgQWQxNMHNd0UQ=";
   };
 
   nativeBuildInputs = [
@@ -34,13 +36,17 @@ buildPythonPackage rec {
     aresponses
     freezegun
     pytest-asyncio
-    pytest-cov
     pytestCheckHook
   ];
 
-  disabledTestPaths = [ "examples/" ];
+  disabledTestPaths = [
+    # Ignore the examples directory as the files are prefixed with test_.
+    "examples/"
+  ];
 
-  pythonImportsCheck = [ "aiorecollect" ];
+  pythonImportsCheck = [
+    "aiorecollect"
+  ];
 
   meta = with lib; {
     description = "Python library for the Recollect Waste API";
diff --git a/nixpkgs/pkgs/development/python-modules/aioridwell/default.nix b/nixpkgs/pkgs/development/python-modules/aioridwell/default.nix
index 2b3bc08d1d9f..9f2c665f6754 100644
--- a/nixpkgs/pkgs/development/python-modules/aioridwell/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioridwell/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "aioridwell";
-  version = "0.2.0";
+  version = "2021.10.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "0kzxh1igncql1rwh12n42qahlc94z0fsd344d1vgni50jg7i34v7";
+    sha256 = "sha256-h89gfdZvk7H22xAczaPMscTYZu0YeFxvFfL6/Oz2cJw=";
   };
 
   nativeBuildInputs = [
@@ -55,6 +55,11 @@ buildPythonPackage rec {
       --replace 'pytz = "^2021.3"' 'pytz = "*"'
   '';
 
+  disabledTests = [
+    # AssertionError: assert datetime.date(...
+    "test_get_next_pickup_event"
+  ];
+
   disabledTestPaths = [
     # Ignore the examples directory as the files are prefixed with test_
     "examples/"
diff --git a/nixpkgs/pkgs/development/python-modules/aiosenz/default.nix b/nixpkgs/pkgs/development/python-modules/aiosenz/default.nix
new file mode 100644
index 000000000000..beb561861470
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiosenz/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, authlib
+, buildPythonPackage
+, fetchFromGitHub
+, httpx
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "aiosenz";
+  version = "1.0.0";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "milanmeu";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-ODdWPS14zzptxuS6mff51f0s1SYnIqjF40DmvT0sL0w=";
+  };
+
+  propagatedBuildInputs = [
+    httpx
+    authlib
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "aiosenz"
+  ];
+
+  meta = with lib; {
+    description = "Python wrapper for the nVent Raychem SENZ RestAPI";
+    homepage = "https://github.com/milanmeu/aiosenz";
+    license = with licenses; [ lgpl3Plus ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aioshelly/default.nix b/nixpkgs/pkgs/development/python-modules/aioshelly/default.nix
index 104ec7af3c37..f3bb26c2780e 100644
--- a/nixpkgs/pkgs/development/python-modules/aioshelly/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioshelly/default.nix
@@ -3,17 +3,21 @@
 , buildPythonPackage
 , fetchFromGitHub
 , netifaces
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "aioshelly";
-  version = "1.0.2";
+  version = "1.0.5";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "home-assistant-libs";
     repo = pname;
     rev = version;
-    sha256 = "sha256-STJ9BDVbvlIMvKMiGwkGZ9Z32NvlE+3cyYduYlwTbx4=";
+    sha256 = "sha256-AaEnVMup/sGR3ENtN6NF/CzG05P4Er5LI8mG5LNVzAo=";
   };
 
   propagatedBuildInputs = [
@@ -23,7 +27,10 @@ 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 c204261644c5..c19e39bcd48f 100644
--- a/nixpkgs/pkgs/development/python-modules/aiosmtpd/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiosmtpd/default.nix
@@ -1,12 +1,21 @@
-{ lib, isPy3k, fetchFromGitHub, buildPythonPackage
-, attrs, atpublic }:
+{ lib
+, atpublic
+, attrs
+, buildPythonPackage
+, fetchFromGitHub
+, pytest-mock
+, pytestCheckHook
+, pythonOlder
+, typing-extensions
+}:
 
 buildPythonPackage rec {
   pname = "aiosmtpd";
   version = "1.4.2";
-  disabled = !isPy3k;
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
-  # Release not published to Pypi
   src = fetchFromGitHub {
     owner = "aio-libs";
     repo = pname;
@@ -15,19 +24,34 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [
-    atpublic attrs
+    atpublic
+    attrs
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    typing-extensions
+  ];
+
+  checkInputs = [
+    pytest-mock
+    pytestCheckHook
   ];
 
-  # Tests need network access
-  doCheck = false;
+  disabledTests = [
+    # Requires git
+    "test_ge_master"
+    # Seems to be a sandbox issue
+    "test_byclient"
+  ];
+
+  pythonImportsCheck = [
+    "aiosmtpd"
+  ];
 
   meta = with lib; {
-    homepage = "https://aiosmtpd.readthedocs.io/en/latest/";
     description = "Asyncio based SMTP server";
+    homepage = "https://aiosmtpd.readthedocs.io/";
     longDescription = ''
       This is a server for SMTP and related protocols, similar in utility to the
-      standard library's smtpd.py module, but rewritten to be based on asyncio for
-      Python 3.
+      standard library's smtpd.py module.
     '';
     license = licenses.asl20;
     maintainers = with maintainers; [ eadwu ];
diff --git a/nixpkgs/pkgs/development/python-modules/aiostream/default.nix b/nixpkgs/pkgs/development/python-modules/aiostream/default.nix
index e15271bafdbc..060da226b937 100644
--- a/nixpkgs/pkgs/development/python-modules/aiostream/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiostream/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "aiostream";
-  version = "0.4.3";
+  version = "0.4.4";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "vxgmichel";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1r3x9qwl08yscmzvhafc6gsmq84lr17s6p7a1qxr49cmdvjzsc13";
+    sha256 = "07if27z1h0mg236sj9lc8nl0bqy9sdrj83ls73mrc69h76bzg5xi";
   };
 
   checkInputs = [ pytestCheckHook pytest-cov pytest-asyncio ];
diff --git a/nixpkgs/pkgs/development/python-modules/aiounifi/default.nix b/nixpkgs/pkgs/development/python-modules/aiounifi/default.nix
index e537222f4dfb..8d31fccc5647 100644
--- a/nixpkgs/pkgs/development/python-modules/aiounifi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiounifi/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "aiounifi";
-  version = "27";
+  version = "29";
 
   disabled = pythonOlder "3.7";
 
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "Kane610";
     repo = pname;
     rev = "v${version}";
-    sha256 = "09bxyfrwhqwlfxwgbbnkyd7md9wz05y3fjvc9f0rrj70z7qcicnv";
+    sha256 = "sha256-A2+jLxKpha7HV1m3uzy00o8tsjwx0Uuwn5x3DO9daTI=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/aiounittest/default.nix b/nixpkgs/pkgs/development/python-modules/aiounittest/default.nix
index 088131824ad7..6b736b416ee9 100644
--- a/nixpkgs/pkgs/development/python-modules/aiounittest/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiounittest/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "aiounittest";
-  version = "1.4.0";
+  version = "1.4.1";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "kwarunek";
     repo = pname;
     rev = version;
-    sha256 = "sha256-GbGApY4pQoFpP3RTCLdjjTnJbdz9wEXXzZRRYXgtFEM=";
+    sha256 = "sha256-FixGF1JLJVqTgLaWugbeu8f+SDjpHSdSLoGklYBup4M=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/aiovlc/default.nix b/nixpkgs/pkgs/development/python-modules/aiovlc/default.nix
new file mode 100644
index 000000000000..c41a39023706
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aiovlc/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, click
+, fetchFromGitHub
+, pytest-asyncio
+, pytest-timeout
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "aiovlc";
+  version = "0.1.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "MartinHjelmare";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "jB2V/Wpxmp92wba41mWZAeO63wy3NrkupllGxJMNkFM=";
+  };
+
+  propagatedBuildInputs = [
+    click
+  ];
+
+  checkInputs = [
+    pytest-asyncio
+    pytest-timeout
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "aiovlc"
+  ];
+
+  meta = with lib; {
+    description = "Python module to control VLC";
+    homepage = "https://github.com/MartinHjelmare/aiovlc";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/aiowatttime/default.nix b/nixpkgs/pkgs/development/python-modules/aiowatttime/default.nix
index 39aa7974313c..67d21b7ebfab 100644
--- a/nixpkgs/pkgs/development/python-modules/aiowatttime/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiowatttime/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "aiowatttime";
-  version = "0.1.1";
+  version = "2021.10.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "1614p5ca7x9ipz7dgwhiz83dfwn6hyliawa8pr2j9y2kn8cg2sdm";
+    sha256 = "sha256-cWXhQMgRYBzOVgUQWONIwWFB5n/f0lqkSjUb9IoPwtI=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/aioymaps/default.nix b/nixpkgs/pkgs/development/python-modules/aioymaps/default.nix
index 01765f6eedff..c23451b9db92 100644
--- a/nixpkgs/pkgs/development/python-modules/aioymaps/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioymaps/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "aioymaps";
-  version = "1.2.0";
+  version = "1.2.2";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-YkSoxYf/Ti/gc1BFSYR24P3OzDrmcGWKhcOcrGpkRjU=";
+    sha256 = "sha256-ZWolVsh6MSEA3h62ERaCLSVAr+vl53yysPjulMtW4QI=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/airthings-cloud/default.nix b/nixpkgs/pkgs/development/python-modules/airthings-cloud/default.nix
index ca80f38c899d..8315847683d0 100644
--- a/nixpkgs/pkgs/development/python-modules/airthings-cloud/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/airthings-cloud/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "airthings-cloud";
-  version = "0.0.1";
+  version = "0.1.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "Danielhiversen";
     repo = "pyAirthings";
     rev = version;
-    sha256 = "08cbysx5p9k8hzr6sdykx91j0gx8x15b8807338dsl3qx8nhfb8j";
+    sha256 = "sha256-sqHNK6biSWso4uOYimzU7PkEn0uP5sHAaPGsS2vSMNY=";
   };
 
   propagatedBuildInputs = [
@@ -28,7 +28,9 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "airthings" ];
+  pythonImportsCheck = [
+    "airthings"
+  ];
 
   meta = with lib; {
     description = "Python module for Airthings";
diff --git a/nixpkgs/pkgs/development/python-modules/airtouch4pyapi/default.nix b/nixpkgs/pkgs/development/python-modules/airtouch4pyapi/default.nix
new file mode 100644
index 000000000000..193070ac7261
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/airtouch4pyapi/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, numpy
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "airtouch4pyapi";
+  version = "1.0.5";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "LonePurpleWolf";
+    repo = pname;
+    # https://github.com/LonePurpleWolf/airtouch4pyapi/issues/5
+    rev = "34783888846783c058fe79cec16feda45504f701";
+    sha256 = "17c7fm72p085pg9msvsfdggbskvm12a6jlb5bw1cndrqsqcrxywx";
+  };
+
+  propagatedBuildInputs = [
+    numpy
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "airtouch4pyapi" ];
+
+  meta = with lib; {
+    description = "Python API for Airtouch 4 controllers";
+    homepage = "https://github.com/LonePurpleWolf/airtouch4pyapi";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/alectryon/default.nix b/nixpkgs/pkgs/development/python-modules/alectryon/default.nix
index f10a0f03e07d..08fcd9f9651f 100644
--- a/nixpkgs/pkgs/development/python-modules/alectryon/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/alectryon/default.nix
@@ -1,23 +1,15 @@
-{ lib, buildPythonPackage, fetchPypi, fetchpatch
+{ lib, buildPythonPackage, fetchPypi
 , pygments, dominate, beautifulsoup4, docutils, sphinx }:
 
 buildPythonPackage rec {
   pname = "alectryon";
-  owner = "cpitclaudel";
-  version = "1.3.1";
+  version = "1.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256:0mca25jv917myb4n91ccpl5fz058aiqsn8cniflwfw5pp6lqnfg7";
+    sha256 = "00cxzfifvgcf3d3s8lsj1yxcwyf3a1964p86fj7b42q8pa0b4r3i";
   };
 
-  patches = [
-    (fetchpatch {
-      url = "https://github.com/cpitclaudel/alectryon/commit/c779def3fa268e703d4e0ff8ae0b2981e194b269.patch";
-      sha256 = "0xsz56ibq8xj7gg530pfm1jmxbxw4r6v8xvzj5k1wdry83srqi65";
-     })
-   ];
-
   propagatedBuildInputs = [
     pygments
     dominate
diff --git a/nixpkgs/pkgs/development/python-modules/alembic/default.nix b/nixpkgs/pkgs/development/python-modules/alembic/default.nix
index af8b1fc37215..18698a0d68f2 100644
--- a/nixpkgs/pkgs/development/python-modules/alembic/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/alembic/default.nix
@@ -9,19 +9,18 @@
 , importlib-resources
 , pytest-xdist
 , pytestCheckHook
-
 }:
 
 buildPythonPackage rec {
   pname = "alembic";
-  version = "1.7.1";
+  version = "1.7.5";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "aea964d3dcc9c205b8759e4e9c1c3935ea3afeee259bffd7ed8414f8085140fb";
+    sha256 = "sha256-fDKGlKLmjwPulx5jw72IWEZHA3OltTLPLJ8WAcQTsVM=";
   };
 
   propagatedBuildInputs = [
@@ -44,7 +43,7 @@ buildPythonPackage rec {
   ];
 
   pytestFlagsArray = [
-    "--numprocesses" "auto"
+    "--numprocesses" "$NIX_BUILD_CORES"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/allure-pytest/default.nix b/nixpkgs/pkgs/development/python-modules/allure-pytest/default.nix
new file mode 100644
index 000000000000..49b5f683a6b4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/allure-pytest/default.nix
@@ -0,0 +1,80 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, six
+, pythonOlder
+, allure-python-commons
+, pytest
+, pytestCheckHook
+, pytest-check
+, pytest-flakes
+, pytest-lazy-fixture
+, pytest-rerunfailures
+, pytest-xdist
+, pyhamcrest
+, mock
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "allure-pytest";
+  version = "2.9.45";
+
+  disabled = pythonOlder "3.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "18ys5gi64jlfya6a7shj5lqhwc6cplwgyq3s2n5mg5x513g0yqi0";
+  };
+
+  buildInputs = [
+    pytest
+  ];
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  pythonImportsCheck = [ "allure_pytest" ];
+
+  propagatedBuildInputs = [
+    allure-python-commons
+    six
+  ];
+
+  checkInputs = [
+    pyhamcrest
+    mock
+    pytestCheckHook
+    pytest-check
+    pytest-flakes
+    pytest-lazy-fixture
+    pytest-rerunfailures
+    pytest-xdist
+  ];
+
+  pytestFlagsArray = [
+    "--basetemp"
+    "$(mktemp -d)"
+    "--alluredir"
+    "$(mktemp -d allure-results.XXXXXXX)"
+    "-W"
+    "ignore::pytest.PytestExperimentalApiWarning"
+    "-p"
+    "pytester"
+  ];
+
+  # we are skipping some of the integration tests for now
+  disabledTests = [
+    "test_pytest_check"
+    "test_pytest_check_example"
+    "test_select_by_testcase_id_test"
+  ];
+
+  meta = with lib; {
+    description = "Allure pytest integration. It's developed as pytest plugin and distributed via pypi";
+    homepage = "https://github.com/allure-framework/allure-python";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ evanjs ];
+  };
+}
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
new file mode 100644
index 000000000000..3c43e698b8e7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/allure-python-commons-test/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, pythonOlder
+, attrs
+, pluggy
+, six
+, pyhamcrest
+, setuptools-scm
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "allure-python-commons-test";
+  version = "2.9.45";
+
+  disabled = pythonOlder "3.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0rn8ccxxrm27skv3avdiw56zc4fk2h7nrk3jamqmx6fnvmshiz5f";
+  };
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [ attrs pluggy six pyhamcrest ];
+
+  checkPhase = ''
+    ${python.interpreter} -m doctest ./src/container.py
+    ${python.interpreter} -m doctest ./src/report.py
+    ${python.interpreter} -m doctest ./src/label.py
+    ${python.interpreter} -m doctest ./src/result.py
+  '';
+
+  pythonImportsCheck = [ "allure_commons_test" ];
+
+  meta = with lib; {
+    description = "Just pack of hamcrest matchers for validation result in allure2 json format";
+    homepage = "https://github.com/allure-framework/allure-python";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ evanjs ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/allure-python-commons/default.nix b/nixpkgs/pkgs/development/python-modules/allure-python-commons/default.nix
new file mode 100644
index 000000000000..56eb0bbf55ed
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/allure-python-commons/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, pythonOlder
+, attrs
+, pluggy
+, six
+, allure-python-commons-test
+, setuptools-scm
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "allure-python-commons";
+  version = "2.9.45";
+
+  disabled = pythonOlder "3.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "17alymsivw8fs89j6phbqgrbprasw8kj72kxa5y8qpn3xa5d4f62";
+  };
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [ attrs pluggy six allure-python-commons-test ];
+
+  checkPhase = ''
+    ${python.interpreter} -m doctest ./src/utils.py
+    ${python.interpreter} -m doctest ./src/mapping.py
+  '';
+
+  pythonImportsCheck = [ "allure" "allure_commons" ];
+
+  meta = with lib; {
+    description = "Common engine for all modules. It is useful for make integration with your homemade frameworks";
+    homepage = "https://github.com/allure-framework/allure-python";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ evanjs ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/amazon_kclpy/default.nix b/nixpkgs/pkgs/development/python-modules/amazon_kclpy/default.nix
index b39d3902740d..06f61981561b 100644
--- a/nixpkgs/pkgs/development/python-modules/amazon_kclpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/amazon_kclpy/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "amazon_kclpy";
-  version = "2.0.2";
+  version = "2.0.6";
 
   src = fetchFromGitHub {
     owner = "awslabs";
     repo = "amazon-kinesis-client-python";
     rev = "v${version}";
-    sha256 = "12yxcwml6g86sv1pj3wc2k97md9szdj6xx07qwri1mr9bdkzw7rv";
+    sha256 = "0gbpwhpd9i13vi0cch48qqrma90p230psqrkbfcjvdah69w434l4";
   };
 
   # argparse is just required for python2.6
diff --git a/nixpkgs/pkgs/development/python-modules/amberelectric/default.nix b/nixpkgs/pkgs/development/python-modules/amberelectric/default.nix
index 1d268afd551d..cd4984861432 100644
--- a/nixpkgs/pkgs/development/python-modules/amberelectric/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/amberelectric/default.nix
@@ -5,7 +5,6 @@
 , pytestCheckHook
 , python-dateutil
 , pythonOlder
-, setuptools-scm
 , urllib3
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/amqtt/default.nix b/nixpkgs/pkgs/development/python-modules/amqtt/default.nix
index 1f5fee4d71bb..d61140081ef1 100644
--- a/nixpkgs/pkgs/development/python-modules/amqtt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/amqtt/default.nix
@@ -26,6 +26,11 @@ buildPythonPackage rec {
     sha256 = "sha256-27LmNR1KC8w3zRJ7YBlBolQ4Q70ScTPqypMCpU6fO+I=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'websockets = "^9.0"' 'websockets = "^10.0"'
+  '';
+
   nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/androguard/default.nix b/nixpkgs/pkgs/development/python-modules/androguard/default.nix
index e7058205c54f..42f37e130994 100644
--- a/nixpkgs/pkgs/development/python-modules/androguard/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/androguard/default.nix
@@ -1,5 +1,4 @@
 { lib
-, fetchpatch
 , buildPythonPackage
 , fetchFromGitHub
 , future
@@ -12,6 +11,7 @@
 , click
 , pydot
 , ipython
+, packaging
 , pyqt5
 , pyperclip
 , nose
@@ -40,6 +40,12 @@ buildPythonPackage rec {
     sha256 = "1aparxiq11y0hbvkayp92w684nyxyyx7mi0n1x6x51g5z6c58vmy";
   };
 
+  nativeBuildInputs = [
+    packaging
+  ] ++ lib.optionals withGui [
+    qt5.wrapQtAppsHook
+  ];
+
   propagatedBuildInputs = [
     asn1crypto
     click
@@ -68,10 +74,6 @@ buildPythonPackage rec {
   ];
   inherit doCheck;
 
-  nativeBuildInputs = lib.optionals withGui [
-    qt5.wrapQtAppsHook
-  ];
-
   # If it won't be verbose, you'll see nothing going on for a long time.
   checkPhase = ''
     runHook preCheck
diff --git a/nixpkgs/pkgs/development/python-modules/android-backup/default.nix b/nixpkgs/pkgs/development/python-modules/android-backup/default.nix
index 319c9514183e..df2096582ccd 100644
--- a/nixpkgs/pkgs/development/python-modules/android-backup/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/android-backup/default.nix
@@ -30,7 +30,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Unpack and repack android backups";
-    homepage = https://github.com/bluec0re/android-backup-tools;
+    homepage = "https://github.com/bluec0re/android-backup-tools";
     license = licenses.asl20;
     maintainers = with maintainers; [ dotlambda ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/angr/default.nix b/nixpkgs/pkgs/development/python-modules/angr/default.nix
index 21539a93f4b7..4468dfabecd0 100644
--- a/nixpkgs/pkgs/development/python-modules/angr/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/angr/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , ailment
 , archinfo
 , buildPythonPackage
@@ -30,29 +31,32 @@
 let
   # Only the pinned release in setup.py works properly
   unicorn' = unicorn.overridePythonAttrs (old: rec {
-      pname = "unicorn";
-      version = "1.0.2-rc4";
-      src =  fetchFromGitHub {
-        owner = "unicorn-engine";
-        repo = pname;
-        rev = version;
-        sha256 = "17nyccgk7hpc4hab24yn57f1xnmr7kq4px98zbp2bkwcrxny8gwy";
+    pname = "unicorn";
+    version = "1.0.2-rc4";
+    src =  fetchFromGitHub {
+      owner = "unicorn-engine";
+      repo = pname;
+      rev = version;
+      sha256 = "17nyccgk7hpc4hab24yn57f1xnmr7kq4px98zbp2bkwcrxny8gwy";
     };
+    doCheck = false;
   });
 in
 
 buildPythonPackage rec {
   pname = "angr";
-  version = "9.0.10159";
+  version = "9.1.10913";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-j3SbKBoREeB4IJmXVm27K4C1FLcZwqFMFXQwWnMtE0g=";
+    sha256 = "sha256-AZlqSalTOQh3QR959ZuanFuTZVKi9valKJ3snsquC/A=";
   };
 
+  setupPyBuildFlags = lib.optionals stdenv.isLinux [ "--plat-name" "linux" ];
+
   propagatedBuildInputs = [
     ailment
     archinfo
diff --git a/nixpkgs/pkgs/development/python-modules/angrcli/default.nix b/nixpkgs/pkgs/development/python-modules/angrcli/default.nix
new file mode 100644
index 000000000000..bad2bb01bf8a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/angrcli/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, angr
+, buildPythonPackage
+, cmd2
+, coreutils
+, fetchFromGitHub
+, pygments
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "angrcli";
+  version = "1.2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "fmagin";
+    repo = "angr-cli";
+    rev = "v${version}";
+    sha256 = "sha256-a5ajUBQwt3xUNkeSOeGOAFf47wd4UVk+LcuAHGqbq4s=";
+  };
+
+  propagatedBuildInputs = [
+    angr
+    cmd2
+    pygments
+  ];
+
+  checkInputs = [
+    coreutils
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace tests/test_derefs.py \
+      --replace "/bin/ls" "${coreutils}/bin/ls"
+  '';
+
+  disabledTests = [
+    "test_sims"
+    "test_proper_termination"
+    "test_branching"
+    "test_morph"
+  ];
+
+  pythonImportsCheck = [
+    "angrcli"
+  ];
+
+  meta = with lib; {
+    description = "Python modules to allow easier interactive use of angr";
+    homepage = "https://github.com/fmagin/angr-cli";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/angrop/default.nix b/nixpkgs/pkgs/development/python-modules/angrop/default.nix
index 71690bf31b2d..7989a06b60ef 100644
--- a/nixpkgs/pkgs/development/python-modules/angrop/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/angrop/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "angrop";
-  version = "9.0.10159";
+  version = "9.1.10913";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "angr";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-gVYriEt0/DPB0lDK9hGSnipGLCZtSOf27gtF8KwCMDA=";
+    sha256 = "sha256-8M3d8lG7jDNgICjzjFRi9Wl2I7aYI5b5IvjEhixsk9k=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/ansible-lint/default.nix b/nixpkgs/pkgs/development/python-modules/ansible-lint/default.nix
index d035c3267a85..2fac5e8a021e 100644
--- a/nixpkgs/pkgs/development/python-modules/ansible-lint/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ansible-lint/default.nix
@@ -18,13 +18,13 @@
 
 buildPythonPackage rec {
   pname = "ansible-lint";
-  version = "5.2.0";
+  version = "5.3.1";
   disabled = isPy27;
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-eQIDVtk/UD0syGmnJw48BDFtUQ4ztiZO3AjH0NsOgGE=";
+    sha256 = "sha256-fXvHS5uQxZgr5cJ0wq/LpbgHPsiMznk/q0Y/5kGKJfY=";
   };
 
   nativeBuildInputs = [
@@ -49,7 +49,7 @@ buildPythonPackage rec {
   ];
 
   pytestFlagsArray = [
-    "--numprocesses" "auto"
+    "--numprocesses" "$NIX_BUILD_CORES"
   ];
 
   preCheck = ''
diff --git a/nixpkgs/pkgs/development/python-modules/ansible-runner/default.nix b/nixpkgs/pkgs/development/python-modules/ansible-runner/default.nix
index 9dc8eadb7775..f4ec1c184627 100644
--- a/nixpkgs/pkgs/development/python-modules/ansible-runner/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ansible-runner/default.nix
@@ -8,20 +8,33 @@
 , six
 , stdenv
 , ansible
-, pytest
 , mock
+, openssh
+, pytest-mock
+, pytest-timeout
+, pytest-xdist
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "ansible-runner";
-  version = "2.0.2";
+  version = "2.1.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c02b690803ec0be4453411c53743cd3fdca1dfc66dfa075794e14e717c5b61b3";
+    sha256 = "7684612f7543c5f07f3e8135667eeb22a9dbd98f625cc69901ba9924329ef24f";
   };
 
-  checkInputs = [ pytest mock ];
+  checkInputs = [
+    ansible # required to place ansible CLI onto the PATH in tests
+    pytestCheckHook
+    pytest-mock
+    pytest-timeout
+    pytest-xdist
+    mock
+    openssh
+  ];
+
   propagatedBuildInputs = [
     ansible
     psutil
@@ -31,14 +44,31 @@ buildPythonPackage rec {
     six
   ];
 
-  # test_process_isolation_settings is currently broken on Darwin Catalina
-  # https://github.com/ansible/ansible-runner/issues/413
-  checkPhase = ''
-    HOME=$TMPDIR pytest \
-      --ignore test/unit/test_runner.py \
-      -k "not prepare ${lib.optionalString stdenv.isDarwin "and not process_isolation_settings"}"
+  preCheck = ''
+    export HOME=$(mktemp -d)
   '';
 
+  disabledTests = [
+    "test_callback_plugin_task_args_leak" # requires internet
+    "test_env_accuracy"
+    "test_large_stdout_blob" # times out on slower hardware
+  ]
+    # test_process_isolation_settings is currently broken on Darwin Catalina
+    # https://github.com/ansible/ansible-runner/issues/413
+  ++ lib.optional stdenv.isDarwin "process_isolation_settings";
+
+  disabledTestPaths = [
+    # these tests unset PATH and then run executables like `bash` (see https://github.com/ansible/ansible-runner/pull/918)
+    "test/integration/test_runner.py"
+    "test/unit/test_runner.py"
+  ]
+  ++ lib.optionals stdenv.isDarwin [
+    # integration tests on Darwin are not regularly passing in ansible-runner's own CI
+    "test/integration"
+    # these tests write to `/tmp` which is not writable on Darwin
+    "test/unit/config/test__base.py"
+  ];
+
   meta = with lib; {
     description = "Helps when interfacing with Ansible";
     homepage = "https://github.com/ansible/ansible-runner";
diff --git a/nixpkgs/pkgs/development/python-modules/ansible/base.nix b/nixpkgs/pkgs/development/python-modules/ansible/base.nix
index e6113b93dcbc..a7ab23a36661 100644
--- a/nixpkgs/pkgs/development/python-modules/ansible/base.nix
+++ b/nixpkgs/pkgs/development/python-modules/ansible/base.nix
@@ -28,11 +28,11 @@ let
 in
 buildPythonPackage rec {
   pname = "ansible-base";
-  version = "2.10.15";
+  version = "2.10.16";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-RHiBi6gh26FD4SNWjsXTF9yPpKxuFRP3pQFzTlKXa/8=";
+    sha256 = "sha256-2XQhTtA6wSnCmZZ6pMmCBZQ7o28gBA5/63JI4MPi6hU=";
   };
 
   # ansible_connection is already wrapped, so don't pass it through
diff --git a/nixpkgs/pkgs/development/python-modules/ansible/collections.nix b/nixpkgs/pkgs/development/python-modules/ansible/collections.nix
index 0c58defb583f..427e76a979cb 100644
--- a/nixpkgs/pkgs/development/python-modules/ansible/collections.nix
+++ b/nixpkgs/pkgs/development/python-modules/ansible/collections.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, ansible-base
 , jsonschema
 , jxmlease
 , ncclient
diff --git a/nixpkgs/pkgs/development/python-modules/ansible/core.nix b/nixpkgs/pkgs/development/python-modules/ansible/core.nix
index dc87dcfeda83..a580719fcfe2 100644
--- a/nixpkgs/pkgs/development/python-modules/ansible/core.nix
+++ b/nixpkgs/pkgs/development/python-modules/ansible/core.nix
@@ -23,17 +23,17 @@
 
 let
   ansible-collections = callPackage ./collections.nix {
-    version = "4.5.0";
-    sha256 = "1c8dspqy4in7sgz10y1pggwnh1hv79wap7p7xhai0f0s6nr54lyc";
+    version = "5.0.1";
+    sha256 = "sha256:0xn3lpinmflkxwak7zb36wjs9w2y1k5s295apn3v77xnpc2cfz5l";
   };
 in
 buildPythonPackage rec {
   pname = "ansible-core";
-  version = "2.11.6";
+  version = "2.12.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-k9UCg8fFtHbev4PcCJs/Z5uTmouae11ijSjar7s9MDo=";
+    sha256 = "sha256-pFCHByYr4Ru03ZigBvGxSBeHmgVea2xGrZ/KiJT7MHM=";
   };
 
   # ansible_connection is already wrapped, so don't pass it through
diff --git a/nixpkgs/pkgs/development/python-modules/antlr4-python2-runtime/default.nix b/nixpkgs/pkgs/development/python-modules/antlr4-python2-runtime/default.nix
deleted file mode 100644
index aa18a0fe2907..000000000000
--- a/nixpkgs/pkgs/development/python-modules/antlr4-python2-runtime/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ lib, buildPythonPackage, isPy3k, python
-, antlr4
-}:
-
-buildPythonPackage rec {
-  pname = "antlr4-python2-runtime";
-  inherit (antlr4.runtime.cpp) version src;
-  disabled = isPy3k;
-
-  sourceRoot = "source/runtime/Python2";
-
-  checkPhase = ''
-    ${python.interpreter} tests/TestTokenStreamRewriter.py
-  '';
-
-  meta = with lib; {
-    description = "Runtime for ANTLR";
-    homepage = "https://www.antlr.org/";
-    license = licenses.bsd3;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/anybadge/default.nix b/nixpkgs/pkgs/development/python-modules/anybadge/default.nix
index a8aaec9f45b2..bc776e42f07b 100644
--- a/nixpkgs/pkgs/development/python-modules/anybadge/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/anybadge/default.nix
@@ -1,27 +1,36 @@
-{ lib, fetchFromGitHub, buildPythonPackage, pytestCheckHook }:
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "anybadge";
-  version = "1.7.0";
+  version = "1.8.0";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "jongracecox";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1d02fnig04zlrhfqqcf4505vy4p51whl2ifilnx3mkhis9lcwrmr";
+    sha256 = "sha256-xKHIoV/8qsNMcU5fd92Jjh7d7jTeYN5xakMEjR6qPX8=";
   };
 
   # setup.py reads its version from the TRAVIS_TAG environment variable
   TRAVIS_TAG = "v${version}";
 
-  pythonImportsCheck = [ "anybadge" ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  checkInputs = [ pytestCheckHook ];
+  pythonImportsCheck = [
+    "anybadge"
+  ];
 
   meta = with lib; {
-    description = "A Python project for generating badges for your projects, with a focus on simplicity and flexibility";
-    license = licenses.mit;
+    description = "Python tool for generating badges for your projects";
     homepage = "https://github.com/jongracecox/anybadge";
-    maintainers = [ maintainers.fabiangd ];
+    license = licenses.mit;
+    maintainers = with maintainers; [ fabiangd ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/anyio/default.nix b/nixpkgs/pkgs/development/python-modules/anyio/default.nix
index f043936f7d72..382e64ea0f4f 100644
--- a/nixpkgs/pkgs/development/python-modules/anyio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/anyio/default.nix
@@ -19,7 +19,7 @@
 
 buildPythonPackage rec {
   pname = "anyio";
-  version = "3.3.1";
+  version = "3.3.4";
   format = "pyproject";
   disabled = pythonOlder "3.7";
 
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "agronholm";
     repo = pname;
     rev = version;
-    sha256 = "sha256-JQf+OWHV2Vok5FmP7mlzeqbKUlxB+FC1c3ruX2aQEEs=";
+    sha256 = "sha256-aMnXZ+4dlybId2QhjE/3STY+Sj/vzI6K7wmqqx+P8yE=";
   };
 
   preBuild = ''
diff --git a/nixpkgs/pkgs/development/python-modules/aocd/default.nix b/nixpkgs/pkgs/development/python-modules/aocd/default.nix
new file mode 100644
index 000000000000..ca9768569ee1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/aocd/default.nix
@@ -0,0 +1,58 @@
+{ lib, stdenv, buildPythonPackage, fetchFromGitHub, requests
+, pytestCheckHook, tzlocal, pytest-mock, pytest-freezegun, pytest-raisin
+, pytest-socket, requests-mock, pebble, python-dateutil, termcolor
+, beautifulsoup4, setuptools
+}:
+
+buildPythonPackage rec {
+  pname = "aocd";
+  version = "1.1.1";
+
+  src = fetchFromGitHub {
+    owner = "wimglenn";
+    repo = "advent-of-code-data";
+    rev = "v${version}";
+    sha256 = "sha256-wdg6XUkjnAc9yAP7DP0UT6SlQHfj/ymhqzIGNM3fco4=";
+  };
+
+  propagatedBuildInputs = [
+    python-dateutil
+    requests
+    termcolor
+    beautifulsoup4
+    pebble
+    tzlocal
+    setuptools
+  ];
+
+  # Too many failing tests
+  preCheck = "rm pytest.ini";
+
+  disabledTests = [
+    "test_results"
+    "test_results_xmas"
+    "test_run_error"
+    "test_run_and_autosubmit"
+    "test_run_and_no_autosubmit"
+    "test_load_input_from_file"
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    pytest-mock
+    pytest-freezegun
+    pytest-raisin
+    pytest-socket
+    requests-mock
+  ];
+
+  pythonImportsCheck = [ "aocd" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/wimglenn/advent-of-code-data";
+    description = "Get your Advent of Code data with a single import statement";
+    license = licenses.mit;
+    maintainers = with maintainers; [ aadibajpai ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/apache-airflow/default.nix b/nixpkgs/pkgs/development/python-modules/apache-airflow/default.nix
index 2ffe0b137528..c666d89b2bfa 100644
--- a/nixpkgs/pkgs/development/python-modules/apache-airflow/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/apache-airflow/default.nix
@@ -58,7 +58,7 @@
 , termcolor
 , unicodecsv
 , werkzeug
-, pytest
+, pytestCheckHook
 , freezegun
 , mkYarnPackage
 }:
@@ -171,7 +171,7 @@ buildPythonPackage rec {
 
   checkInputs = [
     freezegun
-    pytest
+    pytestCheckHook
   ];
 
   INSTALL_PROVIDERS_FROM_SOURCES = "true";
@@ -199,12 +199,16 @@ buildPythonPackage rec {
 
     substituteInPlace tests/core/test_core.py \
       --replace "/bin/bash" "${stdenv.shell}"
+  '' + lib.optionalString stdenv.isDarwin ''
+    # Fix failing test on Hydra
+    substituteInPlace airflow/utils/db.py \
+      --replace "/tmp/sqlite_default.db" "$TMPDIR/sqlite_default.db"
   '';
 
   # allow for gunicorn processes to have access to python packages
   makeWrapperArgs = [ "--prefix PYTHONPATH : $PYTHONPATH" ];
 
-  checkPhase = ''
+  preCheck = ''
    export HOME=$(mktemp -d)
    export AIRFLOW_HOME=$HOME
    export AIRFLOW__CORE__UNIT_TEST_MODE=True
@@ -214,17 +218,23 @@ buildPythonPackage rec {
    airflow version
    airflow db init
    airflow db reset -y
-
-   pytest tests/core/test_core.py
   '';
 
+  pytestFlagsArray = [
+    "tests/core/test_core.py"
+  ];
+
+  disabledTests = lib.optionals stdenv.isDarwin [
+    "bash_operator_kill"  # psutil.AccessDenied
+  ];
+
   postInstall = ''
     cp -rv ${airflow-frontend}/static/dist $out/lib/${python.libPrefix}/site-packages/airflow/www/static
   '';
 
   meta = with lib; {
     description = "Programmatically author, schedule and monitor data pipelines";
-    homepage = "http://airflow.apache.org/";
+    homepage = "https://airflow.apache.org/";
     license = licenses.asl20;
     maintainers = with maintainers; [ bhipple costrouc ingenieroariel ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/apcaccess/default.nix b/nixpkgs/pkgs/development/python-modules/apcaccess/default.nix
new file mode 100644
index 000000000000..4b1401d61e57
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/apcaccess/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "apcaccess";
+  version = "0.0.13";
+
+  src = fetchFromGitHub {
+    owner = "flyte";
+    repo = "apcaccess";
+    rev = version;
+    sha256 = "sha256-XLoNRh6MgXCfRtWD9NpVZSyroW6E9nRYw6Grxa+AQkc=";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "setup_requires='pytest-runner'," ""
+  '';
+
+  pythonImportsCheck = [
+    "apcaccess"
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    description = "Library offers programmatic access to the status information provided by apcupsd over its Network Information Server";
+    homepage = "https://github.com/flyte/apcaccess";
+    license = licenses.mit;
+    maintainers = with maintainers; [ uvnikita ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/apispec/3.nix b/nixpkgs/pkgs/development/python-modules/apispec/3.nix
new file mode 100644
index 000000000000..e60a440df3f4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/apispec/3.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pyyaml
+, prance
+, marshmallow
+, pytestCheckHook
+, mock
+, openapi-spec-validator
+}:
+
+buildPythonPackage rec {
+  pname = "apispec";
+  version = "3.3.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "d23ebd5b71e541e031b02a19db10b5e6d5ef8452c552833e3e1afc836b40b1ad";
+  };
+
+  propagatedBuildInputs = [
+    pyyaml
+    prance
+  ];
+
+  postPatch = ''
+    rm tests/test_ext_marshmallow.py
+  '';
+
+  checkInputs = [
+    openapi-spec-validator
+    marshmallow
+    mock
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "apispec"
+  ];
+
+  meta = with lib; {
+    description = "A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification";
+    homepage = "https://github.com/marshmallow-code/apispec";
+    license = licenses.mit;
+    maintainers = [ maintainers.viric ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/application/default.nix b/nixpkgs/pkgs/development/python-modules/application/default.nix
deleted file mode 100644
index 90b21baafdda..000000000000
--- a/nixpkgs/pkgs/development/python-modules/application/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib, buildPythonPackage, fetchFromGitHub, zope_interface, isPy3k }:
-
-buildPythonPackage rec {
-  pname = "python-application";
-  version = "2.8.0";
-  disabled = isPy3k;
-
-  src = fetchFromGitHub {
-    owner = "AGProjects";
-    repo = pname;
-    rev = "release-${version}";
-    sha256 = "1xd2gbpmx2ghap9cnr1h6sxjai9419bdp3y9qp5lh67977m0qg30";
-  };
-
-  buildInputs = [ zope_interface ];
-
-  # No tests upstream to run
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Basic building blocks for python applications";
-    homepage = "https://github.com/AGProjects/python-application";
-    changelog = "https://github.com/AGProjects/python-application/blob/master/ChangeLog";
-    license = licenses.lgpl2Plus;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/apprise/default.nix b/nixpkgs/pkgs/development/python-modules/apprise/default.nix
index fbcd7addb2a5..18b829249198 100644
--- a/nixpkgs/pkgs/development/python-modules/apprise/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/apprise/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "apprise";
-  version = "0.9.5.1";
+  version = "0.9.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-vwkHA66xK4LGhdazZ0o93+cSpGwgiTCMm8IC8D4G1Y0=";
+    sha256 = "sha256-Fe0GIIGXydKP2DzWnnJ7SCgIeaTGEa/Wta6l0N7zl/g=";
   };
 
   nativeBuildInputs = [ Babel installShellFiles ];
diff --git a/nixpkgs/pkgs/development/python-modules/approvaltests/default.nix b/nixpkgs/pkgs/development/python-modules/approvaltests/default.nix
index 6f2c55d45cb6..35e6c90f216d 100644
--- a/nixpkgs/pkgs/development/python-modules/approvaltests/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/approvaltests/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy37, pyperclip }:
+{ lib, buildPythonPackage, fetchFromGitHub, pyperclip }:
 
 buildPythonPackage rec {
   version = "0.2.6";
diff --git a/nixpkgs/pkgs/development/python-modules/aprslib/default.nix b/nixpkgs/pkgs/development/python-modules/aprslib/default.nix
index c5f4fa75a572..67d585d36ed0 100644
--- a/nixpkgs/pkgs/development/python-modules/aprslib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aprslib/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "aprslib";
-  version = "0.6.47";
+  version = "0.7.0";
 
   src = fetchFromGitHub {
     owner = "rossengeorgiev";
     repo = "aprs-python";
     rev = "v${version}";
-    sha256 = "1569v74ym2r8vxx3dnjcs5fr7rdrfb0i9sycny5frw2zgms4ag6b";
+    sha256 = "sha256-QasyF0Ch4zdPoAgcqRavEENVGA/02/AgeWAgXYcSUjk=";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/apsw/default.nix b/nixpkgs/pkgs/development/python-modules/apsw/default.nix
index 8933d4e91bcc..034e3e0df256 100644
--- a/nixpkgs/pkgs/development/python-modules/apsw/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/apsw/default.nix
@@ -1,9 +1,16 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch
-, sqlite, isPyPy }:
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, sqlite
+, isPyPy
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "apsw";
-  version = "3.33.0-r1";
+  version = "3.36.0-r1";
+  format = "setuptools";
 
   disabled = isPyPy;
 
@@ -11,14 +18,43 @@ buildPythonPackage rec {
     owner = "rogerbinns";
     repo = "apsw";
     rev = version;
-    sha256 = "05mxcw1382xx22285fnv92xblqby3adfrvvalaw4dc6rzsn6kcan";
+    sha256 = "sha256-kQqJqDikvEC0+PNhQxSNTcjQc+RwvaOSGz9VL3FCetg=";
   };
 
-  buildInputs = [ sqlite ];
+  buildInputs = [
+    sqlite
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "tests.py"
+  ];
+
+  disabledTests = [
+    "testCursor"
+    "testLoadExtension"
+    "testShell"
+    "testVFS"
+    "testVFSWithWAL"
+    "testdb"
+  ] ++ lib.optionals stdenv.isDarwin [
+    # This is https://github.com/rogerbinns/apsw/issues/277 but
+    # because we use pytestCheckHook we need to blacklist the test
+    # manually
+    "testzzForkChecker"
+  ];
+
+  pythonImportsCheck = [
+    "apsw"
+  ];
 
   meta = with lib; {
     description = "A Python wrapper for the SQLite embedded relational database engine";
     homepage = "https://github.com/rogerbinns/apsw";
     license = licenses.zlib;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/apycula/default.nix b/nixpkgs/pkgs/development/python-modules/apycula/default.nix
index 0f86c103c27d..53851ded566d 100644
--- a/nixpkgs/pkgs/development/python-modules/apycula/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/apycula/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "apycula";
-  version = "0.0.1a11";
+  version = "0.0.1a12";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit version;
     pname = "Apycula";
-    sha256 = "0fwk1pgphpgj0lazjy40ii08xq2qi6bvrfc30rwfj52yff1s9akn";
+    hash = "sha256-TFb1C1GaMAK+ckEeXDxSyO2Cgx5dmq62daoSnAiAFmI=";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/nixpkgs/pkgs/development/python-modules/archinfo/default.nix b/nixpkgs/pkgs/development/python-modules/archinfo/default.nix
index 88bb434a2cc6..ce7bfb1668f1 100644
--- a/nixpkgs/pkgs/development/python-modules/archinfo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/archinfo/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "archinfo";
-  version = "9.0.10159";
+  version = "9.1.10913";
 
   src = fetchFromGitHub {
     owner = "angr";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-WkA4vSXzndd7ldNBVagEEodj+2GuYg9OURnMLhRq8W8=";
+    sha256 = "sha256-VLFbjKX7WXWoJCS9hYwtEikGC48gRg7E24D9Un+/gdc=";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/argh/default.nix b/nixpkgs/pkgs/development/python-modules/argh/default.nix
index bbe120ec14fe..fd9ff184000f 100644
--- a/nixpkgs/pkgs/development/python-modules/argh/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/argh/default.nix
@@ -1,11 +1,10 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pytest
-, py
-, mock
-, glibcLocales
+, fetchpatch
 , iocapture
+, mock
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
@@ -17,18 +16,27 @@ buildPythonPackage rec {
     sha256 = "e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65";
   };
 
-  checkInputs = [ pytest py mock glibcLocales iocapture ];
+  patches = [
+    # https://github.com/neithere/argh/issues/148
+    (fetchpatch {
+      name = "argh-0.26.2-fix-py3.9-msgs.patch";
+      url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/dev-python/argh/files/argh-0.26.2-fix-py3.9-msgs.patch?id=6f194f12a2e30aad7da347848f7b0187e188f983";
+      sha256 = "nBmhF2PXVeS7cBNujzip6Bb601LRHrjmhlGKFr/++Oo=";
+    })
+  ];
 
-  checkPhase = ''
-    export LANG="en_US.UTF-8"
-    py.test
-  '';
+  checkInputs = [
+    iocapture
+    mock
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "argh" ];
 
   meta = with lib; {
-    homepage = "https://github.com/neithere/argh/";
+    homepage = "https://github.com/neithere/argh";
     description = "An unobtrusive argparse wrapper with natural syntax";
-    license = licenses.lgpl2;
+    license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ domenkozar ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/argon2_cffi/default.nix b/nixpkgs/pkgs/development/python-modules/argon2_cffi/default.nix
index eec01adfebca..a40fb806845e 100644
--- a/nixpkgs/pkgs/development/python-modules/argon2_cffi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/argon2_cffi/default.nix
@@ -8,19 +8,25 @@
 , fetchPypi
 , isPy3k
 , lib
+, stdenv
 }:
 
 buildPythonPackage rec {
   pname = "argon2_cffi";
-  version = "20.1.0";
+  version = "21.1.0";
 
   src = fetchPypi {
     pname = "argon2-cffi";
     inherit version;
-    sha256 = "0zgr4mnnm0p4i99023safb0qb8cgvl202nly1rvylk2b7qnrn0nq";
+    sha256 = "sha256-9xC2EQPRofaSyj7L0Tc+KKpeVFrGJboGf/L+yhsruHA=";
   };
 
   propagatedBuildInputs = [ cffi six ] ++ lib.optional (!isPy3k) enum34;
+
+  propagatedNativeBuildInputs = [ cffi ];
+
+  ARGON2_CFFI_USE_SSE2 = lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) "0";
+
   checkInputs = [ hypothesis pytest wheel ];
   checkPhase = ''
     pytest tests
diff --git a/nixpkgs/pkgs/development/python-modules/arrayqueues/default.nix b/nixpkgs/pkgs/development/python-modules/arrayqueues/default.nix
index 79a44ad42cdd..fa4b7d0bffdf 100644
--- a/nixpkgs/pkgs/development/python-modules/arrayqueues/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/arrayqueues/default.nix
@@ -1,4 +1,4 @@
-{ lib, pkgs, buildPythonPackage, fetchPypi, isPy3k
+{ lib, buildPythonPackage, fetchPypi, isPy3k
 , numpy
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/arrow/2.nix b/nixpkgs/pkgs/development/python-modules/arrow/2.nix
deleted file mode 100644
index 88864ec78b77..000000000000
--- a/nixpkgs/pkgs/development/python-modules/arrow/2.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, nose, chai, simplejson, backports_functools_lru_cache
-, python-dateutil, pytz, pytest-mock, sphinx, dateparser, pytest-cov
-, pytestCheckHook
-}:
-
-buildPythonPackage rec {
-  pname = "arrow";
-  version = "0.17.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "ff08d10cda1d36c68657d6ad20d74fbea493d980f8b2d45344e00d6ed2bf6ed4";
-  };
-
-  propagatedBuildInputs = [ python-dateutil ]
-    ++ lib.optionals isPy27 [ backports_functools_lru_cache ];
-
-  checkInputs = [
-    dateparser
-    pytestCheckHook
-    pytest-cov
-    pytest-mock
-    pytz
-    simplejson
-    sphinx
-  ];
-
-  # ParserError: Could not parse timezone expression "America/Nuuk"
-  disabledTests = [
-    "test_parse_tz_name_zzz"
-  ];
-
-  meta = with lib; {
-    description = "Python library for date manipulation";
-    homepage = "https://github.com/crsmithdev/arrow";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ thoughtpolice ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/arrow/default.nix b/nixpkgs/pkgs/development/python-modules/arrow/default.nix
index 956dd5f40f2d..fc66509a194a 100644
--- a/nixpkgs/pkgs/development/python-modules/arrow/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/arrow/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "arrow";
-  version = "1.1.1";
+  version = "1.2.1";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "dee7602f6c60e3ec510095b5e301441bc56288cb8f51def14dcb3079f623823a";
+    sha256 = "c2dde3c382d9f7e6922ce636bf0b318a7a853df40ecb383b29192e6c5cc82840";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/arviz/default.nix b/nixpkgs/pkgs/development/python-modules/arviz/default.nix
index 39a0d38a0e94..5aa10201917d 100644
--- a/nixpkgs/pkgs/development/python-modules/arviz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/arviz/default.nix
@@ -22,13 +22,13 @@
 
 buildPythonPackage rec {
   pname = "arviz";
-  version = "0.11.2";
+  version = "0.11.4";
 
   src = fetchFromGitHub {
     owner = "arviz-devs";
     repo = "arviz";
     rev = "v${version}";
-    sha256 = "0npwrpy262y6zqd0znz4w7ikfdyz4kc4gikmkpj6h1j6vxggrfaa";
+    sha256 = "0vindadyxhxhrhbalys6kzrda2d4qpqbqbsbwfprp8pxkldgk548";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/ascii-magic/default.nix b/nixpkgs/pkgs/development/python-modules/ascii-magic/default.nix
new file mode 100644
index 000000000000..6a1b617c03ed
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ascii-magic/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, colorama
+, fetchPypi
+, pillow
+}:
+
+buildPythonPackage rec {
+  pname = "ascii-magic";
+  version = "1.6";
+
+  src = fetchPypi {
+    pname = "ascii_magic";
+    inherit version;
+    sha256 = "sha256-faVRj3No5z8R4hUaDAYIBKoUniZ7Npt+52U/vXsEalE=";
+  };
+
+  propagatedBuildInputs = [
+    colorama
+    pillow
+  ];
+
+  # Project is not tagging releases and tests are not shipped with PyPI source
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "ascii_magic"
+  ];
+
+  meta = with lib; {
+    description = "Python module to converts pictures into ASCII art";
+    homepage = "https://github.com/LeandroBarone/python-ascii_magic";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ase/3.17.nix b/nixpkgs/pkgs/development/python-modules/ase/3.17.nix
deleted file mode 100644
index 40b9b405aab1..000000000000
--- a/nixpkgs/pkgs/development/python-modules/ase/3.17.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, numpy
-, scipy
-, matplotlib
-, flask
-, pillow
-, psycopg2
-}:
-
-buildPythonPackage rec {
-  pname = "ase";
-  version = "3.17.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1d4gxypaahby45zcpl0rffcn2z7n55dg9lcd8sv6jjsmbbf9vr4g";
-  };
-
-  propagatedBuildInputs = [ numpy scipy matplotlib flask pillow psycopg2 ];
-
-  checkPhase = ''
-    $out/bin/ase test
-  '';
-
-  # tests just hang most likely due to something with subprocesses and cli
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Atomic Simulation Environment";
-    homepage = "https://wiki.fysik.dtu.dk/ase/";
-    license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ costrouc ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/ase/default.nix b/nixpkgs/pkgs/development/python-modules/ase/default.nix
index 25210e4740bd..c3ec514844c2 100644
--- a/nixpkgs/pkgs/development/python-modules/ase/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ase/default.nix
@@ -12,12 +12,12 @@
 
 buildPythonPackage rec {
   pname = "ase";
-  version = "3.22.0";
+  version = "3.22.1";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-5gJZx7UIZ7HLgXyvk4/MHtODcCQT320uGv5+oH9lrO4=";
+    sha256 = "sha256-AE32sOoEsRFMeQ+t/kXUEl6w5TElxmqTQlr4U9gqtDI=";
   };
 
   propagatedBuildInputs = [ numpy scipy matplotlib flask pillow psycopg2 ];
diff --git a/nixpkgs/pkgs/development/python-modules/asgiref/default.nix b/nixpkgs/pkgs/development/python-modules/asgiref/default.nix
index f1128c010957..5eea9a5579a1 100644
--- a/nixpkgs/pkgs/development/python-modules/asgiref/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/asgiref/default.nix
@@ -1,27 +1,29 @@
-{ stdenv
+{ lib
+, stdenv
 , async-timeout
 , buildPythonPackage
 , fetchFromGitHub
 , pytest-asyncio
 , pytestCheckHook
 , pythonOlder
-, lib
 }:
 
 buildPythonPackage rec {
-  version = "3.3.4";
+  version = "3.4.1";
   pname = "asgiref";
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "django";
     repo = pname;
     rev = version;
-    sha256 = "1rr76252l6p12yxc0q4k9wigg1jz8nsqga9c0nixy9q77zhvh9n2";
+    sha256 = "sha256-aXD46qH5sTTmp0rlzQGLAN+MfIz1u6obCwtfqoIYgBA=";
   };
 
-  propagatedBuildInputs = [ async-timeout ];
+  propagatedBuildInputs = [
+    async-timeout
+  ];
 
   checkInputs = [
     pytestCheckHook
@@ -32,9 +34,12 @@ buildPythonPackage rec {
     "test_multiprocessing"
   ];
 
+  pythonImportsCheck = [ "asgiref" ];
+
   meta = with lib; {
     description = "Reference ASGI adapters and channel layers";
-    license = licenses.bsd3;
     homepage = "https://github.com/django/asgiref";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/asn1/default.nix b/nixpkgs/pkgs/development/python-modules/asn1/default.nix
index 7a83703f862c..c8b1b78b78f7 100644
--- a/nixpkgs/pkgs/development/python-modules/asn1/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/asn1/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "asn1";
-  version = "2.4.1";
+  version = "2.4.2";
 
   disabled = pythonOlder "3.7";
 
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "andrivet";
     repo = "python-asn1";
     rev = "v${version}";
-    sha256 = "0g2d5cr1pxsm5ackba7padf7gvlgrgv807kh0312s5axjd2cww2l";
+    sha256 = "sha256-fx/kWOnh5Gk1DjeX0xiCJYnd5teD18RvKyOnawcfWWA=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/astor/default.nix b/nixpkgs/pkgs/development/python-modules/astor/default.nix
index 0d7aa3877125..ab68c91d5d6b 100644
--- a/nixpkgs/pkgs/development/python-modules/astor/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/astor/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27, pytestCheckHook, fetchpatch }:
+{ lib, buildPythonPackage, fetchPypi, pytestCheckHook }:
 
 buildPythonPackage rec {
   pname = "astor";
diff --git a/nixpkgs/pkgs/development/python-modules/astroid/1.6.nix b/nixpkgs/pkgs/development/python-modules/astroid/1.6.nix
deleted file mode 100644
index 47c7e8f6eb3f..000000000000
--- a/nixpkgs/pkgs/development/python-modules/astroid/1.6.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ lib, fetchPypi, buildPythonPackage
-, lazy-object-proxy, six, wrapt, enum34, singledispatch, backports_functools_lru_cache
-, pytest
-}:
-
-buildPythonPackage rec {
-  pname = "astroid";
-  version = "1.6.6";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "d25869fc7f44f1d9fb7d24fd7ea0639656f5355fc3089cd1f3d18c6ec6b124c7";
-  };
-
-  # From astroid/__pkginfo__.py
-  propagatedBuildInputs = [
-    lazy-object-proxy
-    six
-    wrapt
-    enum34
-    singledispatch
-    backports_functools_lru_cache
-  ];
-
-  checkInputs = [ pytest ];
-
-  checkPhase = ''
-    # test_builtin_help is broken
-    pytest -k "not test_builtin_help and not test_namespace_and_file_mismatch and not test_namespace_package_pth_support and not test_nested_namespace_import" astroid
-  '';
-
-  meta = with lib; {
-    description = "An abstract syntax tree for Python with inference support";
-    homepage = "https://github.com/PyCQA/astroid";
-    license = licenses.lgpl2;
-    platforms = platforms.all;
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/astroid/default.nix b/nixpkgs/pkgs/development/python-modules/astroid/default.nix
index a4694663bb6b..101f84b4fcea 100644
--- a/nixpkgs/pkgs/development/python-modules/astroid/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/astroid/default.nix
@@ -5,6 +5,7 @@
 , isPyPy
 , lazy-object-proxy
 , wrapt
+, typing-extensions
 , typed-ast
 , pytestCheckHook
 , setuptools-scm
@@ -13,33 +14,39 @@
 
 buildPythonPackage rec {
   pname = "astroid";
-  version = "2.7.3"; # Check whether the version is compatible with pylint
+  version = "2.9.0"; # Check whether the version is compatible with pylint
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.6.2";
 
   src = fetchFromGitHub {
     owner = "PyCQA";
     repo = pname;
     rev = "v${version}";
-    sha256 = "08qxw58cdyglkni6ahyil4cmnb48zz0wr4v05gzqk4r5ifs4gl2m";
+    sha256 = "sha256-sImWiWULZ1HS3JyQHfEhc4ZRZ6anOUTqZZGNIYj2MaY=";
   };
 
-  SETUPTOOLS_SCM_PRETEND_VERSION=version;
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
 
   nativeBuildInputs = [
     setuptools-scm
   ];
 
-  # From astroid/__pkginfo__.py
   propagatedBuildInputs = [
     lazy-object-proxy
     wrapt
+  ] ++ lib.optionals (pythonOlder "3.10") [
+    typing-extensions
   ] ++ lib.optional (!isPyPy && pythonOlder "3.8") typed-ast;
 
   checkInputs = [
     pytestCheckHook
   ];
 
+  disabledTests = [
+    # assert (1, 1) == (1, 16)
+    "test_end_lineno_string"
+  ];
+
   passthru.tests = {
     inherit pylint;
   };
diff --git a/nixpkgs/pkgs/development/python-modules/astropy/default.nix b/nixpkgs/pkgs/development/python-modules/astropy/default.nix
index 06cfafc134f3..889c69d5313b 100644
--- a/nixpkgs/pkgs/development/python-modules/astropy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/astropy/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "astropy";
-  version = "4.2";
+  version = "4.3.1";
   format = "pyproject";
 
   disabled = !isPy3k; # according to setup.py
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2c194f8a429b8399de64a413a06881ea49f0525cabaa2d78fc132b9e970adc6a";
+    sha256 = "sha256-LTlRIjtOt/No/K2Mg0DSc3TF2OO2NaY2J1rNs481zVE=";
   };
 
   nativeBuildInputs = [ setuptools-scm astropy-helpers astropy-extension-helpers cython jinja2 ];
diff --git a/nixpkgs/pkgs/development/python-modules/async-upnp-client/default.nix b/nixpkgs/pkgs/development/python-modules/async-upnp-client/default.nix
index a921948bcfe6..3f09521e34f2 100644
--- a/nixpkgs/pkgs/development/python-modules/async-upnp-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/async-upnp-client/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "async-upnp-client";
-  version = "0.22.8";
+  version = "0.23.1";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "StevenLooman";
     repo = "async_upnp_client";
     rev = version;
-    sha256 = "sha256-0McLH5iNiA6aIyk6OaN57JAs97R+/4M7xaUDmh+xV6c=";
+    sha256 = "sha256-m8oTqGbsJ99ImtnSlL4LX1qR0bUhGtVPPWmjsZfV6sE=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/async_stagger/default.nix b/nixpkgs/pkgs/development/python-modules/async_stagger/default.nix
index bb57a7f1ecf3..3dafd2b21941 100644
--- a/nixpkgs/pkgs/development/python-modules/async_stagger/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/async_stagger/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , pythonOlder
 , pytestCheckHook
 , pytest-asyncio
@@ -11,6 +10,8 @@
 buildPythonPackage rec {
   pname = "async_stagger";
   version = "0.3.1";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
@@ -24,7 +25,14 @@ buildPythonPackage rec {
     pytest-mock
   ];
 
-  pythonImportsCheck = [ "async_stagger" ];
+  disabledTests = [
+    # RuntimeError: Logic bug in...
+    "test_stagger_coro_gen"
+  ];
+
+  pythonImportsCheck = [
+    "async_stagger"
+  ];
 
   meta = with lib; {
     description = "Happy Eyeballs connection algorithm and underlying scheduling logic in asyncio";
diff --git a/nixpkgs/pkgs/development/python-modules/async_timeout/default.nix b/nixpkgs/pkgs/development/python-modules/async_timeout/default.nix
index a1dbb521ce3d..ae8bacc94415 100644
--- a/nixpkgs/pkgs/development/python-modules/async_timeout/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/async_timeout/default.nix
@@ -2,22 +2,27 @@
 , fetchPypi
 , buildPythonPackage
 , pythonOlder
+, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "async-timeout";
-  version = "3.0.1";
+  version = "4.0.1";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f";
+    sha256 = "sha256-uTDLFho5BC+SIvbvtzATmch+6rOUcn7FQ3kko21u71E=";
   };
 
+  propagatedBuildInputs = [
+    typing-extensions
+  ];
+
   # Circular dependency on aiohttp
   doCheck = false;
 
-  disabled = pythonOlder "3.4";
-
   meta = {
     description = "Timeout context manager for asyncio programs";
     homepage = "https://github.com/aio-libs/async_timeout/";
diff --git a/nixpkgs/pkgs/development/python-modules/asyncio-dgram/default.nix b/nixpkgs/pkgs/development/python-modules/asyncio-dgram/default.nix
index b06af4d2bbe0..324e4ec823a3 100644
--- a/nixpkgs/pkgs/development/python-modules/asyncio-dgram/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/asyncio-dgram/default.nix
@@ -1,33 +1,41 @@
-{ stdenv
-, lib
+{ lib
+, stdenv
 , buildPythonPackage
 , fetchFromGitHub
-, pytestCheckHook
 , pytest-asyncio
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "asyncio-dgram";
-  version = "2.1.0";
+  version = "2.1.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "jsbronder";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1ibyphncb3d8vrs3yk8j6l1smmnibizx9k1vir2njhi09r57h9mx";
+    sha256 = "sha256-3K9VpX6JWCgz+Lx+5ZKqXG53B/uJCtI0x4pHy2pJdZg=";
   };
 
-  # OSError: AF_UNIX path too long
-  doCheck = !stdenv.isDarwin;
-
   checkInputs = [
-    pytestCheckHook
     pytest-asyncio
+    pytestCheckHook
   ];
 
-  disabledTests = [ "test_protocol_pause_resume" ];
+  # OSError: AF_UNIX path too long
+  doCheck = !stdenv.isDarwin;
+
+  disabledTests = [
+    "test_protocol_pause_resume"
+  ];
 
-  pythonImportsCheck = [ "asyncio_dgram" ];
+  pythonImportsCheck = [
+    "asyncio_dgram"
+  ];
 
   meta = with lib; {
     description = "Python support for higher level Datagram";
diff --git a/nixpkgs/pkgs/development/python-modules/asyncio-nats-client/default.nix b/nixpkgs/pkgs/development/python-modules/asyncio-nats-client/default.nix
index a7feac7312f5..46dbcdbacd5e 100644
--- a/nixpkgs/pkgs/development/python-modules/asyncio-nats-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/asyncio-nats-client/default.nix
@@ -5,18 +5,19 @@
 , nats-server
 , pytestCheckHook
 , pythonOlder
+, uvloop
 }:
 
 buildPythonPackage rec {
   pname = "asyncio-nats-client";
-  version = "0.11.4";
+  version = "0.11.5";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "nats-io";
     repo = "nats.py";
     rev = "v${version}";
-    sha256 = "1aj57xi2rj1xswq8air13xdsll1ybpi0nmz5f6jq01azm0zy9xyd";
+    sha256 = "0zwiijaswmfdk71diqmdpb6nx54fmgi8hy0vwx2m3ihhsyjxj82h";
   };
 
   propagatedBuildInputs = [
@@ -26,6 +27,7 @@ buildPythonPackage rec {
   checkInputs = [
     nats-server
     pytestCheckHook
+    uvloop
   ];
 
   postPatch = ''
@@ -37,6 +39,8 @@ buildPythonPackage rec {
     # RuntimeError: Event loop is closed
     "test_subscribe_no_echo"
     "test_reconnect_to_new_server_with_auth"
+    "test_drain_connection"
+    "test_discover_servers_on_first_connect"
   ];
 
   pythonImportsCheck = [ "nats.aio" ];
diff --git a/nixpkgs/pkgs/development/python-modules/asyncio-rlock/default.nix b/nixpkgs/pkgs/development/python-modules/asyncio-rlock/default.nix
new file mode 100644
index 000000000000..5ad616180cee
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/asyncio-rlock/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "asyncio-rlock";
+  version = "0.1.0";
+
+  src = fetchPypi {
+    pname = "asyncio_rlock";
+    inherit version;
+    sha256 = "7e29824331619873e10d5d99dcc46d7b8f196c4a11b203f4eeccc0c091039d43";
+  };
+
+  # no tests on PyPI, no tags on GitLab
+  doCheck = false;
+
+  pythonImportsCheck = [ "asyncio_rlock" ];
+
+  meta = with lib; {
+    description = "Rlock like in threading module but for asyncio";
+    homepage = "https://gitlab.com/heckad/asyncio_rlock";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/asyncio_mqtt/default.nix b/nixpkgs/pkgs/development/python-modules/asyncio_mqtt/default.nix
index d8a378b082fc..fd8a52f5a6ae 100644
--- a/nixpkgs/pkgs/development/python-modules/asyncio_mqtt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/asyncio_mqtt/default.nix
@@ -4,21 +4,24 @@
 , fetchPypi
 , async_generator
 , paho-mqtt
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
-  pname = "asyncio_mqtt";
-  version = "0.10.0";
+  pname = "asyncio-mqtt";
+  version = "0.11.0";
+  format = "setuptools";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "0s94dvgh1fazycppki5m6f9d60hc4ykhqfznlzpwl4dzknxplpsz";
+    pname = "asyncio_mqtt";
+    inherit version;
+    sha256 = "sha256-uJown3bNA+pLJlorJcCjpMMFosX94gt/2tLAjIkuXLA=";
   };
 
   propagatedBuildInputs = [
     paho-mqtt
-  ] ++ lib.optional (pythonOlder "3.7") async_generator;
+  ] ++ lib.optional (pythonOlder "3.7") [
+    async_generator
+  ];
 
   doCheck = false; # no tests
 
diff --git a/nixpkgs/pkgs/development/python-modules/asyncmy/default.nix b/nixpkgs/pkgs/development/python-modules/asyncmy/default.nix
new file mode 100644
index 000000000000..4d4eaaacaad7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/asyncmy/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, cython
+, fetchFromGitHub
+, poetry-core
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "asyncmy";
+  version = "0.2.3";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "long2ice";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "ys9RYaosc4noJsWYsVo9+6W7JaG4r6lsz6UH4o08q4A=";
+  };
+
+  nativeBuildInputs = [
+    cython
+    poetry-core
+  ];
+
+  # Not running tests as aiomysql is missing support for
+  # pymysql>=0.9.3
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "asyncmy"
+  ];
+
+  meta = with lib; {
+    description = "Python module to interact with MySQL/mariaDB";
+    homepage = "https://github.com/long2ice/asyncmy";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/asyncpg/default.nix b/nixpkgs/pkgs/development/python-modules/asyncpg/default.nix
index 9c9e2d623dc4..7ae4cb1b7898 100644
--- a/nixpkgs/pkgs/development/python-modules/asyncpg/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/asyncpg/default.nix
@@ -3,12 +3,12 @@
 
 buildPythonPackage rec {
   pname = "asyncpg";
-  version = "0.24.0";
+  version = "0.25.0";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-3S+gY8M0SCNIfZ3cy0CALwJiLd+L+KbMU4he56LBwMY=";
+    sha256 = "63f8e6a69733b285497c2855464a34de657f2cccd25aeaeeb5071872e9382540";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/asyncssh/default.nix b/nixpkgs/pkgs/development/python-modules/asyncssh/default.nix
index 4c2fd7e6c64b..7cdfbb66b26b 100644
--- a/nixpkgs/pkgs/development/python-modules/asyncssh/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/asyncssh/default.nix
@@ -18,12 +18,14 @@
 
 buildPythonPackage rec {
   pname = "asyncssh";
-  version = "2.7.1";
+  version = "2.8.1";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8c8852eb00a09e45c403086e10965cb6d13e5cd203a1688d91e9c81aa080d052";
+    sha256 = "0648eba58d72653755f28e26c9bd83147d9652c1f2f5e87fbf5a87d7f8fbf83a";
   };
 
   propagatedBuildInputs = [
@@ -62,9 +64,13 @@ buildPythonPackage rec {
   disabledTests = [
     # No PIN set
     "TestSKAuthCTAP2"
+    # Requires network access
+    "test_connect_timeout_exceeded"
   ];
 
-  pythonImportsCheck = [ "asyncssh" ];
+  pythonImportsCheck = [
+    "asyncssh"
+  ];
 
   meta = with lib; {
     description = "Asynchronous SSHv2 Python client and server library";
diff --git a/nixpkgs/pkgs/development/python-modules/atom/default.nix b/nixpkgs/pkgs/development/python-modules/atom/default.nix
index cb9503fe6e9c..80e29932ee2d 100644
--- a/nixpkgs/pkgs/development/python-modules/atom/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/atom/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "atom";
-  version = "0.6.0";
+  version = "0.7.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "df65a654744ccdc4843ce09c38612fd8f702c84be501b1d955c3ac0b9ad28dc5";
+    sha256 = "4055fbdeeb692d3d52c6e3c628d7513fc71f147920cac7d0da05b6dbb5ec8c8d";
   };
 
   buildInputs = [ cppy ];
diff --git a/nixpkgs/pkgs/development/python-modules/atomman/default.nix b/nixpkgs/pkgs/development/python-modules/atomman/default.nix
index b576504588aa..7f5b08fd4fe3 100644
--- a/nixpkgs/pkgs/development/python-modules/atomman/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/atomman/default.nix
@@ -1,39 +1,66 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy27
+{ lib
+, buildPythonPackage
 , cython
 , datamodeldict
+, fetchFromGitHub
 , matplotlib
 , numericalunits
 , numpy
 , pandas
+, potentials
 , pytest
+, pythonOlder
 , scipy
 , toolz
 , xmltodict
+, python
 }:
 
 buildPythonPackage rec {
-  version = "1.3.0";
+  version = "1.4.3";
   pname = "atomman";
-  disabled = isPy27;
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "usnistgov";
-    repo  = "atomman";
+    repo = "atomman";
     rev = "v${version}";
-    sha256 = "09pfykd96wmw00s3kgabghykjn8b4yjml4ybpi7kwy7ygdmzcx51";
+    sha256 = "sha256-is47O59Pjrh9tPC1Y2+DVVcHbxmcjUOFOVGnNHuURoM=";
   };
 
-  checkInputs = [ pytest ];
-  propagatedBuildInputs = [ xmltodict datamodeldict numpy matplotlib scipy pandas cython numericalunits toolz ];
+  propagatedBuildInputs = [
+    cython
+    datamodeldict
+    matplotlib
+    numericalunits
+    numpy
+    pandas
+    potentials
+    scipy
+    toolz
+    xmltodict
+  ];
+
+  checkInputs = [
+    pytest
+  ];
 
   checkPhase = ''
-    py.test tests -k 'not test_atomic'
+    # pytestCheckHook doesn't work
+    py.test tests -k "not test_rootdir and not test_version \
+      and not test_atomic_mass and not imageflags"
   '';
 
+  pythonImportsCheck = [
+    "atomman"
+  ];
+
   meta = with lib; {
-    homepage = "https://github.com/usnistgov/atomman/";
     description = "Atomistic Manipulation Toolkit";
+    homepage = "https://github.com/usnistgov/atomman/";
     license = licenses.mit;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/atpublic/default.nix b/nixpkgs/pkgs/development/python-modules/atpublic/default.nix
index 4d96bcbe26b5..8bf81556770a 100644
--- a/nixpkgs/pkgs/development/python-modules/atpublic/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/atpublic/default.nix
@@ -1,6 +1,8 @@
-{ lib, isPy3k, pythonOlder, fetchPypi, buildPythonPackage
-, pytest
-, pytest-cov
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, pythonOlder
 , sybil
 , typing-extensions
 }:
@@ -8,7 +10,9 @@
 buildPythonPackage rec {
   pname = "atpublic";
   version = "2.3";
-  disabled = !isPy3k;
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
@@ -20,25 +24,25 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    pytest pytest-cov sybil
+    pytestCheckHook
+    sybil
   ];
 
-  checkPhase = ''
-    pytest
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "--cov=public" ""
   '';
 
+  pythonImportsCheck = [
+    "public"
+  ];
+
   meta = with lib; {
-    homepage = "https://public.readthedocs.io/en/latest/";
-    description = "A decorator and function which populates a module's __all__ and globals";
+    description = "Python decorator and function which populates a module's __all__ and globals";
+    homepage = "https://public.readthedocs.io/";
     longDescription = ''
       This is a very simple decorator and function which populates a module's
       __all__ and optionally the module globals.
-
-      This provides both a pure-Python implementation and a C implementation. It is
-      proposed that the C implementation be added to builtins_ for Python 3.6.
-
-      This proposal seems to have been rejected, for more information see
-      https://bugs.python.org/issue26632.
     '';
     license = licenses.asl20;
     maintainers = with maintainers; [ eadwu ];
diff --git a/nixpkgs/pkgs/development/python-modules/aubio/default.nix b/nixpkgs/pkgs/development/python-modules/aubio/default.nix
index 4616e1b6ed3f..ad78b6c63fc8 100644
--- a/nixpkgs/pkgs/development/python-modules/aubio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aubio/default.nix
@@ -3,6 +3,8 @@
 , fetchFromGitHub
 , numpy
 , pytestCheckHook
+, stdenv
+, darwin
 }:
 
 buildPythonPackage rec {
@@ -16,6 +18,8 @@ buildPythonPackage rec {
     sha256 = "0fhxikvlr010nbh02g455d5y8bq6j5yw180cdh4gsd0hb43y3z26";
   };
 
+  buildInputs = lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ Accelerate AudioToolbox CoreVideo CoreGraphics ]);
+
   propagatedBuildInputs = [
     numpy
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/audiotools/default.nix b/nixpkgs/pkgs/development/python-modules/audiotools/default.nix
index 1ad216082749..d008498117b6 100644
--- a/nixpkgs/pkgs/development/python-modules/audiotools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/audiotools/default.nix
@@ -1,28 +1,33 @@
 { lib
 , buildPythonPackage
-, fetchurl
+, fetchFromGitHub
 , stdenv
-, darwin
+, AudioToolbox
+, AudioUnit
+, CoreServices
 }:
 
 buildPythonPackage rec {
   pname = "audiotools";
   version = "3.1.1";
 
-  buildInputs = lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
+  buildInputs = lib.optionals stdenv.isDarwin [
     AudioToolbox
     AudioUnit
     CoreServices
-  ]);
+  ];
 
-  src = fetchurl {
-    url = "https://github.com/tuffy/python-audio-tools/archive/v${version}.tar.gz";
-    sha256 = "0ymlxvqkqhzk4q088qwir3dq0zgwqlrrdfnq7f0iq97g05qshm2c";
+  src = fetchFromGitHub {
+    owner = "tuffy";
+    repo = "python-audio-tools";
+    rev = "v${version}";
+    sha256 = "sha256-y+EiK9BktyTWowOiJvOb2YjtbPa7R62Wb5zinkyt1OM=";
   };
 
-  meta = {
+  meta = with lib; {
     description = "Utilities and Python modules for handling audio";
     homepage = "http://audiotools.sourceforge.net/";
-    license = lib.licenses.gpl2Plus;
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/authcaptureproxy/default.nix b/nixpkgs/pkgs/development/python-modules/authcaptureproxy/default.nix
index c03b423932df..73422a0624c8 100644
--- a/nixpkgs/pkgs/development/python-modules/authcaptureproxy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/authcaptureproxy/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "authcaptureproxy";
-  version = "1.0.2";
+  version = "1.1.1";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "alandtse";
     repo = "auth_capture_proxy";
     rev = "v${version}";
-    sha256 = "1cg63qhf823nf785kyl96r7vyxfl6dlbwsmhcpny8vb65pl9gng5";
+    sha256 = "08zpaclg5f9g1pix0jaq42i2ph12xc8djjrmhxz0yygw5rsilgl4";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/authheaders/default.nix b/nixpkgs/pkgs/development/python-modules/authheaders/default.nix
index a1d049ebb151..8593f7f4d742 100644
--- a/nixpkgs/pkgs/development/python-modules/authheaders/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/authheaders/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "authheaders";
-  version = "0.13.0";
+  version = "0.14.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "935726b784cc636cbcfed2c977f1a6887dc60056806da4eff60db932c5896692";
+    sha256 = "4e601b5b54080019a2f548fadf80ddf9c5538615607c7fb602936404aafe67e2";
   };
 
   propagatedBuildInputs = [ authres dnspython dkimpy publicsuffix2 ]
diff --git a/nixpkgs/pkgs/development/python-modules/autobahn/default.nix b/nixpkgs/pkgs/development/python-modules/autobahn/default.nix
index 52def3d6ee17..a088a0120103 100644
--- a/nixpkgs/pkgs/development/python-modules/autobahn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/autobahn/default.nix
@@ -1,6 +1,5 @@
 { lib
 , argon2_cffi
-, attrs
 , buildPythonPackage
 , cbor
 , cbor2
@@ -24,12 +23,14 @@
 
 buildPythonPackage rec {
   pname = "autobahn";
-  version = "21.3.1";
+  version = "21.11.1";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "00wf9dkfgakg80gy62prg650lb8zz9y9fdlxwxcznwp8hgsw29p1";
+    sha256 = "sha256-vW9GMVQZygpb5BCfc3QQIIrV8ZcY9nympKZ0zGbKmxg=";
   };
 
   propagatedBuildInputs = [
@@ -65,9 +66,13 @@ buildPythonPackage rec {
     export USE_ASYNCIO=1
   '';
 
-  pytestFlagsArray = [ "--pyargs autobahn" ];
+  pytestFlagsArray = [
+    "--pyargs autobahn"
+  ];
 
-  pythonImportsCheck = [ "autobahn" ];
+  pythonImportsCheck = [
+    "autobahn"
+  ];
 
   meta = with lib; {
     description = "WebSocket and WAMP in Python for Twisted and asyncio";
diff --git a/nixpkgs/pkgs/development/python-modules/autoit-ripper/default.nix b/nixpkgs/pkgs/development/python-modules/autoit-ripper/default.nix
index 2276241d25e9..420322a32340 100644
--- a/nixpkgs/pkgs/development/python-modules/autoit-ripper/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/autoit-ripper/default.nix
@@ -1,31 +1,37 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, lief
+, pefile
 , pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "autoit-ripper";
-  version = "1.0.1";
-  disabled = pythonOlder "3.6";
+  version = "1.1.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0mbsrfa72n7y1vkm9jhwhn1z3k45jxrlgx58ia1l2bp6chnnn2zy";
+    sha256 = "sha256-fluG/2XlUh3kPtYtSotrP02c7kdmem92Hy1R93SaTzk=";
   };
 
   propagatedBuildInputs = [
-    lief
+    pefile
   ];
 
   postPatch = ''
-    substituteInPlace requirements.txt --replace "lief==0.10.1" "lief>=0.10.1"
+    substituteInPlace requirements.txt \
+      --replace "pefile==2019.4.18" "pefile>=2019.4.18"
   '';
 
   # Project has no tests
   doCheck = false;
-  pythonImportsCheck = [ "autoit_ripper" ];
+
+  pythonImportsCheck = [
+    "autoit_ripper"
+  ];
 
   meta = with lib; {
     description = "Python module to extract AutoIt scripts embedded in PE binaries";
diff --git a/nixpkgs/pkgs/development/python-modules/automate-home/default.nix b/nixpkgs/pkgs/development/python-modules/automate-home/default.nix
new file mode 100644
index 000000000000..bd2816f6d345
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/automate-home/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, pythonOlder
+, APScheduler
+, hiredis
+, aioredis
+, ephem
+, pytz
+, pyyaml
+}:
+
+buildPythonPackage rec {
+  pname = "automate-home";
+  version = "0.9.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-41qd+KPSrOrczkovwXht3irbcYlYehBZ1HZ44yZe4cM=";
+  };
+
+  propagatedBuildInputs = [
+    APScheduler
+    hiredis
+    aioredis
+    ephem
+    pytz
+    pyyaml
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    # Rename pyephem, https://github.com/majamassarini/automate-home/pull/3
+    substituteInPlace setup.py \
+      --replace "pyephem" "ephem" \
+      --replace "aioredis==1.3.1" "aioredis"
+  '';
+
+  pythonImportsCheck = [
+    "home"
+  ];
+
+  meta = with lib; {
+    description = "Python module to automate (home) devices";
+    homepage = "https://github.com/majamassarini/automate-home";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/autopep8/default.nix b/nixpkgs/pkgs/development/python-modules/autopep8/default.nix
index 737989ac3183..80c57ef732c2 100644
--- a/nixpkgs/pkgs/development/python-modules/autopep8/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/autopep8/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "autopep8";
-  version = "1.5.7";
+  version = "1.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "276ced7e9e3cb22e5d7c14748384a5cf5d9002257c0ed50c0e075b68011bb6d0";
+    sha256 = "44f0932855039d2c15c4510d6df665e4730f2b8582704fa48f9c55bd3e17d979";
   };
 
   propagatedBuildInputs = [ pycodestyle toml ];
diff --git a/nixpkgs/pkgs/development/python-modules/av/default.nix b/nixpkgs/pkgs/development/python-modules/av/default.nix
index bf21025e8622..c79dc8b3fcb1 100644
--- a/nixpkgs/pkgs/development/python-modules/av/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/av/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "av";
-  version = "8.0.3";
+  version = "8.1.0";
   disabled = isPy27; # setup.py no longer compatible
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "521814309c91d526b6b5c9517018aef2dd12bc3d86351037db69aa67730692b8";
+    sha256 = "0402169bc27e38e0f44e0e0e1854cf488337e86206b6d25d6dae2bfd7a1a0230";
   };
 
   checkInputs = [ numpy ];
diff --git a/nixpkgs/pkgs/development/python-modules/avro/default.nix b/nixpkgs/pkgs/development/python-modules/avro/default.nix
index 4c1fb77dc69b..d69f009aaf4c 100644
--- a/nixpkgs/pkgs/development/python-modules/avro/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/avro/default.nix
@@ -1,30 +1,44 @@
-{ lib, buildPythonPackage, isPy3k, fetchPypi, pycodestyle, isort }:
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, typing-extensions
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "avro";
-  version = "1.10.2";
+  version = "1.11.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "381b990cc4c4444743c3297348ffd46e0c3a5d7a17e15b2f4a9042f6e955c31a";
+    sha256 = "1206365cc30ad561493f735329857dd078533459cee4e928aec2505f341ce445";
   };
 
-  patchPhase = ''
-    # this test requires network access
-    sed -i 's/test_server_with_path/noop/' avro/test/test_ipc.py
-  '' + (lib.optionalString isPy3k ''
-    # these files require twisted, which is not python3 compatible
-    rm avro/txipc.py
-    rm avro/test/txsample*
-  '');
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
+    typing-extensions
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Requires network access
+    "test_server_with_path"
+  ];
 
-  nativeBuildInputs = [ pycodestyle ];
-  propagatedBuildInputs = [ isort ];
+  pythonImportsCheck = [
+    "avro"
+  ];
 
   meta = with lib; {
-    description = "A serialization and RPC framework";
-    homepage = "https://pypi.python.org/pypi/avro/";
+    description = "Python serialization and RPC framework";
+    homepage = "https://github.com/apache/avro";
     license = licenses.asl20;
-    maintainers = [ maintainers.zimbatm ];
+    maintainers = with maintainers; [ zimbatm ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/awesomeversion/default.nix b/nixpkgs/pkgs/development/python-modules/awesomeversion/default.nix
index b5b59ef65508..f99407030cdd 100644
--- a/nixpkgs/pkgs/development/python-modules/awesomeversion/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/awesomeversion/default.nix
@@ -3,32 +3,35 @@
 , fetchFromGitHub
 , pytestCheckHook
 , pythonOlder
-, requests
 }:
 
 buildPythonPackage rec {
   pname = "awesomeversion";
-  version = "21.8.1";
+  version = "21.11.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "ludeeus";
     repo = pname;
     rev = version;
-    sha256 = "sha256-eyo0dzmExJ7WCRAXFvB+ElWi5HTTzJ7XJsmxB2t6yfI=";
+    sha256 = "sha256-qxN5AdLlzadG0/raeAyJ/37PLgYLndl1JQSVkgdLv/4=";
   };
 
   postPatch = ''
-    substituteInPlace setup.py --replace "main" ${version}
+    # Upstream doesn't set a version
+    substituteInPlace setup.py \
+      --replace "main" ${version}
   '';
 
-  propagatedBuildInputs = [ requests ];
-
   checkInputs = [
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "awesomeversion" ];
+  pythonImportsCheck = [
+    "awesomeversion"
+  ];
 
   meta = with lib; {
     description = "Python module to deal with versions";
diff --git a/nixpkgs/pkgs/development/python-modules/awkward/default.nix b/nixpkgs/pkgs/development/python-modules/awkward/default.nix
index c60122ff1802..f1152da2d1d4 100644
--- a/nixpkgs/pkgs/development/python-modules/awkward/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/awkward/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "awkward";
-  version = "1.5.1";
+  version = "1.7.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c0357c62223fefcfc7a7565389dbd4db900623bf10eccf2bc8e87586ec59b38d";
+    sha256 = "e4e642dfe496d2acb245c90e37dc18028e25d5e936421e7371ea6ba0fde6435a";
   };
 
   nativeBuildInputs = [ cmake ];
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 c967e6b7b468..b127ad2410e5 100644
--- a/nixpkgs/pkgs/development/python-modules/aws-lambda-builders/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aws-lambda-builders/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "aws-lambda-builders";
-  version = "1.6.0";
+  version = "1.10.0";
 
   # No tests available in PyPI tarball
   src = fetchFromGitHub {
     owner = "awslabs";
     repo = "aws-lambda-builders";
     rev = "v${version}";
-    sha256 = "sha256-H25Y1gusV+sSX0f6ii49bE36CgM1E3oWsX8AiVH85Y4=";
+    sha256 = "0nrqxgl24c6lknxhmmf7vkhvdy54dhnr9qcm1r1gwxzdsymq2l54";
   };
 
   # Package is not compatible with Python 3.5
diff --git a/nixpkgs/pkgs/development/python-modules/aws-sam-translator/default.nix b/nixpkgs/pkgs/development/python-modules/aws-sam-translator/default.nix
index 8bf823e83f0a..4ca5df17109f 100644
--- a/nixpkgs/pkgs/development/python-modules/aws-sam-translator/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aws-sam-translator/default.nix
@@ -14,13 +14,13 @@
 
 buildPythonPackage rec {
   pname = "aws-sam-translator";
-  version = "1.38.0";
+  version = "1.42.0";
 
   src = fetchFromGitHub {
     owner = "aws";
     repo = "serverless-application-model";
     rev = "v${version}";
-    sha256 = "0nn9jfqz13kzmxm0r9vy24p8sqxv3mrm5d3lx7ah6rc581q8nv1k";
+    sha256 = "sha256-pjcRsmxPL4lbgDopW+wKQRkRcqebLPTd95JTL8PiWtc=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/awscrt/default.nix b/nixpkgs/pkgs/development/python-modules/awscrt/default.nix
index 4b48d74c43f7..e3125343dffa 100644
--- a/nixpkgs/pkgs/development/python-modules/awscrt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/awscrt/default.nix
@@ -2,7 +2,7 @@
 
 buildPythonPackage rec {
   pname = "awscrt";
-  version = "0.12.4";
+  version = "0.12.6";
 
   buildInputs = lib.optionals stdenv.isDarwin [ CoreFoundation Security ];
 
@@ -22,7 +22,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6ad69336bc5277f501bd7e33f82e11db2665370c7d279496ee39fe2f369baeb2";
+    sha256 = "65d71b4cd78165bea962dfbda361b47b9b5a6198d8074046b8667da9653d0752";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/azure-appconfiguration/default.nix b/nixpkgs/pkgs/development/python-modules/azure-appconfiguration/default.nix
index 3dcff8076bc5..ee7f9fd44ff4 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-appconfiguration/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-appconfiguration/default.nix
@@ -1,16 +1,15 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, azure-core
+{ lib, buildPythonPackage, fetchPypi, azure-core
 , msrest
 }:
 
 buildPythonPackage rec {
   pname = "azure-appconfiguration";
-  version = "1.2.0";
+  version = "1.3.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "85c9c25612f160897ae212532ec7c19c94b0f4463f4830d0ee08cb2d296df407";
+    sha256 = "9372467c74930d20827135d468b7fcaa1ad42e4673a4591ceadbb6ad8e1b7e07";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-core/default.nix b/nixpkgs/pkgs/development/python-modules/azure-core/default.nix
index cd0a816815cd..b4dc461ea88c 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-core/default.nix
@@ -15,14 +15,14 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.17.0";
+  version = "1.20.1";
   pname = "azure-core";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "25407390dde142d3e41ecf78bb18cedda9b7f7a0af558d082dec711c4a334f46";
+    sha256 = "21d06311c9c373e394ed9f9db035306773334a0181932e265889eca34d778d17";
   };
 
   propagatedBuildInputs = [
@@ -44,6 +44,11 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
+  # test server needs to be available
+  preCheck = ''
+    export PYTHONPATH=tests/testserver_tests/coretestserver:$PYTHONPATH
+  '';
+
   pytestFlagsArray = [ "tests/" ];
   # disable tests which touch network
   disabledTests = [ "aiohttp" "multipart_send" "response" "request" "timeout" ];
diff --git a/nixpkgs/pkgs/development/python-modules/azure-cosmos/default.nix b/nixpkgs/pkgs/development/python-modules/azure-cosmos/default.nix
index 47e6fb6f0394..9cbbd8e64b06 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-cosmos/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-cosmos/default.nix
@@ -1,6 +1,5 @@
 { buildPythonPackage
 , lib
-, python
 , fetchPypi
 , six
 , requests
diff --git a/nixpkgs/pkgs/development/python-modules/azure-eventgrid/default.nix b/nixpkgs/pkgs/development/python-modules/azure-eventgrid/default.nix
index e2736b88e4f5..a5e06a4f54f2 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-eventgrid/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-eventgrid/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "azure-eventgrid";
-  version = "4.5.0";
+  version = "4.7.1";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "41ce94305fd3c4e2534f7663fb1be79819fc7d59f2b20544593ea6c914839351";
+    sha256 = "b96afc0317c764c2c428512485305ec5748698081cb6bc70dcaa903b0ac04754";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-eventhub/default.nix b/nixpkgs/pkgs/development/python-modules/azure-eventhub/default.nix
index bf0a27bf1d2c..95910a66e82e 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-eventhub/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-eventhub/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "azure-eventhub";
-  version = "5.6.0";
+  version = "5.6.1";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "aa6d9e3e9b8b1a5ad211a828de867b85910720722577a4d51cd5aa6889d1d9e9";
+    sha256 = "sha256-ssjTesjPFITaB5Uy061podqL14ojeCIVm3LWsF3kY40=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-identity/default.nix b/nixpkgs/pkgs/development/python-modules/azure-identity/default.nix
index 9136ed0a4eb8..2013bc645450 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-identity/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-identity/default.nix
@@ -1,6 +1,5 @@
 { buildPythonPackage
 , fetchPypi
-, isPy38
 , lib
 
 # pythonPackages
@@ -17,12 +16,12 @@
 
 buildPythonPackage rec {
   pname = "azure-identity";
-  version = "1.7.0";
+  version = "1.7.1";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "3faaecb645e3b2300648a4a452458ec0e31e13d9dc928e710992e43ef4694205";
+    sha256 = "7f22cd0c7a9b92ed297dd67ae79d9bb9a866e404061c02cec709ad10c4c88e19";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-keyvault-certificates/default.nix b/nixpkgs/pkgs/development/python-modules/azure-keyvault-certificates/default.nix
index 52b1305998ec..f1a6c5359d6b 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-keyvault-certificates/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-keyvault-certificates/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , azure-common
 , azure-core
 , msrest
diff --git a/nixpkgs/pkgs/development/python-modules/azure-keyvault-keys/default.nix b/nixpkgs/pkgs/development/python-modules/azure-keyvault-keys/default.nix
index 27f97854dd37..59fcef4d4bf1 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-keyvault-keys/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-keyvault-keys/default.nix
@@ -2,7 +2,6 @@
 , aiohttp
 , azure-common
 , azure-core
-, azure-nspkg
 , cryptography
 , msrest
 , pytestCheckHook
diff --git a/nixpkgs/pkgs/development/python-modules/azure-keyvault/default.nix b/nixpkgs/pkgs/development/python-modules/azure-keyvault/default.nix
index f5b83df26640..8a4799c688b4 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-keyvault/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-keyvault/default.nix
@@ -21,10 +21,9 @@ buildPythonPackage rec {
     azure-keyvault-secrets
   ];
 
-  # this is just a meta package, which contains keys and secrets
+  # this is just a meta package, which contains keys and secrets packages
   doCheck = false;
-
-  pythonNamespaces = [ "azure" ];
+  doBuild = false;
 
   pythonImportsCheck = [
     "azure.keyvault.keys"
diff --git a/nixpkgs/pkgs/development/python-modules/azure-loganalytics/default.nix b/nixpkgs/pkgs/development/python-modules/azure-loganalytics/default.nix
index 1eed45d72f5a..ee3f0460fd7e 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-loganalytics/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-loganalytics/default.nix
@@ -1,20 +1,18 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrest
 , azure-common
 }:
 
 buildPythonPackage rec {
-  version = "0.1.0";
+  version = "0.1.1";
   pname = "azure-loganalytics";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "3ceb350def677a351f34b0a0d1637df6be0c6fe87ff32a5270b17f540f6da06e";
+    sha256 = "68ffb9a2206e06b9672100a8e6351cc04f75bb81867f30d416c68b55d624d793";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-authorization/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-authorization/default.nix
index a622c6a94c90..0489cb112b8e 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-authorization/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-authorization/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-authorization";
-  version = "1.0.0";
+  version = "2.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "9a9fc16866b46387853381ab4fa0f84c1765e0afea5b0124709ea9fae10ee752";
+    sha256 = "0776edc4980be940a8602eefc0372b4d1a1fa26caa46e3c0234e0c7a0feda4ec";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-billing/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-billing/default.nix
index 91ec3c069c8b..94b90e6b196d 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-billing/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-billing/default.nix
@@ -5,8 +5,6 @@
 , azure-common
 , azure-mgmt-core
 , azure-mgmt-nspkg
-, python
-, isPy3k
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix
index cb782c6e58e3..08b810f752d1 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-cognitiveservices";
-  version = "12.0.0";
+  version = "13.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "73054bd19866577e7e327518afc8f47e1639a11aea29a7466354b81804f4a676";
+    sha256 = "dc6116e8394d45312c7ad5a9098ce0dd2370bd92d43afd33d8b3bfab724fa498";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-commerce/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-commerce/default.nix
index 32e6cebd1f59..89aed74bbb3d 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-commerce/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-commerce/default.nix
@@ -5,8 +5,6 @@
 , azure-common
 , azure-mgmt-core
 , azure-mgmt-nspkg
-, python
-, isPy3k
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-consumption/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-consumption/default.nix
index be22e14b574b..aa942d3a732b 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-consumption/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-consumption/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrestazure
 , azure-common
 , azure-mgmt-core
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerinstance/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerinstance/default.nix
index 45158b8015d5..ae6d9755171e 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerinstance/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerinstance/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-containerinstance";
-  version = "9.0.0";
+  version = "9.1.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "041431c5a768ac652aac318a17f2a53b90db968494c79abbafec441d0be387ff";
+    sha256 = "22164b0c59138b37bc48ba6d476bf635152bc428dcb420b521a14b8c25c797ad";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix
index 92658dc60758..ddd05fa6a0fe 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix
@@ -6,13 +6,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "8.1.0";
+  version = "8.2.0";
   pname = "azure-mgmt-containerregistry";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "62efbb03275d920894d79879ad0ed59605163abd32177dcf24e90c1862ebccbd";
+    sha256 = "f2bcdbcf0b9fdc2df0df9eccb77cb489091d3c670ed53cba77e5ffd734e9539b";
     extension = "zip";
   };
 
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 69ca3c63391b..b9e75eca44c3 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-containerservice";
-  version = "16.3.0";
+  version = "16.4.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "87f06525c6cc47de86d7886ed35f04140ddaf1b0c59482ba578fdb3f5d143b1c";
+    sha256 = "23a8047668ebd1fa7c3c2445eba4e69c07675306e2a94ae6a3e455df162bd008";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-core/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-core/default.nix
index fe64cabb2567..6adca4c02c7a 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-core/default.nix
@@ -1,9 +1,7 @@
 { pkgs
 , buildPythonPackage
 , fetchPypi
-, python
 , azure-core
-, isPy3k
 }:
 
 buildPythonPackage rec {
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 c2c4e6328d5b..cb1d15179b2d 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-datafactory";
-  version = "2.0.0";
+  version = "2.1.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "df14272a1835f743d1889f901e972ed6ec9ea9d6f8966ba2865bf10306a621cc";
+    sha256 = "d2a3cfe844bd9e51499b81bba7510e2c8df4fc3a40a7059e6224ed043d65a786";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix
index 8fc8b44f3e6a..473ebda1b874 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-analytics/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrestazure
 , azure-common
 , azure-mgmt-datalake-nspkg
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix
index fc5d8ba6f018..18665f4dbb6e 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datalake-store/default.nix
@@ -1,9 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
-, pythonNamespacesHook
 , msrestazure
 , azure-common
 , azure-mgmt-datalake-nspkg
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix
index 6fd6b4a2a7ff..66945c67c6a3 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-datamigration/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , isPy3k
 , msrest
 , msrestazure
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix
index 820f737c5489..40ab2fbedcce 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-devtestlabs/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , isPy3k
 , msrest
 , msrestazure
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-dns/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-dns/default.nix
index 7daca780853a..515a8ab6026a 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-dns/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-dns/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrest
 , msrestazure
 , azure-common
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix
index c3ba311d4c49..2023eb0ab567 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-eventgrid";
-  version = "9.0.0";
+  version = "10.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "aecbb69ecb010126c03668ca7c9a2be8e965568f5b560f0e7b5bc152b157b510";
+    sha256 = "582e314ca05a9be0cd391c64689e6a5332d5bbad76c2ea751b727cfe99a2a3d2";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-eventhub/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-eventhub/default.nix
index 5bd45d3609e6..70103df64cfc 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-eventhub/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-eventhub/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-eventhub";
-  version = "9.0.0";
+  version = "10.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "181f72adf9287741ded8e386c8934a722d08399d781ce1c452f0482aac1f019b";
+    sha256 = "0856574ef4b73bbbc62834051061e2081400aba7e3715e10ef5181d639e86a0b";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix
index c7528dace274..6d226816082d 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-iotcentral";
-  version = "4.1.0";
+  version = "9.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "e6d4810f454c0d63a5e816eaa7e54a073a3f70b2256162ff1c234cfe91783ae6";
+    sha256 = "64df73df449a6f3717f3d0963e5869224ed3e6216c79de571493bea7c1b52cb6";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix
index 36a797a0e834..39f09b28241c 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , msrest
 , msrestazure
 , azure-common
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
index 98e4a0e849ad..e145ab520a45 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrest
 , msrestazure
 , azure-common
@@ -12,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-keyvault";
-  version = "9.1.0";
+  version = "9.3.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "cd35e81c4a3cf812ade4bdcf1f7ccf4b5b78a801ef967340012a6ac9fe61ded2";
+    sha256 = "54156422e618b686d52232a7989594b240bd18afd0fa381e12e4772ed4ab5ea8";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-loganalytics/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-loganalytics/default.nix
index 790e7cf86c1a..947bb4a28ba9 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-loganalytics/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-loganalytics/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-loganalytics";
-  version = "11.0.0";
+  version = "12.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "41671fc6e95180fb6147cb40567410c34b85fb69bb0a9b3e09feae1ff370ee9d";
+    sha256 = "da128a7e0291be7fa2063848df92a9180cf5c16d42adc09d2bc2efd711536bfb";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-maps/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-maps/default.nix
index 8a62fafaea13..d8be6d179383 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-maps/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-maps/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrest
 , msrestazure
 , azure-common
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-monitor/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-monitor/default.nix
index db4aa3fb77cf..fae47547cc74 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-monitor/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-monitor/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , isPy3k
 , msrest
 , msrestazure
@@ -12,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-monitor";
-  version = "2.0.0";
+  version = "3.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "e7f7943fe8f0efe98b3b1996cdec47c709765257a6e09e7940f7838a0f829e82";
+    sha256 = "91ddb7333bf2b9541a53864cc8d2501e3694a03a9c0e41cbfae3348558675ce6";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-msi/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-msi/default.nix
index 4bd0a493ddae..bf81b5e67c72 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-msi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-msi/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrest
 , msrestazure
 , azure-common
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-network/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-network/default.nix
index 20d3db5669a3..6da9e8e2e0b4 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-network/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-network/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , azure-common
-, azure-mgmt-common
 , azure-mgmt-core
 , msrest
 , msrestazure
@@ -10,14 +9,14 @@
 }:
 
 buildPythonPackage rec {
-  version = "19.1.0";
+  version = "19.3.0";
   pname = "azure-mgmt-network";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "62ef7fe8ba98e56412b434c9c35dc755b3c5e469f2c01bbed2ce0d12973a044b";
+    sha256 = "0b6a1ccdffd76e057ab16a6c319740a0ca68d59fedf7e9c02f2437396e72aa11";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix
index b3503e23d613..4a01c753a626 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-nspkg/default.nix
@@ -2,8 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , azure-nspkg
-, python
-, isPy3k
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservicesbackup/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservicesbackup/default.nix
index 3ebc199599bd..0d3a4bfb2b33 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservicesbackup/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-recoveryservicesbackup/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-recoveryservicesbackup";
-  version = "2.0.0";
+  version = "4.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "d3e60daefbc20a7fa381c7ad1498f4bf4bb5a1414c1c64188cc9d5c98c4e12ac";
+    sha256 = "a848ac1d99c935e61dfb91ca3e1577904a3eff5820fce179eb6937df8e1019ec";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-redhatopenshift/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-redhatopenshift/default.nix
index 1ba00e861735..f2f4587cc67e 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-redhatopenshift/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-redhatopenshift/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , msrest
 , msrestazure
 , azure-common
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-redis/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-redis/default.nix
index 79045a4b4ba8..c7890b55b04c 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-redis/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-redis/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-redis";
-  version = "13.0.0";
+  version = "13.1.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "283f776afe329472c20490b1f2c21c66895058cb06fb941eccda42cc247217f1";
+    sha256 = "ece913e5fc7f157e945809e557443f79ff7691cabca4bbc5ecb266352f843179";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-relay/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-relay/default.nix
index 71cdfe6e4c6f..a44825b55bd6 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-relay/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-relay/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrestazure
 , azure-common
 , azure-mgmt-core
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix
index 42cd78d285c2..c7ae3b1acb5e 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicefabric/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrest
 , msrestazure
 , azure-common
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicefabricmanagedclusters/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicefabricmanagedclusters/default.nix
index b79c73ab026c..55739e868e76 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicefabricmanagedclusters/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicefabricmanagedclusters/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 , msrest
 , msrestazure
 , azure-common
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicelinker/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicelinker/default.nix
new file mode 100644
index 000000000000..58d32853194b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-servicelinker/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-common
+, azure-mgmt-core
+, msrest
+}:
+
+buildPythonPackage rec {
+  pname = "azure-mgmt-servicelinker";
+  version = "1.0.0b1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "4f70d3bcd98ba539bfef870e3c497ebdc5efed3200c2627a61718baa9ab21a61";
+    extension = "zip";
+  };
+
+  propagatedBuildInputs = [
+    azure-common
+    azure-mgmt-core
+    msrest
+  ];
+
+  pythonImportsCheck = [ "azure.mgmt.servicelinker" ];
+
+  # no tests with sdist
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Microsoft Azure Servicelinker Management Client Library for Python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jonringer ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-signalr/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-signalr/default.nix
index d538549a9933..7abb6250ac61 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-signalr/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-signalr/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-signalr";
-  version = "0.4.0";
+  version = "1.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "6503ddda9d6f4b634dfeb8eb4bcd14ede5e0900585f6c83bf9010cf82215c126";
+    sha256 = "43fe90b5c5eb5aa00afcaf2895f1d4417f89ddb7f76bd61204e1253a6767ef7c";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-storage/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-storage/default.nix
index 3c47f7f0dad2..ed5b19bd80d6 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-storage/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-storage/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , azure-mgmt-common
 , azure-mgmt-core
 , isPy3k
diff --git a/nixpkgs/pkgs/development/python-modules/azure-mgmt-subscription/default.nix b/nixpkgs/pkgs/development/python-modules/azure-mgmt-subscription/default.nix
index d4238cc8204f..64dcf44345ef 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-mgmt-subscription/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-mgmt-subscription/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-subscription";
-  version = "1.0.0";
+  version = "2.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "22f606f298419f466a8149811fc762686c93da00a7dc15d3b7cdbf22b96cf5db";
+    sha256 = "70ec6e3395549c434bfd981f8f76cb8b6863339bad9b31924c1510af661dbf45";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-nspkg/default.nix b/nixpkgs/pkgs/development/python-modules/azure-nspkg/default.nix
index 25636053a6b3..f9c8e8d68c64 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-nspkg/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-nspkg/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
-, isPy3k
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/azure-servicebus/default.nix b/nixpkgs/pkgs/development/python-modules/azure-servicebus/default.nix
index 99ff8bbb4e68..bf474c031438 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-servicebus/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-servicebus/default.nix
@@ -1,29 +1,32 @@
 { lib
-, buildPythonPackage
-, fetchPypi
-, uamqp
 , azure-common
 , azure-core
-, msrestazure
+, buildPythonPackage
+, fetchPypi
 , futures ? null
+, isodate
 , isPy3k
+, msrestazure
+, uamqp
 }:
 
 buildPythonPackage rec {
   pname = "azure-servicebus";
-  version = "7.3.3";
+  version = "7.4.0";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "1c2133909a086bd4329135d6affcc05628e3a7da27afca584a0de8c21fc4e1ac";
+    sha256 = "sha256-nlt4wNHI613tK7JB85fBW2LE/FOa8+2aLeT6wzP1PQ4=";
   };
 
   propagatedBuildInputs = [
-    uamqp
     azure-common
     azure-core
+    isodate
     msrestazure
+    uamqp
   ] ++ lib.optionals (!isPy3k) [
     futures
   ];
@@ -32,7 +35,9 @@ buildPythonPackage rec {
   doCheck = false;
 
   # python2 will fail due to pep 420
-  pythonImportsCheck = lib.optionals isPy3k [ "azure.servicebus" ];
+  pythonImportsCheck = lib.optionals isPy3k [
+    "azure.servicebus"
+  ];
 
   meta = with lib; {
     description = "Microsoft Azure Service Bus Client Library";
diff --git a/nixpkgs/pkgs/development/python-modules/azure-storage-blob/default.nix b/nixpkgs/pkgs/development/python-modules/azure-storage-blob/default.nix
index fe36536dfe21..8d3bb5aca3e8 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-storage-blob/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-storage-blob/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-storage-blob";
-  version = "12.8.1";
+  version = "12.9.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "eb37b50ddfb6e558b29f6c8c03b0666514e55d6170bf4624e7261a3af93c6401";
+    sha256 = "cff66a115c73c90e496c8c8b3026898a3ce64100840276e9245434e28a864225";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-storage-file-share/default.nix b/nixpkgs/pkgs/development/python-modules/azure-storage-file-share/default.nix
index b6c639b6246b..421b46a9948f 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-storage-file-share/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-storage-file-share/default.nix
@@ -7,7 +7,6 @@
 , azure-core
 , cryptography
 , msrest
-, futures ? null
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/azure-storage/default.nix b/nixpkgs/pkgs/development/python-modules/azure-storage/default.nix
index 3bc6a7318665..af6652733bd5 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-storage/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-storage/default.nix
@@ -1,7 +1,6 @@
 { pkgs
 , buildPythonPackage
 , fetchPypi
-, python
 , azure-common
 , cryptography
 , futures ? null
diff --git a/nixpkgs/pkgs/development/python-modules/azure-synapse-artifacts/default.nix b/nixpkgs/pkgs/development/python-modules/azure-synapse-artifacts/default.nix
index f500e9068adb..4be6c43ba9ab 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-synapse-artifacts/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-synapse-artifacts/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "azure-synapse-artifacts";
-  version = "0.9.0";
+  version = "0.10.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "5e1d8f03939eafe29c301659c7b819053513be6f224861388b0048ca62e7a75d";
+    sha256 = "3f782c9b590b8ae43678c6e003df8ca8cca675832039d270b0b7437ff01557fd";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/b2sdk/default.nix b/nixpkgs/pkgs/development/python-modules/b2sdk/default.nix
index d81c374670fd..5f9eb41bf821 100644
--- a/nixpkgs/pkgs/development/python-modules/b2sdk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/b2sdk/default.nix
@@ -16,12 +16,12 @@
 
 buildPythonPackage rec {
   pname = "b2sdk";
-  version = "1.12.0";
+  version = "1.14.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-PsImSuK0IVY9EwpLKlP5ZFS6A7j2iJOtUg/GUcQTJR0=";
+    sha256 = "900da60f9e569e02405b85db35541a79e1cac776ace5d054498b107982ea443c";
   };
 
   nativeBuildInputs = [
@@ -57,7 +57,9 @@ buildPythonPackage rec {
     "test_large_file"
   ];
 
-  pythonImportsCheck = [ "b2sdk" ];
+  pythonImportsCheck = [
+    "b2sdk"
+  ];
 
   meta = with lib; {
     description = "Client library and utilities for access to B2 Cloud Storage (backblaze)";
diff --git a/nixpkgs/pkgs/development/python-modules/backports_lzma/default.nix b/nixpkgs/pkgs/development/python-modules/backports_lzma/default.nix
deleted file mode 100644
index bf346f3a3ca1..000000000000
--- a/nixpkgs/pkgs/development/python-modules/backports_lzma/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, xz
-, python
-, pythonOlder
-}:
-
-if !(pythonOlder "3.3") then null else buildPythonPackage rec {
-  pname = "backports.lzma";
-  version = "0.0.14";
-
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "16d8b68e4d3cd4e6c9ddb059850452946da3914c8a8e197a7f2b0954559f2df4";
-  };
-
-  buildInputs = [ xz ];
-
-  checkPhase = ''
-    ${python.interpreter} test/test_lzma.py
-  '';
-
-  # Relative import does not seem to function.
-  doCheck = false;
-
-  meta = {
-    description = "Backport of Python 3.3's 'lzma' module for XZ/LZMA compressed files";
-    homepage = "https://github.com/peterjc/backports.lzma";
-    license = lib.licenses.bsd3;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/backports_os/default.nix b/nixpkgs/pkgs/development/python-modules/backports_os/default.nix
deleted file mode 100644
index 214449708433..000000000000
--- a/nixpkgs/pkgs/development/python-modules/backports_os/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, future
-, isPy3k
-, python
-, hypothesis
-}:
-
-buildPythonPackage rec {
-  version = "0.1.1";
-  pname = "backports.os";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b472c4933094306ca08ec90b2a8cbb50c34f1fb2767775169a1c1650b7b74630";
-  };
-
-  buildInputs = [ setuptools-scm ];
-  checkInputs = [ hypothesis ];
-  propagatedBuildInputs = [ future ];
-
-  checkPhase = ''
-    ${python.interpreter} -m unittest discover tests
-  '';
-
-  meta = with lib; {
-    homepage = "https://github.com/pjdelport/backports.os";
-    description = "Backport of new features in Python's os module";
-    license = licenses.mit;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/bacpypes/default.nix b/nixpkgs/pkgs/development/python-modules/bacpypes/default.nix
index 8a1e6771b114..40d06f7da8a0 100644
--- a/nixpkgs/pkgs/development/python-modules/bacpypes/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bacpypes/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, fetchFromGitHub
+{ lib, buildPythonPackage, fetchFromGitHub
 , wheel, pytestCheckHook, pytest-runner, pythonAtLeast }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/bagit/default.nix b/nixpkgs/pkgs/development/python-modules/bagit/default.nix
index 7663cf8cf1a9..67aed7c186fd 100644
--- a/nixpkgs/pkgs/development/python-modules/bagit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bagit/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, coverage
 , gettext
 , mock
 , pytestCheckHook
diff --git a/nixpkgs/pkgs/development/python-modules/bandit/default.nix b/nixpkgs/pkgs/development/python-modules/bandit/default.nix
index 803928653934..03a4c80856d8 100644
--- a/nixpkgs/pkgs/development/python-modules/bandit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bandit/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "bandit";
-  version = "1.7.0";
+  version = "1.7.1";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8a4c7415254d75df8ff3c3b15cfe9042ecee628a1e40b44c15a98890fbfc2608";
+    sha256 = "a81b00b5436e6880fa8ad6799bc830e02032047713cbb143a12939ac67eb756c";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/baron/default.nix b/nixpkgs/pkgs/development/python-modules/baron/default.nix
index 8a04befc6d16..e5a752dd5dbb 100644
--- a/nixpkgs/pkgs/development/python-modules/baron/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/baron/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "baron";
-  version = "0.9";
+  version = "0.10.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0fib74nkqnl1i2zzlhbbfpw3whwc4951p9x61r2xrxhwp4r9yn5h";
+    sha256 = "af822ad44d4eb425c8516df4239ac4fdba9fdb398ef77e4924cd7c9b4045bc2f";
   };
 
   propagatedBuildInputs = [ rply ];
diff --git a/nixpkgs/pkgs/development/python-modules/base58/default.nix b/nixpkgs/pkgs/development/python-modules/base58/default.nix
index 1437683941bb..6fe7a111b5d4 100644
--- a/nixpkgs/pkgs/development/python-modules/base58/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/base58/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "base58";
-  version = "2.1.0";
+  version = "2.1.1";
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-FxpUe0o8YeGuOAciSm967HXjZMQ5XnViZJ1zNXaAAaI=";
+    sha256 = "c5d0cb3f5b6e81e8e35da5754388ddcc6d0d14b6c6a132cb93d69ed580a7278c";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/bayesian-optimization/default.nix b/nixpkgs/pkgs/development/python-modules/bayesian-optimization/default.nix
index 1e896d82678a..6230c9985968 100644
--- a/nixpkgs/pkgs/development/python-modules/bayesian-optimization/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bayesian-optimization/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, python
 , scikit-learn
 , scipy
 , pytest
diff --git a/nixpkgs/pkgs/development/python-modules/bc-python-hcl2/default.nix b/nixpkgs/pkgs/development/python-modules/bc-python-hcl2/default.nix
index 34eab21bf5d0..e889fff9688a 100644
--- a/nixpkgs/pkgs/development/python-modules/bc-python-hcl2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bc-python-hcl2/default.nix
@@ -1,13 +1,17 @@
-{ lib, buildPythonPackage, fetchPypi, nose }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
 
 let
   lark-parser = buildPythonPackage rec {
     pname = "lark-parser";
-    version = "0.7.8";
+    version = "0.10.1";
 
     src = fetchPypi {
       inherit pname version;
-      sha256 = "JiFeuxV+b7LudDGapERbnzt+RW4mviFc4Z/aqpAcIKQ=";
+      sha256 = "15jr4c1falvgkq664xdgamykk6waklh1psy8v3wlrg0v59hngws2";
     };
 
     doCheck = true;
@@ -15,11 +19,11 @@ let
 in
 buildPythonPackage rec {
   pname = "bc-python-hcl2";
-  version = "0.3.11";
+  version = "0.3.24";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "VZhI1oJ2EDZGyz3iI6/KYvJq4BGafzR+rcSgHqlUDrA=";
+    sha256 = "sha256-YsiMkTPRSKR4511csJOv9/Jf1b3TVUM7N2lInejdNrQ=";
   };
 
   # Nose is required during build process, so can not use `checkInputs`.
@@ -31,19 +35,23 @@ buildPythonPackage rec {
     lark-parser
   ];
 
-  pythonImportsCheck = [ "hcl2" ];
+  # This fork of python-hcl2 doesn't ship tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "hcl2"
+  ];
 
   meta = with lib; {
-    description = "A parser for HCL2 written in Python using Lark";
+    description = "Parser for HCL2 written in Python using Lark";
     longDescription = ''
-    A parser for HCL2 written in Python using Lark.
-    This parser only supports HCL2 and isn't backwards compatible with HCL v1.
-    It can be used to parse any HCL2 config file such as Terraform.
+      This parser only supports HCL2 and isn't backwards compatible with HCL v1.
+      It can be used to parse any HCL2 config file such as Terraform.
     '';
     # Although this is the main homepage from PyPi but it is also a homepage
     # of another PyPi package (python-hcl2). But these two are different.
     homepage = "https://github.com/amplify-education/python-hcl2";
     license = licenses.mit;
-    maintainers = [ maintainers.anhdle14 ];
+    maintainers = with maintainers; [ anhdle14 ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/bcrypt/3_1.nix b/nixpkgs/pkgs/development/python-modules/bcrypt/3_1.nix
deleted file mode 100644
index df57eb3cd0c9..000000000000
--- a/nixpkgs/pkgs/development/python-modules/bcrypt/3_1.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi
-, isPyPy, cffi, pytest, six }:
-
-buildPythonPackage rec {
-  version = "3.1.7";
-  pname = "bcrypt";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0b0069c752ec14172c5f78208f1863d7ad6755a6fae6fe76ec2c80d13be41e42";
-  };
-
-  checkInputs = [ pytest ];
-
-  propagatedBuildInputs = [ six ] ++ lib.optional (!isPyPy) cffi;
-
-  meta = with lib; {
-    description = "Modern password hashing for your software and your servers";
-    homepage = "https://github.com/pyca/bcrypt/";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ domenkozar ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/bcrypt/default.nix b/nixpkgs/pkgs/development/python-modules/bcrypt/default.nix
index cfd17262a2b3..d6347b179046 100644
--- a/nixpkgs/pkgs/development/python-modules/bcrypt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bcrypt/default.nix
@@ -15,6 +15,8 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ six ] ++ lib.optional (!isPyPy) cffi;
 
+  propagatedNativeBuildInputs = lib.optional (!isPyPy) cffi;
+
   meta = with lib; {
     maintainers = with maintainers; [ domenkozar ];
     description = "Modern password hashing for your software and your servers";
diff --git a/nixpkgs/pkgs/development/python-modules/bellows/default.nix b/nixpkgs/pkgs/development/python-modules/bellows/default.nix
index 8dc13ea50a2a..33539e371c2a 100644
--- a/nixpkgs/pkgs/development/python-modules/bellows/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bellows/default.nix
@@ -17,13 +17,14 @@
 
 buildPythonPackage rec {
   pname = "bellows";
-  version = "0.28.0";
+  version = "0.29.0";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "zigpy";
     repo = "bellows";
     rev = version;
-    sha256 = "sha256-j1vS6PDvvuJapECn0lKGuBkYwWsyzJaTZDRQPjMsuLk=";
+    sha256 = "sha256-coIrI3C6Wnn8Of/IHAlvZgkcBBf9OBQt5Ir6YOXCf0c=";
   };
 
   propagatedBuildInputs = [
@@ -45,12 +46,6 @@ buildPythonPackage rec {
     asynctest
   ];
 
-  disabledTests = [
-    # AssertionError: assert 65534 is None
-    # https://github.com/zigpy/bellows/issues/436
-    "test_startup_nwk_params"
-  ];
-
   pythonImportsCheck = [
     "bellows"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/bidict/default.nix b/nixpkgs/pkgs/development/python-modules/bidict/default.nix
index 8e32a0830035..4b5ebc912b24 100644
--- a/nixpkgs/pkgs/development/python-modules/bidict/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bidict/default.nix
@@ -13,13 +13,13 @@
 
 buildPythonPackage rec {
   pname = "bidict";
-  version = "0.21.3";
+  version = "0.21.4";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-1QvYH65140GY/8lJeaDrCTn/mts+8yvMk6kT2LPj7R0=";
+    sha256 = "sha256-QshP++b43omK9gc7S+nqfM7c1400dKqETFTknVoHn28=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/bids-validator/default.nix b/nixpkgs/pkgs/development/python-modules/bids-validator/default.nix
index c5ccff1dad24..49952b4f5f17 100644
--- a/nixpkgs/pkgs/development/python-modules/bids-validator/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bids-validator/default.nix
@@ -4,12 +4,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.8.4";
+  version = "1.8.9";
   pname = "bids-validator";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "63e7a02c9ddb5505a345e178f4e436b82c35ec0a177d7047b67ea10ea3029a68";
+    sha256 = "01fcb5a8fe6de1280cdfd5b37715103ffa0bafb3c739ca7f5ffc41e46549612e";
   };
 
   # needs packages which are not available in nixpkgs
diff --git a/nixpkgs/pkgs/development/python-modules/bimmer-connected/default.nix b/nixpkgs/pkgs/development/python-modules/bimmer-connected/default.nix
index ac2785fe332c..004b7d4e3e09 100644
--- a/nixpkgs/pkgs/development/python-modules/bimmer-connected/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bimmer-connected/default.nix
@@ -4,20 +4,25 @@
 , fetchFromGitHub
 , pbr
 , requests
+, pycryptodome
+, pyjwt
 , pytestCheckHook
+, requests-mock
+, time-machine
 }:
 
 buildPythonPackage rec {
   pname = "bimmer-connected";
-  version = "0.7.20";
+  version = "0.8.7";
+  format = "setuptools";
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "bimmerconnected";
     repo = "bimmer_connected";
     rev = version;
-    sha256 = "sha256-vcJYcxBX8wHH3FiU2Cg7IlK0iEQZ3SLVa0MryeAwPCA=";
+    hash = "sha256-nLZdaV341mULXIngkEqiLQeg4G2NDFGNg/AUozgJe74=";
   };
 
   nativeBuildInputs = [
@@ -28,10 +33,14 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     requests
+    pycryptodome
+    pyjwt
   ];
 
   checkInputs = [
     pytestCheckHook
+    requests-mock
+    time-machine
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/binwalk/default.nix b/nixpkgs/pkgs/development/python-modules/binwalk/default.nix
index f7e6e86a0a16..112f12e5f25b 100644
--- a/nixpkgs/pkgs/development/python-modules/binwalk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/binwalk/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, fetchpatch
 , stdenv
 , zlib
 , xz
@@ -21,15 +22,28 @@
 
 buildPythonPackage rec {
   pname = "binwalk";
-  version = "2.3.2";
+  version = "2.3.3";
 
   src = fetchFromGitHub {
     owner = "ReFirmLabs";
     repo = "binwalk";
     rev = "v${version}";
-    sha256 = "sha256-lfHXutAp06Xr/TSBpDwBUBC/mWI9XuyImoKwA3inqgU=";
+    sha256 = "0phqyqv34vhh80dgipiggs4n3iq2vfjk9ywx2c5d8g61vzgbd2g8";
   };
 
+  patches = [
+    # test_firmware_zip fails with 2.3.3 upgrade
+    # https://github.com/ReFirmLabs/binwalk/issues/566
+    (fetchpatch {
+      url = "https://github.com/ReFirmLabs/binwalk/commit/dd4f2efd275c9dd1001130e82e0f985110cd2754.patch";
+      sha256 = "1707n4nf1d1ay1yn4i8qlrvj2c1120g88hjwyklpsc2s2dcnqj9r";
+      includes = [
+        "testing/tests/test_firmware_zip.py"
+      ];
+      revert = true;
+    })
+  ];
+
   propagatedBuildInputs = [ zlib xz gzip bzip2 gnutar p7zip cabextract squashfsTools xz pycrypto ]
   ++ lib.optionals visualizationSupport [ matplotlib pyqtgraph ]
   ++ lib.optionals (!stdenv.isDarwin) [ cramfsprogs cramfsswap sasquatch ];
diff --git a/nixpkgs/pkgs/development/python-modules/bitbucket-api/default.nix b/nixpkgs/pkgs/development/python-modules/bitbucket-api/default.nix
deleted file mode 100644
index b874f1af525a..000000000000
--- a/nixpkgs/pkgs/development/python-modules/bitbucket-api/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k
-, requests_oauthlib, nose, sh }:
-
-buildPythonPackage rec {
-  pname = "bitbucket-api";
-  version = "0.5.0";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b541d9d7f234074a74214505aff1846eb21e5dd6d3915139e817d4675d34f4e3";
-  };
-
-  propagatedBuildInputs = [ requests_oauthlib nose sh ];
-
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://github.com/Sheeprider/BitBucket-api";
-    description = "Python library to interact with BitBucket REST API";
-    license = licenses.mit;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/bitbucket-cli/default.nix b/nixpkgs/pkgs/development/python-modules/bitbucket-cli/default.nix
deleted file mode 100644
index bb1fa1d6c17c..000000000000
--- a/nixpkgs/pkgs/development/python-modules/bitbucket-cli/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, requests }:
-
-buildPythonPackage rec {
-  pname = "bitbucket-cli";
-  version = "0.5.1";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1xmn73x6jirnwfwcdy380ncmkai9f9dhmld6zin01ypbqwgf50fq";
-  };
-
-  propagatedBuildInputs = [ requests ];
-
-  # No tests
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Bitbucket command line interface";
-    homepage = "https://bitbucket.org/zhemao/bitbucket-cli";
-    maintainers = with maintainers; [ refnil ];
-    license = licenses.bsd2;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/bitlist/default.nix b/nixpkgs/pkgs/development/python-modules/bitlist/default.nix
index e985dbf28c0f..dcb83d1ca2a7 100644
--- a/nixpkgs/pkgs/development/python-modules/bitlist/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bitlist/default.nix
@@ -8,11 +8,12 @@
 
 buildPythonPackage rec {
   pname = "bitlist";
-  version = "0.5.1";
+  version = "0.6.2";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-bX/Z5FBm21gX4ax/HfqD2bNotZyNFX7dHCEN5uZzQJQ=";
+    sha256 = "69cf632ca61b5fb5d2fd7587ddf023bcab8f327302f15070ec9079b68df9082a";
   };
 
   propagatedBuildInputs = [
@@ -24,12 +25,9 @@ buildPythonPackage rec {
     nose
   ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "parts~=1.0.3" "parts>=1.0.3"
-  '';
-
-  pythonImportsCheck = [ "bitlist" ];
+  pythonImportsCheck = [
+    "bitlist"
+  ];
 
   meta = with lib; {
     description = "Python library for working with little-endian list representation of bit strings";
diff --git a/nixpkgs/pkgs/development/python-modules/bitstruct/default.nix b/nixpkgs/pkgs/development/python-modules/bitstruct/default.nix
index 43edd16f66aa..78b34dfbf17c 100644
--- a/nixpkgs/pkgs/development/python-modules/bitstruct/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bitstruct/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "bitstruct";
-  version = "8.11.1";
+  version = "8.12.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4e7b8769c0f09fee403d0a5f637f8b575b191a79a92e140811aa109ce7461f0c";
+    sha256 = "45b2b932ce6681f5c6ce8cba39abdd423b579b0568c76fa48b1e09c88368ede7";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/black/default.nix b/nixpkgs/pkgs/development/python-modules/black/default.nix
index ece5707ae676..13f05fa61365 100644
--- a/nixpkgs/pkgs/development/python-modules/black/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/black/default.nix
@@ -10,7 +10,6 @@
 , pathspec
 , parameterized
 , platformdirs
-, regex
 , tomli
 , typed-ast
 , typing-extensions
@@ -20,13 +19,13 @@
 
 buildPythonPackage rec {
   pname = "black";
-  version = "21.9b0";
+  version = "21.12b0";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-feTPx+trcQ3jJXEtQBJWiRAdIdJSg+7X6ZmHIs8Q65E=";
+    hash = "sha256-d7gPaTpWni5SeVhFljTxjfmwuiYluk4MLV2lvkLm8rM=";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
@@ -68,7 +67,6 @@ buildPythonPackage rec {
     mypy-extensions
     pathspec
     platformdirs
-    regex
     tomli
     typed-ast # required for tests and python2 extra
     uvloop
@@ -80,6 +78,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/psf/black";
     changelog = "https://github.com/psf/black/blob/${version}/CHANGES.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ sveitser ];
+    maintainers = with maintainers; [ sveitser autophagy ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/bleak/default.nix b/nixpkgs/pkgs/development/python-modules/bleak/default.nix
index d035e4133518..d159811efbcc 100644
--- a/nixpkgs/pkgs/development/python-modules/bleak/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bleak/default.nix
@@ -4,20 +4,18 @@
 
 buildPythonPackage rec {
   pname = "bleak";
-  version = "0.12.1";
+  version = "0.13.0";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1va9138igcgbpsnzgr90qwprmhr9h8lryqslc22jxra4r56a502a";
+    sha256 = "1vnwk36qfws9amqrdaynf63dcj2gzxm0ns1l75hrczmd5j2ic1zb";
   };
 
   postPatch = ''
-    # bleak checks BlueZ's version with a call to `bluetoothctl -v` twice
-    substituteInPlace bleak/__init__.py \
-      --replace \"bluetoothctl\" \"${bluez}/bin/bluetoothctl\"
-    substituteInPlace bleak/backends/bluezdbus/client.py \
+    # bleak checks BlueZ's version with a call to `bluetoothctl --version`
+    substituteInPlace bleak/backends/bluezdbus/__init__.py \
       --replace \"bluetoothctl\" \"${bluez}/bin/bluetoothctl\"
   '';
 
diff --git a/nixpkgs/pkgs/development/python-modules/blebox-uniapi/default.nix b/nixpkgs/pkgs/development/python-modules/blebox-uniapi/default.nix
index c3dbe3ccd321..6d7c79bf6a0a 100644
--- a/nixpkgs/pkgs/development/python-modules/blebox-uniapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/blebox-uniapi/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, pythonOlder
 , fetchFromGitHub
 , aiohttp
 , semver
diff --git a/nixpkgs/pkgs/development/python-modules/blessed/default.nix b/nixpkgs/pkgs/development/python-modules/blessed/default.nix
index f3a6a9dd3b45..c2b03d35a21c 100644
--- a/nixpkgs/pkgs/development/python-modules/blessed/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/blessed/default.nix
@@ -1,14 +1,14 @@
-{ lib, buildPythonPackage, fetchPypi, fetchpatch, six
+{ lib, buildPythonPackage, fetchPypi, six
 , wcwidth, pytest, mock, glibcLocales
 }:
 
 buildPythonPackage rec {
   pname = "blessed";
-  version = "1.18.1";
+  version = "1.19.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8b09936def6bc06583db99b65636b980075733e13550cb6af262ce724a55da23";
+    sha256 = "4db0f94e5761aea330b528e84a250027ffe996b5a94bf03e502600c9a5ad7a61";
   };
 
   checkInputs = [ pytest mock glibcLocales ];
diff --git a/nixpkgs/pkgs/development/python-modules/blinkpy/default.nix b/nixpkgs/pkgs/development/python-modules/blinkpy/default.nix
index a73514805249..572dbad932b3 100644
--- a/nixpkgs/pkgs/development/python-modules/blinkpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/blinkpy/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, pythonOlder
 , fetchFromGitHub
 , python-dateutil
 , python-slugify
@@ -10,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "blinkpy";
-  version = "0.17.1";
+  version = "0.18.0";
 
   src = fetchFromGitHub {
     owner = "fronzbot";
     repo = "blinkpy";
     rev = "v${version}";
-    sha256 = "11h4r2vkrlxwjig1lay1n5wpny5isfgz85f7lsn8ndnqa2wpsymp";
+    hash = "sha256-96HoGXVQE5PbUbu0oDOC0es0HXYig4ScTeexiUhGse4=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/blis/default.nix b/nixpkgs/pkgs/development/python-modules/blis/default.nix
index 5d292c93fbbb..6f0370f044c6 100644
--- a/nixpkgs/pkgs/development/python-modules/blis/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/blis/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "blis";
-  version = "0.7.4";
+  version = "0.7.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7daa615a97d4f28db0f332b710bfe1900b15d0c25841c6d727965e4fd91e09cf";
+    sha256 = "833e01e9eaff4c01aa6e049bbc1e6acb9eca6ee513d7b35b5bf135d49705ad33";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/blivet/default.nix b/nixpkgs/pkgs/development/python-modules/blivet/default.nix
deleted file mode 100644
index fd97fa206480..000000000000
--- a/nixpkgs/pkgs/development/python-modules/blivet/default.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{ lib, fetchFromGitHub, buildPythonPackage, pykickstart, pyparted, pyblock
-, pyudev, six, libselinux, multipath-tools, lsof, util-linux
-}:
-
-buildPythonPackage rec {
-  pname = "blivet";
-  version = "0.67";
-
-  src = fetchFromGitHub {
-    owner = "dwlehman";
-    repo = "blivet";
-    rev = "${pname}-${version}";
-    sha256 = "1gk94ghjrxfqnx53hph1j2s7qcv86fjz48is7l099q9c24rjv8ky";
-  };
-
-  postPatch = ''
-    sed -i \
-      -e 's|"multipath"|"${multipath-tools}/sbin/multipath"|' \
-      -e '/^def set_friendly_names/a \    return False' \
-      blivet/devicelibs/mpath.py
-    sed -i -e '/"wipefs"/ {
-      s|wipefs|${util-linux}/sbin/wipefs|
-      s/-f/--force/
-    }' blivet/formats/__init__.py
-    sed -i -e 's|"lsof"|"${lsof}/bin/lsof"|' blivet/formats/fs.py
-    sed -i -r -e 's|"(u?mount)"|"${util-linux}/bin/\1"|' blivet/util.py
-  '';
-
-  propagatedBuildInputs = [
-    pykickstart pyparted pyblock pyudev libselinux
-    six
-  ];
-
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://fedoraproject.org/wiki/Blivet";
-    description = "Module for management of a system's storage configuration";
-    license = with licenses; [ gpl2Plus lgpl21Plus ];
-    platforms = platforms.linux;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/block-io/default.nix b/nixpkgs/pkgs/development/python-modules/block-io/default.nix
index a76132e3e211..f634bf17ecc0 100644
--- a/nixpkgs/pkgs/development/python-modules/block-io/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/block-io/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "block-io";
-  version = "2.0.4";
+  version = "2.0.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "817c9cd2ff76659caca4bb3d6758d5782a85f8c0ea13b08c4e14f0c2a8b7586d";
+    sha256 = "af70c3be444f2f2d07c0603cef547b51bbd9f4fbd4aadebd8f1e8ee73ccbc5e5";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/blockdiag/default.nix b/nixpkgs/pkgs/development/python-modules/blockdiag/default.nix
index f5d8b93c4816..34245d93560c 100644
--- a/nixpkgs/pkgs/development/python-modules/blockdiag/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/blockdiag/default.nix
@@ -1,22 +1,60 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, setuptools, funcparserlib, pillow, webcolors, reportlab, docutils
+{ lib
+, buildPythonPackage
+, docutils
+, fetchFromGitHub
+, funcparserlib
+, nose
+, pillow
+, ephem
+, pythonOlder
+, pytestCheckHook
+, reportlab
+, setuptools
+, webcolors
+, python
 }:
 
 buildPythonPackage rec {
   pname = "blockdiag";
-  version = "2.0.1";
+  version = "3.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "blockdiag";
     repo = "blockdiag";
     rev = version;
-    sha256 = "1cvcl66kf4wdh2n4fdk37zk59lp58wd2fhf84n7pbn0lilyksk5x";
+    sha256 = "sha256-j8FoNUIJJOaahaol1MRPyY2jcPCEIlaAD4bmM2QKFFI=";
   };
 
-  propagatedBuildInputs = [ setuptools funcparserlib pillow webcolors reportlab docutils ];
+  propagatedBuildInputs = [
+    setuptools
+    funcparserlib
+    pillow
+    webcolors
+    reportlab
+    docutils
+  ];
+
+  checkInputs = [
+    ephem
+    nose
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "src/blockdiag/tests/"
+  ];
+
+  disabledTests = [
+    # Test require network access
+    "test_app_cleans_up_images"
+  ];
 
-  # require network and fail
-  doCheck = false;
+  pythonImportsCheck = [
+    "blockdiag"
+  ];
 
   meta = with lib; {
     description = "Generate block-diagram image from spec-text file (similar to Graphviz)";
diff --git a/nixpkgs/pkgs/development/python-modules/blocksat-cli/default.nix b/nixpkgs/pkgs/development/python-modules/blocksat-cli/default.nix
index 624d4f490e3c..6c943d5ae57c 100644
--- a/nixpkgs/pkgs/development/python-modules/blocksat-cli/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/blocksat-cli/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "blocksat-cli";
-  version = "0.4.0";
+  version = "0.4.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-g/V1//Jo8wnoOHEotF2ElVm+vzTIwZ6EzssJg6WJw6g=";
+    sha256 = "96ec5e548dcdb71ada75727d76b34006fe5f6818bd89cf982e15616d41889603";
   };
 
   propagatedBuildInputs = [
@@ -32,14 +32,18 @@ buildPythonPackage rec {
 
   checkInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
+  disabledTestPaths = [
     # disable tests which require being connected to the satellite
-    "--ignore=blocksatcli/test_satip.py"
-    "--ignore=blocksatcli/api/test_net.py"
+    "blocksatcli/test_satip.py"
+    "blocksatcli/api/test_listen.py"
+    "blocksatcli/api/test_msg.py"
+    "blocksatcli/api/test_net.py"
     # disable tests which require being online
-    "--ignore=blocksatcli/api/test_order.py"
+    "blocksatcli/api/test_order.py"
   ];
 
+  pythonImportsCheck = [ "blocksatcli" ];
+
   meta = with lib; {
     description = "Blockstream Satellite CLI";
     homepage = "https://github.com/Blockstream/satellite";
diff --git a/nixpkgs/pkgs/development/python-modules/blspy/default.nix b/nixpkgs/pkgs/development/python-modules/blspy/default.nix
index 1c5363ed7afe..1c491cb5de0f 100644
--- a/nixpkgs/pkgs/development/python-modules/blspy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/blspy/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "blspy";
-  version = "1.0.6";
+  version = "1.0.8";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-sULXnecEs8VI687pR9EK9jjYWlrB4tV4dt7Kzekaxb4=";
+    hash = "sha256-yKLirwWWeUTs5BFXZfqfuNJUXtQW40EiNPxuP+FeHso=";
   };
 
   patches = [
@@ -39,6 +39,12 @@ buildPythonPackage rec {
         sha256 = "sha256-lGz7o6DQVAuEc7yTp8bYS2kwjzHwGaNjugDi1ruRJOA=";
         fetchSubmodules = true;
       };
+      catch2_src = fetchFromGitHub {
+        owner = "catchorg";
+        repo = "Catch2";
+        rev = "v2.13.7"; # pinned by blspy
+        sha256 = "NhZ8Hh7dka7KggEKKZyEbIZahuuTYeCT7cYYSUvkPzI=";
+      };
     })
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/blspy/dont_fetch_dependencies.patch b/nixpkgs/pkgs/development/python-modules/blspy/dont_fetch_dependencies.patch
index a480c6d37083..337c8df3c4e5 100644
--- a/nixpkgs/pkgs/development/python-modules/blspy/dont_fetch_dependencies.patch
+++ b/nixpkgs/pkgs/development/python-modules/blspy/dont_fetch_dependencies.patch
@@ -48,3 +48,17 @@ index 5a8c381..d9aa940 100644
  )
  FetchContent_MakeAvailable(pybind11 relic)
  
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 449164a..15a955e 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -37,8 +37,7 @@ install(FILES $<TARGET_FILE:bls> DESTINATION lib)
+ if(BUILD_BLS_TESTS)
+   FetchContent_Declare(
+     Catch2
+-    GIT_REPOSITORY https://github.com/catchorg/Catch2.git
+-    GIT_TAG        v2.13.7
++    URL @catch2_src@
+   )
+   FetchContent_MakeAvailable(Catch2)
+   add_executable(runtest test.cpp)
diff --git a/nixpkgs/pkgs/development/python-modules/bokeh/default.nix b/nixpkgs/pkgs/development/python-modules/bokeh/default.nix
index 925eb9c8f39d..9017cbed0d6d 100644
--- a/nixpkgs/pkgs/development/python-modules/bokeh/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bokeh/default.nix
@@ -12,7 +12,6 @@
 , pillow
 #, pytestCheckHook#
 , pytest
-, python
 , python-dateutil
 , pyyaml
 , selenium
@@ -34,11 +33,11 @@
 buildPythonPackage rec {
   pname = "bokeh";
   # update together with panel which is not straightforward
-  version = "2.3.3";
+  version = "2.4.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a5fdcc181835561447fcc5a371300973fce4114692d5853addec284d1cdeb677";
+    sha256 = "f0a4b53364ed3b7eb936c5cb1a4f4132369e394c7ae0a8ef420459410958033d";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/bond-api/default.nix b/nixpkgs/pkgs/development/python-modules/bond-api/default.nix
index 35634b1e2417..b230491de8c5 100644
--- a/nixpkgs/pkgs/development/python-modules/bond-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bond-api/default.nix
@@ -5,17 +5,21 @@
 , aioresponses
 , pytest-asyncio
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "bond-api";
-  version = "0.1.14";
+  version = "0.1.15";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "prystupa";
     repo = "bond-api";
     rev = "v${version}";
-    sha256 = "0s7an6kbib1immrbwrh4pzj812zwf8kj3kgky5k3qwxzrj0iv6ak";
+    sha256 = "sha256-Uoz5knqRAtQkD7u/4oylXC60dR2ZU3AuMJNhmvB8fP4=";
   };
 
   propagatedBuildInputs = [
@@ -28,7 +32,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "bond_api" ];
+  pythonImportsCheck = [
+    "bond_api"
+  ];
 
   meta = with lib; {
     description = "Asynchronous Python wrapper library over Bond Local API";
diff --git a/nixpkgs/pkgs/development/python-modules/boost-histogram/default.nix b/nixpkgs/pkgs/development/python-modules/boost-histogram/default.nix
index d66b80d00c71..f428dc788bf9 100644
--- a/nixpkgs/pkgs/development/python-modules/boost-histogram/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/boost-histogram/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "boost-histogram";
-  version = "1.1.0";
+  version = "1.2.1";
   disabled = !isPy3k;
 
   src = fetchPypi {
     pname = "boost_histogram";
     inherit version;
-    sha256 = "370e8e44a0bac4ebbedb7e62570be3a75a7a3807a297d6e82a94301b4681fc22";
+    sha256 = "a27842b2f1cfecc509382da2b25b03056354696482b38ec3c0220af0fc9b7579";
   };
 
   buildInputs = [ boost ];
diff --git a/nixpkgs/pkgs/development/python-modules/bootstrapped-pip/2.nix b/nixpkgs/pkgs/development/python-modules/bootstrapped-pip/2.nix
index f89d39ae2b79..2fc8b8b8d4b7 100644
--- a/nixpkgs/pkgs/development/python-modules/bootstrapped-pip/2.nix
+++ b/nixpkgs/pkgs/development/python-modules/bootstrapped-pip/2.nix
@@ -1,8 +1,7 @@
-{ lib, stdenv, python, fetchPypi, makeWrapper, unzip, makeSetupHook
+{ lib, stdenv, python, makeWrapper, unzip
 , pipInstallHook
 , setuptoolsBuildHook
 , wheel, pip, setuptools
-, isPy27
 }:
 
 stdenv.mkDerivation rec {
diff --git a/nixpkgs/pkgs/development/python-modules/bootstrapped-pip/default.nix b/nixpkgs/pkgs/development/python-modules/bootstrapped-pip/default.nix
index 84016043929c..b2846e3a13a1 100644
--- a/nixpkgs/pkgs/development/python-modules/bootstrapped-pip/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bootstrapped-pip/default.nix
@@ -1,8 +1,7 @@
-{ lib, stdenv, python, fetchPypi, makeWrapper, unzip, makeSetupHook
+{ lib, stdenv, python, makeWrapper, unzip
 , pipInstallHook
 , setuptoolsBuildHook
 , wheel, pip, setuptools
-, isPy27
 }:
 
 stdenv.mkDerivation rec {
diff --git a/nixpkgs/pkgs/development/python-modules/boschshcpy/default.nix b/nixpkgs/pkgs/development/python-modules/boschshcpy/default.nix
index 99d5b00d6390..27610d7cd9b5 100644
--- a/nixpkgs/pkgs/development/python-modules/boschshcpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/boschshcpy/default.nix
@@ -10,14 +10,16 @@
 
 buildPythonPackage rec {
   pname = "boschshcpy";
-  version = "0.2.23";
+  version = "0.2.28";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "tschamm";
     repo = pname;
     rev = version;
-    sha256 = "sha256-1mqxtL/9OFg3r+5/dkZlH4qRvRHsHMqHvYPEfCjSrr4=";
+    sha256 = "sha256-CnfJiYUM8A4QZ6VMtekO8nD5tQ2VL9vMeK6OWYcgwmU=";
   };
 
   propagatedBuildInputs = [
@@ -30,7 +32,9 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "boschshcpy" ];
+  pythonImportsCheck = [
+    "boschshcpy"
+  ];
 
   meta = with lib; {
     description = "Python module to work with the Bosch Smart Home Controller API";
diff --git a/nixpkgs/pkgs/development/python-modules/boto3/default.nix b/nixpkgs/pkgs/development/python-modules/boto3/default.nix
index 6d8cb85fa884..bf26eca41b64 100644
--- a/nixpkgs/pkgs/development/python-modules/boto3/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/boto3/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "boto3";
-  version = "1.18.54"; # N.B: if you change this, change botocore and awscli to a matching version
+  version = "1.20.13"; # N.B: if you change this, change botocore and awscli to a matching version
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-LYHcSEAgBZ/HOBZZhDBBB9TbHGd0tjENCMiSoXUfaYA=";
+    sha256 = "bbf53a077d6a0575ddec8026f0475ca6ee6f41b227914bf315bf3e049a3d653a";
   };
 
   propagatedBuildInputs = [ botocore jmespath s3transfer ] ++ lib.optionals (!isPy3k) [ futures ];
diff --git a/nixpkgs/pkgs/development/python-modules/botocore/default.nix b/nixpkgs/pkgs/development/python-modules/botocore/default.nix
index bf291411608a..b34dbfbac98c 100644
--- a/nixpkgs/pkgs/development/python-modules/botocore/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/botocore/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "botocore";
-  version = "1.21.54"; # N.B: if you change this, change boto3 and awscli to a matching version
+  version = "1.23.14"; # N.B: if you change this, change boto3 and awscli to a matching version
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-RhJ7OjhdDsc9GZS4lYsjt54GE+EsSGNxoQDfmStyobk=";
+    sha256 = "sha256-6NUsvy5zxiaM8sIH9H48+z7eCYP5PotZZ0tUYo5+8fE=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/box2d/default.nix b/nixpkgs/pkgs/development/python-modules/box2d/default.nix
deleted file mode 100644
index e6f6a390f374..000000000000
--- a/nixpkgs/pkgs/development/python-modules/box2d/default.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, swig2
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "Box2D";
-  version = "2.3.2";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "d1557dffdf9c1d6c796ec5df53e3d93227bb026c14b8411d22c295edaa2fb225";
-  };
-
-  postPatch = ''
-    sed -i "s/'Box2D.tests' : 'tests'//" setup.py
-  '';
-
-  nativeBuildInputs = [ swig2 ];
-
-  # tests not included with pypi release
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://github.com/pybox2d/pybox2d";
-    description = ''
-      A 2D game physics library for Python under
-      the very liberal zlib license
-    '';
-    license = licenses.zlib;
-    maintainers = with maintainers; [ sepi ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/bpython/clipboard-make-which-substitutable.patch b/nixpkgs/pkgs/development/python-modules/bpython/clipboard-make-which-substitutable.patch
deleted file mode 100644
index 685d34228a1b..000000000000
--- a/nixpkgs/pkgs/development/python-modules/bpython/clipboard-make-which-substitutable.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 6f544a5bd43446859754cb80e012af933b843db9 Mon Sep 17 00:00:00 2001
-From: Florian Klink <flokli@flokli.de>
-Date: Wed, 3 Jun 2020 22:05:34 +0200
-Subject: [PATCH] clipboard: make which substitutable
-
-This is used to detect the presence of xclip and other clipboard
-handling tools.
----
- bpython/clipboard.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/bpython/clipboard.py b/bpython/clipboard.py
-index aee429b..f346429 100644
---- a/bpython/clipboard.py
-+++ b/bpython/clipboard.py
-@@ -58,7 +58,7 @@ class OSXClipboard(object):
- 
- def command_exists(command):
-     process = subprocess.Popen(
--        ["which", command], stderr=subprocess.STDOUT, stdout=subprocess.PIPE
-+        ["@which@", command], stderr=subprocess.STDOUT, stdout=subprocess.PIPE
-     )
-     process.communicate()
- 
--- 
-2.26.2
-
diff --git a/nixpkgs/pkgs/development/python-modules/bpython/default.nix b/nixpkgs/pkgs/development/python-modules/bpython/default.nix
index 64fe3c455ee5..3285f3dee973 100644
--- a/nixpkgs/pkgs/development/python-modules/bpython/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bpython/default.nix
@@ -2,38 +2,41 @@
 , buildPythonPackage
 , fetchPypi
 , curtsies
+, cwcwidth
 , greenlet
 , jedi
 , pygments
+, pytestCheckHook
+, pyperclip
 , pyxdg
 , requests
 , substituteAll
+, typing-extensions
 , urwid
 , watchdog
-, which
 }:
 
 buildPythonPackage rec {
   pname = "bpython";
-  version = "0.21";
+  version = "0.22.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "88aa9b89974f6a7726499a2608fa7ded216d84c69e78114ab2ef996a45709487";
+    sha256 = "1fb1e0a52332579fc4e3dcf75e21796af67aae2be460179ecfcce9530a49a200";
   };
 
-  patches = [ (substituteAll {
-    src = ./clipboard-make-which-substitutable.patch;
-    which = "${which}/bin/which";
-  })];
-
   propagatedBuildInputs = [
     curtsies
+    cwcwidth
     greenlet
+    jedi
     pygments
+    pyperclip
     pyxdg
     requests
+    typing-extensions
     urwid
+    watchdog
   ];
 
   postInstall = ''
@@ -41,13 +44,16 @@ buildPythonPackage rec {
       --replace "Exec=/usr/bin/bpython" "Exec=$out/bin/bpython"
   '';
 
-  checkInputs = [ jedi watchdog ];
+  checkInputs = [
+    pytestCheckHook
+  ];
+
   pythonImportsCheck = [ "bpython" ];
 
   meta = with lib; {
     description = "A fancy curses interface to the Python interactive interpreter";
     homepage = "https://bpython-interpreter.org/";
     license = licenses.mit;
-    maintainers = with maintainers; [ flokli ];
+    maintainers = with maintainers; [ flokli dotlambda ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/bracex/default.nix b/nixpkgs/pkgs/development/python-modules/bracex/default.nix
index b9441ae49706..176385bceca3 100644
--- a/nixpkgs/pkgs/development/python-modules/bracex/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bracex/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "bracex";
-  version = "2.2";
+  version = "2.2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8230f3a03f1f76c192a7844377124300fbaec83870a728b629dfabd9be9e83d0";
+    sha256 = "1c8d1296e00ad9a91030ccb4c291f9e4dc7c054f12c707ba3c5ff3e9a81bcd21";
   };
 
   checkInputs = [ pytestCheckHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/braintree/default.nix b/nixpkgs/pkgs/development/python-modules/braintree/default.nix
index 17681f053337..8cf820edbfec 100644
--- a/nixpkgs/pkgs/development/python-modules/braintree/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/braintree/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "braintree";
-  version = "4.12.0";
+  version = "4.13.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "946abd50fe2843eec586ac3cec285d27dfae0cc5a43a64b505e8a2800b8a74a6";
+    sha256 = "4f6addf89f5cd6123243ddc89db325e50fceec825845901dad553fde115bd938";
   };
 
   propagatedBuildInputs = [ requests ];
diff --git a/nixpkgs/pkgs/development/python-modules/brelpy/default.nix b/nixpkgs/pkgs/development/python-modules/brelpy/default.nix
new file mode 100644
index 000000000000..66d611f5e931
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/brelpy/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pycryptodome
+, PyGithub
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "brelpy";
+  version = "0.0.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-MYWSKYd7emHZfY+W/UweQtTg62GSUMybpecL9BR8dhg=";
+  };
+
+  propagatedBuildInputs = [
+    pycryptodome
+  ];
+
+  # Source not tagged and PyPI releases don't contain tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "brelpy"
+  ];
+
+  meta = with lib; {
+    description = "Python to communicate with the Brel hubs";
+    homepage = "https://gitlab.com/rogiervandergeer/brelpy";
+    license = licenses.agpl3Only;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/brother-ql/default.nix b/nixpkgs/pkgs/development/python-modules/brother-ql/default.nix
new file mode 100644
index 000000000000..891791dfecb7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/brother-ql/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, fetchPypi
+, buildPythonPackage
+, future
+, packbits
+, pillow
+, pyusb
+, pytest
+, mock
+, click
+, attrs
+, lib
+}:
+
+buildPythonPackage rec {
+  pname = "brother-ql";
+  version = "0.9.4";
+
+  src = fetchPypi {
+    pname = "brother_ql";
+    inherit version;
+    sha256 = "sha256-H1xXoDnwEsnCBDl/RwAB9267dINCHr3phdDLPGFOhmA=";
+  };
+
+  propagatedBuildInputs = [ future packbits pillow pyusb click attrs ];
+
+  meta = with lib; {
+    description = "Python package for the raster language protocol of the Brother QL series label printers";
+    longDescription = ''
+      Python package for the raster language protocol of the Brother QL series label printers
+      (QL-500, QL-550, QL-570, QL-700, QL-710W, QL-720NW, QL-800, QL-820NWB, QL-1050 and more)
+    '';
+    homepage = "https://github.com/pklaus/brother_ql";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ grahamc ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/brotlicffi/default.nix b/nixpkgs/pkgs/development/python-modules/brotlicffi/default.nix
index 06cb2bf75805..f78598b751a6 100644
--- a/nixpkgs/pkgs/development/python-modules/brotlicffi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/brotlicffi/default.nix
@@ -22,6 +22,10 @@ buildPythonPackage rec {
     brotli
   ];
 
+  propagatedNativeBuildInputs = [
+    cffi
+  ];
+
   propagatedBuildInputs = [
     cffi
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/brotlipy/default.nix b/nixpkgs/pkgs/development/python-modules/brotlipy/default.nix
index f914d2d6c97c..2cc918b288ce 100644
--- a/nixpkgs/pkgs/development/python-modules/brotlipy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/brotlipy/default.nix
@@ -19,6 +19,8 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ cffi enum34 construct ];
 
+  propagatedNativeBuildInputs = [ cffi ];
+
   checkInputs = [ pytest hypothesis ];
 
   checkPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/browsermob-proxy/default.nix b/nixpkgs/pkgs/development/python-modules/browsermob-proxy/default.nix
deleted file mode 100644
index 1c69d70a134a..000000000000
--- a/nixpkgs/pkgs/development/python-modules/browsermob-proxy/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, urllib3
-}:
-
-buildPythonPackage rec {
-  pname = "browsermob-proxy";
-  version = "0.8.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1bxvmghm834gsfz3pm69772wzhh15p8ci526b25dpk3z4315nd7v";
-  };
-
-  propagatedBuildInputs = [ (requests.override { urllib3 = urllib3.override {
-    pyopenssl = null;
-    cryptography = null;
-  };}) ];
-
-  meta = {
-    description = "A library for interacting with Browsermob Proxy";
-    homepage = "http://oss.theautomatedtester.co.uk/browsermob-proxy-py";
-    license = lib.licenses.asl20;
-    maintainers = with lib.maintainers; [ raskin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/bsdiff4/default.nix b/nixpkgs/pkgs/development/python-modules/bsdiff4/default.nix
index 5687e9c7bf7a..cbc75ef2843f 100644
--- a/nixpkgs/pkgs/development/python-modules/bsdiff4/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bsdiff4/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, aflplusplus
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/bugwarrior/default.nix b/nixpkgs/pkgs/development/python-modules/bugwarrior/default.nix
index a29e7458d4b5..9beb8e9239ff 100644
--- a/nixpkgs/pkgs/development/python-modules/bugwarrior/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bugwarrior/default.nix
@@ -1,6 +1,6 @@
 { lib, buildPythonPackage, fetchPypi, pythonOlder, setuptools
 , twiggy, requests, offtrac, bugzilla, taskw, python-dateutil, pytz, keyring, six
-, jinja2, pycurl, dogpile_cache, lockfile, click, pyxdg, future, jira }:
+, jinja2, pycurl, dogpile-cache, lockfile, click, pyxdg, future, jira }:
 
 buildPythonPackage rec {
   pname = "bugwarrior";
@@ -15,7 +15,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     setuptools
     twiggy requests offtrac bugzilla taskw python-dateutil pytz keyring six
-    jinja2 pycurl dogpile_cache lockfile click pyxdg future jira
+    jinja2 pycurl dogpile-cache lockfile click pyxdg future jira
   ];
 
   # for the moment oauth2client <4.0.0 and megaplan>=1.4 are missing for running the test suite.
diff --git a/nixpkgs/pkgs/development/python-modules/buienradar/default.nix b/nixpkgs/pkgs/development/python-modules/buienradar/default.nix
index a366e0cdd3bc..ba288f59b28a 100644
--- a/nixpkgs/pkgs/development/python-modules/buienradar/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/buienradar/default.nix
@@ -13,15 +13,16 @@
 
 buildPythonPackage rec {
   pname = "buienradar";
-  version = "1.0.4";
+  version = "1.0.5";
 
   disabled = pythonOlder "3.4";
 
   src = fetchFromGitHub {
     owner = "mjj4791";
     repo = "python-buienradar";
-    rev = version;
-    sha256 = "1s0m5x7wdvzzsm797lh6531k614ybh7z0cikxjxqw377mivpz4wq";
+    # https://github.com/mjj4791/python-buienradar/issues/14
+    rev = "caa66ea855dbcc7cf6ee13291d9b2ed7ac01ef98";
+    hash = "sha256:0xz03xj5qjayriaah20adh0ycvlvb8jdvgh7w5gm236n64g6krj0";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/build/default.nix b/nixpkgs/pkgs/development/python-modules/build/default.nix
index 9b02160dc4e0..ba8d15909f21 100644
--- a/nixpkgs/pkgs/development/python-modules/build/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/build/default.nix
@@ -1,10 +1,10 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fetchFromGitHub
 , filelock
 , flit-core
 , importlib-metadata
-, isPy3k
 , packaging
 , pep517
 , pytest-mock
@@ -13,19 +13,21 @@
 , pytestCheckHook
 , pythonOlder
 , toml
-, typing ? null
+, tomli
 }:
 
 buildPythonPackage rec {
   pname = "build";
-  version = "0.5.1";
+  version = "0.7.0";
   format = "pyproject";
 
+  disabled = pythonOlder "3.6";
+
   src = fetchFromGitHub {
     owner = "pypa";
     repo = pname;
     rev = version;
-    sha256 = "15hc9mbxsngfc9n805x8rk7yqbxnw12mpk6hfwcsldnfii1vg2ph";
+    sha256 = "sha256-kT3Gax/ZCeV8Kb7CBArGWn/qzVSVdMRUoid/8cAovnE=";
   };
 
   nativeBuildInputs = [
@@ -33,32 +35,44 @@ buildPythonPackage rec {
   ];
 
   propagatedBuildInputs = [
-    toml
-    pep517
     packaging
-  ] ++ lib.optionals (!isPy3k) [
-    typing
+    pep517
+    tomli
   ] ++ lib.optionals (pythonOlder "3.8") [
     importlib-metadata
   ];
 
   checkInputs = [
     filelock
+    toml
     pytest-mock
     pytest-rerunfailures
     pytest-xdist
     pytestCheckHook
   ];
 
+  pytestFlagsArray = [
+    "-n"
+    "$NIX_BUILD_CORES"
+  ];
+
   disabledTests = [
-    "test_isolation"
-    "test_isolated_environment_install"
+    # Tests often fail with StopIteration
+    "test_isolat"
     "test_default_pip_is_never_too_old"
     "test_build"
+    "test_with_get_requires"
     "test_init"
+    "test_output"
+    "test_wheel_metadata"
+  ] ++ lib.optionals stdenv.isDarwin [
+    # Expects Apple's Python and its quirks
+    "test_can_get_venv_paths_with_conflicting_default_scheme"
   ];
 
-  pythonImportsCheck = [ "build" ];
+  pythonImportsCheck = [
+    "build"
+  ];
 
   meta = with lib; {
     description = "Simple, correct PEP517 package builder";
@@ -67,7 +81,7 @@ buildPythonPackage rec {
       is a simple build tool and does not perform any dependency management.
     '';
     homepage = "https://github.com/pypa/build";
-    maintainers = with maintainers; [ fab ];
     license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/buildbot/default.nix b/nixpkgs/pkgs/development/python-modules/buildbot/default.nix
index 3c5db01cdb68..a6ae6e87036b 100644
--- a/nixpkgs/pkgs/development/python-modules/buildbot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/buildbot/default.nix
@@ -1,9 +1,9 @@
 { stdenv, lib, buildPythonPackage, fetchPypi, makeWrapper, isPy3k
-, python, twisted, jinja2, zope_interface, sqlalchemy
-, sqlalchemy_migrate, python-dateutil, txaio, autobahn, pyjwt, pyyaml, unidiff, treq
-, txrequests, pypugjs, boto3, moto, mock, lz4, setuptoolsTrial
-, isort, pylint, flake8, buildbot-worker, buildbot-pkg, buildbot-plugins
-, parameterized, git, openssh, glibcLocales, ldap3, nixosTests
+, python, twisted, jinja2, zope_interface, sqlalchemy, alembic, python-dateutil
+, txaio, autobahn, pyjwt, pyyaml, unidiff, treq, txrequests, pypugjs, boto3
+, moto, mock, lz4, setuptoolsTrial, isort, pylint, flake8, buildbot-worker
+, buildbot-pkg, buildbot-plugins, parameterized, git, openssh, glibcLocales
+, nixosTests
 }:
 
 let
@@ -31,11 +31,11 @@ let
 
   package = buildPythonPackage rec {
     pname = "buildbot";
-    version = "3.3.0";
+    version = "3.4.0";
 
     src = fetchPypi {
       inherit pname version;
-      sha256 = "sha256-FST+mCIQpzxc/5iQdsSNBlKxY985v+z6Xeh8ZQRu2FE=";
+      sha256 = "sha256-14w1sF1aOpfUW76uhAIUpdrjAEhQkEWcRGg9Osc+qFk=";
     };
 
     propagatedBuildInputs = [
@@ -44,7 +44,7 @@ let
       jinja2
       zope_interface
       sqlalchemy
-      sqlalchemy_migrate
+      alembic
       python-dateutil
       txaio
       autobahn
@@ -74,9 +74,6 @@ let
       git
       openssh
       glibcLocales
-      # optional dependency that was accidentally made required for tests
-      # https://github.com/buildbot/buildbot/pull/5857
-      ldap3
     ];
 
     patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/buildbot/pkg.nix b/nixpkgs/pkgs/development/python-modules/buildbot/pkg.nix
index 45254ca83f8a..a1d2fa59cb5d 100644
--- a/nixpkgs/pkgs/development/python-modules/buildbot/pkg.nix
+++ b/nixpkgs/pkgs/development/python-modules/buildbot/pkg.nix
@@ -6,7 +6,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-PVmDJN3/PMsvZrrwSNaUUQLPkOMWO6edIEEfZSwspTs=";
+    sha256 = "sha256-NAc85JomnxS052SjCu8+UQ/hik2gbq1u7/gc21Nj67Q=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/buildbot/plugins.nix b/nixpkgs/pkgs/development/python-modules/buildbot/plugins.nix
index 12c4146b5132..797395205a04 100644
--- a/nixpkgs/pkgs/development/python-modules/buildbot/plugins.nix
+++ b/nixpkgs/pkgs/development/python-modules/buildbot/plugins.nix
@@ -7,7 +7,7 @@
 
     src = fetchPypi {
       inherit pname version;
-      sha256 = "sha256-KFGTNudUxjSV6406NV4QJP8t9t5p2ckMlntkqsf1x2U=";
+      sha256 = "sha256-65ZbCiNtxH3YjAcdhv5cwSUNrLT65jlQh/2oL8342Tw=";
     };
 
     # Remove unneccessary circular dependency on buildbot
@@ -34,7 +34,7 @@
 
     src = fetchPypi {
       inherit pname version;
-      sha256 = "sha256-UoKCRAnPAQjb7Fgm+YkGv1boXY+xSDkYA3E2EiEkNGE=";
+      sha256 = "sha256-2wu6rE5tgjPXxlcIND8s+DAmX9CF29M3ElonV0L8WOs=";
     };
 
     buildInputs = [ buildbot-pkg ];
@@ -56,7 +56,7 @@
 
     src = fetchPypi {
       inherit pname version;
-      sha256 = "sha256-Ccmk8TPtMfGrlNaBKhos1s/G1pHzf+zSD+A88F+/8+c=";
+      sha256 = "sha256-Vu4CouTuVyxpmx5C4fthQJPdFBAtN1jliQjy4pLYAzc=";
     };
 
     buildInputs = [ buildbot-pkg ];
@@ -78,7 +78,7 @@
 
     src = fetchPypi {
       inherit pname version;
-      sha256 = "sha256-oHvn7E4NS0RhTU2hDn1GgFjalYCoXUNCtGEz2lHel+M=";
+      sha256 = "sha256-BDzI4VBbNGCKRxv6294IIVkDXZV0KHauvUYDjIVovvE=";
     };
 
     buildInputs = [ buildbot-pkg ];
@@ -100,7 +100,7 @@
 
     src = fetchPypi {
       inherit pname version;
-      sha256 = "sha256-HoiR2WF6EWebbb9c3WcLU2H17HMqkrF6JNOwpUk9CbU=";
+      sha256 = "sha256-hkcxwZWFJOLHMIRJfzzMTEoH6oc2UblJEKFjYthFfDc=";
     };
 
     buildInputs = [ buildbot-pkg ];
diff --git a/nixpkgs/pkgs/development/python-modules/buildbot/worker.nix b/nixpkgs/pkgs/development/python-modules/buildbot/worker.nix
index a31ba928bb98..0c7e2f33716f 100644
--- a/nixpkgs/pkgs/development/python-modules/buildbot/worker.nix
+++ b/nixpkgs/pkgs/development/python-modules/buildbot/worker.nix
@@ -7,7 +7,7 @@ buildPythonPackage (rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-nDP46rLWYXXKJktR6NTWLb0erC6FU8fXe9FAIX+MWuU=";
+    sha256 = "sha256-SFZ0Q51hrBb7eBMGzvVOhc/ogFCIO/Mo7U9652WJ2GU=";
   };
 
   propagatedBuildInputs = [ twisted future ];
diff --git a/nixpkgs/pkgs/development/python-modules/buildcatrust/default.nix b/nixpkgs/pkgs/development/python-modules/buildcatrust/default.nix
new file mode 100644
index 000000000000..9fc0330ad0ba
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/buildcatrust/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "buildcatrust";
+  version = "0.1.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256:0s0m0fy943dakw9cbd40h46qmrhhgrcp292kppyb34m6y27sbagy";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+  disabledTestPaths = [
+    # Non-hermetic, needs internet access (e.g. attempts to retrieve NSS store).
+    "buildcatrust/tests/test_nonhermetic.py"
+  ];
+
+  pythonImportsCheck = [ "buildcatrust" "buildcatrust.cli" ];
+
+  meta = with lib; {
+    description = "Build SSL/TLS trust stores";
+    homepage = "https://github.com/lukegb/buildcatrust";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lukegb ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/buildout-nix/default.nix b/nixpkgs/pkgs/development/python-modules/buildout-nix/default.nix
deleted file mode 100644
index 834dd42bc087..000000000000
--- a/nixpkgs/pkgs/development/python-modules/buildout-nix/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi }:
-
-buildPythonPackage rec {
-  pname = "zc.buildout";
-  version = "2.13.4";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b978b2f9317b317ee4191f78fcc4f05b1ac41bdaaae47f0956f14c8285feef63";
-  };
-
-  patches = [ ./nix.patch ];
-
-  postInstall = "mv $out/bin/buildout{,-nix}";
-
-  meta = with lib; {
-    homepage = "http://www.buildout.org";
-    description = "A software build and configuration system";
-    license = licenses.zpl21;
-    maintainers = [ maintainers.goibhniu ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/buildout-nix/nix.patch b/nixpkgs/pkgs/development/python-modules/buildout-nix/nix.patch
deleted file mode 100644
index 49f3c6d90f0a..000000000000
--- a/nixpkgs/pkgs/development/python-modules/buildout-nix/nix.patch
+++ /dev/null
@@ -1,28 +0,0 @@
---- a/src/zc/buildout/buildout.py       2017-08-18 10:06:24.946428977 +0300
-+++ b/src/zc/buildout/buildout.py       2017-08-18 10:08:49.115613364 +0300
-@@ -382,6 +382,10 @@
-                  if k not in versions
-                  ))
- 
-+        # Override versions with available (nix) system packages
-+        for dist in pkg_resources.working_set:
-+             versions[dist.project_name] = SectionKey(dist.version, dist.location)
-+
-         # Absolutize some particular directory, handling also the ~/foo form,
-         # and considering the location of the configuration file that generated
-         # the setting as the base path, falling back to the main configuration
---- a/src/zc/buildout/easy_install.py   2017-08-18 10:06:24.948428980 +0300
-+++ b/src/zc/buildout/easy_install.py   2017-08-18 10:07:37.462521740 +0300
-@@ -321,6 +321,12 @@
- 
-     def _satisfied(self, req, source=None):
-         dists = [dist for dist in self._env[req.project_name] if dist in req]
-+        try:
-+            dists = ([dist for dist in dists
-+                     if dist.precedence == pkg_resources.DEVELOP_DIST]
-+                     + [pkg_resources.get_distribution(req.project_name)])
-+        except pkg_resources.DistributionNotFound:
-+            pass
-         if not dists:
-             logger.debug('We have no distributions for %s that satisfies %r.',
-                          req.project_name, str(req))
diff --git a/nixpkgs/pkgs/development/python-modules/buildout/default.nix b/nixpkgs/pkgs/development/python-modules/buildout/default.nix
index 796eaa18259f..efb0a0587114 100644
--- a/nixpkgs/pkgs/development/python-modules/buildout/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/buildout/default.nix
@@ -1,17 +1,36 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{ buildPythonPackage
+, fetchFromGitHub
+, lib
+, pip
+, setuptools
+, wheel
+}:
 
 buildPythonPackage rec {
-  pname = "zc.buildout";
-  version = "2.13.4";
+  pname = "zc-buildout";
+  version = "3.0.0b2";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b978b2f9317b317ee4191f78fcc4f05b1ac41bdaaae47f0956f14c8285feef63";
+  src = fetchFromGitHub {
+    owner = "buildout";
+    repo = "buildout";
+    rev = version;
+    sha256 = "01sj09xx5kmkzynhq1xd8ahn6xqybfi8lrqjqr5lr45aaxjk2pid";
   };
 
+  propagatedBuildInputs = [
+    setuptools
+    pip
+    wheel
+  ];
+
+  doCheck = false; # Missing package & BLOCKED on "zc.recipe.egg"
+
+  pythonImportsCheck = [ "zc.buildout" ];
+
   meta = with lib; {
-    homepage = "http://www.buildout.org";
     description = "A software build and configuration system";
+    downloadPage = "https://github.com/buildout/buildout";
+    homepage = "https://www.buildout.org";
     license = licenses.zpl21;
     maintainers = with maintainers; [ ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/bumps/default.nix b/nixpkgs/pkgs/development/python-modules/bumps/default.nix
index 7e94bd55b28f..6e0637d2a6bc 100644
--- a/nixpkgs/pkgs/development/python-modules/bumps/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bumps/default.nix
@@ -2,7 +2,7 @@
 
 buildPythonPackage rec {
   pname = "bumps";
-  version = "0.8.0";
+  version = "0.8.1";
 
   propagatedBuildInputs = [six];
 
@@ -12,7 +12,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9f92c05effd8175763799d19ca55592e89b053318f611148a6725159aea41d67";
+    sha256 = "f4f2ee712a1e468a2ce5c0a32f67739a83331f0cb7b9c50b9e7510daefc12169";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/bx-python/default.nix b/nixpkgs/pkgs/development/python-modules/bx-python/default.nix
index aa1e3d1d8648..ba83cca9e4ec 100644
--- a/nixpkgs/pkgs/development/python-modules/bx-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bx-python/default.nix
@@ -1,16 +1,16 @@
-{ lib, fetchFromGitHub, buildPythonPackage, isPy27, numpy, cython, zlib, six
+{ lib, fetchFromGitHub, buildPythonPackage, pythonOlder, numpy, cython, zlib, six
 , python-lzo, nose }:
 
 buildPythonPackage rec {
   pname = "bx-python";
-  version = "0.8.11";
-  disabled = isPy27;
+  version = "0.8.13";
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "bxlab";
     repo = "bx-python";
     rev = "v${version}";
-    sha256 = "0cz5vgw19hmkcg689vr540q2gl2lb3xcf1lphm7zbfp8wmypcadm";
+    sha256 = "0r3z02mvaswijalr42ikpa7crvliijy0aigsvp5m0frp05n4irf5";
   };
 
   nativeBuildInputs = [ cython ];
diff --git a/nixpkgs/pkgs/development/python-modules/cachecontrol/default.nix b/nixpkgs/pkgs/development/python-modules/cachecontrol/default.nix
index ba9b9022ac80..d074183e79d7 100644
--- a/nixpkgs/pkgs/development/python-modules/cachecontrol/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cachecontrol/default.nix
@@ -1,34 +1,49 @@
 { lib
 , buildPythonPackage
-, fetchPypi
-, requests
+, cherrypy
+, fetchFromGitHub
+, lockfile
+, mock
 , msgpack
-, pytest
+, pytestCheckHook
+, pythonOlder
+, requests
 }:
 
 buildPythonPackage rec {
-  version = "0.12.6";
-  pname = "CacheControl";
+  pname = "cachecontrol";
+  version = "0.12.10";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "be9aa45477a134aee56c8fac518627e1154df063e85f67d4f83ce0ccc23688e8";
+  src = fetchFromGitHub {
+    owner = "ionrock";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-mgvL0q10UbPHY1H3tJprke5p8qNl3HNYoeLAERZTcTs=";
   };
 
-  checkInputs = [ pytest ];
-  propagatedBuildInputs = [ requests msgpack ];
+  propagatedBuildInputs = [
+    msgpack
+    requests
+  ];
 
-  # tests not included with pypi release
-  doCheck = false;
+  checkInputs = [
+    cherrypy
+    mock
+    lockfile
+    pytestCheckHook
+  ];
 
-  checkPhase = ''
-    pytest tests
-  '';
+  pythonImportsCheck = [
+    "cachecontrol"
+  ];
 
   meta = with lib; {
-    homepage = "https://github.com/ionrock/cachecontrol";
     description = "Httplib2 caching for requests";
+    homepage = "https://github.com/ionrock/cachecontrol";
     license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/cachetools/default.nix b/nixpkgs/pkgs/development/python-modules/cachetools/default.nix
index 21529174eb2d..1bff572b6032 100644
--- a/nixpkgs/pkgs/development/python-modules/cachetools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cachetools/default.nix
@@ -7,7 +7,8 @@
 
 buildPythonPackage rec {
   pname = "cachetools";
-  version = "4.2.3";
+  version = "4.2.4";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
@@ -15,14 +16,16 @@ buildPythonPackage rec {
     owner = "tkem";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-9CHXvb+Nn3N2oWHwNbqKguzDO/q+4EnMZ50+E+MWS/A=";
+    sha256 = "sha256-doPLl7Ooc2cKlTiS/dqLTKSkTlSgPFztIumAzciM0bc=";
   };
 
   checkInputs = [
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "cachetools" ];
+  pythonImportsCheck = [
+    "cachetools"
+  ];
 
   meta = with lib; {
     description = "Extensible memoizing collections and decorators";
diff --git a/nixpkgs/pkgs/development/python-modules/cachey/default.nix b/nixpkgs/pkgs/development/python-modules/cachey/default.nix
new file mode 100644
index 000000000000..aff819adcad8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cachey/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, typing-extensions
+, heapdict
+, pytestCheckHook
+, pythonOlder
+}: buildPythonPackage rec {
+  pname = "cachey";
+  version = "0.2.1";
+  format = "setuptools";
+  disabled = pythonOlder "3.6";
+  src = fetchFromGitHub {
+    owner = "dask";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-5USmuufrrWtmgibpfkjo9NtgN30hdl8plJfythmxM4s=";
+  };
+  propagatedBuildInputs = [ typing-extensions heapdict ];
+  checkInputs = [ pytestCheckHook ];
+  pythonImportsCheck = [
+    "cachey"
+  ];
+  meta = with lib; {
+    description = "Caching based on computation time and storage space";
+    homepage = "https://github.com/dask/cachey/";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ SomeoneSerge ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cadquery/default.nix b/nixpkgs/pkgs/development/python-modules/cadquery/default.nix
index bc8cbe1f2c82..f7e436a41605 100644
--- a/nixpkgs/pkgs/development/python-modules/cadquery/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cadquery/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , toPythonModule
-, isPy3k
 , pythonOlder
 , pythonAtLeast
 , fetchFromGitHub
diff --git a/nixpkgs/pkgs/development/python-modules/cairocffi/0_9.nix b/nixpkgs/pkgs/development/python-modules/cairocffi/0_9.nix
deleted file mode 100644
index 84c1767bc29f..000000000000
--- a/nixpkgs/pkgs/development/python-modules/cairocffi/0_9.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-# FIXME: make gdk-pixbuf dependency optional
-{ stdenv
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, lib
-, substituteAll
-, makeFontsConf
-, freefont_ttf
-, pytest
-, pytest-runner
-, glibcLocales
-, cairo
-, cffi
-, withXcffib ? false, xcffib
-, python
-, glib
-, gdk-pixbuf
-}@args:
-
-import ./generic.nix ({
-  version = "0.9.0";
-  sha256 = "15386c3a9e08823d6826c4491eaccc7b7254b1dc587a3b9ce60c350c3f990337";
-  dlopen_patch = ./dlopen-paths-0.9.patch;
-  inherit withXcffib;
-} // args)
diff --git a/nixpkgs/pkgs/development/python-modules/cairocffi/default.nix b/nixpkgs/pkgs/development/python-modules/cairocffi/default.nix
index 9b64dbeb66c1..8e26517ba218 100644
--- a/nixpkgs/pkgs/development/python-modules/cairocffi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cairocffi/default.nix
@@ -8,7 +8,6 @@
 , makeFontsConf
 , freefont_ttf
 , pytest
-, pytest-runner
 , glibcLocales
 , cairo
 , cffi
diff --git a/nixpkgs/pkgs/development/python-modules/cairocffi/dlopen-paths-0.9.patch b/nixpkgs/pkgs/development/python-modules/cairocffi/dlopen-paths-0.9.patch
deleted file mode 100644
index 307cb428c078..000000000000
--- a/nixpkgs/pkgs/development/python-modules/cairocffi/dlopen-paths-0.9.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-commit 705dc9a55bd160625d9996e63fc7dc532d0ad0ab
-Author: Alexander V. Nikolaev <avn@avnik.info>
-Date:   Sat Feb 6 08:09:06 2016 +0200
-
-    Patch dlopen() to allow direct paths to all required libs
-
-    This patch is NixOS specific
-
-diff --git a/cairocffi/__init__.py b/cairocffi/__init__.py
-index 718aa7f..1a1dcff 100644
---- a/cairocffi/__init__.py
-+++ b/cairocffi/__init__.py
-@@ -27,20 +27,22 @@ VERSION = '0.7.2'
- version = '1.10.0'
- version_info = (1, 10, 0)
-
-+# Use hardcoded soname, because ctypes.util use gcc/objdump which shouldn't be required for runtime
-+_LIBS = {
-+    'cairo': '@cairo@/lib/libcairo@ext@',
-+    'glib-2.0': '@glib@/lib/libglib-2.0@ext@',
-+    'gobject-2.0': '@glib@/lib/libgobject-2.0@ext@',
-+    'gdk_pixbuf-2.0': '@gdk_pixbuf@/lib/libgdk_pixbuf-2.0@ext@',
-+}
-
--def dlopen(ffi, *names):
-+def dlopen(ffi, name, *names):
-     """Try various names for the same library, for different platforms."""
--    for name in names:
--        for lib_name in [name, 'lib' + name]:
--            try:
--                path = ctypes.util.find_library(lib_name)
--                if path:
--                    lib = ffi.dlopen(path)
--                    if lib:
--                        return lib
--            except OSError:
--                pass
--    raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names))
-+    path = _LIBS.get(name, None)
-+    if path:
-+        lib = ffi.dlopen(path)
-+        if lib:
-+            return lib
-+    raise OSError("dlopen() failed to load a library: %s as %s" % (name, path))
-
-
- cairo = dlopen(ffi, 'cairo', 'cairo-2')
diff --git a/nixpkgs/pkgs/development/python-modules/cairocffi/generic.nix b/nixpkgs/pkgs/development/python-modules/cairocffi/generic.nix
index cdcdbad3395d..004cf8ae7841 100644
--- a/nixpkgs/pkgs/development/python-modules/cairocffi/generic.nix
+++ b/nixpkgs/pkgs/development/python-modules/cairocffi/generic.nix
@@ -23,8 +23,20 @@ buildPythonPackage rec {
     fontDirectories = [ freefont_ttf ];
   };
 
-  checkInputs = [ numpy pytest pytest-runner glibcLocales ];
   propagatedBuildInputs = [ cairo cffi ] ++ lib.optional withXcffib xcffib;
+  propagatedNativeBuildInputs = [ cffi ];
+
+  # pytestCheckHook does not work
+  checkInputs = [ numpy pytest glibcLocales ];
+
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "pytest-runner" "" \
+      --replace "pytest-cov" "" \
+      --replace "pytest-flake8" "" \
+      --replace "pytest-isort" "" \
+      --replace "--flake8 --isort" ""
+  '';
 
   checkPhase = ''
     py.test $out/${python.sitePackages}
diff --git a/nixpkgs/pkgs/development/python-modules/cairosvg/1_x.nix b/nixpkgs/pkgs/development/python-modules/cairosvg/1_x.nix
deleted file mode 100644
index 3e1a67f8282b..000000000000
--- a/nixpkgs/pkgs/development/python-modules/cairosvg/1_x.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib, buildPythonPackage, fetchFromGitHub, cairocffi, nose, fontconfig
-, cssselect2, defusedxml, pillow, tinycss2 }:
-
-# CairoSVG 2.x dropped support for Python 2 so offer CairoSVG 1.x as an
-# alternative
-buildPythonPackage rec {
-  pname = "CairoSVG";
-  version = "1.0.22";
-
-  # PyPI doesn't include tests so use GitHub
-  src = fetchFromGitHub {
-    owner = "Kozea";
-    repo = pname;
-    rev = version;
-    sha256 = "15z0cag5s79ghhrlgs5xc9ayvzzdr3v8151vf6k819f1drsfjfxl";
-  };
-
-  propagatedBuildInputs = [ cairocffi ];
-
-  checkInputs = [ nose fontconfig cssselect2 defusedxml pillow tinycss2 ];
-
-  # Almost all tests just fail. Not sure how to fix them.
-  doCheck = false;
-
-  # checkInputs = [ nose fontconfig cssselect2 defusedxml pillow tinycss2 ];
-
-  # checkPhase = ''
-  #   FONTCONFIG_FILE=${fontconfig.out}/etc/fonts/fonts.conf nosetests .
-  # '';
-
-  meta = with lib; {
-    homepage = "https://cairosvg.org";
-    license = licenses.lgpl3;
-    description = "SVG converter based on Cairo";
-    maintainers = with maintainers; [ jluttine ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/cairosvg/default.nix b/nixpkgs/pkgs/development/python-modules/cairosvg/default.nix
index 5e8e8d985aab..df6600e3faac 100644
--- a/nixpkgs/pkgs/development/python-modules/cairosvg/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cairosvg/default.nix
@@ -8,9 +8,6 @@
 , pillow
 , tinycss2
 , pytestCheckHook
-, pytest-runner
-, pytest-flake8
-, pytest-isort
 }:
 
 buildPythonPackage rec {
@@ -23,11 +20,21 @@ buildPythonPackage rec {
     sha256 = "sha256-sLmSnPXboAUXjXRqgDb88AJVUPSYylTbYYczIjhHg7w=";
   };
 
-  nativeBuildInputs = [ pytest-runner ];
-
   propagatedBuildInputs = [ cairocffi cssselect2 defusedxml pillow tinycss2 ];
 
-  checkInputs = [ pytestCheckHook pytest-flake8 pytest-isort ];
+  propagatedNativeBuildInputs = [ cairocffi ];
+
+  checkInputs = [ pytestCheckHook ];
+
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "pytest-runner" "" \
+      --replace "pytest-flake8" "" \
+      --replace "pytest-isort" "" \
+      --replace "pytest-cov" "" \
+      --replace "--flake8" "" \
+      --replace "--isort" ""
+  '';
 
   pytestFlagsArray = [
     "cairosvg/test_api.py"
diff --git a/nixpkgs/pkgs/development/python-modules/caldav/default.nix b/nixpkgs/pkgs/development/python-modules/caldav/default.nix
index 2b50b5f2966a..27b59cfc07e1 100644
--- a/nixpkgs/pkgs/development/python-modules/caldav/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/caldav/default.nix
@@ -4,7 +4,6 @@
 , pythonOlder
 , icalendar
 , lxml
-, mock
 , nose
 , pytz
 , requests
@@ -15,23 +14,27 @@
 
 buildPythonPackage rec {
   pname = "caldav";
-  version = "0.8.0";
+  version = "0.8.2";
 
   src = fetchFromGitHub {
     owner = "python-caldav";
     repo = pname;
     rev = "v${version}";
-    sha256 = "11q3svns3a2ywfci739krxbh67cx691qja772wq22606blyygyjy";
+    hash = "sha256-2mpE1aLipps4X/3EF0oKHXDcrgUh78/fxY6y1B1V2IU=";
   };
 
-  nativeBuildInputs = lib.optionals (pythonOlder "3.5") [ mock ];
-  propagatedBuildInputs = [ six requests vobject lxml ]
-    ++ lib.optionals (pythonOlder "3.6") [ pytz tzlocal ];
+  propagatedBuildInputs = [
+    vobject
+    lxml
+    requests
+    six
+  ];
 
   checkInputs = [
     icalendar
     nose
     tzlocal
+    pytz
   ];
 
   checkPhase = ''
@@ -41,7 +44,7 @@ buildPythonPackage rec {
   # xandikos and radicale is only a optional test dependency, not available for python3
   postPatch = ''
     substituteInPlace setup.py \
-      --replace ", 'xandikos'" "" \
+      --replace ", 'xandikos<0.2.4'" "" \
       --replace ", 'radicale'" ""
   '';
 
@@ -51,7 +54,6 @@ buildPythonPackage rec {
     description = "This project is a CalDAV (RFC4791) client library for Python.";
     homepage = "https://github.com/python-caldav/caldav";
     license = licenses.asl20;
-    maintainers = with maintainers; [ marenz ];
-    #broken = true; # requires radicale which is not packaged yet
+    maintainers = with maintainers; [ marenz dotlambda ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/can/default.nix b/nixpkgs/pkgs/development/python-modules/can/default.nix
index 255a100ec688..188ab9cb5622 100644
--- a/nixpkgs/pkgs/development/python-modules/can/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/can/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , pythonOlder
-, isPy27
 , aenum
 , wrapt
 , typing ? null
@@ -12,7 +11,7 @@
 , hypothesis
 , future
 , pytest
-, pytest-timeout }:
+ }:
 
 buildPythonPackage rec {
   pname = "python-can";
diff --git a/nixpkgs/pkgs/development/python-modules/canonicaljson/default.nix b/nixpkgs/pkgs/development/python-modules/canonicaljson/default.nix
index ca64d599534e..b5679978c2cc 100644
--- a/nixpkgs/pkgs/development/python-modules/canonicaljson/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/canonicaljson/default.nix
@@ -2,37 +2,43 @@
 , buildPythonPackage
 , fetchPypi
 , frozendict
-, simplejson
-, six
-, isPy27
 , pytestCheckHook
+, pythonOlder
+, simplejson
 }:
 
 buildPythonPackage rec {
   pname = "canonicaljson";
-  version = "1.4.0";
-  disabled = isPy27;
+  version = "1.5.0";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "899b7604f5a6a8a92109115d9250142cdf0b1dfdcb62cdb21d8fb5bf37780631";
+    sha256 = "sha256-Xr3c10xbBm7mjsylZGUzjpsTgEZ+CpBvR5dpfJ+zgeI=";
   };
 
   propagatedBuildInputs = [
     frozendict
     simplejson
-    six
   ];
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
   disabledTests = [
     "test_frozen_dict"
   ];
 
+  pythonImportsCheck = [
+    "canonicaljson"
+  ];
+
   meta = with lib; {
+    description = "Encodes objects and arrays as RFC 7159 JSON";
     homepage = "https://github.com/matrix-org/python-canonicaljson";
-    description = "Encodes objects and arrays as RFC 7159 JSON.";
     license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/capstone/default.nix b/nixpkgs/pkgs/development/python-modules/capstone/default.nix
index 6ab2ed91fe52..f10f34c381d4 100644
--- a/nixpkgs/pkgs/development/python-modules/capstone/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/capstone/default.nix
@@ -2,8 +2,6 @@
 , buildPythonPackage
 , capstone
 , stdenv
-, fetchpatch
-, fetchPypi
 , setuptools
 }:
 
@@ -33,7 +31,5 @@ buildPythonPackage rec {
     license = licenses.bsdOriginal;
     description = "Python bindings for Capstone disassembly engine";
     maintainers = with maintainers; [ bennofs ris ];
-    # creates a manylinux2014-x86_64 wheel
-    broken = stdenv.isAarch64;
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/carbon/default.nix b/nixpkgs/pkgs/development/python-modules/carbon/default.nix
index acc3aa144eba..b30df5ec5383 100644
--- a/nixpkgs/pkgs/development/python-modules/carbon/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/carbon/default.nix
@@ -1,5 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k
-, twisted, whisper, txamqp, cachetools, urllib3
+{ lib, buildPythonPackage, fetchPypi, twisted, whisper, txamqp, cachetools, urllib3
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/cart/default.nix b/nixpkgs/pkgs/development/python-modules/cart/default.nix
new file mode 100644
index 000000000000..ecba8f9cc394
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cart/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, pycryptodome
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, pytestCheckHook
+, unittest2
+}:
+
+buildPythonPackage rec {
+  pname = "cart";
+  version = "1.2.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "CybercentreCanada";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-PsdDlNhX0FbuwS5ZXk9P98DjnzDGdigfnRwrdwYa4qY=";
+  };
+
+  propagatedBuildInputs = [
+    pycryptodome
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    unittest2
+  ];
+
+  pytestFlagsArray = [
+    "unittests"
+  ];
+
+  pythonImportsCheck = [
+    "cart"
+  ];
+
+  meta = with lib; {
+    description = "Python module for the CaRT Neutering format";
+    homepage = "https://github.com/CybercentreCanada/cart";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cartopy/default.nix b/nixpkgs/pkgs/development/python-modules/cartopy/default.nix
index 73d172941c2e..d55c1e9b0c53 100644
--- a/nixpkgs/pkgs/development/python-modules/cartopy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cartopy/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "cartopy";
-  version = "0.20.0";
+  version = "0.20.1";
 
   src = fetchPypi {
     inherit version;
     pname = "Cartopy";
-    sha256 = "eae58aff26806e63cf115b2bce9477cedc4aa9f578c5e477b2c25cfa404f2b7a";
+    sha256 = "91f87b130e2574547a20cd634498df97d797abd12dcfd0235bc0cdbcec8b05e3";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/casa-formats-io/default.nix b/nixpkgs/pkgs/development/python-modules/casa-formats-io/default.nix
new file mode 100644
index 000000000000..53ee89c5f941
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/casa-formats-io/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, astropy
+, dask
+, numpy
+}:
+
+buildPythonPackage rec {
+  pname = "casa-formats-io";
+  version = "0.1";
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "16rypj65wdfxxrilxfhbk563lxv86if4vvs9zfq3f8bkzdr8xl9s";
+  };
+
+  propagatedBuildInputs = [ astropy dask numpy ];
+
+  # Tests require a large (800 Mb) dataset
+  doCheck = false;
+
+  pythonImportsCheck = [ "casa_formats_io" ];
+
+  meta = {
+    description = "Dask-based reader for CASA data";
+    homepage = "http://radio-astro-tools.github.io";
+    license = lib.licenses.lgpl2Only;
+    maintainers = with lib.maintainers; [ smaret ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/development/python-modules/casbin/default.nix b/nixpkgs/pkgs/development/python-modules/casbin/default.nix
index dc31600f9475..815bc8ae36cb 100644
--- a/nixpkgs/pkgs/development/python-modules/casbin/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/casbin/default.nix
@@ -2,22 +2,23 @@
 , buildPythonPackage
 , fetchFromGitHub
 , simpleeval
-, isPy27
+, pythonOlder
 , coveralls
 , wcmatch
 }:
 
 buildPythonPackage rec {
   pname = "casbin";
-  version = "1.9.2";
+  version = "1.15.2";
+  format = "setuptools";
 
-  disabled = isPy27;
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = "pycasbin";
     rev = "v${version}";
-    sha256 = "0awqdh4jsarf0lr2bl2qiaff1yk9vndq15jcl4abiig9wr2yghpc";
+    sha256 = "0mrk6b16f4ds666qa4884kjjbmb55kpfvvqsznfmyg9iii6dir50";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/castepxbin/default.nix b/nixpkgs/pkgs/development/python-modules/castepxbin/default.nix
index 3c4466648633..993684bd5a38 100644
--- a/nixpkgs/pkgs/development/python-modules/castepxbin/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/castepxbin/default.nix
@@ -9,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "castepxbin";
-  version = "0.1.0";
+  version = "0.2.0";
 
   src = fetchFromGitHub {
     owner = "zhubonan";
     repo = "castepxbin";
     rev = "v${version}";
-    sha256 = "16wnd1mwhl204d1s3har2fhyhyjg86sypg00bj812dxk8zixxszf";
+    sha256 = "0bqicpdyisbcz8argy4ppm59zzkcn9lcs4y1mh2f31f75x732na3";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/cdcs/default.nix b/nixpkgs/pkgs/development/python-modules/cdcs/default.nix
new file mode 100644
index 000000000000..9dd8a272395b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cdcs/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, numpy
+, pandas
+, pytestCheckHook
+, pythonOlder
+, requests
+}:
+
+buildPythonPackage rec {
+  version = "0.1.5";
+  pname = "cdcs";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "usnistgov";
+    repo = "pycdcs";
+    rev = "v${version}";
+    sha256 = "0sd0s0mka2bvpxxiz98cjc2h5ncsb7d03af1q3w9w8pmvfsgj7pc";
+  };
+
+  propagatedBuildInputs = [
+    numpy
+    pandas
+    requests
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "cdcs"
+  ];
+
+  meta = with lib; {
+    description = "Python client for performing REST calls to configurable data curation system (CDCS) databases";
+    homepage = "https://github.com/usnistgov/pycdcs";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cddb/default.nix b/nixpkgs/pkgs/development/python-modules/cddb/default.nix
deleted file mode 100644
index 55d659376c61..000000000000
--- a/nixpkgs/pkgs/development/python-modules/cddb/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib, stdenv
-, buildPythonPackage
-, pkgs
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "CDDB";
-  version = "1.4";
-  disabled = isPy3k;
-
-  buildInputs = lib.optionals stdenv.isDarwin [ pkgs.darwin.apple_sdk.frameworks.IOKit ];
-
-  src = pkgs.fetchurl {
-    url = "http://cddb-py.sourceforge.net/${pname}-${version}.tar.gz";
-    sha256 = "098xhd575ibvdx7i3dny3lwi851yxhjg2hn5jbbgrwj833rg5l5w";
-  };
-
-  meta = with lib; {
-    homepage = "http://cddb-py.sourceforge.net/";
-    description = "CDDB and FreeDB audio CD track info access";
-    license = licenses.gpl2Plus;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/cdecimal/default.nix b/nixpkgs/pkgs/development/python-modules/cdecimal/default.nix
deleted file mode 100644
index cf8890505904..000000000000
--- a/nixpkgs/pkgs/development/python-modules/cdecimal/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib, buildPythonPackage, fetchurl, isPy3k }:
-
-buildPythonPackage rec {
-  pname = "cdecimal";
-  version = "2.3";
-
-  disabled = isPy3k;
-
-  src = fetchurl {
-    url="http://www.bytereef.org/software/mpdecimal/releases/${pname}-${version}.tar.gz";
-    sha256 = "d737cbe43ed1f6ad9874fb86c3db1e9bbe20c0c750868fde5be3f379ade83d8b";
-  };
-
-  # Upstream tests are not included s. a. http://www.bytereef.org/mpdecimal/testing.html
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Fast drop-in replacement for decimal.py";
-    homepage    = "http://www.bytereef.org/mpdecimal/";
-    license     = licenses.bsd2;
-    maintainers = [ maintainers.udono ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/celery/default.nix b/nixpkgs/pkgs/development/python-modules/celery/default.nix
index cd6d21b7c651..cdd646fed147 100644
--- a/nixpkgs/pkgs/development/python-modules/celery/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/celery/default.nix
@@ -1,47 +1,80 @@
-{ lib, buildPythonPackage, fetchPypi
-, billiard, click, click-didyoumean, click-plugins, click-repl, kombu, pytz, vine
-, boto3, case, moto, pytest, pytest-celery, pytest-subtests, pytest-timeout
+{ lib
+, billiard
+, boto3
+, buildPythonPackage
+, case
+, click
+, click-didyoumean
+, click-plugins
+, click-repl
+, fetchPypi
+, kombu
+, moto
+, pymongo
+, pytest-celery
+, pytest-subtests
+, pytest-timeout
+, pytestCheckHook
+, pythonOlder
+, pytz
+, vine
 }:
 
 buildPythonPackage rec {
   pname = "celery";
-  version = "5.1.2";
+  version = "5.2.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8d9a3de9162965e97f8e8cc584c67aad83b3f7a267584fa47701ed11c3e0d4b0";
+    sha256 = "b41a590b49caf8e6498a57db628e580d5f8dc6febda0f42de5d783aed5b7f808";
   };
 
-  # click  is only used for the repl, in most cases this shouldn't impact
-  # downstream packages
-  postPatch = ''
-    substituteInPlace requirements/test.txt \
-      --replace "moto==1.3.7" moto
-    substituteInPlace requirements/default.txt \
-      --replace "click>=7.0,<8.0" click
-  '';
-
-  propagatedBuildInputs = [ billiard click click-didyoumean click-plugins click-repl kombu pytz vine ];
-
-  checkInputs = [ boto3 case moto pytest pytest-celery pytest-subtests pytest-timeout ];
-
-  # ignore test that's incompatible with pytest5
-  # test_eventlet touches network
-  # test_mongodb requires pymongo
-  # test_multi tries to create directories under /var
-  checkPhase = ''
-    pytest -k 'not restore_current_app_fallback and not msgpack and not on_apply and not pytest' \
-      --ignore=t/unit/contrib/test_pytest.py \
-      --ignore=t/unit/concurrency/test_eventlet.py \
-      --ignore=t/unit/bin/test_multi.py \
-      --ignore=t/unit/apps/test_multi.py \
-      --ignore=t/unit/backends/test_mongodb.py
-  '';
+  propagatedBuildInputs = [
+    billiard
+    click
+    click-didyoumean
+    click-plugins
+    click-repl
+    kombu
+    pytz
+    vine
+  ];
+
+  checkInputs = [
+    boto3
+    case
+    moto
+    pymongo
+    pytest-celery
+    pytest-subtests
+    pytest-timeout
+    pytestCheckHook
+  ];
+
+  disabledTestPaths = [
+    # test_eventlet touches network
+    "t/unit/concurrency/test_eventlet.py"
+    # test_multi tries to create directories under /var
+    "t/unit/bin/test_multi.py"
+    "t/unit/apps/test_multi.py"
+  ];
+
+  disabledTests = [
+    "msgpack"
+    "test_check_privileges_no_fchown"
+  ];
+
+  pythonImportsCheck = [
+    "celery"
+  ];
 
   meta = with lib; {
-    homepage = "https://github.com/celery/celery/";
     description = "Distributed task queue";
+    homepage = "https://github.com/celery/celery/";
     license = licenses.bsd3;
-    maintainers = [ ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/cement/default.nix b/nixpkgs/pkgs/development/python-modules/cement/default.nix
index f021ea16b620..a6b436a92f4a 100644
--- a/nixpkgs/pkgs/development/python-modules/cement/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cement/default.nix
@@ -1,24 +1,33 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "cement";
-  version = "3.0.4";
+  version = "3.0.6";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "10a8459dc9fc31d6c038ede24a9081c5c3bd5fcd75b071e01baf281f81c9eace";
+    sha256 = "fccec41eab3f15a03445b1ce24c8a7e106d4d5520f6507a7145698ce68923d31";
   };
 
   # Disable test tests since they depend on a memcached server running on
   # 127.0.0.1:11211.
   doCheck = false;
 
-  disabled = !isPy3k;
+  pythonImportsCheck = [
+    "cement"
+  ];
 
   meta = with lib; {
+    description = "CLI Application Framework for Python";
     homepage = "https://builtoncement.com/";
-    description = "A CLI Application Framework for Python.";
-    maintainers = with maintainers; [ eqyiel ];
     license = licenses.bsd3;
+    maintainers = with maintainers; [ eqyiel ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/certbot-dns-cloudflare/default.nix b/nixpkgs/pkgs/development/python-modules/certbot-dns-cloudflare/default.nix
index 6c14f6c472f7..abdd6d2d8f06 100644
--- a/nixpkgs/pkgs/development/python-modules/certbot-dns-cloudflare/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/certbot-dns-cloudflare/default.nix
@@ -2,16 +2,16 @@
 , acme
 , certbot
 , cloudflare
-, isPy3k
-, pytest
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
-  inherit (certbot) src version;
-
   pname = "certbot-dns-cloudflare";
 
+  inherit (certbot) src version;
+  disabled = pythonOlder "3.6";
+
   propagatedBuildInputs = [
     acme
     certbot
@@ -19,15 +19,12 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    pytest
     pytestCheckHook
   ];
 
-  disabled = !isPy3k;
-
   pytestFlagsArray = [ "-o cache_dir=$(mktemp -d)" ];
 
-  sourceRoot = "source/${pname}";
+  sourceRoot = "source/certbot-dns-cloudflare";
 
   meta = certbot.meta // {
     description = "Cloudflare DNS Authenticator plugin for Certbot";
diff --git a/nixpkgs/pkgs/development/python-modules/certbot-dns-google/default.nix b/nixpkgs/pkgs/development/python-modules/certbot-dns-google/default.nix
new file mode 100644
index 000000000000..182ff720e13a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/certbot-dns-google/default.nix
@@ -0,0 +1,34 @@
+{ buildPythonPackage
+, acme
+, certbot
+, google-api-python-client
+, oauth2client
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "certbot-dns-google";
+
+  inherit (certbot) src version;
+  disabled = pythonOlder "3.6";
+
+  propagatedBuildInputs = [
+    acme
+    certbot
+    google-api-python-client
+    oauth2client
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [ "-o cache_dir=$(mktemp -d)" ];
+
+  sourceRoot = "source/certbot-dns-google";
+
+  meta = certbot.meta // {
+    description = "Google Cloud DNS Authenticator plugin for Certbot";
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/certbot-dns-rfc2136/default.nix b/nixpkgs/pkgs/development/python-modules/certbot-dns-rfc2136/default.nix
index 19e53aa20cc9..f3da841667ba 100644
--- a/nixpkgs/pkgs/development/python-modules/certbot-dns-rfc2136/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/certbot-dns-rfc2136/default.nix
@@ -2,16 +2,16 @@
 , acme
 , certbot
 , dnspython
-, isPy3k
-, pytest
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
-  inherit (certbot) src version;
-
   pname = "certbot-dns-rfc2136";
 
+  inherit (certbot) src version;
+  disabled = pythonOlder "3.6";
+
   propagatedBuildInputs = [
     acme
     certbot
@@ -19,15 +19,12 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    pytest
     pytestCheckHook
   ];
 
-  disabled = !isPy3k;
-
   pytestFlagsArray = [ "-o cache_dir=$(mktemp -d)" ];
 
-  sourceRoot = "source/${pname}";
+  sourceRoot = "source/certbot-dns-rfc2136";
 
   meta = certbot.meta // {
     description = "RFC 2136 DNS Authenticator plugin for Certbot";
diff --git a/nixpkgs/pkgs/development/python-modules/certbot-dns-route53/default.nix b/nixpkgs/pkgs/development/python-modules/certbot-dns-route53/default.nix
index 6fba51ce92a1..7052107418c9 100644
--- a/nixpkgs/pkgs/development/python-modules/certbot-dns-route53/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/certbot-dns-route53/default.nix
@@ -2,16 +2,16 @@
 , acme
 , boto3
 , certbot
-, isPy3k
-, pytest
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
-  inherit (certbot) src version;
-
   pname = "certbot-dns-route53";
 
+  inherit (certbot) src version;
+  disabled = pythonOlder "3.6";
+
   propagatedBuildInputs = [
     acme
     boto3
@@ -19,15 +19,12 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    pytest
     pytestCheckHook
   ];
 
-  disabled = !isPy3k;
-
   pytestFlagsArray = [ "-o cache_dir=$(mktemp -d)" ];
 
-  sourceRoot = "source/${pname}";
+  sourceRoot = "source/certbot-dns-route53";
 
   meta = certbot.meta // {
     description = "Route53 DNS Authenticator plugin for Certbot";
diff --git a/nixpkgs/pkgs/development/python-modules/certbot/default.nix b/nixpkgs/pkgs/development/python-modules/certbot/default.nix
index 6fe2bc2be08d..e65e6f0d808e 100644
--- a/nixpkgs/pkgs/development/python-modules/certbot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/certbot/default.nix
@@ -9,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "certbot";
-  version = "1.20.0";
+  version = "1.22.0";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-SO8vy9x2jwK5AOHety7RuxRK+OEIHpMXqetW3bqfzZI=";
+    sha256 = "1wrk5rhds6a69vbs1bda0zhwpvjhd8i20did6j3kydbas3zbr516";
   };
 
   sourceRoot = "source/${pname}";
diff --git a/nixpkgs/pkgs/development/python-modules/certifi/default.nix b/nixpkgs/pkgs/development/python-modules/certifi/default.nix
index e21719245c8a..68a0ca42986e 100644
--- a/nixpkgs/pkgs/development/python-modules/certifi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/certifi/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "certifi";
-  version = "2021.05.30";
+  version = "2021.10.08";
 
   disabled = isPy27;
 
@@ -15,7 +15,7 @@ buildPythonPackage rec {
     owner = pname;
     repo = "python-certifi";
     rev = version;
-    sha256 = "1i4ljsc47iac6kl1w4w6x0qia08s9z394z9lbyzc05pm7y8a3cmj";
+    sha256 = "sha256-SFb/spVHK15b53ZG1P147DcTjs1dqR0+MBXzpE+CWpo=";
   };
 
   checkInputs = [
@@ -25,7 +25,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "certifi" ];
 
   meta = with lib; {
-    homepage = "https://certifi.io/";
+    homepage = "https://github.com/certifi/python-certifi";
     description = "Python package for providing Mozilla's CA Bundle";
     license = licenses.isc;
     maintainers = with maintainers; [ koral ];
diff --git a/nixpkgs/pkgs/development/python-modules/certifi/python2.nix b/nixpkgs/pkgs/development/python-modules/certifi/python2.nix
index adc9594d69d0..529d5b1fb996 100644
--- a/nixpkgs/pkgs/development/python-modules/certifi/python2.nix
+++ b/nixpkgs/pkgs/development/python-modules/certifi/python2.nix
@@ -26,7 +26,7 @@ in buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    homepage = "https://certifi.io/";
+    homepage = "https://github.com/certifi/python-certifi";
     description = "Python package for providing Mozilla's CA Bundle";
     license = licenses.isc;
     maintainers = with maintainers; [ ]; # NixOps team
diff --git a/nixpkgs/pkgs/development/python-modules/cffi/default.nix b/nixpkgs/pkgs/development/python-modules/cffi/default.nix
index 94aecdcc4ec4..a65cd297f43f 100644
--- a/nixpkgs/pkgs/development/python-modules/cffi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cffi/default.nix
@@ -1,39 +1,38 @@
-{ lib, stdenv, buildPythonPackage, isPyPy, fetchPypi, libffi, pycparser, pytestCheckHook }:
+{ lib, stdenv, buildPythonPackage, isPyPy, fetchPypi, pytestCheckHook,
+  libffi, pkg-config, pycparser
+}:
 
 if isPyPy then null else buildPythonPackage rec {
   pname = "cffi";
-  version = "1.14.6";
+  version = "1.15.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c9a875ce9d7fe32887784274dd533c57909b7b1dcadcc128a2ac21331a9765dd";
+    sha256 = "920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954";
   };
 
   outputs = [ "out" "dev" ];
 
   buildInputs = [ libffi ];
 
+  nativeBuildInputs = [ pkg-config ];
+
   propagatedBuildInputs = [ pycparser ];
 
-  # On Darwin, the cffi tests want to hit libm a lot, and look for it in a global
-  # impure search path. It's obnoxious how much repetition there is, and how difficult
-  # it is to get it to search somewhere else (since we do actually have a libm symlink in libSystem)
   prePatch = lib.optionalString stdenv.isDarwin ''
-    substituteInPlace testing/cffi0/test_parsing.py \
-      --replace 'lib_m = "m"' 'lib_m = "System"' \
-      --replace '"libm" in name' '"libSystem" in name'
-    substituteInPlace testing/cffi0/test_unicode_literals.py --replace 'lib_m = "m"' 'lib_m = "System"'
-    substituteInPlace testing/cffi0/test_zdistutils.py --replace 'self.lib_m = "m"' 'self.lib_m = "System"'
-    substituteInPlace testing/cffi1/test_recompiler.py --replace 'lib_m = "m"' 'lib_m = "System"'
-    substituteInPlace testing/cffi0/test_function.py --replace "lib_m = 'm'" "lib_m = 'System'"
-    substituteInPlace testing/cffi0/test_verify.py --replace "lib_m = ['m']" "lib_m = ['System']"
+    # Remove setup.py impurities
+    substituteInPlace setup.py --replace "'-iwithsysroot/usr/include/ffi'" ""
+    substituteInPlace setup.py --replace "'/usr/include/ffi'," ""
+    substituteInPlace setup.py --replace '/usr/include/libffi' '${lib.getDev libffi}/include'
   '';
 
   # The tests use -Werror but with python3.6 clang detects some unreachable code.
   NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang
-    "-Wno-unused-command-line-argument -Wno-unreachable-code";
+    "-Wno-unused-command-line-argument -Wno-unreachable-code -Wno-c++11-narrowing";
 
-  doCheck = !stdenv.hostPlatform.isMusl && !stdenv.isDarwin; # TODO: Investigate
+  # Lots of tests fail on aarch64-darwin due to "Cannot allocate write+execute memory":
+  # * https://cffi.readthedocs.io/en/latest/using.html#callbacks
+  doCheck = !stdenv.hostPlatform.isMusl && !(stdenv.isDarwin && stdenv.isAarch64);
 
   checkInputs = [ pytestCheckHook ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/cfn-lint/default.nix b/nixpkgs/pkgs/development/python-modules/cfn-lint/default.nix
index 6f6d55502958..4a409cb41e03 100644
--- a/nixpkgs/pkgs/development/python-modules/cfn-lint/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cfn-lint/default.nix
@@ -5,6 +5,7 @@
 , aws-sam-translator
 , importlib-metadata
 , importlib-resources
+, jschema-to-python
 , jsonpatch
 , jsonschema
 , junit-xml
@@ -12,6 +13,7 @@
 , pathlib2
 , pyyaml
 , requests
+, sarif-om
 , setuptools
 , six
 , mock
@@ -21,13 +23,13 @@
 
 buildPythonPackage rec {
   pname = "cfn-lint";
-  version = "0.53.1";
+  version = "0.56.2";
 
   src = fetchFromGitHub {
     owner = "aws-cloudformation";
     repo = "cfn-python-lint";
     rev = "v${version}";
-    sha256 = "1wj2pzrrmrdf3mkhnz1qx41rshvfpgwlrxrb80d63r098pnq6df8";
+    sha256 = "0wpsj719r0p122qmi3nznzqnxqb0nx53isg9fma75894pvq2v5wc";
   };
 
   postPatch = ''
@@ -37,6 +39,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     aws-sam-translator
+    jschema-to-python
     jsonpatch
     jsonschema
     junit-xml
@@ -44,6 +47,7 @@ buildPythonPackage rec {
     pathlib2
     pyyaml
     requests
+    sarif-om
     setuptools
     six
   ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata importlib-resources ];
@@ -70,6 +74,7 @@ buildPythonPackage rec {
     # Tests depend on network access (fails in getaddrinfo)
     "test_update_resource_specs_python_2"
     "test_update_resource_specs_python_3"
+    "test_sarif_formatter"
   ];
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/cftime/default.nix b/nixpkgs/pkgs/development/python-modules/cftime/default.nix
index 46fad656cabe..aeebc762701f 100644
--- a/nixpkgs/pkgs/development/python-modules/cftime/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cftime/default.nix
@@ -5,16 +5,15 @@
 , pytest-cov
 , cython
 , numpy
-, python
 }:
 
 buildPythonPackage rec {
   pname = "cftime";
-  version = "1.5.0";
+  version = "1.5.1.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b644bcb53346b6f4fe2fcc9f3b574740a2097637492dcca29632c817e0604f29";
+    sha256 = "6dc4d76ec7fe5a2d3c00dbe6604c757f1319613b75ef157554ef3648bf102a50";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/chalice/default.nix b/nixpkgs/pkgs/development/python-modules/chalice/default.nix
index dfdde6b0d644..43767cb1a319 100644
--- a/nixpkgs/pkgs/development/python-modules/chalice/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/chalice/default.nix
@@ -24,13 +24,13 @@
 
 buildPythonPackage rec {
   pname = "chalice";
-  version = "1.24.2";
+  version = "1.26.2";
 
   src = fetchFromGitHub {
     owner = "aws";
     repo = pname;
     rev = version;
-    sha256 = "0xpzc3rizdkjxclgxngswz0a22kdv1pw235gsw517ma7i06d0lw6";
+    sha256 = "sha256-zF7wmrJTMX0Cr3wpJECUqhH58G2SLiVoC4Z2XbblQdQ=";
   };
 
   propagatedBuildInputs = [
@@ -85,6 +85,9 @@ buildPythonPackage rec {
     # Don't build
     "test_can_generate_pipeline_for_all"
     "test_build_wheel"
+    # https://github.com/aws/chalice/issues/1850
+    "test_resolve_endpoint"
+    "test_endpoint_from_arn"
   ];
 
   pythonImportsCheck = [ "chalice" ];
diff --git a/nixpkgs/pkgs/development/python-modules/channels-redis/default.nix b/nixpkgs/pkgs/development/python-modules/channels-redis/default.nix
index 1e267aa51269..c7383e98219d 100644
--- a/nixpkgs/pkgs/development/python-modules/channels-redis/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/channels-redis/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "channels-redis";
-  version = "3.2.0";
+  version = "3.3.1";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit version;
     pname = "channels_redis";
-    sha256 = "1rjs9irnq59yr6zwc9k6nnw6xrmr48dakrm25m0gcwskn1iimcrg";
+    sha256 = "899dc6433f5416cf8ad74505baaf2acb5461efac3cad40751a41119e3f68421b";
   };
 
   buildInputs = [ redis hiredis ];
diff --git a/nixpkgs/pkgs/development/python-modules/charset-normalizer/default.nix b/nixpkgs/pkgs/development/python-modules/charset-normalizer/default.nix
index dc0f5e1b296a..7f7f54b73d91 100644
--- a/nixpkgs/pkgs/development/python-modules/charset-normalizer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/charset-normalizer/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "charset-normalizer";
-  version = "2.0.1";
+  version = "2.0.8";
 
   src = fetchFromGitHub {
     owner = "Ousret";
     repo = "charset_normalizer";
     rev = version;
-    sha256 = "04rnyrqay11kma9pzagi1mzhc0sq37ggpv39kad2d4ynm35v2hfq";
+    sha256 = "sha256-+acnzdDcujnMa0FYlWaAX7Ga9APMRlvBLKoogIyY8YM=";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/chart-studio/default.nix b/nixpkgs/pkgs/development/python-modules/chart-studio/default.nix
index 2873b7e99ef0..0e80ee1a41e4 100644
--- a/nixpkgs/pkgs/development/python-modules/chart-studio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/chart-studio/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "chart-studio";
-  version = "5.3.1";
+  version = "5.4.0";
 
   # chart-studio was split from plotly
   src = fetchFromGitHub {
     owner = "plotly";
     repo = "plotly.py";
     rev = "v${version}";
-    sha256 = "11jazr5s2rmcxbkpb79gllwlyxvji3f0ryfrj7mkbyvfnfv43gly";
+    sha256 = "1ay9dlblxkx3pxqmizj2am9gf60j1pl6ir23yj7chg8dbafdbv8p";
   };
 
   sourceRoot = "source/packages/python/chart-studio";
diff --git a/nixpkgs/pkgs/development/python-modules/cherrypy/17.nix b/nixpkgs/pkgs/development/python-modules/cherrypy/17.nix
deleted file mode 100644
index 2ae180a8bae6..000000000000
--- a/nixpkgs/pkgs/development/python-modules/cherrypy/17.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi
-, setuptools-scm
-, cheroot, contextlib2, portend, routes, six, zc_lockfile
-, backports_unittest-mock, objgraph, pathpy, pytest, pytest-cov, backports_functools_lru_cache, requests-toolbelt
-}:
-
-buildPythonPackage rec {
-  pname = "cherrypy";
-  version = "17.4.2";
-
-  src = fetchPypi {
-    pname = "CherryPy";
-    inherit version;
-    sha256 = "ef1619ad161f526745d4f0e4e517753d9d985814f1280e330661333d2ba05cdf";
-  };
-
-  propagatedBuildInputs = [
-    cheroot contextlib2 portend routes six zc_lockfile
-  ];
-
-  nativeBuildInputs = [ setuptools-scm ];
-
-  checkInputs = [
-    backports_unittest-mock objgraph pathpy pytest pytest-cov backports_functools_lru_cache requests-toolbelt
-  ];
-
-  checkPhase = ''
-    pytest ${lib.optionalString stdenv.isDarwin "--ignore=cherrypy/test/test_wsgi_unix_socket.py"}
-  '';
-
-  meta = with lib; {
-    homepage = "https://www.cherrypy.org";
-    description = "A pythonic, object-oriented HTTP framework";
-    license = licenses.bsd3;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/chess/default.nix b/nixpkgs/pkgs/development/python-modules/chess/default.nix
index 94eea88efe8b..9330a4b49e84 100644
--- a/nixpkgs/pkgs/development/python-modules/chess/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/chess/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "chess";
-  version = "1.7.0";
+  version = "1.8.0";
 
   disabled = pythonOlder "3.7";
 
@@ -15,7 +15,7 @@ buildPythonPackage rec {
     owner = "niklasf";
     repo = "python-${pname}";
     rev = "v${version}";
-    sha256 = "0f2q9sif1rqjlgzkf7dnxrclmw8v84hzyrnq21g8k1cwqj5fx9j2";
+    sha256 = "sha256-ghBX0yRnggXliVREtrGxB/Xf0JWICeIi8XriSxS26Go=";
   };
 
   pythonImportsCheck = [ "chess" ];
diff --git a/nixpkgs/pkgs/development/python-modules/chex/default.nix b/nixpkgs/pkgs/development/python-modules/chex/default.nix
new file mode 100644
index 000000000000..bb873f2c3bfd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/chex/default.nix
@@ -0,0 +1,50 @@
+{ absl-py
+, buildPythonPackage
+, dm-tree
+, fetchFromGitHub
+, jax
+, jaxlib
+, lib
+, numpy
+, pytestCheckHook
+, toolz
+}:
+
+buildPythonPackage rec {
+  pname = "chex";
+  # As of 2021-12-29, the latest official version has broken tests with jax 0.2.26:
+  # `AttributeError: module 'jax.interpreters.xla' has no attribute 'xb'`
+  version = "unstable-2021-12-16";
+  format = "setuptools";
+
+  src = fetchFromGitHub {
+    owner = "deepmind";
+    repo = pname;
+    rev = "5adc10e0b4218f8ec775567fca38b68bbad42a3a";
+    sha256 = "00xib6zv9pwid2q7wcr109qj3fa3g3b852skz8444kw7r0qxy7z3";
+  };
+
+  propagatedBuildInputs = [
+    absl-py
+    dm-tree
+    jax
+    numpy
+    toolz
+  ];
+
+  pythonImportsCheck = [
+    "chex"
+  ];
+
+  checkInputs = [
+    jaxlib
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    description = "Chex is a library of utilities for helping to write reliable JAX code.";
+    homepage = "https://github.com/deepmind/chex";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ndl ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/chiapos/default.nix b/nixpkgs/pkgs/development/python-modules/chiapos/default.nix
index 587c2fbf3c70..42bf21dd5216 100644
--- a/nixpkgs/pkgs/development/python-modules/chiapos/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/chiapos/default.nix
@@ -6,6 +6,7 @@
 , cxxopts
 , ghc_filesystem
 , pybind11
+, pytestCheckHook
 , pythonOlder
 , psutil
 , setuptools-scm
@@ -13,12 +14,12 @@
 
 buildPythonPackage rec {
   pname = "chiapos";
-  version = "1.0.4";
+  version = "1.0.6";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-flI1vwtD0H28UDMcEEELECewkXZ6vf/XEYMqRKy5R6w=";
+    sha256 = "sha256-Zh5AULPgbG0oYPcBZMp/vm94MPyfdtYn4P5V+1LeMqA=";
   };
 
   patches = [
@@ -34,7 +35,11 @@ buildPythonPackage rec {
 
   buildInputs = [ pybind11 ];
 
-  checkInputs = [ psutil ];
+  checkInputs = [
+    psutil
+    pytestCheckHook
+  ];
+
 
   # CMake needs to be run by setuptools rather than by its hook
   dontConfigure = true;
diff --git a/nixpkgs/pkgs/development/python-modules/chiapos/dont_fetch_dependencies.patch b/nixpkgs/pkgs/development/python-modules/chiapos/dont_fetch_dependencies.patch
index 251021169691..85b7560f5d0d 100644
--- a/nixpkgs/pkgs/development/python-modules/chiapos/dont_fetch_dependencies.patch
+++ b/nixpkgs/pkgs/development/python-modules/chiapos/dont_fetch_dependencies.patch
@@ -1,13 +1,13 @@
 diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 9b4a2f5..86f849c 100644
+index b757b70..fcce055 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -18,22 +18,19 @@ include(FetchContent)
- else() 
+@@ -21,23 +21,20 @@ include(${CMAKE_INSTALL_PREFIX}/share/cmake/pybind11/pybind11Config.cmake)
+ else()
  FetchContent_Declare(
    pybind11-src
 -  GIT_REPOSITORY https://github.com/pybind/pybind11.git
--  GIT_TAG        v2.6.2
+-  GIT_TAG        v2.7.1
 +  SOURCE_DIR @pybind11_src@
  )
  FetchContent_MakeAvailable(pybind11-src)
@@ -29,4 +29,3 @@ index 9b4a2f5..86f849c 100644
  )
  FetchContent_MakeAvailable(gulrak)
  
-
diff --git a/nixpkgs/pkgs/development/python-modules/circuitbreaker/default.nix b/nixpkgs/pkgs/development/python-modules/circuitbreaker/default.nix
new file mode 100644
index 000000000000..6cf2d37c5973
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/circuitbreaker/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, mock
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "circuitbreaker";
+  version = "1.3.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "fabfuel";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-3hFa8dwCso5tj26ek2jMdVBRzu5H3vkdjQlDYw2hSH0=";
+  };
+
+  checkInputs = [
+    mock
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "circuitbreaker"
+  ];
+
+  meta = with lib; {
+    description = "Python Circuit Breaker implementation";
+    homepage = "https://github.com/fabfuel/circuitbreaker";
+    license = with licenses; [ bsd3 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cirq-aqt/default.nix b/nixpkgs/pkgs/development/python-modules/cirq-aqt/default.nix
new file mode 100644
index 000000000000..a240ce47d7e5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cirq-aqt/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage
+, cirq-core
+, requests
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "cirq-aqt";
+  inherit (cirq-core) version src meta;
+
+  sourceRoot = "source/${pname}";
+
+  postPatch = ''
+    substituteInPlace requirements.txt \
+      --replace "requests~=2.18" "requests"
+  '';
+
+  propagatedBuildInputs = [
+    cirq-core
+    requests
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  # cirq's importlib hook doesn't work here
+  #pythonImportsCheck = [ "cirq_aqt" ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cirq-core/default.nix b/nixpkgs/pkgs/development/python-modules/cirq-core/default.nix
index 54e2fa1954df..92045eb3e3ef 100644
--- a/nixpkgs/pkgs/development/python-modules/cirq-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cirq-core/default.nix
@@ -1,8 +1,9 @@
-{ stdenv
-, lib
+{ lib
 , buildPythonPackage
 , pythonOlder
 , fetchFromGitHub
+, fetchpatch
+, duet
 , matplotlib
 , networkx
 , numpy
@@ -26,9 +27,10 @@
 , freezegun
 , pytest-asyncio
 }:
+
 buildPythonPackage rec {
   pname = "cirq-core";
-  version = "0.11.0";
+  version = "0.13.1";
 
   disabled = pythonOlder "3.6";
 
@@ -36,20 +38,36 @@ buildPythonPackage rec {
     owner = "quantumlib";
     repo = "cirq";
     rev = "v${version}";
-    hash = "sha256-JaKTGnkYhzIFb35SGaho8DRupoT0JFYKA5+rJEq4oXw=";
+    sha256 = "sha256-MVfJ8iEeW8gFvCNTqrWfYpNNYuDAufHgcjd7Nh3qp8U=";
   };
 
   sourceRoot = "source/${pname}";
 
+  patches = [
+    # present in upstream master - remove after 0.13.1
+    (fetchpatch {
+      name = "fix-test-tolerances.part-1.patch";
+      url = "https://github.com/quantumlib/Cirq/commit/eb1d9031e55d3c8801ea44abbb6a4132b2fc5126.patch";
+      sha256 = "0ka24v6dfxnap9p07ni32z9zccbmw0lbrp5mcknmpsl12hza98xm";
+      stripLen = 1;
+    })
+    (fetchpatch {
+      name = "fix-test-tolerances.part-2.patch";
+      url = "https://github.com/quantumlib/Cirq/commit/a28d601b2bcfc393336375c53e5915fd16455395.patch";
+      sha256 = "0k2dqsm4ydn6556d40kc8j04jgjn59z4wqqg1jn1r916a7yxw493";
+      stripLen = 1;
+    })
+  ];
+
   postPatch = ''
     substituteInPlace requirements.txt \
       --replace "matplotlib~=3.0" "matplotlib" \
       --replace "networkx~=2.4" "networkx" \
-      --replace "numpy~=1.16" "numpy" \
-      --replace "requests~=2.18" "requests"
+      --replace "numpy~=1.16" "numpy"
   '';
 
   propagatedBuildInputs = [
+    duet
     matplotlib
     networkx
     numpy
@@ -82,17 +100,13 @@ buildPythonPackage rec {
   disabledTests = [
     "test_metadata_search_path" # tries to import flynt, which isn't in Nixpkgs
     "test_benchmark_2q_xeb_fidelities" # fails due pandas MultiIndex. Maybe issue with pandas version in nix?
-  ] ++ lib.optionals stdenv.hostPlatform.isAarch64 [
-    # Seem to fail due to math issues on aarch64?
-    "expectation_from_wavefunction"
-    "test_single_qubit_op_to_framed_phase_form_output_on_example_case"
   ];
 
   meta = with lib; {
-    description = "A framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits.";
+    description = "Framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits";
     homepage = "https://github.com/quantumlib/cirq";
     changelog = "https://github.com/quantumlib/Cirq/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ drewrisinger ];
+    maintainers = with maintainers; [ drewrisinger fab ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/cirq-google/default.nix b/nixpkgs/pkgs/development/python-modules/cirq-google/default.nix
index 900189dc2edb..5c8306c27fe9 100644
--- a/nixpkgs/pkgs/development/python-modules/cirq-google/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cirq-google/default.nix
@@ -1,6 +1,4 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
+{ buildPythonPackage
 , cirq-core
 , google-api-core
 , protobuf
@@ -27,5 +25,8 @@ buildPythonPackage rec {
     protobuf
   ];
 
-  checkInputs = [ pytestCheckHook freezegun ];
+  checkInputs = [
+    freezegun
+    pytestCheckHook
+  ];
 }
diff --git a/nixpkgs/pkgs/development/python-modules/cirq-ionq/default.nix b/nixpkgs/pkgs/development/python-modules/cirq-ionq/default.nix
new file mode 100644
index 000000000000..24ced1859580
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cirq-ionq/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage
+, cirq-core
+, requests
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "cirq-ionq";
+  inherit (cirq-core) version src meta;
+
+  sourceRoot = "source/${pname}";
+
+  postPatch = ''
+    substituteInPlace requirements.txt \
+      --replace "requests~=2.18" "requests"
+  '';
+
+  propagatedBuildInputs = [
+    cirq-core
+    requests
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  # cirq's importlib hook doesn't work here
+  #pythonImportsCheck = [ "cirq_ionq" ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cirq-pasqal/default.nix b/nixpkgs/pkgs/development/python-modules/cirq-pasqal/default.nix
new file mode 100644
index 000000000000..0743ee02dc74
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cirq-pasqal/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage
+, cirq-core
+, requests
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "cirq-pasqal";
+  inherit (cirq-core) version src meta;
+
+  sourceRoot = "source/${pname}";
+
+  postPatch = ''
+    substituteInPlace requirements.txt \
+      --replace "requests~=2.18" "requests"
+  '';
+
+  propagatedBuildInputs = [
+    cirq-core
+    requests
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  # cirq's importlib hook doesn't work here
+  #pythonImportsCheck = [ "cirq_pasqal" ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cirq-rigetti/default.nix b/nixpkgs/pkgs/development/python-modules/cirq-rigetti/default.nix
new file mode 100644
index 000000000000..f2fd48d54176
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cirq-rigetti/default.nix
@@ -0,0 +1,72 @@
+{ buildPythonPackage
+, cirq-core
+, requests
+, pytestCheckHook
+, attrs
+, certifi
+, h11
+, httpcore
+, idna
+, httpx
+, iso8601
+, pydantic
+, pyjwt
+, pyquil
+, python-dateutil
+, qcs-api-client
+, retrying
+, rfc3339
+, rfc3986
+, six
+, sniffio
+, toml
+}:
+
+buildPythonPackage rec {
+  pname = "cirq-rigetti";
+  inherit (cirq-core) version src meta;
+
+  sourceRoot = "source/${pname}";
+
+  postPatch = ''
+    substituteInPlace requirements.txt \
+      --replace "attrs~=20.3.0" "attrs" \
+      --replace "certifi~=2021.5.30" "certifi" \
+      --replace "h11~=0.9.0" "h11" \
+      --replace "httpcore~=0.11.1" "httpcore" \
+      --replace "httpx~=0.15.5" "httpx" \
+      --replace "idna~=2.10" "idna" \
+      --replace "requests~=2.18" "requests" \
+      --replace "pyjwt~=1.7.1" "pyjwt" \
+      --replace "qcs-api-client~=0.8.0" "qcs-api-client"
+  '';
+
+  propagatedBuildInputs = [
+    cirq-core
+    attrs
+    certifi
+    h11
+    httpcore
+    httpx
+    idna
+    iso8601
+    pydantic
+    pyjwt
+    pyquil
+    python-dateutil
+    qcs-api-client
+    retrying
+    rfc3339
+    rfc3986
+    six
+    sniffio
+    toml
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  # cirq's importlib hook doesn't work here
+  #pythonImportsCheck = [ "cirq_rigetti" ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cirq-web/default.nix b/nixpkgs/pkgs/development/python-modules/cirq-web/default.nix
new file mode 100644
index 000000000000..aa61157fe0d7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cirq-web/default.nix
@@ -0,0 +1,22 @@
+{ buildPythonPackage
+, cirq-core
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "cirq-web";
+  inherit (cirq-core) version src meta;
+
+  sourceRoot = "source/${pname}";
+
+  propagatedBuildInputs = [
+    cirq-core
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  # cirq's importlib hook doesn't work here
+  #pythonImportsCheck = [ "cirq_web" ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cirq/default.nix b/nixpkgs/pkgs/development/python-modules/cirq/default.nix
index f8afdcbbb050..6e428eeb4ef6 100644
--- a/nixpkgs/pkgs/development/python-modules/cirq/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cirq/default.nix
@@ -1,7 +1,11 @@
-{ lib
-, buildPythonPackage
+{ buildPythonPackage
+, cirq-aqt
 , cirq-core
 , cirq-google
+, cirq-ionq
+, cirq-pasqal
+, cirq-rigetti
+, cirq-web
   # test inputs
 , pytestCheckHook
 }:
@@ -11,8 +15,13 @@ buildPythonPackage rec {
   inherit (cirq-core) version src meta;
 
   propagatedBuildInputs = [
+    cirq-aqt
     cirq-core
+    cirq-ionq
     cirq-google
+    cirq-rigetti
+    cirq-pasqal
+    cirq-web
   ];
 
   # pythonImportsCheck = [ "cirq" "cirq.Circuit" ];  # cirq's importlib hook doesn't work here
@@ -20,8 +29,13 @@ buildPythonPackage rec {
 
   # Don't run submodule or development tool tests
   disabledTestPaths = [
-    "cirq-google"
+    "cirq-aqt"
     "cirq-core"
+    "cirq-google"
+    "cirq-ionq"
+    "cirq-pasqal"
+    "cirq-rigetti"
+    "cirq-web"
     "dev_tools"
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/claripy/default.nix b/nixpkgs/pkgs/development/python-modules/claripy/default.nix
index 8a1da0241c94..d96d684e3e18 100644
--- a/nixpkgs/pkgs/development/python-modules/claripy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/claripy/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "claripy";
-  version = "9.0.10159";
+  version = "9.1.10913";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "angr";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-0I3ITMCOuYm5fmmnQN+zy9lunvfsLb1qlUzSOnPGwlQ=";
+    sha256 = "sha256-66dc0y4mu5S5PtTx2fRkBdpNlH53ZpTiKyM3s0OUamw=";
   };
 
   # Use upstream z3 implementation
diff --git a/nixpkgs/pkgs/development/python-modules/cle/default.nix b/nixpkgs/pkgs/development/python-modules/cle/default.nix
index 7cdfec13c877..212267b00752 100644
--- a/nixpkgs/pkgs/development/python-modules/cle/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cle/default.nix
@@ -15,7 +15,7 @@
 
 let
   # The binaries are following the argr projects release cycle
-  version = "9.0.10159";
+  version = "9.1.10913";
 
   # Binary files from https://github.com/angr/binaries (only used for testing and only here)
   binaries = fetchFromGitHub {
@@ -35,7 +35,7 @@ buildPythonPackage rec {
     owner = "angr";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-DkddaVmSIQToF5b7uj+96vCSZU0cJdfqIDSwDIFEEyI=";
+    sha256 = "sha256-z8hBOqeI7T6Rov00OySDBdzUQ6jeBRseE7sz8VfIJmk=";
   };
 
   propagatedBuildInputs = [
@@ -66,9 +66,13 @@ buildPythonPackage rec {
     "test_ppc_addr16_lo_relocation"
     # Binary not found, seems to be missing in the current binaries release
     "test_plt_full_relro"
+    # Test fails
+    "test_tls_pe_incorrect_tls_data_start"
   ];
 
-  pythonImportsCheck = [ "cle" ];
+  pythonImportsCheck = [
+    "cle"
+  ];
 
   meta = with lib; {
     description = "Python loader for many binary formats";
diff --git a/nixpkgs/pkgs/development/python-modules/cleo/default.nix b/nixpkgs/pkgs/development/python-modules/cleo/default.nix
index 3e46b900dc7c..e79983b1bb29 100644
--- a/nixpkgs/pkgs/development/python-modules/cleo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cleo/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchPypi
-, pylev, pastel, clikit }:
+, clikit }:
 
 buildPythonPackage rec {
   pname = "cleo";
diff --git a/nixpkgs/pkgs/development/python-modules/cli-helpers/default.nix b/nixpkgs/pkgs/development/python-modules/cli-helpers/default.nix
index 1dc04d707882..a9e3daa8372b 100644
--- a/nixpkgs/pkgs/development/python-modules/cli-helpers/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cli-helpers/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "cli_helpers";
-  version = "2.1.0";
+  version = "2.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "dd6f164310f7d86fa3da1f82043a9c784e44a02ad49be932a80624261e56979b";
+    sha256 = "733f65d8c921e0cffa8f7ae4c8735bd7ecdffec383c5246f647ddd0fddb33448";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/cliapp/default.nix b/nixpkgs/pkgs/development/python-modules/cliapp/default.nix
deleted file mode 100644
index e410a37fcb42..000000000000
--- a/nixpkgs/pkgs/development/python-modules/cliapp/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchgit
-, sphinx
-, isPy3k
-}:
-
-buildPythonPackage {
-  pname = "cliapp";
-  version = "1.20150305";
-  disabled = isPy3k;
-
-  src = fetchgit {
-      url = "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/cliapp";
-      rev = "569df8a5959cd8ef46f78c9497461240a5aa1123";
-      sha256 = "882c5daf933e4cf089842995efc721e54361d98f64e0a075e7373b734cd899f3";
-  };
-
-  buildInputs = [ sphinx ];
-
-  # error: invalid command 'test'
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://liw.fi/cliapp/";
-    description = "Python framework for Unix command line programs";
-    license = licenses.gpl2;
-    maintainers = [];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/click-didyoumean/default.nix b/nixpkgs/pkgs/development/python-modules/click-didyoumean/default.nix
index c4574072b4ca..565663aee0cc 100644
--- a/nixpkgs/pkgs/development/python-modules/click-didyoumean/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/click-didyoumean/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "click-didyoumean";
-  version = "0.0.3";
+  version = "0.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1svaza5lpvdbmyrx5xi0riqzq4hb9wnlpqrg6r8zy14pbi42j8hi";
+    sha256 = "f184f0d851d96b6d29297354ed981b7dd71df7ff500d82fa6d11f0856bee8035";
   };
 
   propagatedBuildInputs = [ click ];
diff --git a/nixpkgs/pkgs/development/python-modules/click-repl/default.nix b/nixpkgs/pkgs/development/python-modules/click-repl/default.nix
index 84665ecb0950..5934adab7a7f 100644
--- a/nixpkgs/pkgs/development/python-modules/click-repl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/click-repl/default.nix
@@ -1,15 +1,32 @@
-{ lib, buildPythonPackage, fetchPypi, click, prompt-toolkit }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, click
+, prompt-toolkit
+, six
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "click-repl";
   version = "0.2.0";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "cd12f68d745bf6151210790540b4cb064c7b13e571bc64b6957d98d120dacfd8";
+  src = fetchFromGitHub {
+    owner = "click-contrib";
+    repo = "click-repl";
+    rev = version;
+    hash = "sha256-kaTUKaIomJL0u3NX40bL0I54vkR+Utcdw1QKSbnVy5s=";
   };
 
-  propagatedBuildInputs = [ click prompt-toolkit ];
+  propagatedBuildInputs = [
+    click
+    prompt-toolkit
+    six
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/click-contrib/click-repl";
diff --git a/nixpkgs/pkgs/development/python-modules/click/default.nix b/nixpkgs/pkgs/development/python-modules/click/default.nix
index d20322e3b843..3e2e8b6e24f1 100644
--- a/nixpkgs/pkgs/development/python-modules/click/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/click/default.nix
@@ -9,16 +9,16 @@
 
 buildPythonPackage rec {
   pname = "click";
-  version = "8.0.1";
+  version = "8.0.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0ymdyf37acq4qxh038q0xx44qgj6y2kf0jd0ivvix6qij88w214c";
+    sha256 = "sha256-QQ6TKwUPXu13PEzalN51lxyJzbMVWnKggxE5p55ey1s=";
   };
 
   postPatch = ''
     substituteInPlace src/click/_unicodefun.py \
-      --replace "'locale'" "'${locale}/bin/locale'"
+      --replace '"locale"' "'${locale}/bin/locale'"
   '';
 
   propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
diff --git a/nixpkgs/pkgs/development/python-modules/clickgen/default.nix b/nixpkgs/pkgs/development/python-modules/clickgen/default.nix
new file mode 100644
index 000000000000..a85cee778b0b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/clickgen/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pillow
+, libX11
+, libXcursor
+, libpng
+, python
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "clickgen";
+  version = "1.1.9";
+
+  src = fetchFromGitHub {
+    owner = "ful1e5";
+    repo = "clickgen";
+    rev = "v${version}";
+    sha256 = "108f3sbramd3hhs4d84s3i3lbwllfrkvjakjq4gdmbw6xpilvm0l";
+  };
+
+  buildInputs = [ libXcursor libX11 libpng ];
+
+  propagatedBuildInputs = [ pillow ];
+
+  pythonImportsCheck = [ "clickgen" ];
+
+  postInstall = ''
+    install -m644 clickgen/xcursorgen.so $out/${python.sitePackages}/clickgen/xcursorgen.so
+  '';
+
+  checkInputs = [ pytestCheckHook ];
+
+  meta = with lib; {
+    homepage = "https://github.com/ful1e5/clickgen";
+    description = "The hassle-free cursor building toolbox";
+    longDescription = ''
+      clickgen is API for building X11 and Windows Cursors from
+      .png files. clickgen is using anicursorgen and xcursorgen under the hood.
+    '';
+    license = licenses.mit;
+    maintainers = with maintainers; [ AdsonCicilioti ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/clickhouse-driver/default.nix b/nixpkgs/pkgs/development/python-modules/clickhouse-driver/default.nix
index 9a4c0f0f92be..dd1698f9a3ae 100644
--- a/nixpkgs/pkgs/development/python-modules/clickhouse-driver/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/clickhouse-driver/default.nix
@@ -16,14 +16,14 @@
 
 buildPythonPackage rec {
   pname = "clickhouse-driver";
-  version = "0.2.0";
+  version = "0.2.2";
 
   # pypi source doesn't contain tests
   src = fetchFromGitHub {
     owner = "mymarilyn";
     repo = "clickhouse-driver";
-    rev = "96b7ba448c63ca2670cc9aa70d4a0e08826fb650";
-    sha256 = "sha256-HFKUxJOlBCVlu7Ia8heGpwX6+HdKuwSy92s3v+GKGwE=";
+    rev = version;
+    sha256 = "0sx4jbadx9frzhqnj8b9w9l508x1r7j7b9883h7xq93lf00rxkfz";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/cliff/default.nix b/nixpkgs/pkgs/development/python-modules/cliff/default.nix
index 8b8f536bab6f..ce229665c659 100644
--- a/nixpkgs/pkgs/development/python-modules/cliff/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cliff/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "cliff";
-  version = "3.9.0";
+  version = "3.10.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "95363e9b43e2ec9599e33b5aea27a6953beda2d0673557916fa4f5796857daa3";
+    sha256 = "c68aac08d0d25853234a38fdbf1f33503849af3d5d677a4d0aacd42b0be6a4a1";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/cliff/tests.nix b/nixpkgs/pkgs/development/python-modules/cliff/tests.nix
index f7cc0226f2fc..b981e78be0c7 100644
--- a/nixpkgs/pkgs/development/python-modules/cliff/tests.nix
+++ b/nixpkgs/pkgs/development/python-modules/cliff/tests.nix
@@ -1,5 +1,4 @@
-{ stdenv
-, buildPythonPackage
+{ buildPythonPackage
 , cliff
 , docutils
 , stestr
diff --git a/nixpkgs/pkgs/development/python-modules/clize/default.nix b/nixpkgs/pkgs/development/python-modules/clize/default.nix
index faeb54f794bb..4f9a562543b9 100644
--- a/nixpkgs/pkgs/development/python-modules/clize/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/clize/default.nix
@@ -15,11 +15,11 @@
 
 buildPythonPackage rec {
   pname = "clize";
-  version = "4.2.0";
+  version = "4.2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "06p47i6hri006v7xbx7myj02as1a6f34rv88wfa9rb067p13nmyz";
+    sha256 = "3177a028e4169d8865c79af82bdd441b24311d4bd9c0ae8803641882d340a51d";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/closure-linter/default.nix b/nixpkgs/pkgs/development/python-modules/closure-linter/default.nix
deleted file mode 100644
index 18782fb50bb1..000000000000
--- a/nixpkgs/pkgs/development/python-modules/closure-linter/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchgit
-, isPy3k
-, gflags
-}:
-
-/* There is a project called "closure-linter" on PyPI that is the
-   same as this, but it does not appear to be owned by Google.
-   So we're pulling from Google's GitHub repo instead. */
-buildPythonPackage {
-  pname = "closure-linter";
-  version = "2.3.19";
-
-  /* This project has no Python 3 support, as noted by
-     https://github.com/google/closure-linter/issues/81 */
-  disabled = isPy3k;
-
-  src = fetchgit {
-    url = "https://github.com/google/closure-linter";
-    rev = "5c27529075bb88bdc45e73008f496dec8438d658";
-    sha256 = "076c7q7pr7akfvq5y8lxr1ab81wwps07gw00igdkcxnc5k9dzxwc";
-  };
-
-  propagatedBuildInputs = [ gflags ];
-
-  meta = with lib; {
-    description = "Checks JavaScript files against Google's style guide.";
-    homepage = "https://developers.google.com/closure/utilities/";
-    license = with licenses; [ asl20 ];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/cloudsmith-api/default.nix b/nixpkgs/pkgs/development/python-modules/cloudsmith-api/default.nix
index 5c3b5f114f53..0e1aca73522e 100644
--- a/nixpkgs/pkgs/development/python-modules/cloudsmith-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cloudsmith-api/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "cloudsmith-api";
-  version = "0.54.15";
+  version = "1.8.2";
 
   format = "wheel";
 
   src = fetchPypi {
     pname = "cloudsmith_api";
     inherit format version;
-    sha256 = "X72xReosUnUlj69Gq+i+izhaKZuakM9mUrRHZI5L9h0=";
+    sha256 = "f00410210f0efa1af7a2d344deafc12b946e3efc7d5c8374b27dc67ed8580183";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/cloudsplaining/default.nix b/nixpkgs/pkgs/development/python-modules/cloudsplaining/default.nix
index 6dbb3f91d1e8..23c911f8e4a6 100644
--- a/nixpkgs/pkgs/development/python-modules/cloudsplaining/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cloudsplaining/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "cloudsplaining";
-  version = "0.4.6";
+  version = "0.4.9";
 
   disabled = pythonOlder "3.6";
 
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "salesforce";
     repo = pname;
     rev = version;
-    sha256 = "sha256-TFUOsfQ1QxdpmRUJPoHMCuCpmYpQodLkP5EVXKm+qsw=";
+    sha256 = "sha256-87ZUYHN64gnbF2g9BjPFNbwMaGFxAy3Yb8UdT3BUqC0=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/clustershell/default.nix b/nixpkgs/pkgs/development/python-modules/clustershell/default.nix
index d247cecdfa63..ecbd8d02120d 100644
--- a/nixpkgs/pkgs/development/python-modules/clustershell/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/clustershell/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "ClusterShell";
-  version = "1.8.3";
+  version = "1.8.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0ebc1925c1aed94f99d74cbc0230215127ade80a25240133204094faa74bc41b";
+    sha256 = "ff6fba688a06e5e577315d899f0dab3f4fe479cef99d444a4e651af577b7d081";
   };
 
   propagatedBuildInputs = [ pyyaml ];
diff --git a/nixpkgs/pkgs/development/python-modules/clvm-rs/bump-cargo-lock.patch b/nixpkgs/pkgs/development/python-modules/clvm-rs/bump-cargo-lock.patch
new file mode 100644
index 000000000000..9939e6fb43a0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/clvm-rs/bump-cargo-lock.patch
@@ -0,0 +1,11 @@
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -80,7 +80,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+ 
+ [[package]]
+ name = "clvm_rs"
+-version = "0.1.14"
++version = "0.1.15"
+ dependencies = [
+  "bls12_381",
+  "hex",
diff --git a/nixpkgs/pkgs/development/python-modules/clvm-rs/default.nix b/nixpkgs/pkgs/development/python-modules/clvm-rs/default.nix
index 7cde70fd97f2..ec078970bc1a 100644
--- a/nixpkgs/pkgs/development/python-modules/clvm-rs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/clvm-rs/default.nix
@@ -9,20 +9,25 @@
 
 buildPythonPackage rec {
   pname = "clvm_rs";
-  version = "0.1.14";
+  version = "0.1.15";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "Chia-Network";
     repo = "clvm_rs";
     rev = version;
-    sha256 = "sha256-sQ+jzBiIZYVQj2rb170wLFEx2NzOj7kEL0k0gx/JOAc=";
+    sha256 = "sha256-4QFreQlRjKqGhPvuXU/pZpxMfF8LkIf6X7C3K2q77MI=";
   };
 
+  patches = [
+    # upstream forgot to refresh the lock file
+    ./bump-cargo-lock.patch
+  ];
+
   cargoDeps = rustPlatform.fetchCargoTarball {
-    inherit src;
+    inherit src patches;
     name = "${pname}-${version}";
-    sha256 = "sha256-ZSu3bu0MfxZEFqBwdHH/RM4WTF/yx9ju1IqSVfu+Upo=";
+    sha256 = "sha256-jPNU+P6JgxTPL1GYUBE4VPU3p6cgL8u/+AIELr7r5Mk=";
   };
 
   format = "pyproject";
diff --git a/nixpkgs/pkgs/development/python-modules/cmarkgfm/default.nix b/nixpkgs/pkgs/development/python-modules/cmarkgfm/default.nix
index 7379d6dc6c96..1085f4030c1e 100644
--- a/nixpkgs/pkgs/development/python-modules/cmarkgfm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cmarkgfm/default.nix
@@ -7,13 +7,15 @@
 
 buildPythonPackage rec {
   pname = "cmarkgfm";
-  version = "0.5.3";
+  version = "0.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-tqVJq6Mnq9mG1nSM8hyGN9dBx2hQ5/773vjSi/4TjjI=";
+    sha256 = "ec2bf8d5799c4b5bbfbae30a4a1dfcb06512f2e17e9ee60ba7e1d390318582fc";
   };
 
+  propagatedNativeBuildInputs = [ cffi ];
+
   propagatedBuildInputs = [ cffi ];
 
   checkInputs = [ pytestCheckHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/cmd2/default.nix b/nixpkgs/pkgs/development/python-modules/cmd2/default.nix
index f74cf77c5e4a..8339af8094c4 100644
--- a/nixpkgs/pkgs/development/python-modules/cmd2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cmd2/default.nix
@@ -18,13 +18,13 @@
 
 buildPythonPackage rec {
   pname = "cmd2";
-  version = "2.1.2";
+  version = "2.3.2";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "25dbb2e9847aaa686a8a21e84e3d101db8b79f5cb992e044fc54210ab8c0ad41";
+    sha256 = "cad18787a26147dad4b161d75c5ab7de16ffe91fef1cfad8e6f18b712746e800";
   };
 
   LC_ALL = "en_US.UTF-8";
diff --git a/nixpkgs/pkgs/development/python-modules/cmdtest/default.nix b/nixpkgs/pkgs/development/python-modules/cmdtest/default.nix
deleted file mode 100644
index 28d78203b6d4..000000000000
--- a/nixpkgs/pkgs/development/python-modules/cmdtest/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, cliapp
-, ttystatus
-, markdown
-, isPy3k
-, isPyPy
-}:
-
-buildPythonPackage rec {
-  pname = "cmdtest";
-  version = "0.32";
-  disabled = isPy3k || isPyPy;
-
-  src = fetchurl {
-    url = "http://code.liw.fi/debian/pool/main/c/cmdtest/cmdtest_${version}.orig.tar.xz";
-    sha256 = "0scc47h1nkmbm5zlvk9bsnsg64kb9r4xadchdinf4f1mph9qpgn6";
-  };
-
-  propagatedBuildInputs = [ cliapp ttystatus markdown ];
-
-  # TODO: cmdtest tests must be run before the buildPhase
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://liw.fi/cmdtest/";
-    description = "Black box tests Unix command line tools";
-    license = licenses.gpl3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/cock/default.nix b/nixpkgs/pkgs/development/python-modules/cock/default.nix
index 683234b88727..e7428823ad9e 100644
--- a/nixpkgs/pkgs/development/python-modules/cock/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cock/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, locale, pytestCheckHook, click, sortedcontainers, pyyaml }:
+{ lib, buildPythonPackage, fetchPypi, click, sortedcontainers, pyyaml }:
 
 buildPythonPackage rec {
   pname = "cock";
diff --git a/nixpkgs/pkgs/development/python-modules/coconut/default.nix b/nixpkgs/pkgs/development/python-modules/coconut/default.nix
index e964f2abaaa0..b7301cf1e73a 100644
--- a/nixpkgs/pkgs/development/python-modules/coconut/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/coconut/default.nix
@@ -1,10 +1,10 @@
 { lib
 , buildPythonApplication
 , fetchFromGitHub
-, fetchpatch
 , cpyparsing
 , ipykernel
 , mypy
+, pexpect
 , pygments
 , pytestCheckHook
 , prompt-toolkit
@@ -14,40 +14,22 @@
 
 buildPythonApplication rec {
   pname = "coconut";
-  version = "1.4.3";
+  version = "1.6.0";
 
   src = fetchFromGitHub {
     owner = "evhub";
     repo = "coconut";
     rev = "v${version}";
-    sha256 = "1pz13vza3yy95dbylnq89fzc3mwgcqr7ds096wy25k6vxd9dp9c3";
+    sha256 = "/397YGV6QWWmKfqr5hSvqRoPOu7Hx1Pak6rVPR3etzw=";
   };
 
-  propagatedBuildInputs = [ cpyparsing pygments prompt-toolkit ipykernel mypy watchdog ];
+  propagatedBuildInputs = [ cpyparsing ipykernel mypy pygments prompt-toolkit watchdog ];
 
-  patches = [
-    (fetchpatch {
-      name = "fix-setuptools-version-check.patch";
-      url = "https://github.com/LibreCybernetics/coconut/commit/2916a087da1e063cc4438b68d4077347fd1ea4a2.patch";
-      sha256 = "136jbd2rvnifw30y73vv667002nf7sbkm5qyihshj4db7ngysr6q";
-    })
-    (fetchpatch {
-      name = "support-python-3.9.patch";
-      url = "https://github.com/evhub/coconut/commit/5c724b4dd92fb62c614d8192e3cac3dd1d475790.patch";
-      sha256 = "04xmzyfmyv6gr2l2z6pdxlllwzcmwxvahxzqyxglr36hfl33ad71";
-    })
-  ];
-
-  checkInputs = [
-    pytestCheckHook
-    tkinter
-  ];
+  checkInputs = [ pexpect pytestCheckHook tkinter ];
 
-  # Currently most tests do not work on Hydra due to external fetches.
+  # Currently most tests have performance issues
   pytestFlagsArray = [
     "tests/constants_test.py"
-    "tests/main_test.py::TestShell::test_compile_to_file"
-    "tests/main_test.py::TestShell::test_convenience"
   ];
 
   pythonImportsCheck = [ "coconut" ];
diff --git a/nixpkgs/pkgs/development/python-modules/cocotb-bus/default.nix b/nixpkgs/pkgs/development/python-modules/cocotb-bus/default.nix
index af740e8d298f..a0c4767fe7de 100644
--- a/nixpkgs/pkgs/development/python-modules/cocotb-bus/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cocotb-bus/default.nix
@@ -1,16 +1,15 @@
 { lib
-, stdenv
 , buildPythonPackage
 , fetchPypi
 }:
 
 buildPythonPackage rec {
   pname = "cocotb-bus";
-  version = "0.1.1";
+  version = "0.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "cc9b0bb00c95061a67f650caf96e3a294bb74ef437124dea456dd9e2a9431854";
+    sha256 = "3afe3abe73464269247263e44f39d59c1258f227298be4118377a8e8c09d7dc1";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/cocotb/default.nix b/nixpkgs/pkgs/development/python-modules/cocotb/default.nix
index 17fe45f1cf49..90616dc1f8ab 100644
--- a/nixpkgs/pkgs/development/python-modules/cocotb/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cocotb/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "cocotb";
-  version = "1.5.2";
+  version = "1.6.0";
 
   # - we need to use the tarball from PyPi
   #   or the full git checkout (with .git)
@@ -20,7 +20,7 @@ buildPythonPackage rec {
   #   because it does not include required metadata
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9f4f3e6eb9caeb479e98d604770645b57469cd25b39e28df1916ffcd593efbe6";
+    sha256 = "a695544ab314e6d795b72ece9e67b51c6668c569b21303158e00452db43c5756";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/nixpkgs/pkgs/development/python-modules/cogapp/default.nix b/nixpkgs/pkgs/development/python-modules/cogapp/default.nix
index 022ab5a0b29c..facbc3206894 100644
--- a/nixpkgs/pkgs/development/python-modules/cogapp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cogapp/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "cogapp";
-  version = "3.1.0";
+  version = "3.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c43e374ee5ca2a35fbc68556f598bd8578eabe8a890487980bba56945b5ce9c6";
+    sha256 = "1be95183f70282422d594fa42426be6923070a4bd8335621f6347f3aeee81db0";
   };
 
   # there are no tests
diff --git a/nixpkgs/pkgs/development/python-modules/coilmq/default.nix b/nixpkgs/pkgs/development/python-modules/coilmq/default.nix
deleted file mode 100644
index b21ea193cbfa..000000000000
--- a/nixpkgs/pkgs/development/python-modules/coilmq/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi
-, stompclient, python-daemon, redis, pid, pytest, six, click, coverage
-, sqlalchemy }:
-
-buildPythonPackage rec {
-  pname = "CoilMQ";
-  version = "1.0.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "4cbfeb5ed2459df14902c1380157be6267702b1271682924cd316ccad8a29d1d";
-  };
-
-  propagatedBuildInputs = [ stompclient python-daemon redis pid ];
-  buildInputs = [ pytest six click coverage sqlalchemy ];
-
-  # The teste data is not included in the distribution
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Simple, lightweight, and easily extensible STOMP message broker";
-    homepage = "https://github.com/hozn/coilmq/";
-    license = licenses.asl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/colanderalchemy/default.nix b/nixpkgs/pkgs/development/python-modules/colanderalchemy/default.nix
index a3fa33f327c5..20f45f1fa75f 100644
--- a/nixpkgs/pkgs/development/python-modules/colanderalchemy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/colanderalchemy/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, unittest2
 , colander
 , sqlalchemy
 }:
diff --git a/nixpkgs/pkgs/development/python-modules/colorcet/default.nix b/nixpkgs/pkgs/development/python-modules/colorcet/default.nix
index 207653375144..33e7942dfc89 100644
--- a/nixpkgs/pkgs/development/python-modules/colorcet/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/colorcet/default.nix
@@ -3,19 +3,17 @@
 , fetchPypi
 , param
 , pyct
-, nbsmoke
-, flake8
-, pytest
 , pytest-mpl
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "colorcet";
-  version = "2.0.6";
+  version = "3.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "efa44b6f4078261e62d0039c76aba17ac8d3ebaf0bc2291a111aee3905313433";
+    sha256 = "21c522346a7aa81a603729f2996c22ac3f7822f4c8c303c59761e27d2dfcf3db";
   };
 
   propagatedBuildInputs = [
@@ -24,25 +22,29 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    pytest
-    flake8
     pytest-mpl
+    pytestCheckHook
   ];
 
-  checkPhase = ''
+  preCheck = ''
     export HOME=$(mktemp -d)
     mkdir -p $HOME/.config/matplotlib
     echo "backend: ps" > $HOME/.config/matplotlib/matplotlibrc
     ln -s $HOME/.config/matplotlib $HOME/.matplotlib
-
-    # requires other backends to be available
-    pytest colorcet -k 'not matplotlib_default_colormap_plot'
   '';
 
+  disabledTests = [
+    "matplotlib_default_colormap_plot"
+  ];
+
+  pythonImportsCheck = [
+    "colorcet"
+  ];
+
   meta = with lib; {
     description = "Collection of perceptually uniform colormaps";
     homepage = "https://colorcet.pyviz.org";
     license = licenses.cc-by-40;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/colorclass/default.nix b/nixpkgs/pkgs/development/python-modules/colorclass/default.nix
index 50a052ec1f94..f1a153ee1bc9 100644
--- a/nixpkgs/pkgs/development/python-modules/colorclass/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/colorclass/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "colorclass";
-  version = "2.2.0";
+  version = "2.2.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b05c2a348dfc1aff2d502527d78a5b7b7e2f85da94a96c5081210d8e9ee8e18b";
+    sha256 = "6d4fe287766166a98ca7bc6f6312daf04a0481b1eda43e7173484051c0ab4366";
   };
 
   # No tests in archive
diff --git a/nixpkgs/pkgs/development/python-modules/colored/default.nix b/nixpkgs/pkgs/development/python-modules/colored/default.nix
index 502f31aa9b8e..2aebcfb6ddfb 100644
--- a/nixpkgs/pkgs/development/python-modules/colored/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/colored/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "colored";
-  version = "1.4.2";
+  version = "1.4.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "056fac09d9e39b34296e7618897ed1b8c274f98423770c2980d829fd670955ed";
+    sha256 = "b7b48b9f40e8a65bbb54813d5d79dd008dc8b8c5638d5bbfd30fc5a82e6def7a";
   };
 
   # No proper test suite
diff --git a/nixpkgs/pkgs/development/python-modules/colorlog/default.nix b/nixpkgs/pkgs/development/python-modules/colorlog/default.nix
index d8a800f70ce0..690a54813f41 100644
--- a/nixpkgs/pkgs/development/python-modules/colorlog/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/colorlog/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "colorlog";
-  version = "6.5.0";
+  version = "6.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "cf62a8e389d5660d0d22be17937b25b9abef9497ddc940197d1773aa1f604339";
+    sha256 = "sha256-NE9zIEAJ5Mg8W2vrALPEXccPza48gNuRngpBcdAG/eg=";
   };
 
   checkInputs = [ pytestCheckHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/colormath/default.nix b/nixpkgs/pkgs/development/python-modules/colormath/default.nix
index 80f58250be4d..b749761da06c 100644
--- a/nixpkgs/pkgs/development/python-modules/colormath/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/colormath/default.nix
@@ -4,7 +4,6 @@
 , nose
 , numpy
 , lib
-, pytest
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/colorspacious/default.nix b/nixpkgs/pkgs/development/python-modules/colorspacious/default.nix
index 3ce0bddf1def..6f75d343066a 100644
--- a/nixpkgs/pkgs/development/python-modules/colorspacious/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/colorspacious/default.nix
@@ -1,5 +1,4 @@
-{ lib, pkgs, buildPythonPackage, fetchPypi, isPy3k
-, numpy
+{ lib, buildPythonPackage, fetchPypi, numpy
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/cometblue-lite/default.nix b/nixpkgs/pkgs/development/python-modules/cometblue-lite/default.nix
new file mode 100644
index 000000000000..01d24bc7cb7b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cometblue-lite/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, bluepy
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "cometblue-lite";
+  version = "0.4.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "neffs";
+    repo = "python-cometblue_lite";
+    rev = version;
+    sha256 = "sha256-kK6P8almFQac/bt7we02Q96RIB/s9wAqb+dn09tFx7k=";
+  };
+
+  propagatedBuildInputs = [
+    bluepy
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "cometblue_lite"
+  ];
+
+  meta = with lib; {
+    description = "Python module for Eurotronic Comet Blue thermostats";
+    homepage = "https://github.com/neffs/python-cometblue_lite";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/commoncode/default.nix b/nixpkgs/pkgs/development/python-modules/commoncode/default.nix
index 04921a618c25..142245221312 100644
--- a/nixpkgs/pkgs/development/python-modules/commoncode/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/commoncode/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , attrs
 , beautifulsoup4
 , buildPythonPackage
@@ -48,6 +49,11 @@ buildPythonPackage rec {
     pytestCheckHook
     pytest-xdist
   ];
+  disabledTests = lib.optionals stdenv.isDarwin [
+    # expected result is tailored towards the quirks of upstream's
+    # CI environment on darwin
+    "test_searchable_paths"
+  ];
 
   pythonImportsCheck = [
     "commoncode"
diff --git a/nixpkgs/pkgs/development/python-modules/conda/default.nix b/nixpkgs/pkgs/development/python-modules/conda/default.nix
index b097805292e9..5f1b56cbcde4 100644
--- a/nixpkgs/pkgs/development/python-modules/conda/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/conda/default.nix
@@ -3,7 +3,7 @@
 , fetchPypi
 , pycosat
 , requests
-, ruamel_yaml
+, ruamel-yaml
 , isPy3k
 , enum34
 }:
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     sha256 = "a91ef821343dea3ba9670f3d10b36c1ace4f4c36d70c175d8fc8886e94285953";
   };
 
-  propagatedBuildInputs = [ pycosat requests ruamel_yaml ] ++ lib.optional (!isPy3k) enum34;
+  propagatedBuildInputs = [ pycosat requests ruamel-yaml ] ++ lib.optional (!isPy3k) enum34;
 
   # No tests
   doCheck = false;
diff --git a/nixpkgs/pkgs/development/python-modules/confight/default.nix b/nixpkgs/pkgs/development/python-modules/confight/default.nix
new file mode 100644
index 000000000000..ff07a0f8b646
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/confight/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, toml
+}:
+
+buildPythonPackage rec {
+  pname = "confight";
+  version = "1.3.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-fJr7f9Y/zEpCedWYd04AMuhkOFqZLJOw4sDiz8SDQ/Y=";
+  };
+
+  propagatedBuildInputs = [
+    toml
+  ];
+
+  pythonImportsCheck = [ "confight" ];
+
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Python context manager for managing pid files";
+    homepage = "https://github.com/avature/confight";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ mkg20001 ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/configparser/default.nix b/nixpkgs/pkgs/development/python-modules/configparser/default.nix
index 3eeae353d115..5f227fa4f9ef 100644
--- a/nixpkgs/pkgs/development/python-modules/configparser/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/configparser/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "configparser";
-  version = "5.0.2";
+  version = "5.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "85d5de102cfe6d14a5172676f09d19c465ce63d6019cf0a4ef13385fc535e828";
+    sha256 = "202b9679a809b703720afa2eacaad4c6c2d63196070e5d9edc953c0489dfd536";
   };
 
   # No tests available
diff --git a/nixpkgs/pkgs/development/python-modules/consonance/default.nix b/nixpkgs/pkgs/development/python-modules/consonance/default.nix
index 3940686f18c7..7722226ef3f1 100644
--- a/nixpkgs/pkgs/development/python-modules/consonance/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/consonance/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, lib, fetchFromGitHub, pytest, dissononce, python-axolotl-curve25519
+{ buildPythonPackage, lib, fetchFromGitHub, dissononce, python-axolotl-curve25519
 , transitions, protobuf, nose
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/construct/2.10.54.nix b/nixpkgs/pkgs/development/python-modules/construct/2.10.54.nix
index 6bb279490ab2..6cfca7260512 100644
--- a/nixpkgs/pkgs/development/python-modules/construct/2.10.54.nix
+++ b/nixpkgs/pkgs/development/python-modules/construct/2.10.54.nix
@@ -1,5 +1,5 @@
-{ lib, stdenv, buildPythonPackage, fetchFromGitHub, pythonOlder
-, six, pytestCheckHook, pytest-benchmark, enum34, numpy, arrow, ruamel_yaml
+{ lib, stdenv, buildPythonPackage, fetchFromGitHub
+, pytestCheckHook, pytest-benchmark, enum34, numpy, arrow, ruamel-yaml
 }:
 
 buildPythonPackage rec {
@@ -14,9 +14,20 @@ buildPythonPackage rec {
     sha256 = "1mqspsn6bf3ibvih1zna2glkg8iw7vy5zg9gzg0d1m8zcndk2c48";
   };
 
-  checkInputs = [ pytestCheckHook pytest-benchmark enum34 numpy arrow ruamel_yaml ];
+  checkInputs = [ pytestCheckHook pytest-benchmark enum34 numpy ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [ "test_multiprocessing" ];
+  # these have dependencies that are broken on Python 2
+  disabledTestPaths = [
+    "tests/gallery/test_gallery.py"
+    "tests/test_benchmarks.py"
+    "tests/test_compiler.py"
+  ];
+
+  disabledTests = [
+    "test_timestamp"
+  ] ++ lib.optionals stdenv.isDarwin [
+    "test_multiprocessing"
+  ];
 
   pytestFlagsArray = [ "--benchmark-disable" ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/construct/default.nix b/nixpkgs/pkgs/development/python-modules/construct/default.nix
index 4ad78ddad3b6..b2783fa09346 100644
--- a/nixpkgs/pkgs/development/python-modules/construct/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/construct/default.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, buildPythonPackage, fetchFromGitHub, pythonOlder
-, six, pytestCheckHook, pytest-benchmark, numpy, arrow, ruamel_yaml
+, pytestCheckHook, pytest-benchmark, numpy, arrow, ruamel-yaml
 , lz4, cloudpickle
 }:
 
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     lz4
   ];
 
-  checkInputs = [ pytestCheckHook pytest-benchmark numpy arrow ruamel_yaml cloudpickle ];
+  checkInputs = [ pytestCheckHook pytest-benchmark numpy arrow ruamel-yaml cloudpickle ];
 
   disabledTests = lib.optionals stdenv.isDarwin [ "test_multiprocessing" ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/convertdate/2.2.x.nix b/nixpkgs/pkgs/development/python-modules/convertdate/2.2.x.nix
deleted file mode 100644
index 1145a61ca4f0..000000000000
--- a/nixpkgs/pkgs/development/python-modules/convertdate/2.2.x.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pymeeus
-, pytz
-, pytestCheckHook
-}:
-
-buildPythonPackage rec {
-  pname = "convertdate";
-  version = "2.2.2";
-
-  # Tests are not available in the PyPI tarball so use GitHub instead.
-  src = fetchFromGitHub {
-    owner = "fitnr";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "07x1j6jgkmrzdpv2lhpp4n16621mpmlylvwdwsggdjivhzvc3x9q";
-  };
-
-  propagatedBuildInputs = [
-    pymeeus
-    pytz
-  ];
-
-  checkInputs = [
-    pytestCheckHook
-  ];
-
-  meta = with lib; {
-    homepage = "https://github.com/fitnr/convertdate";
-    description = "Utils for converting between date formats and calculating holidays";
-    license = licenses.mit;
-    maintainers = with maintainers; [ jluttine ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/coveralls/default.nix b/nixpkgs/pkgs/development/python-modules/coveralls/default.nix
index 0c16d2d9aca2..72e8f6d45a72 100644
--- a/nixpkgs/pkgs/development/python-modules/coveralls/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/coveralls/default.nix
@@ -16,13 +16,13 @@
 
 buildPythonPackage rec {
   pname = "coveralls";
-  version = "3.2.0";
+  version = "3.3.1";
   disabled = isPy27;
 
   # wanted by tests
   src = fetchPypi {
     inherit pname version;
-    sha256 = "15a987d9df877fff44cd81948c5806ffb6eafb757b3443f737888358e96156ee";
+    sha256 = "b32a8bb5d2df585207c119d6c01567b81fba690c9c10a753bfe27a335bfc43ea";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/cozy/default.nix b/nixpkgs/pkgs/development/python-modules/cozy/default.nix
index fcd002f762d7..f7e0af082667 100644
--- a/nixpkgs/pkgs/development/python-modules/cozy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cozy/default.nix
@@ -1,5 +1,15 @@
-{ buildPythonPackage, isPy3k, fetchFromGitHub, lib,
-  z3, ply, python-igraph, oset, ordered-set, dictionaries, setuptools }:
+{ buildPythonPackage
+, isPy3k
+, fetchFromGitHub
+, lib
+, z3
+, ply
+, igraph
+, oset
+, ordered-set
+, dictionaries
+, setuptools
+}:
 
 buildPythonPackage {
   pname = "cozy";
@@ -7,7 +17,13 @@ buildPythonPackage {
   disabled = !isPy3k;
 
   propagatedBuildInputs = [
-    setuptools z3 ply python-igraph oset ordered-set dictionaries
+    setuptools
+    z3
+    ply
+    igraph
+    oset
+    ordered-set
+    dictionaries
   ];
 
   src = fetchFromGitHub {
@@ -17,9 +33,14 @@ buildPythonPackage {
     sha256 = "1jhr5gzihj8dkg0yc5dmi081v2isxharl0ph7v2grqj0bwqzl40j";
   };
 
-  # Yoink the Z3 dependency name, because our Z3 package doesn't provide it.
+  # - yoink the Z3 dependency name, because our Z3 package doesn't provide it.
+  # - remove "dictionaries" version bound
+  # - patch igraph package name
   postPatch = ''
-    sed -i -e '/z3-solver/d' -e 's/^dictionaries.*$/dictionaries/' requirements.txt
+    sed -i -e '/z3-solver/d' \
+           -e 's/^dictionaries.*$/dictionaries/' \
+           -e 's/python-igraph/igraph/' \
+            requirements.txt
   '';
 
   # Tests are not correctly set up in the source tree.
@@ -32,10 +53,10 @@ buildPythonPackage {
   '';
 
 
-  meta = {
+  meta = with lib; {
     description = "The collection synthesizer";
     homepage = "https://cozy.uwplse.org/";
-    license = lib.licenses.asl20;
-    maintainers = [ lib.maintainers.MostAwesomeDude ];
+    license = licenses.asl20;
+    maintainers = with maintainers; [ MostAwesomeDude ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/cppe/default.nix b/nixpkgs/pkgs/development/python-modules/cppe/default.nix
new file mode 100644
index 000000000000..52031bab74f7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cppe/default.nix
@@ -0,0 +1,54 @@
+{ buildPythonPackage
+, lib
+, stdenv
+, cmake
+, cppe
+, eigen
+, python
+, pybind11
+, numpy
+, h5py
+, numba
+, scipy
+, pandas
+, polarizationsolver
+, pytest
+, llvmPackages
+}:
+
+buildPythonPackage rec {
+  inherit (cppe) pname version src meta;
+
+  # The python interface requires eigen3, but builds from a checkout in tree.
+  # Using the nixpkgs version instead.
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "external/eigen3" "${eigen}/include/eigen3"
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    eigen
+  ];
+
+  dontUseCmakeConfigure = true;
+
+  buildInputs = [ pybind11 ]
+    ++ lib.optional stdenv.cc.isClang llvmPackages.openmp;
+
+  NIX_CFLAGS_LINK = lib.optional stdenv.cc.isClang "-lomp";
+
+  hardeningDisable = lib.optional stdenv.cc.isClang "strictoverflow";
+
+  checkInputs = [
+    pytest
+    h5py
+    numba
+    numpy
+    pandas
+    polarizationsolver
+    scipy
+  ];
+
+  pythonImportsCheck = [ "cppe" ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cpyparsing/default.nix b/nixpkgs/pkgs/development/python-modules/cpyparsing/default.nix
index 66f173106e49..cea3df8eeae1 100644
--- a/nixpkgs/pkgs/development/python-modules/cpyparsing/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cpyparsing/default.nix
@@ -1,18 +1,20 @@
-{ lib, buildPythonPackage, fetchFromGitHub, cython, python }:
+{ lib, buildPythonPackage, fetchFromGitHub, cython, pexpect, python }:
 
 buildPythonPackage rec {
   pname = "cpyparsing";
-  version = "2.4.5.0.1.1";
+  version = "2.4.7.1.1.0";
 
   src = fetchFromGitHub {
     owner = "evhub";
     repo = pname;
-    rev = "aa8ee45daec5c55328446bad7202ab8f799ab0ce"; # No tags on repo
-    sha256 = "1mxa5q41cb0k4lkibs0d4lzh1w6kmhhdrsm0w0r1m3s80m05ffmw";
+    rev = "v${version}";
+    sha256 = "1rqj89mb4dz0xk8djh506nrlqfqqdva9qgb5llrvvwjqv3vqnrj4";
   };
 
   nativeBuildInputs = [ cython ];
 
+  checkInputs = [ pexpect ];
+
   checkPhase = "${python.interpreter} tests/cPyparsing_test.py";
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/crashtest/default.nix b/nixpkgs/pkgs/development/python-modules/crashtest/default.nix
index 9981b56f2c09..5b084cdd8c84 100644
--- a/nixpkgs/pkgs/development/python-modules/crashtest/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/crashtest/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchPypi, pythonAtLeast, pytest }:
+{ lib, buildPythonPackage, fetchPypi, pythonAtLeast }:
 
 buildPythonPackage rec {
   pname = "crashtest";
diff --git a/nixpkgs/pkgs/development/python-modules/crccheck/default.nix b/nixpkgs/pkgs/development/python-modules/crccheck/default.nix
index 1762d60dfde5..891e67f64466 100644
--- a/nixpkgs/pkgs/development/python-modules/crccheck/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/crccheck/default.nix
@@ -3,7 +3,7 @@
 
 let
   pname = "crccheck";
-  version = "1.0";
+  version = "1.1";
 in buildPythonPackage {
   inherit pname version;
 
@@ -11,7 +11,7 @@ in buildPythonPackage {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1ay9lgy80j7lklm07iw2wq7giwnv9fbv50mncblqlc39y322vi0p";
+    sha256 = "45962231cab62b82d05160553eebd9b60ef3ae79dc39527caef52e27f979fa96";
   };
 
   disabled = !isPy3k;
diff --git a/nixpkgs/pkgs/development/python-modules/crownstone-cloud/default.nix b/nixpkgs/pkgs/development/python-modules/crownstone-cloud/default.nix
index 94e6219264c0..8b02eaa58961 100644
--- a/nixpkgs/pkgs/development/python-modules/crownstone-cloud/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/crownstone-cloud/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "crownstone-cloud";
-  version = "1.4.5";
+  version = "1.4.9";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -18,8 +18,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "crownstone";
     repo = "crownstone-lib-python-cloud";
-    rev = "v${version}";
-    sha256 = "1a8bkqkrc7iyggr5rr20qdqg67sycdx2d94dd1ylkmr7627r34ys";
+    rev = version;
+    sha256 = "sha256-CS1zeQiWPnsGCWixCsN9sz08mPORW5sVqIpSFPh0Qt0=";
   };
 
   propagatedBuildInputs = [
@@ -33,8 +33,7 @@ buildPythonPackage rec {
   ];
 
   postPatch = ''
-    substituteInPlace requirements.txt \
-      --replace "codecov>=2.1.10" ""
+    sed -i '/codecov/d' requirements.txt
   '';
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/crownstone-core/default.nix b/nixpkgs/pkgs/development/python-modules/crownstone-core/default.nix
index 35289cf1956c..be23d054a4eb 100644
--- a/nixpkgs/pkgs/development/python-modules/crownstone-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/crownstone-core/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "crownstone-core";
-  version = "3.0.1";
+  version = "3.1.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "crownstone";
     repo = "crownstone-lib-python-core";
     rev = version;
-    sha256 = "138lignv7c8kkqbqfkdcfpg39gm9x44h7r2j403m4ib7gq420hsn";
+    sha256 = "sha256-ujS4ho9io7KcoK5w1SCn7UPFg1ho3dgW0HS5HfsYsuU=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/crownstone-sse/default.nix b/nixpkgs/pkgs/development/python-modules/crownstone-sse/default.nix
index ef2e2cbc240c..2c4226c6a3ef 100644
--- a/nixpkgs/pkgs/development/python-modules/crownstone-sse/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/crownstone-sse/default.nix
@@ -1,16 +1,14 @@
 { lib
 , aiohttp
-, asynctest
 , buildPythonPackage
 , certifi
 , fetchFromGitHub
 , pythonOlder
-, coverage
 }:
 
 buildPythonPackage rec {
   pname = "crownstone-sse";
-  version = "2.0.2";
+  version = "2.0.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -19,12 +17,11 @@ buildPythonPackage rec {
     owner = "crownstone";
     repo = "crownstone-lib-python-sse";
     rev = version;
-    sha256 = "0rrr92j8pi5annrfa22k1hggsyyacl9asi9i8yrj4jqdjvwjn2gc";
+    sha256 = "sha256-O1joOH7HCXYCro26p6foMMpg0UXfOgXD0BXuN50OK7U=";
   };
 
   propagatedBuildInputs = [
     aiohttp
-    asynctest
     certifi
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/crownstone-uart/default.nix b/nixpkgs/pkgs/development/python-modules/crownstone-uart/default.nix
index fd1c2094335c..b8ed7721f064 100644
--- a/nixpkgs/pkgs/development/python-modules/crownstone-uart/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/crownstone-uart/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "crownstone-uart";
-  version = "2.1.0";
+  version = "2.2.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "crownstone";
     repo = "crownstone-lib-python-uart";
     rev = version;
-    sha256 = "0sdz131vmrfp6hrm9iwqw8mj9qazsxg7b85yadib1122w9f3b1zc";
+    sha256 = "sha256-5K7NzJ7fKOW4Uh1XIlicVkRZuM84qTM5RQc/DfP9OEc=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/cryptography/3.3.nix b/nixpkgs/pkgs/development/python-modules/cryptography/3.3.nix
index 049718520753..357bb35dacf7 100644
--- a/nixpkgs/pkgs/development/python-modules/cryptography/3.3.nix
+++ b/nixpkgs/pkgs/development/python-modules/cryptography/3.3.nix
@@ -1,7 +1,6 @@
 { lib, stdenv
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , isPy27
 , ipaddress
 , openssl
@@ -9,7 +8,6 @@
 , darwin
 , packaging
 , six
-, pythonOlder
 , isPyPy
 , cffi
 , pytest
diff --git a/nixpkgs/pkgs/development/python-modules/cryptography/default.nix b/nixpkgs/pkgs/development/python-modules/cryptography/default.nix
index 2fea6e89494d..d21e6d060fe1 100644
--- a/nixpkgs/pkgs/development/python-modules/cryptography/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cryptography/default.nix
@@ -1,7 +1,6 @@
 { lib, stdenv
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , rustPlatform
 , setuptools-rust
 , openssl
@@ -9,7 +8,6 @@
 , darwin
 , packaging
 , six
-, pythonOlder
 , isPyPy
 , cffi
 , pytest
@@ -81,10 +79,6 @@ buildPythonPackage rec {
     py.test ${pytestFlags} tests
   '';
 
-  # IOKit's dependencies are inconsistent between OSX versions, so this is the best we
-  # can do until nix 1.11's release
-  __impureHostDeps = [ "/usr/lib" ];
-
   meta = with lib; {
     description = "A package which provides cryptographic recipes and primitives";
     longDescription = ''
diff --git a/nixpkgs/pkgs/development/python-modules/crytic-compile/default.nix b/nixpkgs/pkgs/development/python-modules/crytic-compile/default.nix
index 8ed07d9597b1..7260310ea03e 100644
--- a/nixpkgs/pkgs/development/python-modules/crytic-compile/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/crytic-compile/default.nix
@@ -2,7 +2,7 @@
 
 buildPythonPackage rec {
   pname = "crytic-compile";
-  version = "0.2.1";
+  version = "0.2.2";
 
   disabled = pythonOlder "3.6";
 
@@ -10,7 +10,7 @@ buildPythonPackage rec {
     owner = "crytic";
     repo = "crytic-compile";
     rev = version;
-    sha256 = "sha256-RDb4Dc+igt2JKskBFIFvYt4xTAMujp8uXnkWsgnwdJE=";
+    sha256 = "sha256-4Lz+jJdKURp+K5XJJb7ksiFbnQwzS71gZWOufBvqz/k=";
   };
 
   propagatedBuildInputs = [ pysha3 setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/cssselect2/default.nix b/nixpkgs/pkgs/development/python-modules/cssselect2/default.nix
index 25bb35eab2d8..52c1bc4067fb 100644
--- a/nixpkgs/pkgs/development/python-modules/cssselect2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cssselect2/default.nix
@@ -3,11 +3,7 @@
 , pythonOlder
 , fetchPypi
 , tinycss2
-, pytest
-, pytest-runner
-, pytest-cov
-, pytest-flake8
-, pytest-isort
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
@@ -20,9 +16,15 @@ buildPythonPackage rec {
     sha256 = "93fbb9af860e95dd40bf18c3b2b6ed99189a07c0f29ba76f9c5be71344664ec8";
   };
 
+  postPatch = ''
+    sed -i '/^addopts/d' pyproject.toml
+  '';
+
   propagatedBuildInputs = [ tinycss2 ];
 
-  checkInputs = [ pytest pytest-runner pytest-cov pytest-flake8 pytest-isort ];
+  checkInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "cssselect2" ];
 
   meta = with lib; {
     description = "CSS selectors for Python ElementTree";
diff --git a/nixpkgs/pkgs/development/python-modules/cupy/default.nix b/nixpkgs/pkgs/development/python-modules/cupy/default.nix
index c3b06b7d9caa..6336fc0bdc01 100644
--- a/nixpkgs/pkgs/development/python-modules/cupy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cupy/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "cupy";
-  version = "9.5.0";
+  version = "9.6.0";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2e85c3ac476c80c78ce94cae8786cc82a615fc4d1b0d380f16b9665d2cc5d187";
+    sha256 = "22469ea1ad51ffbb4af2b139ed0820ac5d0b78f1265b2a095ed5e5d5299aab91";
   };
 
   preConfigure = ''
diff --git a/nixpkgs/pkgs/development/python-modules/curtsies/default.nix b/nixpkgs/pkgs/development/python-modules/curtsies/default.nix
index 7b34884e26e2..3ef99936c47a 100644
--- a/nixpkgs/pkgs/development/python-modules/curtsies/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/curtsies/default.nix
@@ -2,10 +2,10 @@
 
 buildPythonPackage rec {
   pname = "curtsies";
-  version = "0.3.5";
+  version = "0.3.10";
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1g8dwafx4vx06isjkn28r3cwb0hw1bv67lgygaz34yk66lrzz1x5";
+    sha256 = "11efbb153d9cb22223dd9a44041ea0c313b8411e246e7f684aa843f6aa9c1600";
   };
 
   propagatedBuildInputs = [ blessings cwcwidth ]
diff --git a/nixpkgs/pkgs/development/python-modules/cvxpy/default.nix b/nixpkgs/pkgs/development/python-modules/cvxpy/default.nix
index b7b5c7f55af0..79ed1ebac5f2 100644
--- a/nixpkgs/pkgs/development/python-modules/cvxpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cvxpy/default.nix
@@ -16,14 +16,14 @@
 
 buildPythonPackage rec {
   pname = "cvxpy";
-  version = "1.1.13";
+  version = "1.1.18";
   format = "pyproject";
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "012avhf0a8n9xyy4g3xcr5z8z2a3m6rnqic6gfs9fq6p9bkq3ix9";
+    sha256 = "sha256-W67+Hy7Wk3dJspNYbGzk9C7TDniQIj92Ycyyu333C+8=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/cwcwidth/default.nix b/nixpkgs/pkgs/development/python-modules/cwcwidth/default.nix
index a17a8a936aa0..ede96fc3b41d 100644
--- a/nixpkgs/pkgs/development/python-modules/cwcwidth/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cwcwidth/default.nix
@@ -13,12 +13,17 @@ buildPythonPackage rec {
   nativeBuildInputs = [ cython ];
 
   checkInputs = [ pytestCheckHook ];
-  # Hack needed to make pytest + cython work
-  # https://github.com/NixOS/nixpkgs/pull/82410#issuecomment-827186298
   preCheck = ''
+    # Hack needed to make pytest + cython work
+    # https://github.com/NixOS/nixpkgs/pull/82410#issuecomment-827186298
     export HOME=$(mktemp -d)
     cp -r $TMP/$sourceRoot/tests $HOME
     pushd $HOME
+
+    # locale settings used by upstream, has the effect of skipping
+    # otherwise-failing tests on darwin
+    export LC_ALL='C.UTF-8'
+    export LANG='C.UTF-8'
   '';
   postCheck = "popd";
 
@@ -29,6 +34,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/sebastinas/cwcwidth";
     changelog = "https://github.com/sebastinas/cwcwidth/blob/main/CHANGELOG.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ eduardosm ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/cx_freeze/default.nix b/nixpkgs/pkgs/development/python-modules/cx_freeze/default.nix
index 2f1797bf4fed..514b53b873a9 100644
--- a/nixpkgs/pkgs/development/python-modules/cx_freeze/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cx_freeze/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "cx_Freeze";
-  version = "6.8.1";
+  version = "6.8.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3f16d3d40f7f2e1f6032132170d8fd4ba2f4f9ea419f13d7a68091bbe1949583";
+    sha256 = "05e7a2b099d4eb36e74116311b693dcc3103763aee92ef32079be0b6d4832fa0";
   };
 
   disabled = pythonOlder "3.5";
diff --git a/nixpkgs/pkgs/development/python-modules/cx_oracle/default.nix b/nixpkgs/pkgs/development/python-modules/cx_oracle/default.nix
index a5606ac3dd20..3b7d701f1114 100644
--- a/nixpkgs/pkgs/development/python-modules/cx_oracle/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cx_oracle/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "cx_Oracle";
-  version = "8.2.1";
+  version = "8.3.0";
 
   buildInputs = [ odpic ];
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "12e7e913a7a10fd8caafb9855e6703a601b7dd5cc596fcd489d0ac9529608b6c";
+    sha256 = "3b2d215af4441463c97ea469b9cc307460739f89fdfa8ea222ea3518f1a424d9";
   };
 
   preConfigure = ''
diff --git a/nixpkgs/pkgs/development/python-modules/cycler/default.nix b/nixpkgs/pkgs/development/python-modules/cycler/default.nix
index 643a57e259ff..b9bd167c6a94 100644
--- a/nixpkgs/pkgs/development/python-modules/cycler/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cycler/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "cycler";
-  version = "0.10.0";
+  version = "0.11.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8";
+    sha256 = "9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f";
   };
 
   checkInputs = [ coverage nose ];
diff --git a/nixpkgs/pkgs/development/python-modules/cyclonedx-python-lib/default.nix b/nixpkgs/pkgs/development/python-modules/cyclonedx-python-lib/default.nix
new file mode 100644
index 000000000000..75f9c29607da
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/cyclonedx-python-lib/default.nix
@@ -0,0 +1,66 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, importlib-metadata
+, packageurl-python
+, poetry-core
+, pytestCheckHook
+, pythonOlder
+, requirements-parser
+, setuptools
+, toml
+, types-setuptools
+, types-toml
+, tox
+}:
+
+buildPythonPackage rec {
+  pname = "cyclonedx-python-lib";
+  version = "0.12.3";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "CycloneDX";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1404wcwjglq025n8ncsrl2h64g1sly83cs9sc6jpiw1g5ay4a1vi";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    importlib-metadata
+    packageurl-python
+    requirements-parser
+    setuptools
+    toml
+    types-setuptools
+    types-toml
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    tox
+  ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'setuptools = "^50.3.2"' 'setuptools = "*"' \
+      --replace 'importlib-metadata = "^4.8.1"' 'importlib-metadata = "*"'
+  '';
+
+  pythonImportsCheck = [
+    "cyclonedx"
+  ];
+
+  meta = with lib; {
+    description = "Python library for generating CycloneDX SBOMs";
+    homepage = "https://github.com/CycloneDX/cyclonedx-python-lib";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cysignals/default.nix b/nixpkgs/pkgs/development/python-modules/cysignals/default.nix
index d075360d1a44..d03e3ba501ec 100644
--- a/nixpkgs/pkgs/development/python-modules/cysignals/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cysignals/default.nix
@@ -1,4 +1,5 @@
 { lib
+, autoreconfHook
 , fetchPypi
 , buildPythonPackage
 , cython
@@ -9,11 +10,11 @@ assert pariSupport -> pari != null;
 
 buildPythonPackage rec {
   pname = "cysignals";
-  version = "1.10.3";
+  version = "1.11.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-XEYGxDV3UCgxb3Jf23y4lOPK4Lb9L4YqDSlxdIRptDo=";
+    sha256 = "5858b1760fbe21848121b826b2463a67ac5a45caf3d73105497a68618c5a6fa6";
   };
 
   # explicit check:
@@ -40,6 +41,8 @@ buildPythonPackage rec {
     pari
   ];
 
+  nativeBuildInputs = [ autoreconfHook ];
+
   enableParallelBuilding = true;
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/cytoolz/default.nix b/nixpkgs/pkgs/development/python-modules/cytoolz/default.nix
index 4e862d260927..9b1b9ecb8da6 100644
--- a/nixpkgs/pkgs/development/python-modules/cytoolz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cytoolz/default.nix
@@ -2,30 +2,33 @@
 , buildPythonPackage
 , fetchPypi
 , isPyPy
-, nose
+, pytestCheckHook
 , toolz
 , python
-, fetchpatch
 , isPy27
 }:
 
 buildPythonPackage rec {
   pname = "cytoolz";
-  version = "0.11.0";
+  version = "0.11.2";
   disabled = isPy27 || isPyPy;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c64f3590c3eb40e1548f0d3c6b2ccde70493d0b8dc6cc7f9f3fec0bb3dcd4222";
+    sha256 = "ea23663153806edddce7e4153d1d407d62357c05120a4e8485bddf1bd5ab22b4";
   };
 
-  checkInputs = [ nose ];
   propagatedBuildInputs = [ toolz ];
 
-  checkPhase = ''
-    nosetests -v $out/${python.sitePackages}
+  # tests are located in cytoolz/tests, however we can't import cytoolz
+  # from $PWD, as it will break relative imports
+  preCheck = ''
+    cd cytoolz
+    export PYTHONPATH=$out/${python.sitePackages}:$PYTHONPATH
   '';
 
+  checkInputs = [ pytestCheckHook ];
+
   meta = {
     homepage = "https://github.com/pytoolz/cytoolz/";
     description = "Cython implementation of Toolz: High performance functional utilities";
diff --git a/nixpkgs/pkgs/development/python-modules/darcsver/default.nix b/nixpkgs/pkgs/development/python-modules/darcsver/default.nix
deleted file mode 100644
index c46337981bd7..000000000000
--- a/nixpkgs/pkgs/development/python-modules/darcsver/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, mock }:
-
-buildPythonPackage rec {
-  pname = "darcsver";
-  version = "1.7.4";
-
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1yb1c3jxqvy4r3qiwvnb86qi5plw6018h15r3yk5ji3nk54qdcb6";
-  };
-
-  buildInputs = [ mock ];
-
-  # Note: We don't actually need to provide Darcs as a build input.
-  # Darcsver will DTRT when Darcs isn't available.  See news.gmane.org
-  # http://thread.gmane.org/gmane.comp.file-systems.tahoe.devel/3200 for a
-  # discussion.
-
-  # AttributeError: 'module' object has no attribute 'test_darcsver'
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Darcsver, generate a version number from Darcs history";
-    homepage = "https://pypi.python.org/pypi/darcsver";
-    license = "BSD-style";
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/dash-core-components/default.nix b/nixpkgs/pkgs/development/python-modules/dash-core-components/default.nix
index 7f2169cd9819..259e760fee32 100644
--- a/nixpkgs/pkgs/development/python-modules/dash-core-components/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dash-core-components/default.nix
@@ -4,12 +4,13 @@
 }:
 
 buildPythonPackage rec {
-  pname = "dash_core_components";
-  version = "1.17.1";
+  pname = "dash-core-components";
+  version = "2.0.0";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-flA/Xt22MDTdIMI9IYzA2KgeyI6aFbfLxg4maw4rYKk=";
+    pname = "dash_core_components";
+    inherit version;
+    sha256 = "sha256-xnM4dK+XXlUvlaE5ihbC7n3xTOQ/pguzcYo8bgtj/+4=";
   };
 
   # No tests in archive
diff --git a/nixpkgs/pkgs/development/python-modules/dash-html-components/default.nix b/nixpkgs/pkgs/development/python-modules/dash-html-components/default.nix
index 1b4e5d6a47d6..ae5496ec5043 100644
--- a/nixpkgs/pkgs/development/python-modules/dash-html-components/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dash-html-components/default.nix
@@ -4,12 +4,13 @@
 }:
 
 buildPythonPackage rec {
-  pname = "dash_html_components";
-  version = "1.1.4";
+  pname = "dash-html-components";
+  version = "2.0.0";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "dc4f423e13716d179d51a42b3c7e2a2ed02e05185c742f88214b58d59e24bbd4";
+    pname = "dash_html_components";
+    inherit version;
+    sha256 = "8703a601080f02619a6390998e0b3da4a5daabe97a1fd7a9cebc09d015f26e50";
   };
 
   # No tests in archive
diff --git a/nixpkgs/pkgs/development/python-modules/dash-table/default.nix b/nixpkgs/pkgs/development/python-modules/dash-table/default.nix
index 5a2ada1b56e0..e327f4e76168 100644
--- a/nixpkgs/pkgs/development/python-modules/dash-table/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dash-table/default.nix
@@ -4,12 +4,13 @@
 }:
 
 buildPythonPackage rec {
-  pname = "dash_table";
-  version = "4.12.0";
+  pname = "dash-table";
+  version = "5.0.0";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-TJlomoh7/QNSeLFOzV23BwYCM4nlNzXV48zMQW+s2+Q=";
+    pname = "dash_table";
+    inherit version;
+    sha256 = "sha256-GGJNaT1MjvLd7Jmm8WdZNDen6gvxU6og8xjBcMW8cwg=";
   };
 
   # No tests in archive
diff --git a/nixpkgs/pkgs/development/python-modules/dash/default.nix b/nixpkgs/pkgs/development/python-modules/dash/default.nix
index 807a08de67ec..3fd9d2a41d58 100644
--- a/nixpkgs/pkgs/development/python-modules/dash/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dash/default.nix
@@ -4,53 +4,48 @@
 , plotly
 , flask
 , flask-compress
-, future
 , dash-core-components
-, dash-renderer
 , dash-html-components
 , dash-table
-, pytest
 , pytest-mock
 , mock
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "dash";
-  version = "1.21.0";
+  version = "2.0.0";
 
   src = fetchFromGitHub {
     owner = "plotly";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-X2yRlW6aXgRgKgRxLNBUHjkjMaw7K4iydzpWLBNt+Y8=";
+    sha256 = "sha256-0RvA5qkwQJGyy81D5kW+IR6LbaD/KBwMy6kYxTETubg=";
   };
 
   propagatedBuildInputs = [
     plotly
     flask
     flask-compress
-    future
     dash-core-components
-    dash-renderer
     dash-html-components
     dash-table
   ];
 
   checkInputs = [
-    pytest
+    pytestCheckHook
     pytest-mock
     mock
   ];
 
-  checkPhase = ''
-    pytest tests/unit/test_{configs,fingerprint,resources}.py \
-      tests/unit/dash/
-  '';
-
-  pythonImportsCheck = [
-    "dash"
+  disabledTestPaths = [
+    "tests/unit/test_browser.py"
+    "tests/unit/test_app_runners.py" # Use selenium
+    "tests/integration"
   ];
 
+  pythonImportsCheck = [ "dash" ];
+
   meta = with lib; {
     description = "Python framework for building analytical web applications";
     homepage = "https://dash.plot.ly/";
diff --git a/nixpkgs/pkgs/development/python-modules/dask-image/default.nix b/nixpkgs/pkgs/development/python-modules/dask-image/default.nix
index e3ab607dcac0..5ff95eef6ac9 100644
--- a/nixpkgs/pkgs/development/python-modules/dask-image/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dask-image/default.nix
@@ -9,12 +9,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "0.6.0";
+  version = "2021.12.0";
   pname = "dask-image";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1zzxrvbm52xn7azkn74pjinlk0jkpdcyl3r5vxxy5lmjnmzlrrpy";
+    sha256 = "35be49626bd01c3e3892128126a27d5ee3266a198a8e3c7e30d59eaef712fcf9";
   };
 
   propagatedBuildInputs = [ dask scipy pims ];
diff --git a/nixpkgs/pkgs/development/python-modules/dask-ml/default.nix b/nixpkgs/pkgs/development/python-modules/dask-ml/default.nix
index 62f2a30507b5..60df07076827 100644
--- a/nixpkgs/pkgs/development/python-modules/dask-ml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dask-ml/default.nix
@@ -17,13 +17,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.9.0";
+  version = "2021.11.30";
   pname = "dask-ml";
   disabled = pythonOlder "3.6"; # >= 3.6
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2f376a7114133b484a6d393f62298473116fc49c79ec7d50d5b031d752f54307";
+    sha256 = "4f73306b5ee56e9b41b133697062d0028d30b1ece883ac6b56532fea5bd3e94a";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/dask-mpi/default.nix b/nixpkgs/pkgs/development/python-modules/dask-mpi/default.nix
index d656b055d119..cc44a6e97eb7 100644
--- a/nixpkgs/pkgs/development/python-modules/dask-mpi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dask-mpi/default.nix
@@ -7,12 +7,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "2.21.0";
+  version = "2021.11.0";
   pname = "dask-mpi";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "76e153fc8c58047d898970b33ede0ab1990bd4e69cc130c6627a96f11b12a1a7";
+    sha256 = "602d2e2d7816a4abc1eb17998e1acc93a43b6f82bf94a6accca169a42de21898";
   };
 
   propagatedBuildInputs = [ dask distributed mpi4py ];
diff --git a/nixpkgs/pkgs/development/python-modules/dask/default.nix b/nixpkgs/pkgs/development/python-modules/dask/default.nix
index 68e5304932df..39d01559d460 100644
--- a/nixpkgs/pkgs/development/python-modules/dask/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dask/default.nix
@@ -5,6 +5,7 @@
 , cloudpickle
 , distributed
 , fetchFromGitHub
+, fetchpatch
 , fsspec
 , jinja2
 , numpy
@@ -22,7 +23,7 @@
 
 buildPythonPackage rec {
   pname = "dask";
-  version = "2021.09.1";
+  version = "2021.10.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -31,9 +32,19 @@ buildPythonPackage rec {
     owner = "dask";
     repo = pname;
     rev = version;
-    sha256 = "sha256-+UkbXbWV5R/QtVb5rWm/5SA+IoWsIfBciL3vg138jkc=";
+    sha256 = "07ysrs46x5w8rc2df0j06rsw58ahcysd6lwjk5riqpjlpwdfmg7p";
   };
 
+  patches = [
+    # remove with next bump
+    (fetchpatch {
+      name = "fix-tests-against-distributed-2021.10.0.patch";
+      url = "https://github.com/dask/dask/commit/cd65507841448ad49001cf27564102e2fb964d0a.patch";
+      includes = [ "dask/tests/test_distributed.py" ];
+      sha256 = "1i4i4k1lzxcydq9l80jyifq21ny0j3i47rviq07ai488pvx1r2al";
+    })
+  ];
+
   propagatedBuildInputs = [
     cloudpickle
     fsspec
diff --git a/nixpkgs/pkgs/development/python-modules/databricks-cli/default.nix b/nixpkgs/pkgs/development/python-modules/databricks-cli/default.nix
index e9313447ec88..bb8bda922872 100644
--- a/nixpkgs/pkgs/development/python-modules/databricks-cli/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/databricks-cli/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "databricks-cli";
-  version = "0.15.0";
+  version = "0.16.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4d0fbe3cb9c86d7342d45357f1db2e01011c507659f21b7a8144709cf8fa9f96";
+    sha256 = "3e9a65a19a589b795ebbd9b3b16a8e470d612d57d6216ae44a9c7a735e4080e6";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/databricks-connect/default.nix b/nixpkgs/pkgs/development/python-modules/databricks-connect/default.nix
index a719658a509b..7df195b3aacb 100644
--- a/nixpkgs/pkgs/development/python-modules/databricks-connect/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/databricks-connect/default.nix
@@ -1,17 +1,17 @@
-{ lib, jdk, buildPythonPackage, fetchPypi, six, py4j }:
+{ lib, jdk8, buildPythonPackage, fetchPypi, six, py4j }:
 
 buildPythonPackage rec {
   pname = "databricks-connect";
-  version = "8.1.14";
+  version = "9.1.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8f110955a1a50e46dc03dbd969a8765b9493268153de16704767b226e4fe186e";
+    sha256 = "26b88b1d8fdacf5226cf9c1924fae974c955ccbfe2fdcd08574327007bdcbdd9";
   };
 
   sourceRoot = ".";
 
-  propagatedBuildInputs = [ py4j six jdk ];
+  propagatedBuildInputs = [ py4j six jdk8 ];
 
   # requires network access
   doCheck = false;
diff --git a/nixpkgs/pkgs/development/python-modules/datamodeldict/default.nix b/nixpkgs/pkgs/development/python-modules/datamodeldict/default.nix
index 551b10962224..b87ce1803c0d 100644
--- a/nixpkgs/pkgs/development/python-modules/datamodeldict/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/datamodeldict/default.nix
@@ -5,12 +5,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "0.9.7";
+  version = "0.9.8";
   pname = "DataModelDict";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b1be7573cb4401aa250fd00f2e6392543f6f2498f8e02f6313595aa220e5c99e";
+    sha256 = "65c36954efa17449c69a4d8cb11c9273593ef01428cd77a609ee134eba771550";
   };
 
   propagatedBuildInputs = [ xmltodict ];
diff --git a/nixpkgs/pkgs/development/python-modules/datasets/default.nix b/nixpkgs/pkgs/development/python-modules/datasets/default.nix
index 0c1b8137bc98..b4b60da17f9f 100644
--- a/nixpkgs/pkgs/development/python-modules/datasets/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/datasets/default.nix
@@ -16,13 +16,13 @@
 
 buildPythonPackage rec {
   pname = "datasets";
-  version = "1.11.0";
+  version = "1.16.1";
 
   src = fetchFromGitHub {
     owner = "huggingface";
     repo = pname;
     rev = version;
-    sha256 = "0pm14cp7xaagpf4j96v0ybi5gn3r9p0if3pc197ckwx6sw3lx29p";
+    sha256 = "sha256-5J2hhy52eZqVSaeJNIOM9RzZatq3aewAulS3OX76+Io=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/datasette/default.nix b/nixpkgs/pkgs/development/python-modules/datasette/default.nix
index 5a611c989f4d..7908b3c6b496 100644
--- a/nixpkgs/pkgs/development/python-modules/datasette/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/datasette/default.nix
@@ -31,14 +31,15 @@
 
 buildPythonPackage rec {
   pname = "datasette";
-  version = "0.58.1";
+  version = "0.59.4";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "simonw";
     repo = pname;
     rev = version;
-    sha256 = "sha256-dtKqp7LV1fRjwOMAlmmAnC19j8hLA1oixGextATW6z0=";
+    sha256 = "sha256-bH/VREo2f84wloA2jgXnQkGNSRRRYmSvUXmI0wMfmYM=";
   };
 
   nativeBuildInputs = [ pytest-runner ];
@@ -79,7 +80,6 @@ buildPythonPackage rec {
       --replace "pint~=0.9" "pint" \
       --replace "pluggy~=0.13.0" "pluggy" \
       --replace "uvicorn~=0.11" "uvicorn" \
-      --replace "PyYAML~=5.3" "PyYAML"
   '';
 
   # takes 30-180 mins to run entire test suite, not worth the CPU resources, slows down reviews
@@ -108,6 +108,6 @@ buildPythonPackage rec {
     description = "Multi-tool for exploring and publishing data";
     homepage = "https://datasette.io/";
     license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/datashader/default.nix b/nixpkgs/pkgs/development/python-modules/datashader/default.nix
index 5738dc64e759..587f73d81ed8 100644
--- a/nixpkgs/pkgs/development/python-modules/datashader/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/datashader/default.nix
@@ -31,6 +31,13 @@ buildPythonPackage rec {
     sha256 = "sha256-6JscHm1QjDmXOLLa83qhAvY/xwvlPM6duQ1lSxnCVV8=";
   };
 
+  # the complete extra is for usage with conda, which we
+  # don't care about
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "dask[complete]" "dask"
+  '';
+
   propagatedBuildInputs = [
     dask
     bokeh
@@ -56,11 +63,24 @@ buildPythonPackage rec {
     netcdf4
   ];
 
+  preCheck = ''
+    export HOME=$TMPDIR
+  '';
+
   pytestFlagsArray = [
     "-n $NIX_BUILD_CORES"
     "datashader"
   ];
 
+  disabledTests = [
+    # not compatible with current version of bokeh
+    # see: https://github.com/holoviz/datashader/issues/1031
+    "test_interactive_image_update"
+    # latest dask broken array marshalling
+    # see: https://github.com/holoviz/datashader/issues/1032
+    "test_raster_quadmesh_autorange_reversed"
+  ];
+
   disabledTestPaths = [
     # 31/50 tests fail with TypeErrors
     "datashader/tests/test_datatypes.py"
diff --git a/nixpkgs/pkgs/development/python-modules/datatable/default.nix b/nixpkgs/pkgs/development/python-modules/datatable/default.nix
index 60eb0df1d09d..9008270fc79e 100644
--- a/nixpkgs/pkgs/development/python-modules/datatable/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/datatable/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi, substituteAll, pythonOlder
+{ stdenv, lib, buildPythonPackage, fetchPypi, pythonOlder
 , pipInstallHook, writeText
 , blessed
 , docutils
@@ -20,13 +20,16 @@ buildPythonPackage rec {
   # authors seem to have created their own build system
   format = "other";
 
-  # tarball doesn't appear to have been shipped totally ready-to-build
   postPatch = ''
+    # tarball doesn't appear to have been shipped totally ready-to-build
     substituteInPlace ci/ext.py \
       --replace \
         'shell_cmd(["git"' \
         '"0000000000000000000000000000000000000000" or shell_cmd(["git"'
     echo '${version}' > VERSION.txt
+
+    # don't make assumptions about architecture
+    sed -i '/-m64/d' ci/ext.py
   '';
   DT_RELEASE = "1";
 
diff --git a/nixpkgs/pkgs/development/python-modules/dateparser/0.x.nix b/nixpkgs/pkgs/development/python-modules/dateparser/0.x.nix
deleted file mode 100644
index 2aab262e64d2..000000000000
--- a/nixpkgs/pkgs/development/python-modules/dateparser/0.x.nix
+++ /dev/null
@@ -1,55 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, mock
-, parameterized
-, pytestCheckHook
-, python-dateutil
-, pytz
-, regex
-, tzlocal
-, convertdate
-, umalqurra
-, jdatetime
-, ruamel_yaml
-}:
-
-buildPythonPackage rec {
-  pname = "dateparser";
-  version = "0.7.6";
-
-  src = fetchFromGitHub {
-    owner = "scrapinghub";
-    repo = "dateparser";
-    rev = "v${version}";
-    sha256 = "0j3sm4hlx7z0ci5fnjq5n9i02vvlfz0wxa889ydryfknjhy5apqw";
-  };
-
-  checkInputs = [
-    mock
-    parameterized
-    pytestCheckHook
-  ];
-
-  pytestFlagsArray = [ "tests" ];
-
-  disabledTestPaths = [
-    "tests/test_dateparser_data_integrity.py" # ImportError: No module named ruamel.yaml
-  ];
-
-  propagatedBuildInputs = [
-    # install_requires
-    python-dateutil pytz regex tzlocal
-    # extra_requires
-    convertdate umalqurra jdatetime ruamel_yaml
-  ];
-
-  pythonImportsCheck = [ "dateparser" ];
-
-  meta = with lib; {
-    description = "Date parsing library designed to parse dates from HTML pages";
-    homepage = "https://github.com/scrapinghub/dateparser";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ dotlambda ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/dateparser/default.nix b/nixpkgs/pkgs/development/python-modules/dateparser/default.nix
index e1f2f9336877..467ed5184c11 100644
--- a/nixpkgs/pkgs/development/python-modules/dateparser/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dateparser/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , isPy3k
 , fetchFromGitHub
-, fetchpatch
 , python-dateutil
 , pytz
 , regex
@@ -14,7 +13,7 @@
 , parameterized
 , pytestCheckHook
 , GitPython
-, ruamel_yaml
+, ruamel-yaml
 }:
 
 buildPythonPackage rec {
@@ -41,7 +40,7 @@ buildPythonPackage rec {
     parameterized
     pytestCheckHook
     GitPython
-    ruamel_yaml
+    ruamel-yaml
   ];
 
   preCheck = ''
diff --git a/nixpkgs/pkgs/development/python-modules/dbus/default.nix b/nixpkgs/pkgs/development/python-modules/dbus/default.nix
index 8c9eb476fe08..23fcf511187e 100644
--- a/nixpkgs/pkgs/development/python-modules/dbus/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dbus/default.nix
@@ -3,14 +3,14 @@
 
 buildPythonPackage rec {
   pname = "dbus-python";
-  version = "1.2.16";
+  version = "1.2.18";
   format = "other";
 
   outputs = [ "out" "dev" ];
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "196m5rk3qzw5nkmgzjl7wmq0v7vpwfhh8bz2sapdi5f9hqfqy8qi";
+    sha256 = "0q3jrw515z98mqdk9x822nd95rky455zz9876f1nqna5igkd3gcj";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/dbutils/default.nix b/nixpkgs/pkgs/development/python-modules/dbutils/default.nix
index fef630e86831..bbfa60f03b69 100644
--- a/nixpkgs/pkgs/development/python-modules/dbutils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dbutils/default.nix
@@ -5,13 +5,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "2.0.2";
+  version = "3.0.1";
   pname = "dbutils";
 
   src = fetchPypi {
     inherit version;
     pname = "DBUtils";
-    sha256 = "1cc8zyd4lapzf9ny6c2jf1vysphlhr19m8miyvw5spbyq4pxpnsf";
+    sha256 = "6ec83f4d75d7a7b42a92e86b775f251e2671639b3b2123fe13a5d8d8fe7c5643";
   };
 
   checkInputs = [ pytestCheckHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/ddt/default.nix b/nixpkgs/pkgs/development/python-modules/ddt/default.nix
index 11d32adf3bfb..bc5964c73769 100644
--- a/nixpkgs/pkgs/development/python-modules/ddt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ddt/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "ddt";
-  version = "1.4.2";
+  version = "1.4.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-ZKZzZqJxXmNriGlMxgdcwC2ykvAQmLjjhTl8iU05U3g=";
+    sha256 = "8de39a69730442dc835e4d33f9d2e33043ff91151c8d18086959ee556febb9f8";
   };
 
   checkInputs = [ six pyyaml mock pytestCheckHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/debian-inspector/default.nix b/nixpkgs/pkgs/development/python-modules/debian-inspector/default.nix
index b91e26f71467..0da7f634d848 100644
--- a/nixpkgs/pkgs/development/python-modules/debian-inspector/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/debian-inspector/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pythonAtLeast
 , chardet
 , attrs
 , commoncode
diff --git a/nixpkgs/pkgs/development/python-modules/debtcollector/tests.nix b/nixpkgs/pkgs/development/python-modules/debtcollector/tests.nix
index cc3171da6d6e..21d49ac983ab 100644
--- a/nixpkgs/pkgs/development/python-modules/debtcollector/tests.nix
+++ b/nixpkgs/pkgs/development/python-modules/debtcollector/tests.nix
@@ -1,5 +1,4 @@
-{ stdenv
-, buildPythonPackage
+{ buildPythonPackage
 , debtcollector
 , stestr
 }:
diff --git a/nixpkgs/pkgs/development/python-modules/debugpy/default.nix b/nixpkgs/pkgs/development/python-modules/debugpy/default.nix
index 183548f5f944..bf2ed3628675 100644
--- a/nixpkgs/pkgs/development/python-modules/debugpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/debugpy/default.nix
@@ -17,13 +17,13 @@
 
 buildPythonPackage rec {
   pname = "debugpy";
-  version = "1.5.0";
+  version = "1.5.1";
 
   src = fetchFromGitHub {
     owner = "Microsoft";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-xgxKyqtSqKITwze7DKDdkxZlq1mWM+x4C/eJlUJmYuk=";
+    sha256 = "sha256-dPP4stLt5nl9B9afPmH6/hpGKXBsaTpvYZQSHxU6KaY=";
   };
 
   patches = [
@@ -59,6 +59,7 @@ buildPythonPackage rec {
     ${stdenv.cc}/bin/c++ linux_and_mac/attach.cpp -Ilinux_and_mac -fPIC -nostartfiles ${{
       "x86_64-linux"   = "-shared -m64 -o attach_linux_amd64.so";
       "i686-linux"     = "-shared -m32 -o attach_linux_x86.so";
+      "aarch64-linux"  = "-shared -o attach_linux_arm64.so";
       "x86_64-darwin"  = "-std=c++11 -lc -D_REENTRANT -dynamiclib -arch x86_64 -o attach_x86_64.dylib";
       "i686-darwin"    = "-std=c++11 -lc -D_REENTRANT -dynamiclib -arch i386 -o attach_x86.dylib";
       "aarch64-darwin" = "-std=c++11 -lc -D_REENTRANT -dynamiclib -arch arm64 -o attach_arm64.dylib";
@@ -87,6 +88,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/microsoft/debugpy";
     license = licenses.mit;
     maintainers = with maintainers; [ kira-bruneau ];
-    platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" "i686-darwin" "aarch64-darwin" ];
+    platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "i686-darwin" "aarch64-darwin" ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/decorator/default.nix b/nixpkgs/pkgs/development/python-modules/decorator/default.nix
index f8d3f5c9ac61..0c1889963157 100644
--- a/nixpkgs/pkgs/development/python-modules/decorator/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/decorator/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "decorator";
-  version = "5.0.9";
+  version = "5.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "72ecfba4320a893c53f9706bebb2d55c270c1e51a28789361aa93e4a21319ed5";
+    sha256 = "e59913af105b9860aa2c8d3272d9de5a56a4e608db9a2f167a8480b323d529a7";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/deemix/default.nix b/nixpkgs/pkgs/development/python-modules/deemix/default.nix
index 670a459970b0..cf54f6facf82 100644
--- a/nixpkgs/pkgs/development/python-modules/deemix/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/deemix/default.nix
@@ -12,12 +12,12 @@
 
 buildPythonPackage rec {
   pname = "deemix";
-  version = "3.5.5";
+  version = "3.6.4";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-qattUKdGr9P2al5cibG0CPJNmVCJjgE+hucOtl7pAhE=";
+    sha256 = "268617b3ff9346ae51a063cbdb820c1f591cbadc1cf2fafd201dc671e721c1dd";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/deep-translator/default.nix b/nixpkgs/pkgs/development/python-modules/deep-translator/default.nix
new file mode 100644
index 000000000000..ae7bf52e1fe7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/deep-translator/default.nix
@@ -0,0 +1,33 @@
+{ lib, buildPythonPackage, fetchPypi, beautifulsoup4, requests, click }:
+
+buildPythonPackage rec {
+  pname = "deep-translator";
+  version = "1.6.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-B/SnLSaCRVhQvSU2hmdKPswM2N73nHAzQfVNBMgCofI=";
+  };
+
+  propagatedBuildInputs = [
+    beautifulsoup4
+    requests
+    click
+  ];
+
+  # Initializing it during build won't work as it needs connection with
+  # APIs and the build environment is isolated (#148572 for details).
+  # After built, it works as intended.
+  #pythonImportsCheck = [ "deep_translator" ];
+
+  # Again, initializing an instance needs network connection.
+  # Tests will fail.
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Flexible, free and unlimited Python tool to translate between different languages in a simple way using multiple translators";
+    homepage = "https://deep-translator.readthedocs.io";
+    license = licenses.mit;
+    maintainers = with maintainers; [ wolfangaukang ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/deep_merge/default.nix b/nixpkgs/pkgs/development/python-modules/deep_merge/default.nix
index 533bc6aa3477..2c59d4ab6955 100644
--- a/nixpkgs/pkgs/development/python-modules/deep_merge/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/deep_merge/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, nose }:
+{ lib, buildPythonPackage, fetchPypi, nose }:
 
 buildPythonPackage rec {
   pname = "deep_merge";
diff --git a/nixpkgs/pkgs/development/python-modules/deepdiff/default.nix b/nixpkgs/pkgs/development/python-modules/deepdiff/default.nix
index 199894f13201..67f5347e1e7e 100644
--- a/nixpkgs/pkgs/development/python-modules/deepdiff/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/deepdiff/default.nix
@@ -23,6 +23,11 @@ buildPythonPackage rec {
     sha256 = "sha256-ysaIeVefsTX7ZubOXaEzeS1kMyBp4/w3SHNFxsGVhzY=";
   };
 
+  postPatch = ''
+    substituteInPlace tests/test_command.py \
+      --replace '/tmp/' "$TMPDIR/"
+  '';
+
   propagatedBuildInputs = [
     click
     ordered-set
diff --git a/nixpkgs/pkgs/development/python-modules/deepdish/default.nix b/nixpkgs/pkgs/development/python-modules/deepdish/default.nix
new file mode 100644
index 000000000000..6ae9316a0f6d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/deepdish/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, numpy
+, scipy
+, tables
+}:
+
+buildPythonPackage rec {
+  pname = "deepdish";
+  version = "0.3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1wqzwh3y0mjdyba5kfbvlamn561d3afz50zi712c7klkysz3mzva";
+  };
+
+  propagatedBuildInputs = [
+    numpy
+    scipy
+    tables
+  ];
+
+  pythonImportsCheck = [
+    "deepdish"
+  ];
+
+  # checkInputs = [
+  #   pandas
+  # ];
+
+  # The tests are broken: `ModuleNotFoundError: No module named 'deepdish.six.conf'`
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Flexible HDF5 saving/loading and other data science tools from the University of Chicago.";
+    homepage = "https://github.com/uchicago-cs/deepdish";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ndl ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/deepmerge/default.nix b/nixpkgs/pkgs/development/python-modules/deepmerge/default.nix
index da4b72d2ff49..148599fe1666 100644
--- a/nixpkgs/pkgs/development/python-modules/deepmerge/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/deepmerge/default.nix
@@ -9,17 +9,17 @@
 
 buildPythonPackage rec {
   pname = "deepmerge";
-  version = "0.3.0";
+  version = "1.0.1";
   disabled = isPy27;
+  format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1zfl8rkw98vj7jdpb29ably50x46pq6pazhrkrczndf5jc97zzgn";
+    sha256 = "sha256-S0R3ntPS+3kbsYH8JoNCNJb+pCirt683/rIyht5/Cho=";
   };
 
   nativeBuildInputs = [
     setuptools-scm
-    vcver
   ];
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/deezer-py/default.nix b/nixpkgs/pkgs/development/python-modules/deezer-py/default.nix
index ce2242a625eb..648f0e3f0fc7 100644
--- a/nixpkgs/pkgs/development/python-modules/deezer-py/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/deezer-py/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "deezer-py";
-  version = "1.2.5";
+  version = "1.3.2";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-JceyMBQFLD3fRPb9nJlGOSN7iACuJG8dmlFfOhhsYKc=";
+    sha256 = "sha256-G4GREc+PWvaphnOuzBePraj4pHgmhhKqsyVHKOPwGik=";
   };
 
   propagatedBuildInputs = [ requests ];
diff --git a/nixpkgs/pkgs/development/python-modules/deezer-python/default.nix b/nixpkgs/pkgs/development/python-modules/deezer-python/default.nix
index bbbf813557b5..cb3afb644252 100644
--- a/nixpkgs/pkgs/development/python-modules/deezer-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/deezer-python/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "deezer-python";
-  version = "4.0.0";
+  version = "4.2.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "browniebroke";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-eza0bu4CcKvDMEq/8y6fW5qXtEFbeB5zk0w75+3Hx4Q=";
+    sha256 = "0gl0l7x9zqfkz3l4jfz8rb956lqj3vx1aghric36izwzl6wyj6h5";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/defcon/default.nix b/nixpkgs/pkgs/development/python-modules/defcon/default.nix
index 845993be7113..f40ba374d034 100644
--- a/nixpkgs/pkgs/development/python-modules/defcon/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/defcon/default.nix
@@ -5,13 +5,13 @@
 
 buildPythonPackage rec {
   pname = "defcon";
-  version = "0.9.0";
+  version = "0.10.0";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "140f51da51e9630a9fa11dfd34376c4e29785fdb0bddc2e371df5b36bec17b76";
+    sha256 = "a009862a0bc3f41f2b1a1b1f80d6aeedb3a17ed77d598da09f5a1bd93e970b3c";
     extension = "zip";
   };
 
diff --git a/nixpkgs/pkgs/development/python-modules/delegator-py/default.nix b/nixpkgs/pkgs/development/python-modules/delegator-py/default.nix
index 3521e8ce1298..89cbd991a663 100644
--- a/nixpkgs/pkgs/development/python-modules/delegator-py/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/delegator-py/default.nix
@@ -2,7 +2,6 @@
 , lib
 , fetchFromGitHub
 , pexpect
-, pytest
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/deltachat/default.nix b/nixpkgs/pkgs/development/python-modules/deltachat/default.nix
index ffa9b8d7d63a..381bcf66a5c0 100644
--- a/nixpkgs/pkgs/development/python-modules/deltachat/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/deltachat/default.nix
@@ -1,11 +1,10 @@
 { lib
 , buildPythonPackage
 , isPy27
-, fetchpatch
 , setuptools-scm
 , libdeltachat
 , cffi
-, IMAPClient
+, imapclient
 , pluggy
 , requests
 , setuptools
@@ -31,7 +30,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     cffi
-    IMAPClient
+    imapclient
     pluggy
     requests
     setuptools
diff --git a/nixpkgs/pkgs/development/python-modules/deskcon/default.nix b/nixpkgs/pkgs/development/python-modules/deskcon/default.nix
deleted file mode 100644
index a3e061ce3af5..000000000000
--- a/nixpkgs/pkgs/development/python-modules/deskcon/default.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-{ lib
-, buildPythonPackage
-, pyopenssl
-, pkgs
-, isPy3k
-, python
-}:
-
-buildPythonPackage {
-  pname = "deskcon";
-  version = "0.3";
-  disabled = isPy3k;
-
-  src = pkgs.fetchFromGitHub {
-    owner= "screenfreeze";
-    repo = "deskcon-desktop";
-    rev = "267804122188fa79c37f2b21f54fe05c898610e6";
-    sha256 ="0i1dd85ls6n14m9q7lkympms1w3x0pqyaxvalq82s4xnjdv585j3";
-  };
-
-  dontBuild = true;
-  doCheck = false;
-
-  pythonPath = [ pyopenssl pkgs.gtk3 ];
-
-  installPhase = ''
-    substituteInPlace server/deskcon-server --replace "python2" "python"
-
-    mkdir -p $out/bin
-    mkdir -p $out/lib/${python.libPrefix}/site-packages
-    cp -r "server/"* $out/lib/${python.libPrefix}/site-packages
-    mv $out/lib/${python.libPrefix}/site-packages/deskcon-server $out/bin/deskcon-server
-
-    wrapPythonProgramsIn $out/bin "$out $pythonPath"
-  '';
-
-  meta = with lib; {
-    description = "Integrates an Android device into a desktop";
-    homepage = "https://github.com/screenfreeze/deskcon-desktop";
-    license = licenses.gpl3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/detect-secrets/default.nix b/nixpkgs/pkgs/development/python-modules/detect-secrets/default.nix
index 2e07f98d78dd..ef19b9a913b0 100644
--- a/nixpkgs/pkgs/development/python-modules/detect-secrets/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/detect-secrets/default.nix
@@ -4,6 +4,7 @@
 , gibberish-detector
 , isPy27
 , mock
+, pkgs
 , pyahocorasick
 , pytestCheckHook
 , pyyaml
@@ -21,7 +22,8 @@ buildPythonPackage rec {
     owner = "Yelp";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-dj0lqm9s8OKhM4OmNrmGVRc32/ZV0I9+5WcW2hvLwu0=";
+    sha256 = "sha256-dG2YaWXAMINxBGKNMlVfGTR9QHdnepiZmN+G88X4Wak=";
+    leaveDotGit = true;
   };
 
   propagatedBuildInputs = [
@@ -36,6 +38,7 @@ buildPythonPackage rec {
     pytestCheckHook
     responses
     unidiff
+    pkgs.gitMinimal
   ];
 
   preCheck = ''
@@ -44,24 +47,15 @@ buildPythonPackage rec {
 
   disabledTests = [
     # Tests are failing for various reasons. Needs to be adjusted with the next update
-    "test_baseline_filters_out_known_secrets"
     "test_basic"
-    "test_does_not_modify_slim_baseline"
     "test_handles_each_path_separately"
     "test_handles_multiple_directories"
     "test_load_and_output"
     "test_make_decisions"
-    "test_modifies_baseline"
-    "test_no_files_in_git_repo"
-    "test_outputs_baseline_if_none_supplied"
+    "test_restores_line_numbers"
     "test_saves_to_baseline"
     "test_scan_all_files"
-    "test_should_scan_all_files_in_directory_if_flag_is_provided"
-    "test_should_scan_specific_non_tracked_file"
-    "test_should_scan_tracked_files_in_directory"
     "test_start_halfway"
-    "test_works_from_different_directory"
-    "TestModifiesBaselineFromVersionChange"
   ];
 
   pythonImportsCheck = [ "detect_secrets" ];
diff --git a/nixpkgs/pkgs/development/python-modules/devolo-home-control-api/default.nix b/nixpkgs/pkgs/development/python-modules/devolo-home-control-api/default.nix
index 751ebaae292c..b71ce7c6c271 100644
--- a/nixpkgs/pkgs/development/python-modules/devolo-home-control-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/devolo-home-control-api/default.nix
@@ -1,5 +1,4 @@
 { lib
-, aiohttp
 , buildPythonPackage
 , fetchFromGitHub
 , pytest-mock
diff --git a/nixpkgs/pkgs/development/python-modules/devolo-plc-api/default.nix b/nixpkgs/pkgs/development/python-modules/devolo-plc-api/default.nix
new file mode 100644
index 000000000000..5abe989e98d5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/devolo-plc-api/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, httpx
+, protobuf
+, pytest-asyncio
+, pytest-httpx
+, pytest-mock
+, pytestCheckHook
+, pythonOlder
+, setuptools-scm
+, zeroconf
+}:
+
+buildPythonPackage rec {
+  pname = "devolo-plc-api";
+  version = "0.7.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "2Fake";
+    repo = "devolo_plc_api";
+    rev = "v${version}";
+    sha256 = "sha256-qzjH52bKQ/oSFd580V92uE2/Z2g+2nLh/JXOXYqVfSY=";
+  };
+
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    httpx
+    protobuf
+    zeroconf
+  ];
+
+
+  checkInputs = [
+    pytest-asyncio
+    pytest-httpx
+    pytest-mock
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "devolo_plc_api"
+  ];
+
+  meta = with lib; {
+    description = "Python module to interact with Devolo PLC devices";
+    homepage = "https://github.com/2Fake/devolo_plc_api";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/devtools/default.nix b/nixpkgs/pkgs/development/python-modules/devtools/default.nix
index 32050acfdf27..98f446315d91 100644
--- a/nixpkgs/pkgs/development/python-modules/devtools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/devtools/default.nix
@@ -1,23 +1,47 @@
-{ buildPythonPackage, pythonOlder, fetchFromGitHub, lib, pygments
-, pytestCheckHook, pytest-mock }:
+{ lib
+, asttokens
+, buildPythonPackage
+, executing
+, fetchFromGitHub
+, pygments
+, pytest-mock
+, pytestCheckHook
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "devtools";
-  version = "0.6.1";
+  version = "0.8.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "samuelcolvin";
     repo = "python-${pname}";
     rev = "v${version}";
-    sha256 = "0s1d2jwijini7y1a3318yhb98mh1mw4pzlfx2zck3a8nqw984ki3";
+    sha256 = "0yavcbxzxi1nfa1k326gsl03y8sadi5z5acamwd8b1bsiv15p757";
   };
 
-  propagatedBuildInputs = [ pygments ];
+  propagatedBuildInputs = [
+    asttokens
+    executing
+    pygments
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    pytest-mock
+  ];
 
-  checkInputs = [ pytestCheckHook pytest-mock ];
+  disabledTests = [
+    # Test for Windows32
+    "test_print_subprocess"
+  ];
 
-  pythonImportsCheck = [ "devtools" ];
+  pythonImportsCheck = [
+    "devtools"
+  ];
 
   meta = with lib; {
     description = "Python's missing debug print command and other development tools";
diff --git a/nixpkgs/pkgs/development/python-modules/digi-xbee/default.nix b/nixpkgs/pkgs/development/python-modules/digi-xbee/default.nix
index 025939f2db28..52bfaee7911b 100644
--- a/nixpkgs/pkgs/development/python-modules/digi-xbee/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/digi-xbee/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "digi-xbee";
-  version = "1.4.0";
+  version = "1.4.1";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "664737d1aab453ea40b9745f1ee1e88920acff1cce2e07c42e7f5aa64a16e6aa";
+    sha256 = "3b10e749431f406d80c189d872f4673b8d3cd510f7b411f817780a0e72499cd2";
   };
 
   propagatedBuildInputs = [ pyserial srp ];
diff --git a/nixpkgs/pkgs/development/python-modules/digitalocean/default.nix b/nixpkgs/pkgs/development/python-modules/digitalocean/default.nix
index f87298cf0875..5e45a1785a95 100644
--- a/nixpkgs/pkgs/development/python-modules/digitalocean/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/digitalocean/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, fetchPypi
 , isPy3k
 , jsonpickle
 , mock
diff --git a/nixpkgs/pkgs/development/python-modules/dingz/default.nix b/nixpkgs/pkgs/development/python-modules/dingz/default.nix
new file mode 100644
index 000000000000..c02746695e88
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dingz/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, aiohttp
+, async-timeout
+, buildPythonPackage
+, click
+, fetchFromGitHub
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "dingz";
+  version = "0.5.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "home-assistant-ecosystem";
+    repo = "python-dingz";
+    rev = version;
+    sha256 = "sha256-bCytQwLWw8D1UkKb/3LQ301eDCkVR4alD6NHjTs6I+4=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    async-timeout
+    click
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "dingz"
+  ];
+
+  meta = with lib; {
+    description = "Python API for interacting with Dingz devices";
+    homepage = "https://github.com/home-assistant-ecosystem/python-dingz";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/discordpy/default.nix b/nixpkgs/pkgs/development/python-modules/discordpy/default.nix
index 6de2b9f81721..aa88147ae7fd 100644
--- a/nixpkgs/pkgs/development/python-modules/discordpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/discordpy/default.nix
@@ -6,11 +6,14 @@
 , pynacl
 , pythonOlder
 , withVoice ? true
+, ffmpeg
 }:
 
 buildPythonPackage rec {
   pname = "discord.py";
   version = "1.7.3";
+  format = "setuptools";
+
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
@@ -22,14 +25,20 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     aiohttp
-  ] ++ lib.optionalString withVoice [
+  ] ++ lib.optionals withVoice [
     libopus
     pynacl
+    ffmpeg
   ];
 
   patchPhase = ''
     substituteInPlace "discord/opus.py" \
       --replace "ctypes.util.find_library('opus')" "'${libopus}/lib/libopus.so.0'"
+    substituteInPlace requirements.txt \
+      --replace "aiohttp>=3.6.0,<3.8.0" "aiohttp>=3.6.0,<4"
+  '' + lib.optionalString withVoice ''
+    substituteInPlace "discord/player.py" \
+      --replace "executable='ffmpeg'" "executable='${ffmpeg}/bin/ffmpeg'"
   '';
 
   # Only have integration tests with discord
@@ -49,7 +58,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python wrapper for the Discord API";
     homepage = "https://discordpy.rtfd.org/";
-    maintainers = [ maintainers.ivar ];
     license = licenses.mit;
+    maintainers = with maintainers; [ ivar ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/diskcache/default.nix b/nixpkgs/pkgs/development/python-modules/diskcache/default.nix
index 0264c0ff10c5..457ab077a0ce 100644
--- a/nixpkgs/pkgs/development/python-modules/diskcache/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/diskcache/default.nix
@@ -32,6 +32,15 @@ buildPythonPackage rec {
   doCheck = !stdenv.isDarwin;
   pythonImportsCheck = [ "diskcache" ];
 
+  disabledTests = [
+    # very time sensitive, can fail on over subscribed machines
+    "test_incr_update_keyerror"
+  ];
+
+  pytestFlagsArray = [
+    "-n $NIX_BUILD_CORES"
+  ];
+
   meta = with lib; {
     description = "Disk and file backed persistent cache";
     homepage = "http://www.grantjenks.com/docs/diskcache/";
diff --git a/nixpkgs/pkgs/development/python-modules/distlib/default.nix b/nixpkgs/pkgs/development/python-modules/distlib/default.nix
index 002c0923c26f..1c565b3f158b 100644
--- a/nixpkgs/pkgs/development/python-modules/distlib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/distlib/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "distlib";
-  version = "0.3.2";
+  version = "0.3.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "106fef6dc37dd8c0e2c0a60d3fca3e77460a48907f335fa28420463a6f799736";
+    sha256 = "d982d0751ff6eaaab5e2ec8e691d949ee80eddf01a62eaa96ddb11531fe16b05";
     extension = "zip";
   };
 
diff --git a/nixpkgs/pkgs/development/python-modules/distributed/default.nix b/nixpkgs/pkgs/development/python-modules/distributed/default.nix
index 049290081d62..6dfb531a78b6 100644
--- a/nixpkgs/pkgs/development/python-modules/distributed/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/distributed/default.nix
@@ -19,15 +19,20 @@
 
 buildPythonPackage rec {
   pname = "distributed";
-  version = "2021.9.1";
+  version = "2021.11.2";
   disabled = pythonOlder "3.6";
 
   # get full repository need conftest.py to run tests
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-9N65ap2+9bBK0DCrkF3+1xuJPXmjaL1Xh7ISaLTtX/g=";
+    sha256 = "f86a01a2e1e678865d2e42300c47552b5012cd81a2d354e47827a1fd074cc302";
   };
 
+  postPatch = ''
+    substituteInPlace requirements.txt \
+      --replace "dask == 2021.11.2" "dask"
+  '';
+
   propagatedBuildInputs = [
     bokeh
     click
diff --git a/nixpkgs/pkgs/development/python-modules/django-cleanup/default.nix b/nixpkgs/pkgs/development/python-modules/django-cleanup/default.nix
index faddf5620814..240598cf1841 100644
--- a/nixpkgs/pkgs/development/python-modules/django-cleanup/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-cleanup/default.nix
@@ -1,5 +1,4 @@
 { lib, buildPythonPackage, fetchPypi, django
-, redis, async-timeout, hiredis
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/django-configurations/default.nix b/nixpkgs/pkgs/development/python-modules/django-configurations/default.nix
index de01f4f70417..4cb23d989fae 100644
--- a/nixpkgs/pkgs/development/python-modules/django-configurations/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-configurations/default.nix
@@ -1,29 +1,48 @@
 { lib
 , buildPythonPackage
-, fetchPypi
-, django-discover-runner
-, mock
 , dj-database-url
 , dj-email-url
 , dj-search-url
-, django-cache-url
-, six
 , django
+, django-cache-url
+, django-discover-runner
+, fetchPypi
+, importlib-metadata
+, mock
+, pythonOlder
 , setuptools-scm
 }:
 
 buildPythonPackage rec {
-  version = "2.2";
   pname = "django-configurations";
+  version = "2.3.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9e3bcea1355ac50a4c9f854f751d214cb17e5f8adf18405a4488d0a1e8945915";
+    sha256 = "e2ca25530e184f0ee3b7f5ae69563461a93a8914493306ee0bf6d71e7d8ad1d0";
   };
 
-  buildInputs = [ setuptools-scm ];
-  propagatedBuildInputs = [ six ];
-  checkInputs = [ django-discover-runner mock dj-database-url dj-email-url dj-search-url django-cache-url ];
+  buildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    django
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    importlib-metadata
+  ];
+
+  checkInputs = [
+    django-discover-runner
+    mock
+    dj-database-url
+    dj-email-url
+    dj-search-url
+    django-cache-url
+  ];
 
   checkPhase = ''
     export PYTHONPATH=.:$PYTHONPATH
@@ -35,10 +54,14 @@ buildPythonPackage rec {
   # django.core.exceptions.ImproperlyConfigured: django-configurations settings importer wasn't correctly installed
   doCheck = false;
 
+  pythonImportsCheck = [
+    "configurations"
+  ];
+
   meta = with lib; {
-    homepage = "https://django-configurations.readthedocs.io/";
     description = "A helper for organizing Django settings";
+    homepage = "https://django-configurations.readthedocs.io/";
     license = licenses.bsd0;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/django-csp/default.nix b/nixpkgs/pkgs/development/python-modules/django-csp/default.nix
index 1f7b28114054..c54583447671 100644
--- a/nixpkgs/pkgs/development/python-modules/django-csp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-csp/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "django-csp";
-  version = "3.5";
+  version = "3.7";
 
   src = fetchPypi {
     inherit version;
     pname = "django_csp";
-    sha256 = "0ks4zszbjx5lyqlc34pjica8hfcjzw4i5m6pivvnyv8yf0vh4q04";
+    sha256 = "01eda02ad3f10261c74131cdc0b5a6a62b7c7ad4fd017fbefb7a14776e0a9727";
   };
 
   # too complicated to setup - needs a running django instance
diff --git a/nixpkgs/pkgs/development/python-modules/django-debug-toolbar/default.nix b/nixpkgs/pkgs/development/python-modules/django-debug-toolbar/default.nix
new file mode 100644
index 000000000000..68451cc8d8db
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-debug-toolbar/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, fetchFromGitHub
+, pythonOlder
+, buildPythonPackage
+, python
+, django
+, jinja2
+, sqlparse
+, html5lib
+}:
+
+buildPythonPackage rec {
+  pname = "django-debug-toolbar";
+  version = "3.2.2";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "jazzband";
+    repo = pname;
+    rev = version;
+    sha256 = "1dgb3s449nasbnqd5xfikxrfhwwilwlgrw9nv4bfkapvkzpdszjk";
+  };
+
+  propagatedBuildInputs = [
+    django
+    jinja2
+    sqlparse
+  ];
+
+  DB_BACKEND = "sqlite3";
+  DB_NAME = ":memory:";
+  TEST_ARGS = "tests";
+  DJANGO_SETTINGS_MODULE = "tests.settings";
+
+  checkInputs = [
+    html5lib
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+    ${python.interpreter} -m django test ${TEST_ARGS}
+    runHook postCheck
+  '';
+
+  meta = {
+    description = "Configurable set of panels that display debug information about the current request/response";
+    homepage = "https://github.com/jazzband/django-debug-toolbar";
+    changelog = "https://django-debug-toolbar.readthedocs.io/en/latest/changes.html";
+    maintainers =  with lib.maintainers; [ yuu ];
+    license = lib.licenses.bsd3;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-extensions/default.nix b/nixpkgs/pkgs/development/python-modules/django-extensions/default.nix
index cbe5dfbaa70b..541f0434ec00 100644
--- a/nixpkgs/pkgs/development/python-modules/django-extensions/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-extensions/default.nix
@@ -1,5 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, python
-, django
+{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, django
 , factory_boy
 , glibcLocales
 , mock
diff --git a/nixpkgs/pkgs/development/python-modules/django-filter/default.nix b/nixpkgs/pkgs/development/python-modules/django-filter/default.nix
index 00c260946cce..04867adab450 100644
--- a/nixpkgs/pkgs/development/python-modules/django-filter/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-filter/default.nix
@@ -7,18 +7,28 @@
 
 buildPythonPackage rec {
   pname = "django-filter";
-  version = "2.4.0";
+  version = "21.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "84e9d5bb93f237e451db814ed422a3a625751cbc9968b484ecc74964a8696b06";
+    sha256 = "sha256-YyolH6jxqttLjM7/kyu1L+L4Jt19/n8+rEDlxGPWg24=";
   };
 
   propagatedBuildInputs = [ django ];
 
+  pythonImportsCheck = [
+    "django_filters"
+  ];
+
   # Tests fail (needs the 'crispy_forms' module not packaged on nixos)
   doCheck = false;
-  checkInputs = [ djangorestframework django mock ];
+
+  checkInputs = [
+    djangorestframework
+    django
+    mock
+  ];
+
   checkPhase = ''
     runHook preCheck
     ${python.interpreter} runtests.py tests
diff --git a/nixpkgs/pkgs/development/python-modules/django-formtools/default.nix b/nixpkgs/pkgs/development/python-modules/django-formtools/default.nix
new file mode 100644
index 000000000000..c85d5d3fcc75
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-formtools/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildPythonPackage
+, django
+, fetchPypi
+, python
+, pythonOlder
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "django-formtools";
+  version = "2.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "9663b6eca64777b68d6d4142efad8597fe9a685924673b25aa8a1dcff4db00c3";
+  };
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    django
+  ];
+
+  checkPhase = ''
+    ${python.interpreter} -m django test --settings=tests.settings
+  '';
+
+  pythonImportsCheck = [
+    "formtools"
+  ];
+
+  meta = with lib; {
+    description = "A set of high-level abstractions for Django forms";
+    homepage = "https://github.com/jazzband/django-formtools";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ greizgh schmittlauch ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-graphiql-debug-toolbar/default.nix b/nixpkgs/pkgs/development/python-modules/django-graphiql-debug-toolbar/default.nix
new file mode 100644
index 000000000000..26a82254a7a6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-graphiql-debug-toolbar/default.nix
@@ -0,0 +1,55 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, poetry-core
+, django
+, django-debug-toolbar
+, graphene-django
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "django-graphiql-debug-toolbar";
+  version = "0.2.0";
+  format = "pyproject";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "flavors";
+    repo = pname;
+    rev = version;
+    sha256 = "0fikr7xl786jqfkjdifymqpqnxy4qj8g3nlkgfm24wwq0za719dw";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    django
+    django-debug-toolbar
+    graphene-django
+  ];
+
+  pythonImportsCheck = [
+    "graphiql_debug_toolbar"
+  ];
+
+  DB_BACKEND = "sqlite";
+  DB_NAME = ":memory:";
+  DJANGO_SETTINGS_MODULE = "tests.settings";
+
+  checkPhase = ''
+    runHook preCheck
+    ${python.interpreter} -m django test tests
+    runHook postCheck
+  '';
+
+  meta = with lib; {
+    description = "Django Debug Toolbar for GraphiQL IDE";
+    homepage = "https://github.com/flavors/django-graphiql-debug-toolbar";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-haystack/default.nix b/nixpkgs/pkgs/development/python-modules/django-haystack/default.nix
index c207a37ebf15..0f0f4a0a1174 100644
--- a/nixpkgs/pkgs/development/python-modules/django-haystack/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-haystack/default.nix
@@ -1,30 +1,60 @@
-{ lib, buildPythonPackage, fetchPypi
-, setuptools, setuptools-scm, django, python-dateutil, whoosh, pysolr
-, coverage, mock, nose, geopy, requests }:
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+
+# build dependencies
+, setuptools-scm
+
+# dependencies
+, django
+
+# tests
+, geopy
+, nose
+, pysolr
+, python-dateutil
+, requests
+, whoosh
+}:
 
 buildPythonPackage rec {
   pname = "django-haystack";
   version = "3.1.1";
+  format = "setuptools";
+  disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "6d05756b95d7d5ec1dbd4668eb999ced1504b47f588e2e54be53b1404c516a82";
   };
 
-  checkInputs = [ pysolr whoosh python-dateutil geopy coverage nose mock coverage requests ];
-  propagatedBuildInputs = [ django setuptools ];
-  nativeBuildInputs = [ setuptools-scm ];
-
   postPatch = ''
-    sed -i 's/geopy==/geopy>=/' setup.py
+    substituteInPlace setup.py \
+      --replace "geopy==" "geopy>="
   '';
 
-  # ImportError: cannot import name django.contrib.gis.geos.prototypes
-  doCheck = false;
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    django
+  ];
+
+  checkInputs = [
+    geopy
+    nose
+    pysolr
+    python-dateutil
+    requests
+    whoosh
+  ];
 
   meta = with lib; {
-    description = "Modular search for Django";
+    description = "Pluggable search for Django";
     homepage = "http://haystacksearch.org/";
     license = licenses.bsd3;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/django-ipware/default.nix b/nixpkgs/pkgs/development/python-modules/django-ipware/default.nix
index d773c1490bcc..ba8f1d79db8c 100644
--- a/nixpkgs/pkgs/development/python-modules/django-ipware/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-ipware/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "django-ipware";
-  version = "4.0.0";
+  version = "4.0.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1294f916f3b3475e40e1b0ec1bd320aa2397978eae672721c81cbc2ed517e9ee";
+    sha256 = "602a58325a4808bd19197fef2676a0b2da2df40d0ecf21be414b2ff48c72ad05";
   };
 
   propagatedBuildInputs = [ django ];
diff --git a/nixpkgs/pkgs/development/python-modules/django-jinja2/default.nix b/nixpkgs/pkgs/development/python-modules/django-jinja2/default.nix
index 04885072c678..039a75aacee2 100644
--- a/nixpkgs/pkgs/development/python-modules/django-jinja2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-jinja2/default.nix
@@ -4,7 +4,7 @@
 
 buildPythonPackage rec {
   pname = "django-jinja";
-  version = "2.9.1";
+  version = "2.10.0";
 
   meta = {
     description = "Simple and nonobstructive jinja2 integration with Django";
@@ -14,7 +14,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6c1fc68b0f4b1fb21b208a3e5dc19a3b11bab2812c06f827d5fdbd24001a1910";
+    sha256 = "ae6a3fdf1ffa7a9ef6fd2f0a59c1a68c96b29f7f00f5166375658ef392f1ed32";
   };
 
   buildInputs = [ django pytz tox ];
diff --git a/nixpkgs/pkgs/development/python-modules/django-js-asset/default.nix b/nixpkgs/pkgs/development/python-modules/django-js-asset/default.nix
new file mode 100644
index 000000000000..e7001d15a9a4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-js-asset/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, django
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "django-js-asset";
+  version = "unstable-2021-06-07";
+  format = "setuptools";
+
+  src = fetchFromGitHub {
+    owner = "matthiask";
+    repo = pname;
+    rev = "a186aa0b5721ca95da6cc032a2fb780a152f581b";
+    sha256 = "141zxng0wwxalsi905cs8pdppy3ad717y3g4fkdxw4n3pd0fjp8r";
+  };
+
+  propagatedBuildInputs = [
+    django
+  ];
+
+  pythonImportsCheck = [
+    "js_asset"
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+    ${python.interpreter} tests/manage.py test testapp
+    runHook postCheck
+  '';
+
+  meta = with lib; {
+    description = "Script tag with additional attributes for django.forms.Media";
+    homepage = "https://github.com/matthiask/django-js-asset";
+    maintainers = with maintainers; [ hexa ];
+    license = with licenses; [ bsd3 ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix b/nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix
index d8f07de60a89..655da923995c 100644
--- a/nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "django-mailman3";
-  version = "1.3.5";
+  version = "1.3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "368595b3c2623edeaca5beea5f12887424c384edd6f7052cf442443075084313";
+    sha256 = "6ea8c24c13e7afe744f18e18e4d19d0e74223e0d9bd5d782deea85dcb865feb7";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/django-mptt/default.nix b/nixpkgs/pkgs/development/python-modules/django-mptt/default.nix
new file mode 100644
index 000000000000..53dac2a781f4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-mptt/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, django
+, django-js-asset
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "django-mptt";
+  version = "0.13.4";
+  format = "setuptools";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = version;
+    sha256 = "12y3chxhqxk2yxin055f0f45nabj0s8hil12hw0lwzlbax6k9ss6";
+  };
+
+  propagatedBuildInputs = [
+    django
+    django-js-asset
+  ];
+
+  pythonImportsCheck = [
+    "mptt"
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+    ${python.interpreter} tests/manage.py test
+    runHook postCheck
+  '';
+
+  meta = with lib; {
+    description = "Utilities for implementing a modified pre-order traversal tree in Django";
+    homepage = "https://github.com/django-mptt/django-mptt";
+    maintainers = with maintainers; [ hexa ];
+    license = with licenses; [ mit ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-paintstore/default.nix b/nixpkgs/pkgs/development/python-modules/django-paintstore/default.nix
index 8790067e4af0..28a773a5c01b 100644
--- a/nixpkgs/pkgs/development/python-modules/django-paintstore/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-paintstore/default.nix
@@ -1,5 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, requests, requests_oauthlib
-, django, python3-openid }:
+{ lib, buildPythonPackage, fetchPypi }:
 
 buildPythonPackage rec {
   pname = "django-paintstore";
diff --git a/nixpkgs/pkgs/development/python-modules/django-prometheus/default.nix b/nixpkgs/pkgs/development/python-modules/django-prometheus/default.nix
new file mode 100644
index 000000000000..733a177d6a5e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-prometheus/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, prometheus-client
+, pytest-django
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "django-prometheus";
+  version = "2.2.0";
+  format = "setuptools";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "korfuri";
+    repo = pname;
+    rev = version;
+    sha256 = "1y1cmycc545xrys41jk8kia36hwnkwhkw26mlpfdjgb63vq30x1d";
+  };
+
+  patches = [
+    ./drop-untestable-database-backends.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace '"pytest-runner"' ""
+  '';
+
+  propagatedBuildInputs = [
+    prometheus-client
+  ];
+
+  pythonImportsCheck = [
+    "django_prometheus"
+  ];
+
+  checkInputs = [
+    pytest-django
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    description = "Django middlewares to monitor your application with Prometheus.io";
+    homepage = "https://github.com/korfuri/django-prometheus";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-prometheus/drop-untestable-database-backends.patch b/nixpkgs/pkgs/development/python-modules/django-prometheus/drop-untestable-database-backends.patch
new file mode 100644
index 000000000000..1e9e65060849
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-prometheus/drop-untestable-database-backends.patch
@@ -0,0 +1,38 @@
+diff --git a/django_prometheus/tests/end2end/testapp/settings.py b/django_prometheus/tests/end2end/testapp/settings.py
+index 0630721..bd2190a 100644
+--- a/django_prometheus/tests/end2end/testapp/settings.py
++++ b/django_prometheus/tests/end2end/testapp/settings.py
+@@ -53,33 +53,6 @@ DATABASES = {
+         "ENGINE": "django_prometheus.db.backends.sqlite3",
+         "NAME": "db.sqlite3",
+     },
+-    # Comment this to not test django_prometheus.db.backends.postgres.
+-    "postgresql": {
+-        "ENGINE": "django_prometheus.db.backends.postgresql",
+-        "NAME": "postgres",
+-        "USER": "postgres",
+-        "PASSWORD": "",
+-        "HOST": "localhost",
+-        "PORT": "5432",
+-    },
+-    # Comment this to not test django_prometheus.db.backends.postgis.
+-    "postgis": {
+-        "ENGINE": "django_prometheus.db.backends.postgis",
+-        "NAME": "postgis",
+-        "USER": "postgres",
+-        "PASSWORD": "",
+-        "HOST": "localhost",
+-        "PORT": "5432",
+-    },
+-    # Comment this to not test django_prometheus.db.backends.mysql.
+-    "mysql": {
+-        "ENGINE": "django_prometheus.db.backends.mysql",
+-        "NAME": "django_prometheus_1",
+-        "USER": "travis",
+-        "PASSWORD": "",
+-        "HOST": "localhost",
+-        "PORT": "3306",
+-    },
+     # The following databases are used by test_db.py only
+     "test_db_1": {
+         "ENGINE": "django_prometheus.db.backends.sqlite3",
diff --git a/nixpkgs/pkgs/development/python-modules/django-ranged-response/default.nix b/nixpkgs/pkgs/development/python-modules/django-ranged-response/default.nix
index df5fc4b205b1..5fb0545f1fee 100644
--- a/nixpkgs/pkgs/development/python-modules/django-ranged-response/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-ranged-response/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchurl, fetchPypi, buildPythonPackage, django }:
+{ lib, fetchPypi, buildPythonPackage, django }:
 
 buildPythonPackage rec {
   pname = "django-ranged-response";
diff --git a/nixpkgs/pkgs/development/python-modules/django-redis/default.nix b/nixpkgs/pkgs/development/python-modules/django-redis/default.nix
new file mode 100644
index 000000000000..b088876b3e4a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-redis/default.nix
@@ -0,0 +1,82 @@
+{ lib
+, fetchFromGitHub
+, pythonOlder
+, buildPythonPackage
+
+# propagated
+, django
+, hiredis
+, lz4
+, msgpack
+, redis
+
+# testing
+, pkgs
+, pytest-django
+, pytest-mock
+, pytestCheckHook
+}:
+
+let
+  pname = "django-redis";
+  version = "5.1.0";
+in
+buildPythonPackage {
+  inherit pname version;
+  format = "setuptools";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "jazzband";
+    repo = "django-redis";
+    rev = version;
+    sha256 = "sha256-S94qH2W5e65yzGfPxpwBUKhvvVS0Uc/zSyo66bnvzf4=";
+  };
+
+  postPatch = ''
+    sed -i '/-cov/d' setup.cfg
+  '';
+
+  propagatedBuildInputs = [
+    django
+    hiredis
+    lz4
+    msgpack
+    redis
+  ];
+
+  pythonImportsCheck = [
+    "django_redis"
+  ];
+
+  DJANGO_SETTINGS_MODULE = "tests.settings.sqlite";
+
+  preCheck = ''
+    ${pkgs.redis}/bin/redis-server &
+  '';
+
+  checkInputs = [
+    pytest-django
+    pytest-mock
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # ModuleNotFoundError: No module named 'test_cache_options'
+    "test_custom_key_function"
+    # ModuleNotFoundError: No module named 'test_client'
+    "test_delete_pattern_calls_get_client_given_no_client"
+    "test_delete_pattern_calls_make_pattern"
+    "test_delete_pattern_calls_scan_iter_with_count_if_itersize_given"
+    "test_delete_pattern_calls_scan_iter_with_count_if_itersize_given"
+    "test_delete_pattern_calls_scan_iter"
+    "test_delete_pattern_calls_delete_for_given_keys"
+  ];
+
+  meta = with lib; {
+    description = "Full featured redis cache backend for Django";
+    homepage = "https://github.com/jazzband/django-redis";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-rq/default.nix b/nixpkgs/pkgs/development/python-modules/django-rq/default.nix
new file mode 100644
index 000000000000..ebdbd916ef1d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-rq/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, isPy27
+, fetchFromGitHub
+, django
+, redis
+, rq
+, sentry-sdk
+}:
+
+buildPythonPackage rec {
+  pname = "django-rq";
+  version = "2.5.1";
+  format = "setuptools";
+  disabled = isPy27;
+
+  src = fetchFromGitHub {
+    owner = "rq";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-4oc3zco/j4lnAiooW87rU6xkzGSGCj3fIyikjiKQNZk=";
+  };
+
+  propagatedBuildInputs = [
+    django
+    redis
+    rq
+    sentry-sdk
+  ];
+
+  pythonImportsCheck = [
+    "django_rq"
+  ];
+
+  doCheck = false; # require redis-server
+
+  meta = with lib; {
+    description = "Simple app that provides django integration for RQ (Redis Queue)";
+    homepage = "https://github.com/rq/django-rq";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-sites/default.nix b/nixpkgs/pkgs/development/python-modules/django-sites/default.nix
index 468f7e738038..08641aa935f9 100644
--- a/nixpkgs/pkgs/development/python-modules/django-sites/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-sites/default.nix
@@ -1,31 +1,40 @@
-{ lib, buildPythonPackage, fetchPypi, django }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, django
+, django-jinja
+, python
+}:
 
 buildPythonPackage rec {
   pname = "django-sites";
-  version = "0.10";
+  version = "0.11";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "f6f9ae55a05288a95567f5844222052b6b997819e174f4bde4e7c23763be6fc3";
+  src = fetchFromGitHub {
+    owner = "niwinz";
+    repo = "django-sites";
+    rev = version;
+    sha256 = "sha256-MQtQC+9DyS1ICXXovbqPpkKIQ5wpuJDgq3Lcd/1kORU=";
   };
-  # LICENSE file appears to be missing from pypi package, but expected by the installer
-  # https://github.com/niwinz/django-sites/issues/11
-  postPatch = ''
-    touch LICENSE
-  '';
 
-  propagatedBuildInputs = [ django ];
+  propagatedBuildInputs = [
+    django
+  ];
+
+  checkInputs = [
+    django-jinja
+  ];
+
+  checkPhase = ''
+    runHook preCheck
 
-  # required files for test don't seem to be included in pypi package, full source for 0.10
-  # version doesn't appear to be present on github
-  # https://github.com/niwinz/django-sites/issues/9
-  doCheck = false;
+    ${python.interpreter} runtests.py
+
+    runHook postCheck
+  '';
 
   meta = {
-    description = ''
-      Alternative implementation of django "sites" framework
-      based on settings instead of models.
-    '';
+    description = "Alternative implementation of django sites framework";
     homepage = "https://github.com/niwinz/django-sites";
     license = lib.licenses.bsd3;
   };
diff --git a/nixpkgs/pkgs/development/python-modules/django-statici18n/default.nix b/nixpkgs/pkgs/development/python-modules/django-statici18n/default.nix
new file mode 100644
index 000000000000..78c807903c4e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-statici18n/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi, django, django_appconf }:
+
+buildPythonPackage rec {
+  pname = "django-statici18n";
+  version = "2.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "dbcdac190d93e0b4eabcab8875c8eb68795eceb442f926843ec5cbe1432fe628";
+  };
+
+  propagatedBuildInputs = [ django django_appconf ];
+
+  # pypi package does not contains test harness
+  # source tarball requires setting up a config
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Helper for generating Javascript catalog to static files";
+    homepage = "https://github.com/zyegfryed/django-statici18n";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ greizgh schmittlauch ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-storages/default.nix b/nixpkgs/pkgs/development/python-modules/django-storages/default.nix
index afb9a8fc46cf..25a6e561789a 100644
--- a/nixpkgs/pkgs/development/python-modules/django-storages/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-storages/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "django-storages";
-  version = "1.12.2";
+  version = "1.12.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0013ebe4904521e2fa28f33591a03a7210304d73363e7eadd7cdcf81c12ba003";
+    sha256 = "a475edb2f0f04c4f7e548919a751ecd50117270833956ed5bd585c0575d2a5e7";
   };
 
   propagatedBuildInputs = [ django ];
diff --git a/nixpkgs/pkgs/development/python-modules/django-tables2/default.nix b/nixpkgs/pkgs/development/python-modules/django-tables2/default.nix
new file mode 100644
index 000000000000..41637e7472ca
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-tables2/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, django
+, tablib
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "django-tables2";
+  version = "2.4.1";
+  format = "setuptools";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "jieter";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "04vvgf18diwp0mgp14b71a0dxhgrcslv1ljybi300gvzvzjnp3qv";
+  };
+
+  propagatedBuildInputs = [
+    django
+    tablib
+  ];
+
+  pythonImportsCheck = [
+    # Requested setting DJANGO_TABLES2_TEMPLATE, but settings are not configured.
+  ];
+
+  doCheck = false; # needs django-boostrap{3,4} packages
+
+  # Leave this in! Discovering how to run tests is annoying in Django apps
+  checkPhase = ''
+    ${python.interpreter} example/manage.py test
+  '';
+
+  meta = with lib; {
+    description = "Django app for creating HTML tables";
+    homepage = "https://github.com/jieter/django-tables2";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django_taggit/default.nix b/nixpkgs/pkgs/development/python-modules/django-taggit/default.nix
index 5dcdb67ebae1..7f7cfd2b4bcb 100644
--- a/nixpkgs/pkgs/development/python-modules/django_taggit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-taggit/default.nix
@@ -1,28 +1,35 @@
 { lib
 , buildPythonPackage
-, python
-, fetchPypi
 , pythonOlder
+, fetchPypi
 , django
 , djangorestframework
-, mock
-, isort
-, isPy3k
+, python
 }:
 
 buildPythonPackage rec {
   pname = "django-taggit";
   version = "1.5.1";
-  disabled = !isPy3k;
+  format = "setuptools";
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "e5bb62891f458d55332e36a32e19c08d20142c43f74bc5656c803f8af25c084a";
   };
 
-  propagatedBuildInputs = [ isort django djangorestframework ];
+  propagatedBuildInputs = [
+    django
+  ];
+
+  pythonImportsCheck = [
+    "taggit"
+  ];
+
+  checkInputs = [
+    djangorestframework
+  ];
 
-  checkInputs = [ mock ];
   checkPhase = ''
     # prove we're running tests against installed package, not build dir
     rm -r taggit
@@ -33,9 +40,9 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    description = "django-taggit is a reusable Django application for simple tagging";
-    homepage = "https://github.com/alex/django-taggit/tree/master/";
-    license = licenses.bsd2;
+    description = "Simple tagging for django";
+    homepage = "https://github.com/jazzband/django-taggit";
+    license = licenses.bsd3;
     maintainers = with maintainers; [ desiderius ];
   };
 
diff --git a/nixpkgs/pkgs/development/python-modules/django-timezone-field/default.nix b/nixpkgs/pkgs/development/python-modules/django-timezone-field/default.nix
new file mode 100644
index 000000000000..0bbdac356cd0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/django-timezone-field/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, poetry-core
+, django
+, djangorestframework
+, pytz
+, pytest
+, pytest-lazy-fixture
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "django-timezone-field";
+  version = "4.2.1";
+  format = "setuptools";
+  disabled = pythonOlder "3.5";
+
+  src = fetchFromGitHub {
+    owner = "mfogel";
+    repo = pname;
+    rev = version;
+    sha256 = "0swld4168pfhppr9q3i9r062l832cmmx792kkvlcvxfbdhk6qz9h";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    django
+    djangorestframework
+    pytz
+  ];
+
+  pythonImportsCheck = [
+    "timezone_field"
+  ];
+
+  # Uses pytest.lazy_fixture directly which is broken in pytest-lazy-fixture
+  # https://github.com/TvoroG/pytest-lazy-fixture/issues/22
+  doCheck = false;
+
+  DJANGO_SETTINGS_MODULE = "tests.settings";
+
+  checkInputs = [
+    pytest
+    pytest-lazy-fixture
+  ];
+
+  checkPhase = ''
+    ${python.interpreter} -m django test
+  '';
+
+  meta = with lib; {
+    description = "Django app providing database, form and serializer fields for pytz timezone objects";
+    homepage = "https://github.com/mfogel/django-timezone-field";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django/2.nix b/nixpkgs/pkgs/development/python-modules/django/2.nix
index 67946ab0d725..c1e5139d3015 100644
--- a/nixpkgs/pkgs/development/python-modules/django/2.nix
+++ b/nixpkgs/pkgs/development/python-modules/django/2.nix
@@ -33,6 +33,6 @@ buildPythonPackage rec {
     description = "A high-level Python Web framework";
     homepage = "https://www.djangoproject.com/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ georgewhewell lsix ];
+    maintainers = with maintainers; [ georgewhewell ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/django/3.nix b/nixpkgs/pkgs/development/python-modules/django/3.nix
index d95449ab043e..9b8aa8cba8f4 100644
--- a/nixpkgs/pkgs/development/python-modules/django/3.nix
+++ b/nixpkgs/pkgs/development/python-modules/django/3.nix
@@ -13,13 +13,13 @@
 
 buildPythonPackage rec {
   pname = "Django";
-  version = "3.2.8";
+  version = "3.2.9";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f6d2c4069c9b9bfac03bedff927ea1f9e0d29e34525cec8a68fd28eb2a8df7af";
+    sha256 = "51284300f1522ffcdb07ccbdf676a307c6678659e1284f0618e5a774127a6a08";
   };
 
   patches = lib.optional withGdal
@@ -43,6 +43,6 @@ buildPythonPackage rec {
     description = "A high-level Python Web framework";
     homepage = "https://www.djangoproject.com/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ georgewhewell lsix ];
+    maintainers = with maintainers; [ georgewhewell ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/django_compressor/default.nix b/nixpkgs/pkgs/development/python-modules/django_compressor/default.nix
index 2e58047d8a9c..a8204eab5fad 100644
--- a/nixpkgs/pkgs/development/python-modules/django_compressor/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django_compressor/default.nix
@@ -1,16 +1,18 @@
 { lib, buildPythonPackage, fetchPypi,
   rcssmin, rjsmin, django_appconf }:
+
 buildPythonPackage rec {
     pname = "django_compressor";
-    version = "2.4.1";
+    version = "3.1";
 
     src = fetchPypi {
       inherit pname version;
-      sha256 = "3358077605c146fdcca5f9eaffb50aa5dbe15f238f8854679115ebf31c0415e0";
+      sha256 = "c4a87bf65f9a534cfaf1c321a000a229c24e50c6d62ba6ab089482db42e819d9";
     };
     postPatch = ''
-      substituteInPlace setup.py --replace 'rcssmin == 1.0.6' 'rcssmin' \
-        --replace 'rjsmin == 1.0.12' 'rjsmin'
+      substituteInPlace setup.py \
+        --replace 'rcssmin == 1.0.6' 'rcssmin' \
+        --replace 'rjsmin == 1.1.0' 'rjsmin'
     '';
 
     # requires django-sekizai, which we don't have packaged yet
diff --git a/nixpkgs/pkgs/development/python-modules/django_environ/default.nix b/nixpkgs/pkgs/development/python-modules/django_environ/default.nix
index 7c36db1d1187..633d3e7286eb 100644
--- a/nixpkgs/pkgs/development/python-modules/django_environ/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django_environ/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "django-environ";
-  version = "0.7.0";
+  version = "0.8.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b99bd3704221f8b717c8517d8146e53fdee509d9e99056be560060003b92213e";
+    sha256 = "6f0bc902b43891656b20486938cba0861dc62892784a44919170719572a534cb";
   };
 
   # The testsuite fails to modify the base environment
diff --git a/nixpkgs/pkgs/development/python-modules/django_evolution/default.nix b/nixpkgs/pkgs/development/python-modules/django_evolution/default.nix
deleted file mode 100644
index 16358c54c1a7..000000000000
--- a/nixpkgs/pkgs/development/python-modules/django_evolution/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, django
-}:
-
-buildPythonPackage rec {
-  pname = "django_evolution";
-  version = "2.1.2";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "28bad07b5e29a0ea4bd9727c6927cbee25d349d21606a553a0c748fbee0c073c";
-  };
-
-  propagatedBuildInputs = [ django ];
-
-  meta = with lib; {
-    description = "A database schema evolution tool for the Django web framework";
-    homepage = "https://github.com/beanbaginc/django-evolution";
-    license = licenses.bsd0;
-    broken = true;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/django_redis/default.nix b/nixpkgs/pkgs/development/python-modules/django_redis/default.nix
deleted file mode 100644
index 61101cc8a929..000000000000
--- a/nixpkgs/pkgs/development/python-modules/django_redis/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, mock
-, django
-, redis
-, msgpack
-}:
-buildPythonPackage rec {
-  pname = "django-redis";
-  version = "5.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "048f665bbe27f8ff2edebae6aa9c534ab137f1e8fa7234147ef470df3f3aa9b8";
-  };
-
-  propagatedBuildInputs = [
-    django
-    redis
-    msgpack
-  ];
-
-  # django.core.exceptions.ImproperlyConfigured: Requested setting DJANGO_REDIS_SCAN_ITERSIZE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
-  doCheck = false;
-
-  pythonImportsCheck = [ "django_redis" ];
-
-  meta = with lib; {
-    description = "Full featured redis cache backend for Django";
-    homepage = "https://github.com/niwibe/django-redis";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/django_reversion/default.nix b/nixpkgs/pkgs/development/python-modules/django_reversion/default.nix
index 348228a8c028..97836b247a33 100644
--- a/nixpkgs/pkgs/development/python-modules/django_reversion/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django_reversion/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "django-reversion";
-  version = "4.0.0";
+  version = "4.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ad6d714b4b9b824e22b88d47201cc0f74b5c4294c8d4e1f8d7ac7c3631ef3188";
+    sha256 = "6991f16e5d3a972912db3d56e3a714d10b07becd566ab87f85f2e9b671981339";
   };
 
   # tests assume the availability of a mysql/postgresql database
diff --git a/nixpkgs/pkgs/development/python-modules/djangoql/default.nix b/nixpkgs/pkgs/development/python-modules/djangoql/default.nix
index e0e83e0c0619..facfc2fafcdb 100644
--- a/nixpkgs/pkgs/development/python-modules/djangoql/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/djangoql/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "djangoql";
-  version = "0.15.3";
+  version = "0.16.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e1a2f32573396335a8935dfc2afb29e34eff34babec1150927ff74fcd4bbdb9d";
+    sha256 = "23cea52eca76e605fa2f34b13ae8d2bf60240737ee9ed3f60c667a4f64d28adf";
   };
 
   propagatedBuildInputs = [ ply ];
diff --git a/nixpkgs/pkgs/development/python-modules/djangorestframework-simplejwt/default.nix b/nixpkgs/pkgs/development/python-modules/djangorestframework-simplejwt/default.nix
index 6c54f3ded292..4c616bdeb274 100644
--- a/nixpkgs/pkgs/development/python-modules/djangorestframework-simplejwt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/djangorestframework-simplejwt/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "djangorestframework-simplejwt";
-  version = "4.8.0";
+  version = "5.0.0";
 
   src = fetchPypi {
     pname = "djangorestframework_simplejwt";
     inherit version;
-    sha256 = "153c973c5c154baf566be431de8527c2bd62557fde7373ebcb0f02b73b28e07a";
+    sha256 = "30b10e7732395c44d21980f773214d2b9bdeadf2a6c6809cd1a7c9abe272873c";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/djangorestframework/default.nix b/nixpkgs/pkgs/development/python-modules/djangorestframework/default.nix
index 66a57625b4a9..131be8781b36 100644
--- a/nixpkgs/pkgs/development/python-modules/djangorestframework/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/djangorestframework/default.nix
@@ -1,7 +1,7 @@
 { lib, buildPythonPackage, fetchFromGitHub, django, isPy27 }:
 
 buildPythonPackage rec {
-  version = "3.12.2";
+  version = "3.12.4";
   pname = "djangorestframework";
   disabled = isPy27;
 
@@ -9,7 +9,7 @@ buildPythonPackage rec {
     owner = "encode";
     repo = "django-rest-framework";
     rev = version;
-    sha256 = "y/dw6qIOc6NaNpBWJXDwHX9aFodgKv9rGKWQKS6STlk=";
+    sha256 = "sha256-FjMRfVyLmm5J9uOUTLZpO3Pvge3RoYnqIRvzMng7wZo=";
   };
 
   # Test settings are missing
diff --git a/nixpkgs/pkgs/development/python-modules/dlib/default.nix b/nixpkgs/pkgs/development/python-modules/dlib/default.nix
index 58ceb16870a8..642794835654 100644
--- a/nixpkgs/pkgs/development/python-modules/dlib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dlib/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, stdenv, lib, dlib, python, pytest, more-itertools
+{ stdenv, buildPythonPackage, dlib, python, pytest, more-itertools
 , sse4Support ? stdenv.hostPlatform.sse4_1Support
 , avxSupport ? stdenv.hostPlatform.avxSupport
 }:
diff --git a/nixpkgs/pkgs/development/python-modules/dm-tree/cmake.patch b/nixpkgs/pkgs/development/python-modules/dm-tree/cmake.patch
new file mode 100644
index 000000000000..e5698f457bc3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dm-tree/cmake.patch
@@ -0,0 +1,141 @@
+diff --git a/tree/CMakeLists.txt b/tree/CMakeLists.txt
+index 8f9946c..b9d6e9b 100644
+--- a/tree/CMakeLists.txt
++++ b/tree/CMakeLists.txt
+@@ -50,70 +50,80 @@ if(APPLE)
+   set (CMAKE_FIND_FRAMEWORK LAST)
+ endif()
+ 
+-# Fetch pybind to be able to use pybind11_add_module symbol.
+-set(PYBIND_VER v2.6.2)
+-include(FetchContent)
+-FetchContent_Declare(
+-  pybind11
+-  GIT_REPOSITORY https://github.com/pybind/pybind11
+-  GIT_TAG        ${PYBIND_VER}
+-)
+-if(NOT pybind11_POPULATED)
+-    FetchContent_Populate(pybind11)
+-    add_subdirectory(${pybind11_SOURCE_DIR} ${pybind11_BINARY_DIR})
+-    include_directories(${pybind11_INCLUDE_DIR})
+-endif()
+-
+-# Needed to disable Abseil tests.
+-set (BUILD_TESTING OFF)
+-
+-# Include abseil-cpp.
+-set(ABSEIL_VER 20210324.2)
+-include(ExternalProject)
+-set(ABSEIL_CMAKE_ARGS
+-    "-DCMAKE_INSTALL_PREFIX=${CMAKE_SOURCE_DIR}/abseil-cpp"
+-    "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}"
+-    "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
+-    "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}"
+-    "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
+-    "-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}"
+-    "-DLIBRARY_OUTPUT_PATH=${CMAKE_SOURCE_DIR}/abseil-cpp/lib")
+-if(DEFINED CMAKE_OSX_ARCHITECTURES)
+-    set(ABSEIL_CMAKE_ARGS
+-        ${ABSEIL_CMAKE_ARGS}
+-        "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}")
++find_package(pybind11 CONFIG)
++
++if (NOT pybind11_FOUND)
++  # Fetch pybind to be able to use pybind11_add_module symbol.
++  set(PYBIND_VER v2.6.2)
++  include(FetchContent)
++  FetchContent_Declare(
++    pybind11
++    GIT_REPOSITORY https://github.com/pybind/pybind11
++    GIT_TAG        ${PYBIND_VER}
++  )
++  if(NOT pybind11_POPULATED)
++      FetchContent_Populate(pybind11)
++      add_subdirectory(${pybind11_SOURCE_DIR} ${pybind11_BINARY_DIR})
++      include_directories(${pybind11_INCLUDE_DIR})
++  endif()
+ endif()
+-ExternalProject_Add(abseil-cpp
+-  GIT_REPOSITORY    https://github.com/abseil/abseil-cpp.git
+-  GIT_TAG           ${ABSEIL_VER}
+-  PREFIX            ${CMAKE_SOURCE_DIR}/abseil-cpp
+-  CMAKE_ARGS        ${ABSEIL_CMAKE_ARGS}
+-)
+-ExternalProject_Get_Property(abseil-cpp install_dir)
+-set(abseil_install_dir ${install_dir})
+-include_directories (${abseil_install_dir}/include)
+-
+ 
+ # Define pybind11 tree module.
+ pybind11_add_module(_tree tree.h tree.cc)
+-add_dependencies(_tree abseil-cpp)
+ 
+-if (WIN32 OR MSVC)
+-    set(ABSEIL_LIB_PREF "absl")
+-    set(LIB_SUFF "lib")
++find_package(absl)
++
++if (NOT absl_FOUND)
++  # Needed to disable Abseil tests.
++  set (BUILD_TESTING OFF)
++
++  # Include abseil-cpp.
++  set(ABSEIL_VER 20210324.2)
++  include(ExternalProject)
++  set(ABSEIL_CMAKE_ARGS
++      "-DCMAKE_INSTALL_PREFIX=${CMAKE_SOURCE_DIR}/abseil-cpp"
++      "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}"
++      "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
++      "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}"
++      "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
++      "-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}"
++      "-DLIBRARY_OUTPUT_PATH=${CMAKE_SOURCE_DIR}/abseil-cpp/lib")
++  if(DEFINED CMAKE_OSX_ARCHITECTURES)
++      set(ABSEIL_CMAKE_ARGS
++          ${ABSEIL_CMAKE_ARGS}
++          "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}")
++  endif()
++  ExternalProject_Add(abseil-cpp
++    GIT_REPOSITORY    https://github.com/abseil/abseil-cpp.git
++    GIT_TAG           ${ABSEIL_VER}
++    PREFIX            ${CMAKE_SOURCE_DIR}/abseil-cpp
++    CMAKE_ARGS        ${ABSEIL_CMAKE_ARGS}
++  )
++  ExternalProject_Get_Property(abseil-cpp install_dir)
++  set(abseil_install_dir ${install_dir})
++  include_directories (${abseil_install_dir}/include)
++
++  add_dependencies(_tree abseil-cpp)
++
++  if (WIN32 OR MSVC)
++      set(ABSEIL_LIB_PREF "absl")
++      set(LIB_SUFF "lib")
++  else()
++      set(ABSEIL_LIB_PREF "libabsl")
++      set(LIB_SUFF "a")
++  endif()
++
++  # Link abseil static libs.
++  # We don't use find_library here to force cmake to build abseil before linking.
++  set(ABSEIL_LIBS int128 raw_hash_set raw_logging_internal strings throw_delegate)
++  foreach(ABSEIL_LIB IN LISTS ABSEIL_LIBS)
++    target_link_libraries(_tree PRIVATE
++        "${abseil_install_dir}/lib/${ABSEIL_LIB_PREF}_${ABSEIL_LIB}.${LIB_SUFF}")
++  endforeach()
+ else()
+-    set(ABSEIL_LIB_PREF "libabsl")
+-    set(LIB_SUFF "a")
++  target_link_libraries(_tree PRIVATE absl::int128 absl::raw_hash_set absl::raw_logging_internal absl::strings absl::throw_delegate)
+ endif()
+ 
+-# Link abseil static libs.
+-# We don't use find_library here to force cmake to build abseil before linking.
+-set(ABSEIL_LIBS int128 raw_hash_set raw_logging_internal strings throw_delegate)
+-foreach(ABSEIL_LIB IN LISTS ABSEIL_LIBS)
+-  target_link_libraries(_tree PRIVATE
+-      "${abseil_install_dir}/lib/${ABSEIL_LIB_PREF}_${ABSEIL_LIB}.${LIB_SUFF}")
+-endforeach()
+-
+ # Make the module private to tree package.
+ set_target_properties(_tree PROPERTIES OUTPUT_NAME tree/_tree)
+ 
diff --git a/nixpkgs/pkgs/development/python-modules/dm-tree/default.nix b/nixpkgs/pkgs/development/python-modules/dm-tree/default.nix
new file mode 100644
index 000000000000..307e932aae39
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dm-tree/default.nix
@@ -0,0 +1,56 @@
+{ abseil-cpp
+, absl-py
+, attrs
+, buildPythonPackage
+, cmake
+, fetchFromGitHub
+, lib
+, numpy
+, pybind11
+, wrapt
+}:
+
+buildPythonPackage rec {
+  pname = "dm-tree";
+  # As of 2021-12-29, the latest stable version still builds with Bazel.
+  version = "unstable-2021-12-20";
+
+  src = fetchFromGitHub {
+    owner = "deepmind";
+    repo = "tree";
+    rev = "b452e5c2743e7489b4ba7f16ecd51c516d7cd8e3";
+    sha256 = "1r187xwpvnnj98lyasngcv3lbxz0ziihpl5dbnjbfbjr0kh6z0j9";
+  };
+
+  patches = [
+    ./cmake.patch
+  ];
+
+  dontUseCmakeConfigure = true;
+
+  nativeBuildInputs = [
+    cmake
+    pybind11
+  ];
+
+  buildInputs = [
+    abseil-cpp
+    pybind11
+  ];
+
+  checkInputs = [
+    absl-py
+    attrs
+    numpy
+    wrapt
+  ];
+
+  pythonImportsCheck = [ "tree" ];
+
+  meta = with lib; {
+    description = "Tree is a library for working with nested data structures.";
+    homepage = "https://github.com/deepmind/tree";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ samuela ndl ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dnspython/1.nix b/nixpkgs/pkgs/development/python-modules/dnspython/1.nix
deleted file mode 100644
index 5ff02c043380..000000000000
--- a/nixpkgs/pkgs/development/python-modules/dnspython/1.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-}:
-
-buildPythonPackage rec {
-  pname = "dnspython";
-  version = "1.16.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    extension = "zip";
-    sha256 = "36c5e8e38d4369a08b6780b7f27d790a292b2b08eea01607865bf0936c558e01";
-  };
-
-  # needs networking for some tests
-  doCheck = false;
-  pythonImportsCheck = [ "dns" ];
-
-  meta = with lib; {
-    description = "A DNS toolkit for Python";
-    homepage = "http://www.dnspython.org";
-    license = with licenses; [ isc ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/dnspythonchia/default.nix b/nixpkgs/pkgs/development/python-modules/dnspythonchia/default.nix
new file mode 100644
index 000000000000..52243eac7d81
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dnspythonchia/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "dnspythonchia";
+  version = "2.2.0";
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-iYaPYqOZ33R2DUXgIHxsewLi79iB5ja0WHOGkamffZk=";
+  };
+
+  nativeBuildInputs = [ setuptools-scm ];
+
+  # needs networking for some tests
+  doCheck = false;
+  pythonImportsCheck = [ "dns" ];
+
+  meta = with lib; {
+    description = "A DNS toolkit for Python (Chia Network fork)";
+    homepage = "https://www.chia.net/";
+    license = with licenses; [ isc ];
+    maintainers = teams.chia.members;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/doc8/default.nix b/nixpkgs/pkgs/development/python-modules/doc8/default.nix
index a1010f96d62e..dbfb857614e1 100644
--- a/nixpkgs/pkgs/development/python-modules/doc8/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/doc8/default.nix
@@ -1,39 +1,52 @@
 { lib
 , buildPythonPackage
+, chardet
+, docutils
 , fetchPypi
 , pbr
-, docutils
-, six
-, chardet
-, stevedore
-, restructuredtext_lint
 , pygments
+, pytestCheckHook
+, pythonOlder
+, restructuredtext_lint
+, stevedore
 }:
 
 buildPythonPackage rec {
   pname = "doc8";
-  version = "0.9.1";
+  version = "0.10.1";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0e967db31ea10699667dd07790f98cf9d612ee6864df162c64e4954a8e30f90d";
+    sha256 = "376e50f4e70a1ae935416ddfcf93db35dd5d4cc0e557f2ec72f0667d0ace4548";
   };
 
-  buildInputs = [ pbr ];
+  buildInputs = [
+    pbr
+  ];
+
   propagatedBuildInputs = [
     docutils
-    six
     chardet
     stevedore
     restructuredtext_lint
     pygments
   ];
 
-  doCheck = false;
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "doc8"
+  ];
 
-  meta = {
+  meta = with lib; {
     description = "Style checker for Sphinx (or other) RST documentation";
-    homepage = "https://launchpad.net/doc8";
-    license = lib.licenses.asl20;
+    homepage = "https://github.com/pycqa/doc8";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/docker/default.nix b/nixpkgs/pkgs/development/python-modules/docker/default.nix
index 3c41ccd17324..f70fcebb26f3 100644
--- a/nixpkgs/pkgs/development/python-modules/docker/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/docker/default.nix
@@ -14,11 +14,11 @@
 
 buildPythonPackage rec {
   pname = "docker";
-  version = "5.0.0";
+  version = "5.0.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-PovEdTTgypMx1ywy8ogbsTuT3tC83qs8gz+3z2HAqaU=";
+    sha256 = "d916a26b62970e7c2f554110ed6af04c7ccff8e9f81ad17d0d40c75637e227fb";
   };
 
   nativeBuildInputs = lib.optional isPy27 mock;
diff --git a/nixpkgs/pkgs/development/python-modules/docplex/default.nix b/nixpkgs/pkgs/development/python-modules/docplex/default.nix
index 670ccae65422..b7b0231a806e 100644
--- a/nixpkgs/pkgs/development/python-modules/docplex/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/docplex/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "docplex";
-  version = "2.21.207";
+  version = "2.22.213";
 
   # No source available from official repo
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4f1781592be2b093db939772db8c6575a0f017041fb0cfd784bedf4222ac5e58";
+    sha256 = "8a86bba42b5b65f2e0f88ed350115efeb783b444661e2cfcf3a67d5c59bcb0bd";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/docstring-parser/default.nix b/nixpkgs/pkgs/development/python-modules/docstring-parser/default.nix
new file mode 100644
index 000000000000..5408b11c7d8a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/docstring-parser/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, setuptools-scm
+, wheel
+, pytest
+}: buildPythonPackage rec {
+  pname = "docstring-parser";
+  version = "0.12";
+  src = fetchFromGitHub {
+    owner = "rr-";
+    repo = "docstring_parser";
+    rev = "${version}";
+    sha256 = "sha256-hQuPJQrGvDs4dJrMLSR4sSnqy45xrF2ufinBG+azuCg=";
+  };
+  nativeBuildInputs = [ setuptools-scm ];
+  propagatedBuildInputs = [ pytest setuptools wheel ];
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  meta = with lib; {
+    description = "Parse Python docstrings in various flavors. ";
+    homepage = "https://github.com/rr-/docstring_parser";
+    license = licenses.mit;
+    maintainers = with maintainers; [ SomeoneSerge ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/docstring-to-markdown/default.nix b/nixpkgs/pkgs/development/python-modules/docstring-to-markdown/default.nix
new file mode 100644
index 000000000000..432f77220adc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/docstring-to-markdown/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "docstring-to-markdown";
+  version = "0.10";
+
+  src = fetchFromGitHub {
+    owner = "python-lsp";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0rflkbms94wkcypjcnz30bc4w4iww91h7sqq3j2b6ypzl4g48csa";
+  };
+
+  patches = [
+    # So pytest-flake8 and pytest-cov won't be needed
+    ./remove-coverage-tests.patch
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "docstring_to_markdown"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/python-lsp/docstring-to-markdown";
+    description = "On the fly conversion of Python docstrings to markdown";
+    license = licenses.lgpl2Plus;
+    maintainers = with maintainers; [ doronbehar ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/docstring-to-markdown/remove-coverage-tests.patch b/nixpkgs/pkgs/development/python-modules/docstring-to-markdown/remove-coverage-tests.patch
new file mode 100644
index 000000000000..68bc626ced91
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/docstring-to-markdown/remove-coverage-tests.patch
@@ -0,0 +1,16 @@
+diff --git i/setup.cfg w/setup.cfg
+index e880e74..e77133e 100644
+--- i/setup.cfg
++++ w/setup.cfg
+@@ -34,11 +34,7 @@ docstring-to-markdown = py.typed
+ [tool:pytest]
+ addopts =
+     --pyargs tests
+-    --cov docstring_to_markdown
+-    --cov-fail-under=98
+-    --cov-report term-missing:skip-covered
+     -p no:warnings
+-    --flake8
+     -vv
+ 
+ [flake8]
diff --git a/nixpkgs/pkgs/development/python-modules/docutils/default.nix b/nixpkgs/pkgs/development/python-modules/docutils/default.nix
index 292fc34e3281..529a09d3f046 100644
--- a/nixpkgs/pkgs/development/python-modules/docutils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/docutils/default.nix
@@ -3,7 +3,6 @@
 , fetchPypi
 , buildPythonPackage
 , isPy3k
-, isPy38
 , python
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/dogpile.cache/default.nix b/nixpkgs/pkgs/development/python-modules/dogpile-cache/default.nix
index 55dffd1dc7e3..5b89c6bdb912 100644
--- a/nixpkgs/pkgs/development/python-modules/dogpile.cache/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dogpile-cache/default.nix
@@ -2,8 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , pythonOlder
-, pytest
-, pytest-cov
+, pytestCheckHook
 , mock
 , Mako
 , decorator
@@ -11,29 +10,27 @@
 }:
 
 buildPythonPackage rec {
-  pname = "dogpile.cache";
+  pname = "dogpile-cache";
   version = "1.1.4";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
-    inherit pname version;
+    pname = "dogpile.cache";
+    inherit version;
     sha256 = "ea09bebf24bb7c028caf98963785fe9ad0bd397305849a3303bc5380d468d813";
   };
 
-  # Disable concurrency tests that often fail,
-  # probably some kind of timing issue.
-  postPatch = ''
+  preCheck = ''
+    # Disable concurrency tests that often fail,
+    # probably some kind of timing issue.
     rm tests/test_lock.py
     # Failing tests. https://bitbucket.org/zzzeek/dogpile.cache/issues/116
     rm tests/cache/test_memcached_backend.py
   '';
 
   dontUseSetuptoolsCheck = true;
-  checkPhase = ''
-    pytest
-  '';
 
-  checkInputs = [ pytest pytest-cov mock Mako ];
+  checkInputs = [ pytestCheckHook mock Mako ];
 
   propagatedBuildInputs = [ decorator stevedore ];
 
@@ -41,5 +38,6 @@ buildPythonPackage rec {
     description = "A caching front-end based on the Dogpile lock";
     homepage = "https://bitbucket.org/zzzeek/dogpile.cache";
     license = licenses.bsd3;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/dogpile.core/default.nix b/nixpkgs/pkgs/development/python-modules/dogpile.core/default.nix
deleted file mode 100644
index 8ef37282250d..000000000000
--- a/nixpkgs/pkgs/development/python-modules/dogpile.core/default.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi }:
-
-buildPythonPackage rec {
-  pname = "dogpile.core";
-  version = "0.4.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0xpdvg4kr1isfkrh1rfsh7za4q5a5s6l2kf9wpvndbwf3aqjyrdy";
-  };
-
-  doCheck = false;
-
-  meta = with lib; {
-    description = "A 'dogpile' lock, typically used as a component of a larger caching solution";
-    homepage = "https://bitbucket.org/zzzeek/dogpile.core";
-    license = licenses.bsd3;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/dotmap/default.nix b/nixpkgs/pkgs/development/python-modules/dotmap/default.nix
index e9bb585544ee..a820c1486eb8 100644
--- a/nixpkgs/pkgs/development/python-modules/dotmap/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dotmap/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "dotmap";
-  version = "1.3.24";
+  version = "1.3.26";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1mvkhkrhzzzng17j2yvwp4x1hj8wls3qw5lngqs777a2qc1mhg0r";
+    sha256 = "cc87300f3a61d70f2bd18103ea2747dea846a2381a8321f43ce65cbd7afdfe3d";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/downloader-cli/default.nix b/nixpkgs/pkgs/development/python-modules/downloader-cli/default.nix
index 608286c8bcf6..e0c25c77e53c 100644
--- a/nixpkgs/pkgs/development/python-modules/downloader-cli/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/downloader-cli/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, urllib3, pytest }:
+{ lib, buildPythonPackage, fetchFromGitHub, urllib3 }:
 
 buildPythonPackage rec {
   pname = "downloader-cli";
diff --git a/nixpkgs/pkgs/development/python-modules/drf-yasg/default.nix b/nixpkgs/pkgs/development/python-modules/drf-yasg/default.nix
index 45842fb809cc..4b55a08f842d 100644
--- a/nixpkgs/pkgs/development/python-modules/drf-yasg/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/drf-yasg/default.nix
@@ -2,7 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , inflection
-, ruamel_yaml
+, ruamel-yaml
 , setuptools-scm
 , six
 , coreapi
@@ -33,7 +33,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     six
     inflection
-    ruamel_yaml
+    ruamel-yaml
     coreapi
     djangorestframework
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/dropbox/default.nix b/nixpkgs/pkgs/development/python-modules/dropbox/default.nix
index 5b46c8183c81..e43f7d7f2d1d 100644
--- a/nixpkgs/pkgs/development/python-modules/dropbox/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dropbox/default.nix
@@ -1,13 +1,15 @@
-{ lib, buildPythonPackage, fetchPypi
+{ lib, buildPythonPackage, fetchFromGitHub
 , requests, urllib3, mock, setuptools, stone }:
 
 buildPythonPackage rec {
   pname = "dropbox";
-  version = "11.20.0";
+  version = "11.25.0";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1aa351ec8bbb11cf3560e731b81d25f39c7edcb5fa92c06c5d68866cb9f90d54";
+  src = fetchFromGitHub {
+    owner = "dropbox";
+    repo = "dropbox-sdk-python";
+    rev = "v${version}";
+    sha256 = "1ln6m6wiym5608i26abs8a5nm4mnn7s3czhnpg9nyjyndnr7k0xj";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/dsmr-parser/default.nix b/nixpkgs/pkgs/development/python-modules/dsmr-parser/default.nix
index 1f59c956560e..b666e4c210f5 100644
--- a/nixpkgs/pkgs/development/python-modules/dsmr-parser/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dsmr-parser/default.nix
@@ -4,19 +4,23 @@
 , pyserial
 , pyserial-asyncio
 , pytestCheckHook
+, pythonOlder
 , pytz
 , tailer
 }:
 
 buildPythonPackage rec {
   pname = "dsmr-parser";
-  version = "0.30";
+  version = "0.31";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "ndokter";
     repo = "dsmr_parser";
     rev = "v${version}";
-    sha256 = "sha256-3RXku0L/XQFarECxY1LSs2TwSOlJAOiS6yEepHCGL5U=";
+    sha256 = "sha256-A+fyAAV62Dg28RDiivKEjrC1bCXzkuIvpATR+oUytRU=";
   };
 
   propagatedBuildInputs = [
@@ -30,7 +34,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "dsmr_parser" ];
+  pythonImportsCheck = [
+    "dsmr_parser"
+  ];
 
   meta = with lib; {
     description = "Python module to parse Dutch Smart Meter Requirements (DSMR)";
diff --git a/nixpkgs/pkgs/development/python-modules/dtopt/default.nix b/nixpkgs/pkgs/development/python-modules/dtopt/default.nix
deleted file mode 100644
index a5d4675f9930..000000000000
--- a/nixpkgs/pkgs/development/python-modules/dtopt/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "dtopt";
-  version = "0.1";
-  # Test contain Python 2 print
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "06ae07a12294a7ba708abaa63f838017d1a2faf6147a1e7a14ca4fa28f86da7f";
-  };
-
-  meta = with lib; {
-    description = "Add options to doctest examples while they are running";
-    homepage = "https://pypi.python.org/pypi/dtopt";
-    license = licenses.mit;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/duckdb/default.nix b/nixpkgs/pkgs/development/python-modules/duckdb/default.nix
index fd360bfbd120..6e47e4eb389a 100644
--- a/nixpkgs/pkgs/development/python-modules/duckdb/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/duckdb/default.nix
@@ -4,31 +4,23 @@
 , numpy
 , pandas
 , pybind11
+, mypy
 , setuptools-scm
-, pytest-runner
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "duckdb";
   inherit (duckdb) version src;
+  format = "setuptools";
 
-  # build attempts to use git to figure out its own version. don't want to add
-  # the dependency for something pointless.
-  postPatch = ''
-    substituteInPlace scripts/package_build.py --replace \
-      "'git'" "'false'"
-  '';
+  sourceRoot = "source/tools/pythonpkg";
 
-  postConfigure = ''
-    cd tools/pythonpkg
-    export SETUPTOOLS_SCM_PRETEND_VERSION=${version}
-  '';
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
 
   nativeBuildInputs = [
     pybind11
     setuptools-scm
-    pytest-runner
   ];
 
   propagatedBuildInputs = [
@@ -37,10 +29,13 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
+    mypy
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "duckdb" ];
+  pythonImportsCheck = [
+    "duckdb"
+  ];
 
   meta = with lib; {
     description = "Python binding for DuckDB";
diff --git a/nixpkgs/pkgs/development/python-modules/duet/default.nix b/nixpkgs/pkgs/development/python-modules/duet/default.nix
new file mode 100644
index 000000000000..fd770785d27a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/duet/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, typing-extensions
+}:
+
+buildPythonPackage rec {
+  pname = "duet";
+  version = "0.2.1";
+
+  src = fetchFromGitHub {
+    owner = "google";
+    repo = "duet";
+    rev = "v${version}";
+    sha256 = "sha256-hK2Cx7dSm1mGM2z9oCoRogfa2aIsjyJcdpSSfdHhPmw=";
+  };
+
+  propagatedBuildInputs = [ typing-extensions ];
+
+  checkInputs = [ pytestCheckHook ];
+
+  meta = with lib; {
+    description = "A simple future-based async library for python";
+    homepage = "https://github.com/google/duet";
+    maintainers = with maintainers; [ drewrisinger ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/dulwich/0_19.nix b/nixpkgs/pkgs/development/python-modules/dulwich/0_19.nix
deleted file mode 100644
index 9a09c7cc75dd..000000000000
--- a/nixpkgs/pkgs/development/python-modules/dulwich/0_19.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi
-, urllib3, certifi
-, gevent, geventhttpclient, mock, fastimport
-, git, glibcLocales }:
-
-buildPythonPackage rec {
-  version = "0.19.16";
-  pname = "dulwich";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "f74561c448bfb6f04c07de731c1181ae4280017f759b0bb04fa5770aa84ca850";
-  };
-
-  LC_ALL = "en_US.UTF-8";
-
-  propagatedBuildInputs = [ urllib3 certifi ];
-
-  # Only test dependencies
-  checkInputs = [ git glibcLocales gevent geventhttpclient mock fastimport ];
-
-  doCheck = !stdenv.isDarwin;
-
-  meta = with lib; {
-    description = "Simple Python implementation of the Git file formats and protocols";
-    homepage = "https://www.dulwich.io/";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ koral ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/dulwich/default.nix b/nixpkgs/pkgs/development/python-modules/dulwich/default.nix
index 58ac73b47203..a0c7706c2ff1 100644
--- a/nixpkgs/pkgs/development/python-modules/dulwich/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dulwich/default.nix
@@ -15,12 +15,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "0.20.25";
+  version = "0.20.26";
   pname = "dulwich";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "79baea81583eb61eb7bd4a819ab6096686b362c626a4640d84d4fc5539139353";
+    sha256 = "sha256-OKpQ+FnI6lMHGgScPx1cxU99xgpBNqGrYxdWp59lgrU=";
   };
 
   LC_ALL = "en_US.UTF-8";
diff --git a/nixpkgs/pkgs/development/python-modules/easy-thumbnails/default.nix b/nixpkgs/pkgs/development/python-modules/easy-thumbnails/default.nix
index f2be7b1903da..e896e79908b6 100644
--- a/nixpkgs/pkgs/development/python-modules/easy-thumbnails/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/easy-thumbnails/default.nix
@@ -1,21 +1,44 @@
-{ lib, buildPythonPackage, fetchPypi,
-  django, pillow
+{ lib
+, buildPythonPackage
+, django
+, fetchPypi
+, pillow
+, pytestCheckHook
+, pythonOlder
+, reportlab
+, svglib
 }:
 
 buildPythonPackage rec {
   pname = "easy-thumbnails";
-  version = "2.7.1";
+  version = "2.8";
+  format = "setuptools";
 
-  meta = {
-    description = "Easy thumbnails for Django";
-    homepage = "https://github.com/SmileyChris/easy-thumbnails";
-    license = lib.licenses.bsd3;
-  };
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f862949208d9066cd3d84ffcf9c2dbe9c7344ea6152b741e440f861eca46855c";
+    sha256 = "fd2249d936671847fc54a2d6c8c87bcca8f803001967dd03bab6b8bcb7590825";
   };
 
-  propagatedBuildInputs = [ django pillow ];
+  propagatedBuildInputs = [
+    django
+    pillow
+    svglib
+    reportlab
+  ];
+
+  # Tests require a Django instance which is setup
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "easy_thumbnails"
+  ];
+
+  meta = with lib; {
+    description = "Easy thumbnails for Django";
+    homepage = "https://github.com/SmileyChris/easy-thumbnails";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ ];
+  };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/ebaysdk/default.nix b/nixpkgs/pkgs/development/python-modules/ebaysdk/default.nix
new file mode 100644
index 000000000000..8c80ccd4c362
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ebaysdk/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, lxml
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "ebaysdk";
+  version = "2.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-Lrh11wa0gfWcqN0wdFON9+UZaBT5zhLQ74RpA0Opx/M=";
+  };
+
+  propagatedBuildInputs = [
+    lxml
+    requests
+  ];
+
+  # requires network
+  doCheck = false;
+
+  meta = with lib; {
+    description = "eBay SDK for Python";
+    homepage = "https://github.com/timotheus/ebaysdk-python";
+    license = licenses.cddl;
+    maintainers = [ maintainers.mkg20001 ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ecs-logging/default.nix b/nixpkgs/pkgs/development/python-modules/ecs-logging/default.nix
new file mode 100644
index 000000000000..f82149ac8676
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ecs-logging/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, flit-core
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "ecs-logging";
+  version = "1.1.0";
+  format = "flit";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "elastic";
+    repo = "ecs-logging-python";
+    rev = version;
+    sha256 = "sha256-UcQh/+K2d4tiMZaz4IAZ2w/B88vEkHoq2LCPMNZ95Mo=";
+  };
+
+  nativeBuildInputs = [
+    flit-core
+  ];
+
+  # Circular dependency elastic-apm
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "ecs_logging"
+  ];
+
+  meta = with lib; {
+    description = "Logging formatters for the Elastic Common Schema (ECS) in Python";
+    homepage = "https://github.com/elastic/ecs-logging-python";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/editdistance-s/default.nix b/nixpkgs/pkgs/development/python-modules/editdistance-s/default.nix
index 8d9be707f9b4..548da09b993d 100644
--- a/nixpkgs/pkgs/development/python-modules/editdistance-s/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/editdistance-s/default.nix
@@ -16,6 +16,8 @@ buildPythonPackage rec {
     sha256 = "0w2qd5b6a3c3ahd0xy9ykq4wzqk0byqwdqrr26dyn8j2425j46lg";
   };
 
+  propagatedNativeBuildInputs = [ cffi ];
+
   propagatedBuildInputs = [ cffi ];
 
   checkInputs = [ pytestCheckHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/editdistance/default.nix b/nixpkgs/pkgs/development/python-modules/editdistance/default.nix
index 01e59fdb040d..41b20ca8969f 100644
--- a/nixpkgs/pkgs/development/python-modules/editdistance/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/editdistance/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "editdistance";
-  version = "0.5.3";
+  version = "0.6.0";
 
 
   src = fetchFromGitHub {
     owner = "roy-ht";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0vk8vz41p2cs7s7zbaw3cnw2jnvy5rhy525xral68dh14digpgsd";
+    sha256 = "17xkndwdyf14nfxk25z1qnhkzm0yxw65fpj78c01haq241zfzjr5";
   };
 
   nativeBuildInputs = [ cython ];
diff --git a/nixpkgs/pkgs/development/python-modules/edward/default.nix b/nixpkgs/pkgs/development/python-modules/edward/default.nix
index ac2d5023cc97..05171c22d18e 100644
--- a/nixpkgs/pkgs/development/python-modules/edward/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/edward/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchPypi, isPy27, pythonAtLeast
-, Keras, numpy, scipy, six, tensorflow }:
+, keras, numpy, scipy, six, tensorflow }:
 
 buildPythonPackage rec {
   pname = "edward";
@@ -15,7 +15,7 @@ buildPythonPackage rec {
   # disabled for now due to Tensorflow trying to create files in $HOME:
   doCheck = false;
 
-  propagatedBuildInputs = [ Keras numpy scipy six tensorflow ];
+  propagatedBuildInputs = [ keras numpy scipy six tensorflow ];
 
   meta = with lib; {
     description = "Probabilistic programming language using Tensorflow";
diff --git a/nixpkgs/pkgs/development/python-modules/eggdeps/default.nix b/nixpkgs/pkgs/development/python-modules/eggdeps/default.nix
index 02c2c6444493..9f17306b7bdc 100644
--- a/nixpkgs/pkgs/development/python-modules/eggdeps/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/eggdeps/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "tl-eggdeps";
-  version = "0.4";
+  version = "1.0";
 
   src = fetchPypi {
     inherit version;
     pname = "tl.eggdeps";
-    sha256 = "a99de5e4652865224daab09b2e2574a4f7c1d0d9a267048f9836aa914a2caf3a";
+    sha256 = "a094ed7961a3dd38fcaaa69cf7a58670038acdff186360166d9e3d964b7a7323";
   };
 
   propagatedBuildInputs = [ zope_interface zope_testing ];
diff --git a/nixpkgs/pkgs/development/python-modules/einops/default.nix b/nixpkgs/pkgs/development/python-modules/einops/default.nix
index 34510762abf7..a2de3a70971d 100644
--- a/nixpkgs/pkgs/development/python-modules/einops/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/einops/default.nix
@@ -10,6 +10,7 @@
 , pytorch
 , mxnet
 , tensorflow
+, keras
 }:
 
 buildPythonPackage rec {
@@ -35,6 +36,7 @@ buildPythonPackage rec {
     pytorch
     mxnet
     tensorflow
+    keras
   ];
 
   # No CUDA in sandbox
diff --git a/nixpkgs/pkgs/development/python-modules/elastic-apm/default.nix b/nixpkgs/pkgs/development/python-modules/elastic-apm/default.nix
new file mode 100644
index 000000000000..bf78fec5e5d3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/elastic-apm/default.nix
@@ -0,0 +1,90 @@
+{ lib
+, asynctest
+, aiohttp
+, blinker
+, buildPythonPackage
+, certifi
+, ecs-logging
+, fetchFromGitHub
+, httpx
+, jinja2
+, jsonschema
+, Logbook
+, mock
+, pytest-asyncio
+, pytest-bdd
+, pytest-localserver
+, pytest-mock
+, pytestCheckHook
+, pythonOlder
+, sanic
+, sanic-testing
+, starlette
+, structlog
+, tornado
+, urllib3
+, webob
+}:
+
+buildPythonPackage rec {
+  pname = "elastic-apm";
+  version = "6.7.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "elastic";
+    repo = "apm-agent-python";
+    rev = "v${version}";
+    sha256 = "sha256-NyoFJ3HVxE3AdCCZCZrEk4dDiTIv9cGZYPHVre/PMO4=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    blinker
+    certifi
+    sanic
+    starlette
+    tornado
+    urllib3
+  ];
+
+  checkInputs = [
+    asynctest
+    ecs-logging
+    jinja2
+    jsonschema
+    Logbook
+    mock
+    httpx
+    pytest-asyncio
+    pytest-bdd
+    pytest-mock
+    pytest-localserver
+    sanic-testing
+    pytestCheckHook
+    structlog
+    webob
+  ];
+
+  disabledTests = [
+    "elasticapm_client"
+  ];
+
+  disabledTestPaths = [
+    # Exclude tornado tests
+    "tests/contrib/asyncio/tornado/tornado_tests.py"
+  ];
+
+  pythonImportsCheck = [
+    "elasticapm"
+  ];
+
+  meta = with lib; {
+    description = "Python agent for the Elastic APM";
+    homepage = "https://github.com/elastic/apm-agent-python";
+    license = with licenses; [ bsd3 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/elasticsearch/default.nix b/nixpkgs/pkgs/development/python-modules/elasticsearch/default.nix
index 442ac5904b2f..81bc807a1347 100644
--- a/nixpkgs/pkgs/development/python-modules/elasticsearch/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/elasticsearch/default.nix
@@ -12,11 +12,11 @@ buildPythonPackage (rec {
   # there's a clear path forward. See
   # https://github.com/elastic/elasticsearch-py/issues/1639 for more
   # info.
-  version = "7.13.1";
+  version = "7.16.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d6bcca0b2e5665d08e6fe6fadc2d4d321affd76ce483603078fc9d3ccd2bc0f9";
+    sha256 = "c024ee2e7e2509c842c4e3c5e2b99a92ceecfde06d6dac2d32a19bf566c3e175";
   };
 
   # Check is disabled because running them destroy the content of the local cluster!
diff --git a/nixpkgs/pkgs/development/python-modules/elementpath/default.nix b/nixpkgs/pkgs/development/python-modules/elementpath/default.nix
index 810b5dfedd01..4dc34f92365e 100644
--- a/nixpkgs/pkgs/development/python-modules/elementpath/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/elementpath/default.nix
@@ -5,8 +5,9 @@
 }:
 
 buildPythonPackage rec {
-  version = "2.3.2";
   pname = "elementpath";
+  version = "2.4.0";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
@@ -14,13 +15,15 @@ buildPythonPackage rec {
     owner = "sissaschool";
     repo = "elementpath";
     rev = "v${version}";
-    sha256 = "01h68v077xbcnqn9v52i8d6s6i7ds3zycn3ddn11hc074m4gg3af";
+    sha256 = "1f3w5zyvrkl4gab81i5z9b41ybs54b37znj5r7hrcf25x8hrqgvv";
   };
 
   # avoid circular dependency with xmlschema which directly depends on this
   doCheck = false;
 
-  pythonImportsCheck = [ "elementpath" ];
+  pythonImportsCheck = [
+    "elementpath"
+  ];
 
   meta = with lib; {
     description = "XPath 1.0/2.0 parsers and selectors for ElementTree and lxml";
diff --git a/nixpkgs/pkgs/development/python-modules/elgato/default.nix b/nixpkgs/pkgs/development/python-modules/elgato/default.nix
index 6ee0cd019128..d0c072901c35 100644
--- a/nixpkgs/pkgs/development/python-modules/elgato/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/elgato/default.nix
@@ -1,26 +1,28 @@
 { lib
+, aiohttp
+, aresponses
 , buildPythonPackage
-, pythonOlder
 , fetchFromGitHub
-, aiohttp
 , poetry-core
-, yarl
-, aresponses
+, pydantic
 , pytest-asyncio
 , pytestCheckHook
+, pythonOlder
+, yarl
 }:
 
 buildPythonPackage rec {
   pname = "elgato";
-  version = "2.1.1";
-  disabled = pythonOlder "3.8";
+  version = "2.2.0";
   format = "pyproject";
 
+  disabled = pythonOlder "3.8";
+
   src = fetchFromGitHub {
     owner = "frenck";
     repo = "python-elgato";
     rev = "v${version}";
-    sha256 = "19z568jjyww7vi8s44anrb66qjz5l22nz4jqcz49ybhf22warmff";
+    sha256 = "sha256-xsIglJSnvtd3NKqwoRAonPRN+C9KWyar0mrYcC3hPpw=";
   };
 
   nativeBuildInputs = [
@@ -29,6 +31,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     aiohttp
+    pydantic
     yarl
   ];
 
@@ -45,7 +48,9 @@ buildPythonPackage rec {
       --replace "--cov" ""
   '';
 
-  pythonImportsCheck = [ "elgato" ];
+  pythonImportsCheck = [
+    "elgato"
+  ];
 
   meta = with lib; {
     description = "Python client for Elgato Key Lights";
diff --git a/nixpkgs/pkgs/development/python-modules/eliot/default.nix b/nixpkgs/pkgs/development/python-modules/eliot/default.nix
index 152561b69cee..b8f75776217a 100644
--- a/nixpkgs/pkgs/development/python-modules/eliot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/eliot/default.nix
@@ -15,12 +15,12 @@
 
 buildPythonPackage rec {
   pname = "eliot";
-  version = "1.13.0";
+  version = "1.14.0";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5760194b308a7ab35514ae1b942d88e9f2359071556d82580383f09ca586fff7";
+    sha256 = "c2f099a3e8d5ecfc22745766e7cc664a48db64b6b89d986dff270491d8683149";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/eliqonline/default.nix b/nixpkgs/pkgs/development/python-modules/eliqonline/default.nix
new file mode 100644
index 000000000000..b972d6addd25
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/eliqonline/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, docopt
+, fetchPypi
+, pythonOlder
+, pyyaml
+}:
+
+buildPythonPackage rec {
+  pname = "eliqonline";
+  version = "1.2.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "hOUN4cA4pKVioIrfJM02GOnZdDRc7xbNtvHfoD3//bM=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    docopt
+    pyyaml
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "eliqonline"
+  ];
+
+  meta = with lib; {
+    description = "Python client to the Eliq Online API";
+    homepage = "https://github.com/molobrakos/eliqonline";
+    license = licenses.lgpl3Only;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/elmax-api/default.nix b/nixpkgs/pkgs/development/python-modules/elmax-api/default.nix
new file mode 100644
index 000000000000..34d848d9a195
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/elmax-api/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, httpx
+, pyjwt
+, pythonOlder
+, yarl
+}:
+
+buildPythonPackage rec {
+  pname = "elmax-api";
+  version = "0.0.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "albertogeniola";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-YUnLi8+ibUgWoMFMgZPSPbpr286bnWBefxjOV7JfCuY=";
+  };
+
+  propagatedBuildInputs = [
+    httpx
+    pyjwt
+    yarl
+  ];
+
+  # Test require network access
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "elmax_api"
+  ];
+
+  meta = with lib; {
+    description = "Python library for interacting with the Elmax cloud";
+    homepage = "https://github.com/albertogeniola/elmax-api";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/elmax/default.nix b/nixpkgs/pkgs/development/python-modules/elmax/default.nix
index db1ff91ee0eb..77bbd480e9ba 100644
--- a/nixpkgs/pkgs/development/python-modules/elmax/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/elmax/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "elmax";
-  version = "0.1.3";
+  version = "0.1.5";
   format = "pyproject";
   disabled = pythonOlder "3.7";
 
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "home-assistant-ecosystem";
     repo = "python-elmax";
     rev = version;
-    sha256 = "sha256-OiVPjWqQw1u0OL6/uYlT+FP2XDh7l3OZyVtQfycHICI=";
+    sha256 = "sha256-EcYEpYv+EwwEfW8Sy7aQjFAPpmsA6qVbmlwrPdxdnEw=";
   };
 
   nativeBuildInputs = [ poetry-core ];
diff --git a/nixpkgs/pkgs/development/python-modules/emoji/default.nix b/nixpkgs/pkgs/development/python-modules/emoji/default.nix
index f7cdca223078..1497b412d741 100644
--- a/nixpkgs/pkgs/development/python-modules/emoji/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/emoji/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "emoji";
-  version = "1.6.1";
+  version = "1.6.2";
 
   src = fetchFromGitHub {
     owner = "carpedm20";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0x18l8jgbki9yqx994w97dagfaqrbxi3sy2l2101is1dfjr0kib6";
+    sha256 = "1g927w9l3j5mycg6pqa4vjk2lyy35sppfp8pbzb6mvca500001rk";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/empy/default.nix b/nixpkgs/pkgs/development/python-modules/empy/default.nix
new file mode 100644
index 000000000000..544506efb0d4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/empy/default.nix
@@ -0,0 +1,17 @@
+{ lib, fetchPypi, buildPythonPackage }:
+
+buildPythonPackage rec {
+  pname = "empy";
+  version = "3.3.4";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "c6xJeFtgFHnfTqGKfHm8EwSop8NMArlHLPEgauiPAbM=";
+  };
+  pythonImportsCheck = [ "em" ];
+  meta = with lib; {
+    homepage = "http://www.alcyone.com/software/empy/";
+    description = "A templating system for Python.";
+    maintainers = with maintainers; [ nkalupahana ];
+    license = licenses.lgpl21Only;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/emv/default.nix b/nixpkgs/pkgs/development/python-modules/emv/default.nix
index c636af4d8cbd..d688e1e22e66 100644
--- a/nixpkgs/pkgs/development/python-modules/emv/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/emv/default.nix
@@ -1,31 +1,29 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, click, enum-compat, pyscard, pycountry, terminaltables
-, pytestCheckHook, pythonOlder
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, click
+, pyscard
+, pycountry
+, terminaltables
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "emv";
-  version = "1.0.11";
+  version = "1.0.14";
+  format = "setuptools";
+
   disabled = pythonOlder "3.4";
 
   src = fetchFromGitHub {
     owner = "russss";
     repo = "python-emv";
     rev = "v${version}";
-    hash = "sha256:1715hcba3fdi0i5awnrjdjnk74p66sxm9349pd8bb717zrh4gpj7";
+    hash = "sha256-MnaeQZ0rA3i0CoUA6HgJQpwk5yo4rm9e+pc5XzRd1eg=";
   };
 
-  postPatch = ''
-    # argparse is part of the standard libary since python 2.7/3.2
-    sed -i '/argparse==1.4.0/d' setup.py
-
-    substituteInPlace setup.py \
-      --replace "click==7.1.2" "click" \
-      --replace "pyscard==2.0.0" "pyscard"
-  '';
-
   propagatedBuildInputs = [
-    enum-compat
     click
     pyscard
     pycountry
@@ -36,9 +34,21 @@ buildPythonPackage rec {
     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"
+  '';
+
+  pythonImportsCheck = [
+    "emv"
+  ];
+
   meta = with lib; {
-    homepage = "https://github.com/russss/python-emv";
     description = "Implementation of the EMV chip-and-pin smartcard protocol";
+    homepage = "https://github.com/russss/python-emv";
     license = licenses.mit;
     maintainers = with maintainers; [ lukegb ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/entry-points-txt/default.nix b/nixpkgs/pkgs/development/python-modules/entry-points-txt/default.nix
new file mode 100644
index 000000000000..d52e9ea0d3be
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/entry-points-txt/default.nix
@@ -0,0 +1,22 @@
+{ lib
+, buildPythonPackage
+, fetchurl
+}:
+
+buildPythonPackage rec {
+  pname = "entry-points-txt";
+  version = "0.1.0";
+  format = "wheel";
+
+  src = fetchurl {
+    url = "https://github.com/jwodder/entry-points-txt/releases/download/v0.1.0/entry_points_txt-0.1.0-py3-none-any.whl";
+    sha256 = "29773bed3d9d337766a394e19d6f7ab0be3ed7d6f3ebb753ff0f7f48f056aa8e";
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/jwodder/entry-points-txt";
+    description = "Read & write entry_points.txt files";
+    license = with licenses; [ mit ];
+    maintainers = with lib.maintainers; [ ayazhafiz ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/enturclient/default.nix b/nixpkgs/pkgs/development/python-modules/enturclient/default.nix
index f98b38396efc..07363a379b1f 100644
--- a/nixpkgs/pkgs/development/python-modules/enturclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/enturclient/default.nix
@@ -11,6 +11,7 @@ buildPythonPackage rec {
   pname = "enturclient";
   version = "0.2.2";
   disabled = pythonOlder "3.8";
+
   format = "pyproject";
 
   src = fetchFromGitHub {
@@ -29,10 +30,17 @@ buildPythonPackage rec {
     async-timeout
   ];
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'async_timeout = "^3.0.1"' 'async_timeout = ">=3.0.1"'
+  '';
+
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "enturclient" ];
+  pythonImportsCheck = [
+    "enturclient"
+  ];
 
   meta = with lib; {
     description = "Python library for interacting with the Entur.org API";
diff --git a/nixpkgs/pkgs/development/python-modules/env-canada/default.nix b/nixpkgs/pkgs/development/python-modules/env-canada/default.nix
index ee815e53f010..f755d545598c 100644
--- a/nixpkgs/pkgs/development/python-modules/env-canada/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/env-canada/default.nix
@@ -8,18 +8,22 @@
 , pillow
 , pytestCheckHook
 , python-dateutil
+, pythonOlder
 , voluptuous
 }:
 
 buildPythonPackage rec {
   pname = "env-canada";
-  version = "0.5.14";
+  version = "0.5.18";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "michaeldavie";
     repo = "env_canada";
     rev = "v${version}";
-    sha256 = "06v9ifpgdfx5v8k8jwqd4y985p27s1wxl7908v3aqxv7203acn7w";
+    sha256 = "1w2fclpmcb41k2a3226jk62hdclc8b18kxih2ads90r4yxgpxc8p";
   };
 
   propagatedBuildInputs = [
@@ -49,7 +53,9 @@ buildPythonPackage rec {
     "test_ecradar"
   ];
 
-  pythonImportsCheck = [ "env_canada" ];
+  pythonImportsCheck = [
+    "env_canada"
+  ];
 
   meta = with lib; {
     description = "Python library to get Environment Canada weather data";
diff --git a/nixpkgs/pkgs/development/python-modules/environs/default.nix b/nixpkgs/pkgs/development/python-modules/environs/default.nix
index bc63d577a7ef..04bb5dda00ea 100644
--- a/nixpkgs/pkgs/development/python-modules/environs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/environs/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "environs";
-  version = "9.3.4";
+  version = "9.3.5";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "sloria";
     repo = pname;
     rev = version;
-    sha256 = "0n0l9jici2d1pck5pf1c96jj3lhw91jki9nsgxzpikvpyvsw7wga";
+    sha256 = "sha256-4jyqdA/xoIEsfouIneGs3A9++sNG2kRUhDzteN0Td6w=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/envisage/default.nix b/nixpkgs/pkgs/development/python-modules/envisage/default.nix
index 20051804328b..b8513fd1d9ae 100644
--- a/nixpkgs/pkgs/development/python-modules/envisage/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/envisage/default.nix
@@ -1,7 +1,12 @@
-{ lib, fetchPypi, isPy27
+{ lib
+, fetchPypi
+, isPy27
 , buildPythonPackage
-, traits, apptools, pytestCheckHook
-, ipykernel, ipython, setuptools
+, traits
+, apptools
+, pytestCheckHook
+, ipython
+, setuptools
 }:
 
 buildPythonPackage rec {
@@ -15,6 +20,8 @@ buildPythonPackage rec {
     sha256 = "8864c29aa344f7ac26eeb94788798f2d0cc791dcf95c632da8d79ebc580e114c";
   };
 
+  # for the optional dependency ipykernel, only versions < 6 are
+  # supported, so it's not included in the tests, and not propagated
   propagatedBuildInputs = [ traits apptools setuptools ];
 
   preCheck = ''
@@ -22,7 +29,8 @@ buildPythonPackage rec {
   '';
 
   checkInputs = [
-    ipykernel ipython pytestCheckHook
+    ipython
+    pytestCheckHook
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/envoy-reader/default.nix b/nixpkgs/pkgs/development/python-modules/envoy-reader/default.nix
index 0f2ca79d6411..a327c3f457d2 100644
--- a/nixpkgs/pkgs/development/python-modules/envoy-reader/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/envoy-reader/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , envoy-utils
 , fetchFromGitHub
+, fetchpatch
 , httpx
 , pytest-asyncio
 , pytest-raises
@@ -12,6 +13,7 @@
 buildPythonPackage rec {
   pname = "envoy-reader";
   version = "0.20.0";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "jesserizzo";
@@ -37,7 +39,18 @@ buildPythonPackage rec {
       --replace "pytest-runner>=5.2" ""
   '';
 
-  pythonImportsCheck = [ "envoy_reader" ];
+  patches = [
+    # Support for later httpx, https://github.com/jesserizzo/envoy_reader/pull/82
+    (fetchpatch {
+      name = "support-later-httpx.patch";
+      url = "https://github.com/jesserizzo/envoy_reader/commit/6019a89419fe9c830ba839be7d39ec54725268b0.patch";
+      sha256 = "17vsrx13rskvh8swvjisb2dk6x1jdbjcm8ikkpidia35pa24h272";
+    })
+  ];
+
+  pythonImportsCheck = [
+    "envoy_reader"
+  ];
 
   meta = with lib; {
     description = "Python module to read from Enphase Envoy units";
diff --git a/nixpkgs/pkgs/development/python-modules/ephem/default.nix b/nixpkgs/pkgs/development/python-modules/ephem/default.nix
index 4a8085e0d72b..1e5db008dea9 100644
--- a/nixpkgs/pkgs/development/python-modules/ephem/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ephem/default.nix
@@ -1,18 +1,18 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, isPy3k
 , glibcLocales
 , pytest
 }:
 
 buildPythonPackage rec {
   pname = "ephem";
-  version = "4.1";
+  version = "4.1.1";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c076794a511a34b5b91871c1cf6374dbc323ec69fca3f50eb718f20b171259d6";
+    sha256 = "sha256-26ngXHjOkQrnWgY1GlWSR5GRqNxXCsDNbRinfpgTiHM=";
   };
 
   checkInputs = [
@@ -25,7 +25,9 @@ buildPythonPackage rec {
     LC_ALL="en_US.UTF-8" pytest --pyargs ephem.tests -k "not JPLTest"
   '';
 
-  pythonImportsCheck = [ "ephem" ];
+  pythonImportsCheck = [
+    "ephem"
+  ];
 
   meta = with lib; {
     description = "Compute positions of the planets and stars";
diff --git a/nixpkgs/pkgs/development/python-modules/esprima/default.nix b/nixpkgs/pkgs/development/python-modules/esprima/default.nix
new file mode 100644
index 000000000000..b32a098c12bc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/esprima/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "esprima";
+  version = "4.0.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "Kronuz";
+    repo = "esprima-python";
+    rev = "v${version}";
+    sha256 = "WtkPCReXhxyr6pOzE9gsdIeBlLk+nSnbxkS3OowEaHo=";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "test/__main__.py::TestEsprima"
+  ];
+
+  pythonImportsCheck = [
+    "esprima"
+  ];
+
+  meta = with lib; {
+    description = "Python parser for standard-compliant ECMAScript";
+    homepage = "https://github.com/Kronuz/esprima-python";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/etcd/default.nix b/nixpkgs/pkgs/development/python-modules/etcd/default.nix
index 0c2fd0c2952d..a2c4dc971cbc 100644
--- a/nixpkgs/pkgs/development/python-modules/etcd/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/etcd/default.nix
@@ -1,6 +1,6 @@
 { lib
 , buildPythonPackage
-, fetchurl
+, fetchFromGitHub
 , simplejson
 , pytz
 , requests
@@ -11,9 +11,11 @@ buildPythonPackage rec {
   version = "2.0.8";
 
   # PyPI package is incomplete
-  src = fetchurl {
-    url = "https://github.com/dsoprea/PythonEtcdClient/archive/${version}.tar.gz";
-    sha256 = "0fi6rxa1yxvz7nwrc7dw6fax3041d6bj3iyhywjgbkg7nadi9i8v";
+  src = fetchFromGitHub {
+    owner = "dsoprea";
+    repo = "PythonEtcdClient";
+    rev = version;
+    sha256 = "sha256-h+jYIRSNdrGkW3tBV1ifIDEXU46EQGyeJoz/Mxym4pI=";
   };
 
   patchPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/etelemetry/default.nix b/nixpkgs/pkgs/development/python-modules/etelemetry/default.nix
index 869c6ccba92c..ed093f182e32 100644
--- a/nixpkgs/pkgs/development/python-modules/etelemetry/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/etelemetry/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27, ci-info, ci-py, requests, pytest }:
+{ lib, buildPythonPackage, fetchPypi, isPy27, ci-info, ci-py, requests }:
 
 buildPythonPackage rec {
   version = "0.2.1";
diff --git a/nixpkgs/pkgs/development/python-modules/eth-hash/default.nix b/nixpkgs/pkgs/development/python-modules/eth-hash/default.nix
index 618c39f3b734..622dd0b37353 100644
--- a/nixpkgs/pkgs/development/python-modules/eth-hash/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/eth-hash/default.nix
@@ -1,6 +1,5 @@
 { lib, fetchPypi, buildPythonPackage, pythonOlder, pytest, pysha3, pycrypto
 , pycryptodome
-, eth-utils
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/eventlet/default.nix b/nixpkgs/pkgs/development/python-modules/eventlet/default.nix
index 92ff2cdacaf6..038b66a8efed 100644
--- a/nixpkgs/pkgs/development/python-modules/eventlet/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/eventlet/default.nix
@@ -15,11 +15,11 @@
 
 buildPythonPackage rec {
   pname = "eventlet";
-  version = "0.32.0";
+  version = "0.33.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2f0bb8ed0dc0ab21d683975d5d8ab3c054d588ce61def9faf7a465ee363e839b";
+    sha256 = "80144f489c1bb273a51b6f96ff9785a382d2866b9bab1f5bd748385019f4141f";
   };
 
   propagatedBuildInputs = [ dnspython greenlet pyopenssl six ]
@@ -29,7 +29,7 @@ buildPythonPackage rec {
 
   doCheck = !stdenv.isDarwin;
 
-  preCheck = ''
+  preCheck = lib.optionalString doCheck ''
     echo "nameserver 127.0.0.1" > resolv.conf
     export NIX_REDIRECTS=/etc/protocols=${iana-etc}/etc/protocols:/etc/resolv.conf=$(realpath resolv.conf)
     export LD_PRELOAD=${libredirect}/lib/libredirect.so
@@ -40,7 +40,9 @@ buildPythonPackage rec {
   checkPhase = ''
     runHook preCheck
 
-    nosetests --exclude test_getaddrinfo --exclude test_hosts_no_network
+    # test_fork-after_monkey_patch fails on aarch64 on hydra only
+    #   AssertionError: Expected single line "pass" in stdout
+    nosetests --exclude test_getaddrinfo --exclude test_hosts_no_network --exclude test_fork_after_monkey_patch
 
     runHook postCheck
   '';
diff --git a/nixpkgs/pkgs/development/python-modules/eventlib/default.nix b/nixpkgs/pkgs/development/python-modules/eventlib/default.nix
deleted file mode 100644
index 4d4bff85842a..000000000000
--- a/nixpkgs/pkgs/development/python-modules/eventlib/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib
-, buildPythonPackage
-, isPy3k
-, fetchdarcs
-, greenlet
-}:
-
-buildPythonPackage rec {
-  pname = "python-eventlib";
-  version = "0.2.4";
-  # Judging from SyntaxError
-  disabled = isPy3k;
-
-  src = fetchdarcs {
-    url = "http://devel.ag-projects.com/repositories/${pname}";
-    rev = "release-${version}";
-    sha256 = "1w1axsm6w9bl2smzxmyk4in1lsm8gk8ma6y183m83cpj66aqxg4z";
-  };
-
-  propagatedBuildInputs = [ greenlet ];
-
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Eventlib bindings for python";
-    homepage    = "https://ag-projects.com/";
-    license     = licenses.lgpl2;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/exchangelib/default.nix b/nixpkgs/pkgs/development/python-modules/exchangelib/default.nix
index 686a167d74bf..6ab7495fcb30 100644
--- a/nixpkgs/pkgs/development/python-modules/exchangelib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/exchangelib/default.nix
@@ -27,14 +27,16 @@
 
 buildPythonPackage rec {
   pname = "exchangelib";
-  version = "4.5.2";
+  version = "4.6.2";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "ecederstrand";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1zz4p13ww9y5x0ifvcj652hgfbjqbnmr3snwrs0p315sc3y47ggm";
+    sha256 = "1vax4xqjav6nr3kfkz390ism3cs69dxnbx6sc0f9ci4mn3rxjwdy";
   };
 
   propagatedBuildInputs = [
@@ -66,7 +68,9 @@ buildPythonPackage rec {
     requests-mock
   ];
 
-  pythonImportsCheck = [ "exchangelib" ];
+  pythonImportsCheck = [
+    "exchangelib"
+  ];
 
   meta = with lib; {
     description = "Client for Microsoft Exchange Web Services (EWS)";
diff --git a/nixpkgs/pkgs/development/python-modules/exchangelib/skip_failing_test.patch b/nixpkgs/pkgs/development/python-modules/exchangelib/skip_failing_test.patch
deleted file mode 100644
index 6c070acaf75a..000000000000
--- a/nixpkgs/pkgs/development/python-modules/exchangelib/skip_failing_test.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- ./tests/__init__.py	1980-01-02 00:00:00.000000000 +0000
-+++ ./tests/__init__.py	1980-01-02 00:00:00.000000000 +0000
-@@ -301,6 +301,7 @@
-             self.assertEqual(id(base_p.thread_pool), id(p.thread_pool))
-             self.assertEqual(id(base_p._session_pool), id(p._session_pool))
- 
-+    @unittest.skip("no network connection inside the Nix sandbox")
-     def test_close(self):
-         proc = psutil.Process()
-         ip_addresses = {info[4][0] for info in socket.getaddrinfo(
-@@ -1257,6 +1258,7 @@
-         )
- 
- 
-+@unittest.skip("no network connection inside the Nix sandbox")
- class EWSTest(unittest.TestCase):
-     @classmethod
-     def setUpClass(cls):
diff --git a/nixpkgs/pkgs/development/python-modules/executing/default.nix b/nixpkgs/pkgs/development/python-modules/executing/default.nix
index 8ab6994ac415..1a6664df6712 100644
--- a/nixpkgs/pkgs/development/python-modules/executing/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/executing/default.nix
@@ -1,19 +1,20 @@
 { lib
+, asttokens
 , buildPythonPackage
 , fetchFromGitHub
 , setuptools-scm
-, asttokens
 }:
 
 buildPythonPackage rec {
   pname = "executing";
-  version = "0.5.4";
+  version = "0.8.2";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "alexmojaki";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1hqx94h6l2wg9sljiaajfay2nr62sqa819w3bxrz8cdki1abdygv";
+    sha256 = "sha256-CDZQ9DONn7M+2/GtmM2G6nQPpI9dOd0ca+2F1PGRwO4=";
   };
 
   nativeBuildInputs = [
@@ -26,7 +27,13 @@ buildPythonPackage rec {
 
   # Tests appear to run fine (Ran 22 tests in 4.076s) with setuptoolsCheckPhase
   # but crash with pytestCheckHook
-  checkInputs = [ asttokens ];
+  checkInputs = [
+    asttokens
+  ];
+
+  pythonImportsCheck = [
+    "executing"
+  ];
 
   meta = with lib; {
     description = "Get information about what a frame is currently doing, particularly the AST node being executed";
diff --git a/nixpkgs/pkgs/development/python-modules/explorerscript/default.nix b/nixpkgs/pkgs/development/python-modules/explorerscript/default.nix
index b0f1a16fe421..a77c31e26a63 100644
--- a/nixpkgs/pkgs/development/python-modules/explorerscript/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/explorerscript/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchFromGitHub, antlr4-python3-runtime, pygments, python-igraph }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, fetchpatch
+, antlr4-python3-runtime
+, igraph
+, pygments
+}:
 
 buildPythonPackage rec {
   pname = "explorerscript";
@@ -11,7 +18,15 @@ buildPythonPackage rec {
     sha256 = "1vzyliiyrxx8l9sfbqcyr4xn5swd7znkxy69kn0vb5rban8hm9c1";
   };
 
-  propagatedBuildInputs = [ antlr4-python3-runtime python-igraph ];
+  patches = [
+    # https://github.com/SkyTemple/ExplorerScript/pull/17
+    (fetchpatch {
+      url = "https://github.com/SkyTemple/ExplorerScript/commit/47d8b3d246881d675a82b4049b87ed7d9a0e1b15.patch";
+      sha256 = "0sadw9l2nypl2s8lw526lvbdj4rzqdvrjncx4zxxgyp3x47csb48";
+    })
+  ];
+
+  propagatedBuildInputs = [ antlr4-python3-runtime igraph ];
   checkInputs = [ pygments ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/extractcode/default.nix b/nixpkgs/pkgs/development/python-modules/extractcode/default.nix
index c4f6ecc537bc..93374bd004c9 100644
--- a/nixpkgs/pkgs/development/python-modules/extractcode/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/extractcode/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "extractcode";
-  version = "21.7.23";
+  version = "30.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "58aa16d60cfcbd3695d7ea84a1e30d5ba9fa6f614b2ef4a6d0565b2ac5d4f757";
+    sha256 = "5a660d1b9e3bae4aa87828e6947dc3b31dc2fa6705acb28a514874602b40bc90";
   };
 
   dontConfigure = true;
diff --git a/nixpkgs/pkgs/development/python-modules/extractcode/libarchive.nix b/nixpkgs/pkgs/development/python-modules/extractcode/libarchive.nix
index 2cff60f3d811..efb314fa4c5b 100644
--- a/nixpkgs/pkgs/development/python-modules/extractcode/libarchive.nix
+++ b/nixpkgs/pkgs/development/python-modules/extractcode/libarchive.nix
@@ -10,7 +10,6 @@
 , zlib
 , zstd
 , plugincode
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/factory_boy/default.nix b/nixpkgs/pkgs/development/python-modules/factory_boy/default.nix
index 845e27dcc447..1c612e2b57ec 100644
--- a/nixpkgs/pkgs/development/python-modules/factory_boy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/factory_boy/default.nix
@@ -11,15 +11,19 @@
 }:
 
 buildPythonPackage rec {
-  pname = "factory_boy";
-  version = "3.2.0";
+  pname = "factory-boy";
+  version = "3.2.1";
+  format = "setuptools";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "0nsw2mdjk8sqds3qsix4cf19ws6i0fak79349pw2581ryc7w0720";
+    pname = "factory_boy";
+    inherit version;
+    sha256 = "sha256-qY0newwEfHXrbkq4UIp/gfsD0sshmG9ieRNUbveipV4=";
   };
 
-  propagatedBuildInputs = [ faker ];
+  propagatedBuildInputs = [
+    faker
+  ];
 
   checkInputs = [
     django
@@ -31,8 +35,13 @@ buildPythonPackage rec {
   ];
 
   # Checks for MongoDB requires an a running DB
-  disabledTests = [ "MongoEngineTestCase" ];
-  pythonImportsCheck = [ "factory" ];
+  disabledTests = [
+    "MongoEngineTestCase"
+  ];
+
+  pythonImportsCheck = [
+    "factory"
+  ];
 
   meta = with lib; {
     description = "Python package to create factories for complex objects";
diff --git a/nixpkgs/pkgs/development/python-modules/faker/default.nix b/nixpkgs/pkgs/development/python-modules/faker/default.nix
index ae47989141e9..f363b6bb6f66 100644
--- a/nixpkgs/pkgs/development/python-modules/faker/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/faker/default.nix
@@ -1,23 +1,23 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python-dateutil
-, text-unidecode
 , freezegun
+, pillow
 , pytestCheckHook
+, python-dateutil
+, text-unidecode
 , ukpostcodeparser
-, pillow
 , validators
 }:
 
 buildPythonPackage rec {
   pname = "faker";
-  version = "8.8.2";
+  version = "9.3.1";
 
   src = fetchPypi {
     pname = "Faker";
     inherit version;
-    sha256 = "sha256-IlNMOqbS7584QDojTcm3G1y4ePt2XHKZS+Xce06vCGU=";
+    hash = "sha256-zdnpry+6XJbuLsSshBm7pFjia1iiuYwfZGfuZglr7lI=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/fakeredis/default.nix b/nixpkgs/pkgs/development/python-modules/fakeredis/default.nix
index 919c5a1aebd9..eff55de1d90e 100644
--- a/nixpkgs/pkgs/development/python-modules/fakeredis/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fakeredis/default.nix
@@ -16,12 +16,14 @@
 
 buildPythonPackage rec {
   pname = "fakeredis";
-  version = "1.6.1";
+  version = "1.7.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-DQapOE+3nanyFkzpbjTrnU4upGIVBwgF6m/TwXRZC0c=";
+    sha256 = "sha256-yb0S5DAzbL0+GJ+uDpHrmZl7k+dtv91u1n+jUtxoTHE=";
   };
 
   propagatedBuildInputs = [
@@ -45,7 +47,9 @@ buildPythonPackage rec {
     "test/test_aioredis2.py"
   ];
 
-  pythonImportsCheck = [ "fakeredis" ];
+  pythonImportsCheck = [
+    "fakeredis"
+  ];
 
   meta = with lib; {
     description = "Fake implementation of Redis API";
diff --git a/nixpkgs/pkgs/development/python-modules/falcon/default.nix b/nixpkgs/pkgs/development/python-modules/falcon/default.nix
index eb6cbfa242e1..5dba22d83912 100644
--- a/nixpkgs/pkgs/development/python-modules/falcon/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/falcon/default.nix
@@ -1,28 +1,71 @@
 { lib
 , buildPythonPackage
+, pythonOlder
 , fetchPypi
-, coverage
+, pytestCheckHook
+, aiofiles
+, cbor2
 , ddt
+, gunicorn
+, httpx
+, hypercorn
+, jsonschema
+, msgpack
+, mujson
 , nose
+, orjson
+, pecan
+, pytest-asyncio
+, python-mimeparse
 , pyyaml
+, rapidjson
 , requests
 , testtools
+, ujson
+, uvicorn
+, websockets
 }:
 
 buildPythonPackage rec {
   pname = "falcon";
-  version = "2.0.0";
+  version = "3.0.1";
+  format = "pyproject";
+  disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "eea593cf466b9c126ce667f6d30503624ef24459f118c75594a69353b6c3d5fc";
+    sha256 = "sha256-xB2E2zJYgahw6LcSnV7P2XL6QyPPd7cRmh0qIZZu5oE=";
   };
 
-  checkInputs = [coverage ddt nose pyyaml requests testtools];
+  checkInputs = [
+    aiofiles
+    cbor2
+    ddt
+    gunicorn
+    httpx
+    hypercorn
+    jsonschema
+    msgpack
+    mujson
+    nose
+    orjson
+    pecan
+    pytest-asyncio
+    pytestCheckHook
+    python-mimeparse
+    pyyaml
+    rapidjson
+    requests
+    testtools
+    ujson
+    uvicorn
+    websockets
+  ];
 
-  # The travis build fails since the migration from multiprocessing to threading for hosting the API under test.
-  # OSError: [Errno 98] Address already in use
-  doCheck = false;
+  disabledTestPaths = [
+    # missing optional nuts package
+    "falcon/bench/nuts/nuts/tests/test_functional.py"
+  ];
 
   meta = with lib; {
     description = "An unladen web framework for building APIs and app backends";
diff --git a/nixpkgs/pkgs/development/python-modules/faraday-agent-parameters-types/default.nix b/nixpkgs/pkgs/development/python-modules/faraday-agent-parameters-types/default.nix
index ba0e120442cc..544cb93bca44 100644
--- a/nixpkgs/pkgs/development/python-modules/faraday-agent-parameters-types/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/faraday-agent-parameters-types/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "faraday-agent-parameters-types";
-  version = "1.0.1";
+  version = "1.0.3";
 
   src = fetchPypi {
     pname = "faraday_agent_parameters_types";
     inherit version;
-    sha256 = "0q2cngxgkvl74mhkibvdsvjjrdfd7flxd6a4776wmxkkn0brzw66";
+    sha256 = "6155669db477c3330c0850814eabe231bbbadf9d2ec57b4f734994f76eaee0e7";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/faraday-plugins/default.nix b/nixpkgs/pkgs/development/python-modules/faraday-plugins/default.nix
index 3b6b42a7678e..ebef907f91f5 100644
--- a/nixpkgs/pkgs/development/python-modules/faraday-plugins/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/faraday-plugins/default.nix
@@ -16,13 +16,14 @@
 
 buildPythonPackage rec {
   pname = "faraday-plugins";
-  version = "1.5.3";
+  version = "1.5.9";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "infobyte";
     repo = "faraday_plugins";
     rev = "v${version}";
-    sha256 = "0nyywpsyw7akwdah75s9mz5nz11y1hbynp08pvqifwdw49crih02";
+    sha256 = "sha256-rU7BF1lXLgJYLed5FVKXroivxKpmmNE5woGCpAcKAwg=";
   };
 
   propagatedBuildInputs = [
@@ -53,7 +54,9 @@ buildPythonPackage rec {
     "test_process_report_summary"
   ];
 
-  pythonImportsCheck = [ "faraday_plugins" ];
+  pythonImportsCheck = [
+    "faraday_plugins"
+  ];
 
   meta = with lib; {
     description = "Security tools report parsers for Faraday";
diff --git a/nixpkgs/pkgs/development/python-modules/fastapi/default.nix b/nixpkgs/pkgs/development/python-modules/fastapi/default.nix
index 85594a2c4c22..f0f10a88c7dd 100644
--- a/nixpkgs/pkgs/development/python-modules/fastapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fastapi/default.nix
@@ -14,25 +14,23 @@
 , python-jose
 , sqlalchemy
 , trio
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "fastapi";
-  version = "0.70.0";
+  version = "0.70.1";
   format = "flit";
 
+  disabled = pythonOlder "3.6";
+
   src = fetchFromGitHub {
     owner = "tiangolo";
-    repo = "fastapi";
+    repo = pname;
     rev = version;
-    sha256 = "sha256-mLI+w9PeewnwUMuUnXj6J2r/3shinjlwXMnhNcQlhrM=";
+    sha256 = "sha256-iwjxcAe8h38PPTTDGCxIJSB7zCS0FA0gOcKUjPpk3yg=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace "starlette ==" "starlette >="
-  '';
-
   propagatedBuildInputs = [
     starlette
     pydantic
@@ -52,16 +50,22 @@ buildPythonPackage rec {
     trio
   ];
 
-  # disabled tests require orjson which requires rust nightly
-
-  # ignoring deprecation warnings to avoid test failure from
-  # tests/test_tutorial/test_testing/test_tutorial001.py
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "starlette ==" "starlette >="
+  '';
 
   pytestFlagsArray = [
-    "--ignore=tests/test_default_response_class.py"
+    # ignoring deprecation warnings to avoid test failure from
+    # tests/test_tutorial/test_testing/test_tutorial001.py
     "-W ignore::DeprecationWarning"
   ];
 
+  disabledTestPaths = [
+    # Disabled tests require orjson which requires rust nightly
+    "tests/test_default_response_class.py"
+  ];
+
   disabledTests = [
     "test_get_custom_response"
 
@@ -70,9 +74,13 @@ buildPythonPackage rec {
     "test_websocket_no_credentials"
   ];
 
+  pythonImportsCheck = [
+    "fastapi"
+  ];
+
   meta = with lib; {
+    description = "Web framework for building APIs";
     homepage = "https://github.com/tiangolo/fastapi";
-    description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production";
     license = licenses.mit;
     maintainers = with maintainers; [ wd15 ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/fastcore/default.nix b/nixpkgs/pkgs/development/python-modules/fastcore/default.nix
new file mode 100644
index 000000000000..4783b8d33c78
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fastcore/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, packaging
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "fastcore";
+  version = "1.3.27";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "fastai";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-ogCNDh18FHP9KY0q0BIbsjPH5vGGioGh4FFUUb3c3Jc=";
+  };
+
+  propagatedBuildInputs = [
+    packaging
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "fastcore"
+  ];
+
+  meta = with lib; {
+    description = "Python module for Fast AI";
+    homepage = "https://github.com/fastai/fastcore";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fastecdsa/default.nix b/nixpkgs/pkgs/development/python-modules/fastecdsa/default.nix
index 8d104a889a01..e305f1e6d658 100644
--- a/nixpkgs/pkgs/development/python-modules/fastecdsa/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fastecdsa/default.nix
@@ -7,21 +7,22 @@
 
 buildPythonPackage rec {
   pname = "fastecdsa";
-  version = "2.2.1";
+  version = "2.2.3";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "48d59fcd18d0892a6b76463d4c98caa217975414f6d853af7cfcbbb0284cb52d";
+    sha256 = "269bdb0f618b38f8f6aec9d23d23db518046c3cee01a954fa6aa7322a1a7db8f";
   };
 
   buildInputs = [ gmp ];
 
   checkInputs = [ pytestCheckHook ];
 
-  # skip tests which require being online to download test vectors
-  pytestFlags = [
-     "--ignore=fastecdsa/tests/test_wycheproof_vectors.py"
-     "--ignore=fastecdsa/tests/test_rfc6979_ecdsa.py"
+  disabledTestPaths = [
+    # skip tests which require being online to download test vectors
+    "fastecdsa/tests/test_wycheproof_vectors.py"
+    "fastecdsa/tests/test_rfc6979_ecdsa.py"
   ];
 
   # skip tests for now, they fail with
diff --git a/nixpkgs/pkgs/development/python-modules/fastnumbers/default.nix b/nixpkgs/pkgs/development/python-modules/fastnumbers/default.nix
new file mode 100644
index 000000000000..12c3175424d3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fastnumbers/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildPythonPackage
+, fastnumbers
+, fetchFromGitHub
+, hypothesis
+, pytestCheckHook
+, pythonOlder
+, typing-extensions
+}:
+
+buildPythonPackage rec {
+  pname = "fastnumbers";
+  version = "3.2.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "SethMMorton";
+    repo = pname;
+    rev = version;
+    sha256 = "1v9l5p90y6ygrs0qmgdzxfv2vp1mpfp65snkl9jp6kcy44g3alhp";
+  };
+
+  propagatedBuildInputs = [
+    typing-extensions
+  ];
+
+  checkInputs = [
+    hypothesis
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "fastnumbers"
+  ];
+
+  meta = with lib; {
+    description = "Python module for number conversion";
+    homepage = "https://github.com/SethMMorton/fastnumbers";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fastpbkdf2/default.nix b/nixpkgs/pkgs/development/python-modules/fastpbkdf2/default.nix
index e154471d7a88..51669f90345d 100644
--- a/nixpkgs/pkgs/development/python-modules/fastpbkdf2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fastpbkdf2/default.nix
@@ -16,6 +16,7 @@ buildPythonPackage rec {
   buildInputs = [ openssl ];
   checkInputs = [ pytest ];
   propagatedBuildInputs = [ cffi six ];
+  propagatedNativeBuildInputs = [ cffi ];
 
   meta = with lib; {
     homepage = "https://github.com/Ayrx/python-fastpbkdf2";
diff --git a/nixpkgs/pkgs/development/python-modules/fastprogress/default.nix b/nixpkgs/pkgs/development/python-modules/fastprogress/default.nix
index 9b43c05989f6..2164bc93f622 100644
--- a/nixpkgs/pkgs/development/python-modules/fastprogress/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fastprogress/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , numpy
-, pytest
 , pythonOlder
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/fastrlock/default.nix b/nixpkgs/pkgs/development/python-modules/fastrlock/default.nix
index 3ad45be5322f..065150e88e2f 100644
--- a/nixpkgs/pkgs/development/python-modules/fastrlock/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fastrlock/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "fastrlock";
-  version = "0.6";
+  version = "0.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9f5d6ec9fe130b7490bb04572134392420b72bd0842185e02d461a797d6bc749";
+    sha256 = "9cc100ed0924b32173d7de705a82fdf1257cdf60af1952a13f64759307b40931";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/fasttext/default.nix b/nixpkgs/pkgs/development/python-modules/fasttext/default.nix
index e478b3f9a4b6..c360c364d8b9 100644
--- a/nixpkgs/pkgs/development/python-modules/fasttext/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fasttext/default.nix
@@ -1,4 +1,4 @@
-{lib, buildPythonPackage, fetchFromGitHub, numpy, pkgs, pybind11 }:
+{lib, buildPythonPackage, numpy, pkgs, pybind11 }:
 
 buildPythonPackage rec {
   inherit (pkgs.fasttext) pname version src;
diff --git a/nixpkgs/pkgs/development/python-modules/faulthandler/default.nix b/nixpkgs/pkgs/development/python-modules/faulthandler/default.nix
deleted file mode 100644
index f1588690a774..000000000000
--- a/nixpkgs/pkgs/development/python-modules/faulthandler/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib, fetchPypi, buildPythonPackage }:
-
-buildPythonPackage rec {
-  pname = "faulthandler";
-  version = "3.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "08ybjjdrfp01syckksxzivqhn6b0yhmc17kdxh77h0lg6rvgvk8y";
-  };
-
-  # This may be papering over a real failure where the env var activation route
-  # for faulthandler does not appear to work. That said, since all other tests
-  # pass and since this module is python 2 only (it was upstreamed into the
-  # interpreter itself as of python 3.3 and is disabled ) this just disables the
-  # test to fix the build. From inspecting Hydra logs and git bisect, the commit
-  # that broke it is this one:
-  # https://github.com/NixOS/nixpkgs/commit/90be4c2c7875c9487508d95b5c638d97e2903ada
-  patches = [ ./disable-env-test.patch ];
-
-  meta = with lib; {
-    description = "Dump the Python traceback";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ sauyon ];
-    homepage = "https://faulthandler.readthedocs.io/";
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/fdint/default.nix b/nixpkgs/pkgs/development/python-modules/fdint/default.nix
deleted file mode 100644
index 413416c99a25..000000000000
--- a/nixpkgs/pkgs/development/python-modules/fdint/default.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cython
-, numpy
-, python
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  version = "2.0.2";
-  pname = "fdint";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "30db139684d362652670e2cd3206b5dd7b3b93b86c3aff37f4b4fd4a3f98aead";
-  };
-
-  buildInputs = [ cython ];
-  propagatedBuildInputs = [ numpy ];
-
-  # tests not included with pypi release
-  doCheck = false;
-
-  checkPhase = ''
-    ${python.interpreter} -m fdint.tests
-  '';
-
-  meta = with lib; {
-    homepage = "https://github.com/scott-maddox/fdint";
-    description = "A free, open-source python package for quickly and precisely approximating Fermi-Dirac integrals";
-    license = licenses.mit;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/fe25519/default.nix b/nixpkgs/pkgs/development/python-modules/fe25519/default.nix
index 193d7aa60dec..05afcff5627c 100644
--- a/nixpkgs/pkgs/development/python-modules/fe25519/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fe25519/default.nix
@@ -10,11 +10,12 @@
 
 buildPythonPackage rec {
   pname = "fe25519";
-  version = "1.0.0";
+  version = "1.1.0";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-947DIkmg56mAegEgLKq8iqETWf2SCvtmeDZi5cxVSJA=";
+    sha256 = "sha256-3WFpbt4bA7zPlK+mp5DJXdgk44MBimCbpIMhRjZ5p0o=";
   };
 
   propagatedBuildInputs = [
@@ -28,7 +29,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "fe25519" ];
+  pythonImportsCheck = [
+    "fe25519"
+  ];
 
   meta = with lib; {
     description = "Python field operations for Curve25519's prime";
diff --git a/nixpkgs/pkgs/development/python-modules/feedparser/5.nix b/nixpkgs/pkgs/development/python-modules/feedparser/5.nix
deleted file mode 100644
index 58cdad9884e9..000000000000
--- a/nixpkgs/pkgs/development/python-modules/feedparser/5.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-}:
-
-buildPythonPackage rec {
-  pname = "feedparser";
-  version = "5.2.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1ycva69bqssalhqg45rbrfipz3l6hmycszy26k0351fhq990c0xx";
-  };
-
-  # lots of networking failures
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://github.com/kurtmckee/feedparser";
-    description = "Universal feed parser";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ domenkozar ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/ffmpeg-progress-yield/default.nix b/nixpkgs/pkgs/development/python-modules/ffmpeg-progress-yield/default.nix
index 4b4d6bdd7fc2..add6f3f90c56 100644
--- a/nixpkgs/pkgs/development/python-modules/ffmpeg-progress-yield/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ffmpeg-progress-yield/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "ffmpeg-progress-yield";
-  version = "0.1.2";
+  version = "0.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "92ae36ff5cf38428bd3695629b5065d161c658fb0de0faf2c20cd7a99dac3820";
+    sha256 = "26696726cc70c019d1b76bb25e4823c93f0837ddc86bc4ea26c08165270b4d92";
   };
 
   propagatedBuildInputs = [ colorama tqdm ];
diff --git a/nixpkgs/pkgs/development/python-modules/fido2/default.nix b/nixpkgs/pkgs/development/python-modules/fido2/default.nix
index f656e260867a..e550fe89ec78 100644
--- a/nixpkgs/pkgs/development/python-modules/fido2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fido2/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "fido2";
-  version = "0.9.2";
+  version = "0.9.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f491c47bb2d74fa157f9d127a1cbb2753a15939a21e78ba8b0bd323d7d101c61";
+    sha256 = "b45e89a6109cfcb7f1bb513776aa2d6408e95c4822f83a253918b944083466ec";
   };
 
   propagatedBuildInputs = [ six cryptography ];
diff --git a/nixpkgs/pkgs/development/python-modules/fields/default.nix b/nixpkgs/pkgs/development/python-modules/fields/default.nix
new file mode 100644
index 000000000000..35bf686b4353
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/fields/default.nix
@@ -0,0 +1,20 @@
+{ buildPythonPackage, lib, fetchPypi }:
+
+buildPythonPackage rec {
+  pname = "fields";
+  version = "5.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-MdSqA9jUTjXfE8Qx3jUTaZfwR6kkpZfYT3vCCeG+Vyc=";
+  };
+
+  pythonImportsCheck = [ "fields" ];
+
+  meta = with lib; {
+    description = "Container class boilerplate killer";
+    homepage = "https://github.com/ionelmc/python-fields";
+    license = licenses.bsd2;
+    maintainers = [ maintainers.sheepforce ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/filebrowser_safe/default.nix b/nixpkgs/pkgs/development/python-modules/filebrowser_safe/default.nix
index 0cc1eae5ac20..d571f76f9227 100644
--- a/nixpkgs/pkgs/development/python-modules/filebrowser_safe/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/filebrowser_safe/default.nix
@@ -5,12 +5,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "0.5.0";
+  version = "1.1.0";
   pname = "filebrowser_safe";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5dcd31dd79684025139b43841f6515af1da5a4bb0de15bc4d88003db1970648e";
+    sha256 = "14b6e0af9697f1d0f08508cc88bc8459273cd6453636cebe8504dccc80e926e4";
   };
 
   buildInputs = [ django ];
diff --git a/nixpkgs/pkgs/development/python-modules/filelock/3.2.nix b/nixpkgs/pkgs/development/python-modules/filelock/3.2.nix
new file mode 100644
index 000000000000..401fdf582ffb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/filelock/3.2.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, setuptools-scm }:
+
+buildPythonPackage rec {
+  pname = "filelock";
+  version = "3.2.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1qry67zv2pmz8px6wdfbjqv75nmryy2ac7asqgs6q6db2722kpcw";
+  };
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/benediktschmitt/py-filelock";
+    description = "A platform independent file lock for Python";
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ henkkalkwater ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/filelock/default.nix b/nixpkgs/pkgs/development/python-modules/filelock/default.nix
index 97073bb6b03b..d5ccc117beff 100644
--- a/nixpkgs/pkgs/development/python-modules/filelock/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/filelock/default.nix
@@ -1,14 +1,30 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, setuptools-scm
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "filelock";
-  version = "3.0.12";
+  version = "3.3.0";
+  format = "pyproject";
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59";
+    sha256 = "8c7eab13dc442dc249e95158bcc12dec724465919bdc9831fdbf0660f03d1785";
   };
 
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
   meta = with lib; {
     homepage = "https://github.com/benediktschmitt/py-filelock";
     description = "A platform independent file lock for Python";
diff --git a/nixpkgs/pkgs/development/python-modules/filetype/default.nix b/nixpkgs/pkgs/development/python-modules/filetype/default.nix
index 2ec3807476d1..f89b4e690914 100644
--- a/nixpkgs/pkgs/development/python-modules/filetype/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/filetype/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "filetype";
-  version = "1.0.8";
+  version = "1.0.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "77df14879b73fd9711b8bd4f465dadf2ecdafff0eac3b22c0bdb0ccba68db316";
+    sha256 = "7124e1bc6a97ffc7c6bead5b8fb2e129baf312a9e60db5772bc27c741799d475";
   };
 
   checkPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/finitude/default.nix b/nixpkgs/pkgs/development/python-modules/finitude/default.nix
new file mode 100644
index 000000000000..eb4115914e10
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/finitude/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, prometheus-client
+, pyserial
+, pythonOlder
+, pyyaml
+}:
+
+buildPythonPackage rec {
+  pname = "finitude";
+  version = "0.1.1";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "dulitz";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-yCI5UCRDhw+dJoTKyjmHbAGBm3by2AyxHKlqCywnLcs=";
+  };
+
+  propagatedBuildInputs = [
+    pyserial
+    prometheus-client
+    pyyaml
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "finitude"
+  ];
+
+  meta = with lib; {
+    description = "Python module to get data from ABCD bus (RS-485) used by Carrier Infinity and Bryant Evolution HVAC systems";
+    homepage = "https://github.com/dulitz/finitude";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fiona/default.nix b/nixpkgs/pkgs/development/python-modules/fiona/default.nix
index 987a8ca6209e..0c1a3bd2c651 100644
--- a/nixpkgs/pkgs/development/python-modules/fiona/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fiona/default.nix
@@ -51,6 +51,12 @@ buildPythonPackage rec {
     "http" "https" "wheel"
     # Assert not true
     "test_no_append_driver_cannot_append"
+  ] ++ lib.optionals stdenv.isAarch64 [
+    # https://github.com/Toblerity/Fiona/issues/1012 the existence of this
+    # as a bug hasn't been challenged and other distributors seem to also
+    # be skipping these tests on aarch64, so this is not unique to nixpkgs.
+    "test_write_or_driver_error"
+    "test_append_or_driver_error"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/fire/default.nix b/nixpkgs/pkgs/development/python-modules/fire/default.nix
index bf3be8a69072..252b180c4e06 100644
--- a/nixpkgs/pkgs/development/python-modules/fire/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fire/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch, six, hypothesis, mock
+{ lib, buildPythonPackage, fetchFromGitHub, six, hypothesis, mock
 , python-Levenshtein, pytest, termcolor, isPy27, enum34 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/fjaraskupan/default.nix b/nixpkgs/pkgs/development/python-modules/fjaraskupan/default.nix
index a65daa55f651..3e7cccd90fcb 100644
--- a/nixpkgs/pkgs/development/python-modules/fjaraskupan/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fjaraskupan/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "fjaraskupan";
-  version = "1.0.1";
+  version = "1.0.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "elupus";
     repo = pname;
     rev = version;
-    sha256 = "0r6l9cbl41ddg4mhw9g9rly9r7s70sscg1ysb99bsi8z6xml9za3";
+    sha256 = "sha256-nUrgV4keJpYRkKZE+udvmPdCW3O3YQTS1ye40IdA7vA=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/flake8-debugger/default.nix b/nixpkgs/pkgs/development/python-modules/flake8-debugger/default.nix
index 46c63ec00085..67f4ea529f10 100644
--- a/nixpkgs/pkgs/development/python-modules/flake8-debugger/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flake8-debugger/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchPypi, buildPythonPackage, pythonOlder, pythonAtLeast, isPy27
+{ lib, fetchPypi, buildPythonPackage, isPy27
 , flake8
 , pycodestyle
 , six
diff --git a/nixpkgs/pkgs/development/python-modules/flake8-future-import/default.nix b/nixpkgs/pkgs/development/python-modules/flake8-future-import/default.nix
index 41e9680937db..699d37770a36 100644
--- a/nixpkgs/pkgs/development/python-modules/flake8-future-import/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flake8-future-import/default.nix
@@ -1,8 +1,10 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, pythonAtLeast
 , isPy27
+, isPy38
+, isPy39
+, pythonAtLeast
 , flake8
 , six
 , python
@@ -20,8 +22,10 @@ buildPythonPackage rec {
     sha256 = "00q8n15xdnvqj454arn7xxksyrzh0dw996kjyy7g9rdk0rf8x82z";
   };
 
-  patches = lib.optionals (pythonAtLeast "3.8") [
-    ./fix-annotations-version.patch
+  patches = lib.optionals (pythonAtLeast "3.10") [
+    ./fix-annotations-version-11.patch
+  ] ++ lib.optionals (isPy38 || isPy39) [
+    ./fix-annotations-version-10.patch
   ] ++ lib.optionals isPy27 [
     # Upstream disables this test case naturally on python 3, but it also fails
     # inside NixPkgs for python 2. Since it's going to be deleted, we just skip it
diff --git a/nixpkgs/pkgs/development/python-modules/flake8-future-import/fix-annotations-version.patch b/nixpkgs/pkgs/development/python-modules/flake8-future-import/fix-annotations-version-10.patch
index 2e3062c8ac43..2e3062c8ac43 100644
--- a/nixpkgs/pkgs/development/python-modules/flake8-future-import/fix-annotations-version.patch
+++ b/nixpkgs/pkgs/development/python-modules/flake8-future-import/fix-annotations-version-10.patch
diff --git a/nixpkgs/pkgs/development/python-modules/flake8-future-import/fix-annotations-version-11.patch b/nixpkgs/pkgs/development/python-modules/flake8-future-import/fix-annotations-version-11.patch
new file mode 100644
index 000000000000..7cbb5e562c33
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flake8-future-import/fix-annotations-version-11.patch
@@ -0,0 +1,13 @@
+diff --git a/flake8_future_import.py b/flake8_future_import.py
+index 92c3fda..27a1a66 100755
+--- a/flake8_future_import.py
++++ b/flake8_future_import.py
+@@ -76,7 +76,7 @@ UNICODE_LITERALS = Feature(4, 'unicode_literals', (2, 6, 0), (3, 0, 0))
+ GENERATOR_STOP = Feature(5, 'generator_stop', (3, 5, 0), (3, 7, 0))
+ NESTED_SCOPES = Feature(6, 'nested_scopes', (2, 1, 0), (2, 2, 0))
+ GENERATORS = Feature(7, 'generators', (2, 2, 0), (2, 3, 0))
+-ANNOTATIONS = Feature(8, 'annotations', (3, 7, 0), (4, 0, 0))
++ANNOTATIONS = Feature(8, 'annotations', (3, 7, 0), (3, 11, 0))
+ 
+ 
+ # Order important as it defines the error code
diff --git a/nixpkgs/pkgs/development/python-modules/flake8-length/default.nix b/nixpkgs/pkgs/development/python-modules/flake8-length/default.nix
new file mode 100644
index 000000000000..34e226bd4635
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flake8-length/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, flake8
+, pytestCheckHook
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "flake8-length";
+  version = "0.2.2";
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "3536fee1d2a19c01f56ebb909c4d81f686f8181091a9bc3ddf3a5621c464760a";
+  };
+
+  propagatedBuildInputs = [
+    flake8
+  ];
+
+  pythonImportsCheck = [
+    "flake8_length"
+  ];
+
+  checkInputs = [ pytestCheckHook ];
+
+  pytestFlagsArray = [ "tests/" ];
+
+  meta = {
+    description = "Flake8 plugin for a smart line length validation";
+    homepage = "https://github.com/orsinium-labs/flake8-length";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sauyon ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flake8-polyfill/default.nix b/nixpkgs/pkgs/development/python-modules/flake8-polyfill/default.nix
index 050a6d4f9c8a..60ee3558d1d4 100644
--- a/nixpkgs/pkgs/development/python-modules/flake8-polyfill/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flake8-polyfill/default.nix
@@ -1,6 +1,12 @@
-{ lib, fetchPypi, buildPythonPackage
+{ lib
+, buildPythonPackage
+, fetchpatch
+, fetchPypi
 , flake8
-, mock, pep8, pytest }:
+, mock
+, pep8
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "flake8-polyfill";
@@ -11,12 +17,6 @@ buildPythonPackage rec {
     sha256 = "1nlf1mkqw856vi6782qcglqhaacb23khk9wkcgn55npnjxshhjz4";
   };
 
-  postPatch = ''
-    # Failed: [pytest] section in setup.cfg files is no longer supported, change to [tool:pytest] instead.
-    substituteInPlace setup.cfg \
-      --replace pytest 'tool:pytest'
-  '';
-
   propagatedBuildInputs = [
     flake8
   ];
@@ -24,13 +24,28 @@ buildPythonPackage rec {
   checkInputs = [
     mock
     pep8
-    pytest
+    pytestCheckHook
+  ];
+
+  patches = [
+    # Skip unnecessary tests on Flake8, https://github.com/PyCQA/pep8-naming/pull/181
+    (fetchpatch {
+      name = "skip-tests.patch";
+      url = "https://github.com/PyCQA/flake8-polyfill/commit/3cf414350e82ceb835ca2edbd5d5967d33e9ff35.patch";
+      sha256 = "mElZafodq8dF3wLO/LOqwFb7eLMsPLlEjNSu5AWqets=";
+    })
   ];
 
-  checkPhase = ''
-    pytest tests
+  postPatch = ''
+    # Failed: [pytest] section in setup.cfg files is no longer supported, change to [tool:pytest] instead.
+    substituteInPlace setup.cfg \
+      --replace pytest 'tool:pytest'
   '';
 
+  pythonImportsCheck = [
+    "flake8_polyfill"
+  ];
+
   meta = with lib; {
     homepage = "https://gitlab.com/pycqa/flake8-polyfill";
     description = "Polyfill package for Flake8 plugins";
diff --git a/nixpkgs/pkgs/development/python-modules/flake8/default.nix b/nixpkgs/pkgs/development/python-modules/flake8/default.nix
index e40e7e37bbbc..c707cb3caaa1 100644
--- a/nixpkgs/pkgs/development/python-modules/flake8/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flake8/default.nix
@@ -1,35 +1,61 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder
-, mock, pytest, pytest-runner
-, configparser, enum34, mccabe, pycodestyle, pyflakes, functools32, typing ? null, importlib-metadata
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, configparser
+, enum34
+, mccabe
+, pycodestyle
+, pyflakes
+, functools32
+, typing
+, importlib-metadata
+, mock
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "flake8";
-  version = "3.9.2";
+  version = "4.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b";
+    sha256 = "03c7mnk34wfz7a0m5zq0273y94awz69fy5iww8alh4a4v96h6vl0";
   };
 
-  checkInputs = [ pytest mock pytest-runner ];
-  propagatedBuildInputs = [ pyflakes pycodestyle mccabe ]
-    ++ lib.optionals (pythonOlder "3.2") [ configparser functools32 ]
-    ++ lib.optionals (pythonOlder "3.4") [ enum34 ]
-    ++ lib.optionals (pythonOlder "3.5") [ typing ]
-    ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "pyflakes >= 2.3.0, < 2.4.0" "pyflakes >= 2.3.0, < 2.5.0"
+  '';
+
+  propagatedBuildInputs = [
+    pyflakes
+    pycodestyle
+    mccabe
+  ] ++ lib.optionals (pythonOlder "3.2") [
+    configparser
+    functools32
+  ] ++ lib.optionals (pythonOlder "3.4") [
+    enum34
+  ] ++ lib.optionals (pythonOlder "3.5") [
+    typing
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    importlib-metadata
+  ];
 
   # Tests fail on Python 3.7 due to importlib using a deprecated interface
   doCheck = !(pythonOlder "3.8");
 
-  # fixtures fail to initialize correctly
-  checkPhase = ''
-    py.test tests --ignore=tests/integration/test_checker.py
-  '';
+  checkInputs = [
+    mock
+    pytestCheckHook
+  ];
+
+  disabled = pythonOlder "3.6";
 
   meta = with lib; {
-    description = "Code checking using pep8 and pyflakes";
-    homepage = "https://pypi.python.org/pypi/flake8";
+    description = "Flake8 is a wrapper around pyflakes, pycodestyle and mccabe.";
+    homepage = "https://github.com/pycqa/flake8";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/flashtext/default.nix b/nixpkgs/pkgs/development/python-modules/flashtext/default.nix
new file mode 100644
index 000000000000..52b54f4dceac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flashtext/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "flashtext";
+  version = "2.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1kq5idfp9skqkjdcld40igxn2yqjly8jpmxawkp0skwxw29jpgm1";
+  };
+
+  # json files that tests look for don't exist in the pypi dist
+  doCheck = false;
+
+  meta = with lib; {
+    homepage = "http://github.com/vi3k6i5/flashtext";
+    description = "Python package to replace keywords in sentences or extract keywords from sentences";
+    maintainers = with maintainers; [ aanderse ];
+    license = with licenses; [ mit ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-admin/default.nix b/nixpkgs/pkgs/development/python-modules/flask-admin/default.nix
index dc1e795054fe..bfdf0e46ea58 100644
--- a/nixpkgs/pkgs/development/python-modules/flask-admin/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flask-admin/default.nix
@@ -1,80 +1,86 @@
 { lib
+, arrow
 , buildPythonPackage
+, colour
+, email_validator
+, enum34
 , fetchPypi
-, nose
-, pillow
+, flask
+, flask_sqlalchemy
+, flask-babelex
+, flask-mongoengine
+, geoalchemy2
+, isPy27
 , mongoengine
+, pillow
+, psycopg2
 , pymongo
-, wtf-peewee
+, pytestCheckHook
+, shapely
 , sqlalchemy
 , sqlalchemy-citext
 , sqlalchemy-utils
-, flask-mongoengine
-, flask_sqlalchemy
-, flask-babelex
-, shapely
-, geoalchemy2
-, psycopg2
-, arrow
-, colour
-, email_validator
-, flask
+, wtf-peewee
 , wtforms
-, isPy27
-, enum34
 }:
 
 buildPythonPackage rec {
   pname = "flask-admin";
-  version = "1.5.6";
+  version = "1.5.8";
+  format = "setuptools";
 
   src = fetchPypi {
     pname = "Flask-Admin";
     inherit version;
-    sha256 = "1f31vzc0p2xni5mh1wvjk9jxf4ddlx2fj4r0f3vv2n9db3c63iv8";
+    sha256 = "sha256-6wah8xuYiB3uU6VcZPrr0ZkNaqw4gmNksoDfCyZ5/3Q=";
   };
 
+  propagatedBuildInputs = [
+    flask
+    wtforms
+  ] ++ lib.optionals isPy27 [
+    enum34
+  ];
+
   checkInputs = [
-    nose
-    pillow
+    arrow
+    colour
+    email_validator
+    flask_sqlalchemy
+    flask-babelex
+    flask-mongoengine
+    geoalchemy2
     mongoengine
+    pillow
+    psycopg2
     pymongo
-    wtf-peewee
+    pytestCheckHook
+    shapely
     sqlalchemy
     sqlalchemy-citext
     sqlalchemy-utils
-    flask-mongoengine
-    flask_sqlalchemy
-    flask-babelex
-    shapely
-    geoalchemy2
-    psycopg2
-    arrow
-    colour
-    email_validator
+    wtf-peewee
   ];
 
-  propagatedBuildInputs = [
-    flask
-    wtforms
-  ] ++ lib.optionals isPy27 [ enum34 ];
+  disabledTestPaths = [
+    # Tests have additional requirements
+    "flask_admin/tests/geoa/test_basic.py"
+    "flask_admin/tests/mongoengine/test_basic.py"
+    "flask_admin/tests/pymongo/test_basic.py"
+    "flask_admin/tests/sqla/test_basic.py"
+    "flask_admin/tests/sqla/test_form_rules.py"
+    "flask_admin/tests/sqla/test_postgres.py"
+    "flask_admin/tests/sqla/test_translation.py"
+  ];
 
-  checkPhase = ''
-    # disable tests that require mongodb, postresql, or network
-    nosetests \
-     -e "mongoengine" \
-     -e "pymongo" \
-     -e "test_form_upload" \
-     -e "test_postgres" \
-     -e "geoa" \
-     -e "test_ajax_fk" \
-     flask_admin/tests
-  '';
+  pythonImportsCheck = [
+    "flask_admin"
+  ];
 
   meta = with lib; {
     description = "Simple and extensible admin interface framework for Flask";
     homepage = "https://github.com/flask-admin/flask-admin/";
     license = licenses.bsd3;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/flask-appbuilder/default.nix b/nixpkgs/pkgs/development/python-modules/flask-appbuilder/default.nix
index cf9924f52894..afb81cc103bc 100644
--- a/nixpkgs/pkgs/development/python-modules/flask-appbuilder/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flask-appbuilder/default.nix
@@ -25,12 +25,12 @@
 
 buildPythonPackage rec {
   pname = "flask-appbuilder";
-  version = "3.3.3";
+  version = "3.4.1";
 
   src = fetchPypi {
     pname = "Flask-AppBuilder";
     inherit version;
-    sha256 = "sha256-yjb4dpcQt2se5GT+wodh4UC9LAF4JmYrdX89VIdkk0U=";
+    sha256 = "c0830935077c4d06d57237ca4791fcabfc682fe3e315c1c9444a2bd6f94e7514";
   };
 
   # See here: https://github.com/dpgaspar/Flask-AppBuilder/commit/7097a7b133f27c78d2b54d2a46e4a4c24478a066.patch
diff --git a/nixpkgs/pkgs/development/python-modules/flask-httpauth/default.nix b/nixpkgs/pkgs/development/python-modules/flask-httpauth/default.nix
index 988ae52aa0e4..e667e08b144a 100644
--- a/nixpkgs/pkgs/development/python-modules/flask-httpauth/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flask-httpauth/default.nix
@@ -1,24 +1,23 @@
-{ lib, python, isPy3k, buildPythonPackage, fetchPypi, flask }:
+{ lib, python, buildPythonPackage, fetchPypi, pytestCheckHook, flask }:
 
 buildPythonPackage rec {
-  pname = "Flask-HTTPAuth";
-  version = "4.4.0";
+  pname = "flask-httpauth";
+  version = "4.5.0";
 
-  disabled = !isPy3k;
+  disabled = python.pythonOlder "3";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "0fl1if91hg2c92b6sic7h2vhxxvb06ri7wflmwp0pfiwbaisgamw";
+    pname = "Flask-HTTPAuth";
+    version = version;
+    sha256 = "0ada63rkcvwkakjyx4ay98fjzwx5h55br12ys40ghkc5lbyl0l1r";
   };
 
+  checkInputs = [ pytestCheckHook ];
+
   propagatedBuildInputs = [ flask ];
 
   pythonImportsCheck = [ "flask_httpauth" ];
 
-  checkPhase = ''
-    ${python.interpreter} -m unittest discover
-  '';
-
   meta = with lib; {
     description = "Extension that provides HTTP authentication for Flask routes";
     homepage = "https://github.com/miguelgrinberg/Flask-HTTPAuth";
diff --git a/nixpkgs/pkgs/development/python-modules/flask-ldap-login/default.nix b/nixpkgs/pkgs/development/python-modules/flask-ldap-login/default.nix
deleted file mode 100644
index 08aa2efb8f2c..000000000000
--- a/nixpkgs/pkgs/development/python-modules/flask-ldap-login/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib, buildPythonPackage, isPy3k, fetchFromGitHub, fetchpatch
-, flask, flask_wtf, flask_testing, ldap
-, mock, nose }:
-
-buildPythonPackage rec {
-  pname = "flask-ldap-login";
-  version = "0.3.4";
-  disabled = isPy3k;
-
-  src = fetchFromGitHub {
-    owner = "ContinuumIO";
-    repo = "flask-ldap-login";
-    rev = version;
-    sha256 = "1l6zahqhwn5g9fmhlvjv80288b5h2fk5mssp7amdkw5ysk570wzp";
-  };
-
-  patches = [
-    # Fix flask_wtf>=0.9.0 incompatibility. See https://github.com/ContinuumIO/flask-ldap-login/issues/41
-    (fetchpatch {
-      url = "https://github.com/ContinuumIO/flask-ldap-login/commit/ed08c03c818dc63b97b01e2e7c56862eaa6daa43.patch";
-      sha256 = "19pkhbldk8jq6m10kdylvjf1c8m84fvvj04v5qda4cjyks15aq48";
-    })
-  ];
-
-  checkInputs = [ nose mock flask_testing ];
-  propagatedBuildInputs = [ flask flask_wtf ldap ];
-
-  checkPhase = "nosetests -d";
-
-  meta = with lib; {
-    homepage = "https://github.com/ContinuumIO/flask-ldap-login";
-    description = "User session management for Flask";
-    license = licenses.mit;
-    platforms = platforms.all;
-    maintainers = with maintainers; [ mic92 ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-openid/default.nix b/nixpkgs/pkgs/development/python-modules/flask-openid/default.nix
index a9a5ec9acc8b..4ae75839dc9a 100644
--- a/nixpkgs/pkgs/development/python-modules/flask-openid/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flask-openid/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "flask-openid";
-  version = "1.2.5";
+  version = "1.3.0";
   disable = !isPy3k;
 
   src = fetchPypi {
     pname = "Flask-OpenID";
     inherit version;
-    sha256 = "5a8ffe1c8c0ad1cc1f5030e1223ea27f8861ee0215a2a58a528cc61379e5ccab";
+    sha256 = "539289ed2d19af61ae38d8fe46aec9e4de2b56f9f8b46da0b98c0d387f1d975a";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/flask-paginate/default.nix b/nixpkgs/pkgs/development/python-modules/flask-paginate/default.nix
index 214c89e1d4b2..d23306be62bd 100644
--- a/nixpkgs/pkgs/development/python-modules/flask-paginate/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flask-paginate/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "flask-paginate";
-  version = "0.8.1";
+  version = "2021.12.28";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "31133c29c718aed95276425f7795d0a32b8d45a992ddd359c69600f22f869254";
+    sha256 = "c722a25067d722483e24cde16ed987a822292ca758a213299e445694d2b5b587";
   };
 
   propagatedBuildInputs = [ flask ];
diff --git a/nixpkgs/pkgs/development/python-modules/flask-session/default.nix b/nixpkgs/pkgs/development/python-modules/flask-session/default.nix
new file mode 100644
index 000000000000..a9433fe0b871
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-session/default.nix
@@ -0,0 +1,27 @@
+{ lib, fetchPypi, buildPythonPackage, pytestCheckHook, flask, cachelib }:
+
+buildPythonPackage rec {
+  pname = "Flask-Session";
+  version = "0.4.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-ye1UMh+oxMoBMv/TNpWCdZ7aclL7SzvuSA5pDRukH0Y=";
+  };
+
+  propagatedBuildInputs = [ flask cachelib ];
+
+  checkInputs = [ pytestCheckHook ];
+
+  # The rest of the tests require database servers and optional db connector dependencies
+  pytestFlagsArray = [ "-k" "'null_session or filesystem_session'" ];
+
+  pythonImportsCheck = [ "flask_session" ];
+
+  meta = with lib; {
+    description = "A Flask extension that adds support for server-side sessions";
+    homepage = "https://github.com/fengsp/flask-session";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ zhaofengli ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-talisman/default.nix b/nixpkgs/pkgs/development/python-modules/flask-talisman/default.nix
new file mode 100644
index 000000000000..b57d58824705
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/flask-talisman/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, flask
+, six
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "flask-talisman";
+  version = "0.8.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "11gjgqkpj2yqydb0pfhjyx56iy4l9szgz33vg5d7bw8vqp02wl2x";
+  };
+
+  buildInputs = [
+    flask
+  ];
+
+  propagatedBuildInputs = [
+    six
+  ];
+
+  nativeBuildInputs = [
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    description = "HTTP security headers for Flask";
+    homepage = "https://github.com/wntrblm/flask-talisman";
+    license = licenses.asl20;
+    maintainers = [ lib.maintainers.symphorien ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/flask-wtf/default.nix b/nixpkgs/pkgs/development/python-modules/flask-wtf/default.nix
index 36437ffafa91..2c7dd221e921 100644
--- a/nixpkgs/pkgs/development/python-modules/flask-wtf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flask-wtf/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "Flask-WTF";
-  version = "0.15.1";
+  version = "1.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ff177185f891302dc253437fe63081e7a46a4e99aca61dfe086fb23e54fff2dc";
+    sha256 = "872fbb17b5888bfc734edbdcf45bc08fb365ca39f69d25dc752465a455517b28";
   };
 
   propagatedBuildInputs = [ flask wtforms nose ];
diff --git a/nixpkgs/pkgs/development/python-modules/flask/default.nix b/nixpkgs/pkgs/development/python-modules/flask/default.nix
index 166b30ac9856..2fe71c2d6db9 100644
--- a/nixpkgs/pkgs/development/python-modules/flask/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flask/default.nix
@@ -11,12 +11,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "2.0.1";
+  version = "2.0.2";
   pname = "Flask";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0mcgwq7b4qd99mf5bsvs3wphchxarf8kgil4hwww3blj31xjak0w";
+    sha256 = "7b2fb8e934ddd50731893bdcdb00fc8c0315916f9fcd50d22c7cc1a95ab634e2";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/flexmock/default.nix b/nixpkgs/pkgs/development/python-modules/flexmock/default.nix
index 6061f04d627b..ae52c31b5775 100644
--- a/nixpkgs/pkgs/development/python-modules/flexmock/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flexmock/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "flexmock";
-  version = "0.10.9";
+  version = "0.11.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9c128b7cf31fac5340062c9c2cf1e0b12c601ee2d5c10ef39cc191036fb2e688";
+    sha256 = "1c51371767f968e1d2f505138de72b07704ecebc9b34e0b52ffdeeb510685c3f";
   };
 
   checkInputs = [ pytest ];
diff --git a/nixpkgs/pkgs/development/python-modules/flit-core/default.nix b/nixpkgs/pkgs/development/python-modules/flit-core/default.nix
index 7b2731595629..7cb9ed2c6c45 100644
--- a/nixpkgs/pkgs/development/python-modules/flit-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flit-core/default.nix
@@ -3,8 +3,6 @@
 , callPackage
 , flit
 , toml
-, pytestCheckHook
-, testpath
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/flit/default.nix b/nixpkgs/pkgs/development/python-modules/flit/default.nix
index 38369dfd4d2f..0a6d1ba3158a 100644
--- a/nixpkgs/pkgs/development/python-modules/flit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flit/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
-, isPy3k
 , docutils
 , requests
 , requests_download
diff --git a/nixpkgs/pkgs/development/python-modules/flower/default.nix b/nixpkgs/pkgs/development/python-modules/flower/default.nix
index 0d4f834f1f0c..c7a2ba59db3e 100644
--- a/nixpkgs/pkgs/development/python-modules/flower/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flower/default.nix
@@ -13,6 +13,7 @@
 buildPythonPackage rec {
   pname = "flower";
   version = "1.0.0";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
@@ -27,10 +28,10 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     celery
-    pytz
-    tornado
     humanize
     prometheus-client
+    pytz
+    tornado
   ];
 
   checkInputs = [
@@ -38,7 +39,15 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "flower" ];
+  disabledTests = [
+    # AssertionError as the celery release can't be detected
+    "test_default"
+    "test_with_app"
+  ];
+
+  pythonImportsCheck = [
+    "flower"
+  ];
 
   meta = with lib; {
     description = "Celery Flower";
diff --git a/nixpkgs/pkgs/development/python-modules/flufl/bounce.nix b/nixpkgs/pkgs/development/python-modules/flufl/bounce.nix
index d44c8841f923..7687c0980c70 100644
--- a/nixpkgs/pkgs/development/python-modules/flufl/bounce.nix
+++ b/nixpkgs/pkgs/development/python-modules/flufl/bounce.nix
@@ -9,6 +9,6 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "25504aeb976ec0fe5a19cd6c413a3410cb514fdcdbdca9f9b5d8d343a8603831";
+    sha256 = "sha256-JVBK65duwP5aGc1sQTo0EMtRT9zb3Kn5tdjTQ6hgODE=";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/flufl/i18n.nix b/nixpkgs/pkgs/development/python-modules/flufl/i18n.nix
index f9c5c8f1efe8..70b97a083d8f 100644
--- a/nixpkgs/pkgs/development/python-modules/flufl/i18n.nix
+++ b/nixpkgs/pkgs/development/python-modules/flufl/i18n.nix
@@ -12,6 +12,6 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c35c8f8eab66adb7fd64a1420860105066d2b36cb655b33ffb14afe8e223ed62";
+    sha256 = "sha256-w1yPjqtmrbf9ZKFCCGAQUGbSs2y2VbM/+xSv6OIj7WI=";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/flufl/lock.nix b/nixpkgs/pkgs/development/python-modules/flufl/lock.nix
index e63af005de31..c0f3ec60cf35 100644
--- a/nixpkgs/pkgs/development/python-modules/flufl/lock.nix
+++ b/nixpkgs/pkgs/development/python-modules/flufl/lock.nix
@@ -8,7 +8,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "fc748ee609ec864b4838ef649dbd1170fa79deb0c213c2fd51151bee6a7fc242";
+    sha256 = "sha256-/HSO5gnshktIOO9knb0RcPp53rDCE8L9URUb7mp/wkI=";
   };
 
   propagatedBuildInputs = [ atpublic psutil ];
diff --git a/nixpkgs/pkgs/development/python-modules/flup/default.nix b/nixpkgs/pkgs/development/python-modules/flup/default.nix
deleted file mode 100644
index fa19d9bdf7a5..000000000000
--- a/nixpkgs/pkgs/development/python-modules/flup/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib
-, buildPythonPackage
-, isPy3k
-, fetchPypi
-}:
-
-buildPythonPackage rec {
-  pname = "flup";
-  version = "1.0.3";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "5eb09f26eb0751f8380d8ac43d1dfb20e1d42eca0fa45ea9289fa532a79cd159";
-  };
-
-  meta = with lib; {
-    homepage = "https://www.saddi.com/software/flup/";
-    description = "FastCGI Python module set";
-    license = licenses.bsd0;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/flux-led/default.nix b/nixpkgs/pkgs/development/python-modules/flux-led/default.nix
index 92c1d0c1d269..08bf77f703be 100644
--- a/nixpkgs/pkgs/development/python-modules/flux-led/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flux-led/default.nix
@@ -7,8 +7,9 @@
 }:
 
 buildPythonPackage rec {
-  pname = "flux_led";
-  version = "0.24.8";
+  pname = "flux-led";
+  version = "0.27.28";
+  format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
@@ -16,7 +17,7 @@ buildPythonPackage rec {
     owner = "Danielhiversen";
     repo = "flux_led";
     rev = version;
-    sha256 = "sha256-A4Duwa4IRDrxpPUb0yyfgoR0GsXD0ewO0cr+1bvl7/4=";
+    sha256 = "sha256-lm560jTafxMVNH4tXx7xov1bQMEYp3FFzJEK5K+ung0=";
   };
 
   propagatedBuildInputs = [
@@ -27,6 +28,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace '"pytest-runner>=5.2",' ""
+  '';
+
   pytestFlagsArray = [
     "tests.py"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/folium/default.nix b/nixpkgs/pkgs/development/python-modules/folium/default.nix
index c0adaeaa5589..ff8c097d6ff3 100644
--- a/nixpkgs/pkgs/development/python-modules/folium/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/folium/default.nix
@@ -14,11 +14,11 @@
 
 buildPythonPackage rec {
   pname = "folium";
-  version = "0.12.0";
+  version = "0.12.1.post1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d45ace0a813ae65f202ce0356eb29c40a5e8fde071e4d6b5be0a89587ebaeab2";
+    sha256 = "e91e57d8298f3ccf4cce3c5e065bea6eb17033e3c5432b8a22214009c266b2ab";
   };
 
   disabled = pythonOlder "3.5";
diff --git a/nixpkgs/pkgs/development/python-modules/fontmath/default.nix b/nixpkgs/pkgs/development/python-modules/fontmath/default.nix
index d9516ceb88b4..c0e4bc85773d 100644
--- a/nixpkgs/pkgs/development/python-modules/fontmath/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fontmath/default.nix
@@ -5,12 +5,12 @@
 
 buildPythonPackage rec {
   pname = "fontMath";
-  version = "0.8.1";
+  version = "0.9.1";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0m2z2wwbxwljfcrg8hx4xq538adzcjpc352yqbfw0czbgs5ixmrr";
+    sha256 = "1c5e76e135409f49b15809d0ce94dfd00850f893f86d4d6a336808dbbf292700";
     extension = "zip";
   };
 
diff --git a/nixpkgs/pkgs/development/python-modules/fontparts/default.nix b/nixpkgs/pkgs/development/python-modules/fontparts/default.nix
index 158806f1be86..9b9cc129c63b 100644
--- a/nixpkgs/pkgs/development/python-modules/fontparts/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fontparts/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "fontParts";
-  version = "0.9.11";
+  version = "0.10.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "558a5f681fcf7ca0bb5a1c68917b5d9b61c77d517833a01ea1667773d13f4012";
+    sha256 = "794ada47e19ba41ef39b59719be312b127672bcb56bb7208dd3234d2bb3e8218";
     extension = "zip";
   };
 
diff --git a/nixpkgs/pkgs/development/python-modules/fonttools/default.nix b/nixpkgs/pkgs/development/python-modules/fonttools/default.nix
index 407b72c953f1..ec3acfc775d0 100644
--- a/nixpkgs/pkgs/development/python-modules/fonttools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fonttools/default.nix
@@ -4,68 +4,75 @@
 , pythonOlder
 , brotlipy
 , zopfli
-, fs
 , lxml
 , scipy
 , munkres
 , unicodedata2
 , sympy
-, matplotlib
 , reportlab
 , sphinx
-, pytest
-, pytest-randomly
+, pytestCheckHook
 , glibcLocales
 }:
 
 buildPythonPackage rec {
   pname = "fonttools";
-  version = "4.21.1";
+  version = "4.26.2";
+
+  # Bump to 3.7 when https://github.com/fonttools/fonttools/pull/2417 is merged
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner  = pname;
     repo   = pname;
     rev    = version;
-    sha256 = "1x9qrg6ppqhm5214ymwvn0r34qdz8pqvyxd0sj7rkp06wa757z2i";
+    sha256 = "1zp9idjkn4bn1a4pn8x64vi8j1ijdsd4qvgf1f70dfwqvw6ak1i6";
   };
 
   # all dependencies are optional, but
   # we run the checks with them
+
   checkInputs = [
-    pytest
-    pytest-randomly
-    glibcLocales
+    pytestCheckHook
     # etree extra
     lxml
-    # ufo extra
-    fs
     # woff extra
     brotlipy
     zopfli
-    # unicode extra
-    unicodedata2
     # interpolatable extra
     scipy
     munkres
     # symfont
     sympy
-    # varLib
-    matplotlib
     # pens
     reportlab
     sphinx
+  ] ++ lib.optionals (pythonOlder "3.9") [
+    # unicode extra
+    unicodedata2
   ];
 
   preCheck = ''
-    export LC_ALL="en_US.UTF-8"
+    # tests want to execute the "fonttools" executable from $PATH
+    export PATH="$out/bin:$PATH"
   '';
 
-  # avoid timing issues with timestamps in subset_test.py and ttx_test.py
-  checkPhase = ''
-    pytest Tests fontTools \
-      -k 'not ttcompile_timestamp_calcs and not recalc_timestamp'
-  '';
+  # Timestamp tests have timing issues probably related
+  # to our file timestamp normalization
+  disabledTests = [
+    "test_recalc_timestamp_ttf"
+    "test_recalc_timestamp_otf"
+    "test_ttcompile_timestamp_calcs"
+  ];
+
+  disabledTestPaths = [
+    # avoid test which depend on fs and matplotlib
+    # fs and matplotlib were removed to prevent strong cyclic dependencies
+    "Tests/misc/plistlib_test.py"
+    "Tests/pens"
+    "Tests/ufoLib"
+  ];
+
 
   meta = with lib; {
     homepage = "https://github.com/fonttools/fonttools";
diff --git a/nixpkgs/pkgs/development/python-modules/formbox/default.nix b/nixpkgs/pkgs/development/python-modules/formbox/default.nix
new file mode 100644
index 000000000000..d099b7454544
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/formbox/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildPythonPackage, pythonOlder, fetchFromSourcehut, bleach, markdown }:
+
+buildPythonPackage rec {
+  pname = "formbox";
+  version = "0.1.0";
+  format = "flit";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromSourcehut {
+    owner = "~cnx";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-6OzmYqUC3mmrAMeMExI4rdVGUoWrxRuBfjKFYbHUlgE=";
+  };
+
+  propagatedBuildInputs = [ bleach markdown ];
+  doCheck = false; # there's no test
+  pythonImportsCheck = [ "formbox" ];
+
+  meta = with lib; {
+    description = "A script to format mbox as HTML/XML";
+    homepage = "https://sr.ht/~cnx/formbox";
+    license = licenses.agpl3Plus;
+    maintainers = [ maintainers.McSinyx ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/fountains/default.nix b/nixpkgs/pkgs/development/python-modules/fountains/default.nix
index aec78779a7a4..ee9a22c58f2e 100644
--- a/nixpkgs/pkgs/development/python-modules/fountains/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fountains/default.nix
@@ -6,21 +6,24 @@
 
 buildPythonPackage rec {
   pname = "fountains";
-  version = "1.1.1";
+  version = "1.2.0";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "fbf4e2cb11d60d3bafca5bb7c01c254d08a5541ed7ddfe00ef975eb173fb75a4";
+    sha256 = "sha256-bea8EXw3b0CibhEREdY4FZouiiXP4y+UbbDXed7Ltwo=";
   };
 
   propagatedBuildInputs = [
     bitlist
   ];
 
-  # Project has no test
+  # Module has no test
   doCheck = false;
 
-  pythonImportsCheck = [ "fountains" ];
+  pythonImportsCheck = [
+    "fountains"
+  ];
 
   meta = with lib; {
     description = "Python library for generating and embedding data for unit testing";
diff --git a/nixpkgs/pkgs/development/python-modules/fpyutils/default.nix b/nixpkgs/pkgs/development/python-modules/fpyutils/default.nix
index 493304428524..36064d33d76c 100644
--- a/nixpkgs/pkgs/development/python-modules/fpyutils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fpyutils/default.nix
@@ -9,14 +9,16 @@
 
 buildPythonPackage rec {
   pname = "fpyutils";
-  version = "2.0.1";
+  version = "2.1.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "frnmst";
     repo = pname;
     rev = version;
-    sha256 = "1dksx5ykm7f1bi16wg8kqqqlnc874k3vg9kfjbbbalv8w0g2g2am";
+    sha256 = "sha256-QO7g0wjlaboZwvA+JYL1ax7M8zzCc0hizBdaN2b1TCs=";
   };
 
   propagatedBuildInputs = [
@@ -28,14 +30,18 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [ "fpyutils/tests/*.py" ];
+  pytestFlagsArray = [
+    "fpyutils/tests/*.py"
+  ];
 
   disabledTests = [
     # Don't run test which requires bash
     "test_execute_command_live_output"
   ];
 
-  pythonImportsCheck = [ "fpyutils" ];
+  pythonImportsCheck = [
+    "fpyutils"
+  ];
 
   meta = with lib; {
     description = "Collection of useful non-standard Python functions";
diff --git a/nixpkgs/pkgs/development/python-modules/freezegun/0.3.nix b/nixpkgs/pkgs/development/python-modules/freezegun/0.3.nix
index c4444805009d..7f77616f2a4e 100644
--- a/nixpkgs/pkgs/development/python-modules/freezegun/0.3.nix
+++ b/nixpkgs/pkgs/development/python-modules/freezegun/0.3.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, isPy27
 , python-dateutil
 , six
 , mock
diff --git a/nixpkgs/pkgs/development/python-modules/freezegun/default.nix b/nixpkgs/pkgs/development/python-modules/freezegun/default.nix
index 742506b6089d..2ffefa1a4e09 100644
--- a/nixpkgs/pkgs/development/python-modules/freezegun/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/freezegun/default.nix
@@ -1,6 +1,8 @@
 { lib
 , buildPythonPackage
 , pythonOlder
+, pythonAtLeast
+, fetchpatch
 , fetchPypi
 , python-dateutil
 , pytestCheckHook
@@ -16,6 +18,14 @@ buildPythonPackage rec {
     sha256 = "177f9dd59861d871e27a484c3332f35a6e3f5d14626f2bf91be37891f18927f3";
   };
 
+  patches = lib.optionals (pythonAtLeast "3.10") [
+    # Staticmethods in 3.10+ are now callable, prevent freezegun to attempt to decorate them
+    (fetchpatch {
+      url = "https://github.com/spulec/freezegun/pull/397/commits/e63874ce75a74a1159390914045fe8e7955b24c4.patch";
+      sha256 = "sha256-FNABqVN5DFqVUR88lYzwbfsZj3xcB9/MvQtm+I2VjnI=";
+    })
+  ];
+
   propagatedBuildInputs = [ python-dateutil ];
   checkInputs = [ pytestCheckHook ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/frigidaire/default.nix b/nixpkgs/pkgs/development/python-modules/frigidaire/default.nix
index 7ec27a12db2d..61082cb40904 100644
--- a/nixpkgs/pkgs/development/python-modules/frigidaire/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/frigidaire/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "frigidaire";
-  version = "0.16";
+  version = "0.18.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "bm1549";
     repo = pname;
     rev = version;
-    sha256 = "1yzwzvlxz28rhnwhwsn37v7l7fxikzr4j7m293db9452w340p0zl";
+    sha256 = "sha256-U2ixBtigY15RzMNIeUK71uNOndUepK2kE/CTFwl855w=";
   };
 
   propagatedBuildInputs = [
@@ -34,7 +34,9 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "frigidaire" ];
+  pythonImportsCheck = [
+    "frigidaire"
+  ];
 
   meta = with lib; {
     description = "Python API for the Frigidaire devices";
diff --git a/nixpkgs/pkgs/development/python-modules/fritzconnection/default.nix b/nixpkgs/pkgs/development/python-modules/fritzconnection/default.nix
index 1c4145df14e4..0797d39c3125 100644
--- a/nixpkgs/pkgs/development/python-modules/fritzconnection/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fritzconnection/default.nix
@@ -8,7 +8,8 @@
 
 buildPythonPackage rec {
   pname = "fritzconnection";
-  version = "1.7.1";
+  version = "1.7.2";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
@@ -16,14 +17,20 @@ buildPythonPackage rec {
     owner = "kbr";
     repo = pname;
     rev = version;
-    sha256 = "sha256-yrkFtvGXkeHD5hp0Fzz3M1hsuSIt6bQriyUy4NagD0U=";
+    sha256 = "sha256-TT0mc3ID+R5Dhm0xSMpyg68wZR70xJfRfgPkHkvLstA=";
   };
 
-  propagatedBuildInputs = [ requests ];
+  propagatedBuildInputs = [
+    requests
+  ];
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  pythonImportsCheck = [ "fritzconnection" ];
+  pythonImportsCheck = [
+    "fritzconnection"
+  ];
 
   meta = with lib; {
     description = "Python module to communicate with the AVM Fritz!Box";
diff --git a/nixpkgs/pkgs/development/python-modules/frozendict/default.nix b/nixpkgs/pkgs/development/python-modules/frozendict/default.nix
index 4acf53563ded..02579d97d287 100644
--- a/nixpkgs/pkgs/development/python-modules/frozendict/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/frozendict/default.nix
@@ -3,22 +3,26 @@
 , fetchPypi
 , isPy3k
 , pytestCheckHook
-, setuptoolsBuildHook
 , python
 }:
 
 buildPythonPackage rec {
   pname = "frozendict";
-  version = "2.0.5";  # 2.0.6 breaks canonicaljson
+  version = "2.1.0";
   format = "setuptools";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-wb7hwHDY2fZA4SjluHV2pEAAhgCfeGLRPAv4YA5iE9M=";
+    sha256 = "0189168749ddea8601afd648146c502533f93ae33840eb76cd71f694742623cd";
   };
 
+  postPatch = ''
+    # fixes build on non-x86_64 architectures
+    rm frozendict/src/3_9/cpython_src/Include/pyconfig.h
+  '';
+
   pythonImportsCheck = [
     "frozendict"
   ];
@@ -35,6 +39,10 @@ buildPythonPackage rec {
   disabledTests = [
     # TypeError: unsupported operand type(s) for |=: 'frozendict.frozendict' and 'dict'
     "test_union"
+    # non-standard assertions
+    "test_repr"
+    "test_format"
+    "test_str"
   ];
 
   disabledTestPaths = [
diff --git a/nixpkgs/pkgs/development/python-modules/fs/default.nix b/nixpkgs/pkgs/development/python-modules/fs/default.nix
index 88aba1554445..0ab3778f55cf 100644
--- a/nixpkgs/pkgs/development/python-modules/fs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fs/default.nix
@@ -20,14 +20,17 @@
 
 buildPythonPackage rec {
   pname = "fs";
-  version = "2.4.13";
+  version = "2.4.14";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "caab4dc1561d63c92f36ee78976f6a4a01381830d8420ce34a78d4f1bb1dc95f";
+    sha256 = "9555dc2bc58c58cac03478ac7e9f622d29fe2d20a4384c24c90ab50de2c7b36c";
   };
 
   buildInputs = [ glibcLocales ];
+
+  # strong cycle with paramaterized
+  doCheck = false;
   checkInputs = [ pyftpdlib mock psutil pytestCheckHook ];
   propagatedBuildInputs = [ six appdirs pytz ]
     ++ lib.optionals (!isPy3k) [ backports_os ]
diff --git a/nixpkgs/pkgs/development/python-modules/fsspec/default.nix b/nixpkgs/pkgs/development/python-modules/fsspec/default.nix
index bb2cbe064af3..9d538214c4b4 100644
--- a/nixpkgs/pkgs/development/python-modules/fsspec/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fsspec/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "fsspec";
-  version = "2021.10.0";
+  version = "2021.10.1";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "intake";
     repo = "filesystem_spec";
     rev = version;
-    sha256 = "sha256-zvOSenK63jFC9vMLsuZT8P9NCXGdkYAB5AxvptROKes=";
+    sha256 = "sha256-LgrOHBXKs2bEgtgrdHb1OEhOeQ5Rbgr6X5YtgiqiCH0=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/ftputil/default.nix b/nixpkgs/pkgs/development/python-modules/ftputil/default.nix
index 6d84aa9ae607..501b95f81f14 100644
--- a/nixpkgs/pkgs/development/python-modules/ftputil/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ftputil/default.nix
@@ -1,13 +1,13 @@
 { stdenv, lib, buildPythonPackage, fetchPypi, pythonOlder, pytest, freezegun }:
 
 buildPythonPackage rec {
-  version = "5.0.1";
+  version = "5.0.2";
   pname = "ftputil";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "394997ccb3cd4825c6e22b5e349c62cf5016c35db4d60940f3513db66d205561";
+    sha256 = "afa2ba402235e8c6583c1d2630269628344134c9246b961ff14f182047f3e633";
   };
 
   checkInputs = [ pytest freezegun ];
diff --git a/nixpkgs/pkgs/development/python-modules/fudge/default.nix b/nixpkgs/pkgs/development/python-modules/fudge/default.nix
deleted file mode 100644
index ba97b2e8f47a..000000000000
--- a/nixpkgs/pkgs/development/python-modules/fudge/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "fudge";
-  version = "1.1.1";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1p7g6hv9qxscbzjv2n5pczpkkp55mp3s56adfc912w9qpf3rv4nr";
-  };
-
-  checkInputs = [ nose ];
-
-  checkPhase = ''
-    nosetests -v
-  '';
-
-  meta = with lib; {
-    homepage = "https://github.com/fudge-py/fudge";
-    description = "Replace real objects with fakes (mocks, stubs, etc) while testing";
-    license = licenses.mit;
-    maintainers = [ maintainers.costrouc ];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/funcparserlib/default.nix b/nixpkgs/pkgs/development/python-modules/funcparserlib/default.nix
index 19e2dd146d20..3ace04b108d4 100644
--- a/nixpkgs/pkgs/development/python-modules/funcparserlib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/funcparserlib/default.nix
@@ -1,25 +1,47 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
+, fetchpatch
+, poetry-core
 , python
-, isPy3k
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "funcparserlib";
-  version = "0.3.6";
+  version = "1.0.0a0";
+  format = "pyproject";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b7992eac1a3eb97b3d91faa342bfda0729e990bd8a43774c1592c091e563c91d";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "vlasovskikh";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-YfcboKjyc5ASzrp0duu2R6psf51MGZIeZ0owo5QNSnU=";
   };
 
-  checkPhase = ''
-    ${python.interpreter} -m unittest discover
-  '';
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  # Tests are Python 2.x only judging from SyntaxError
-  doCheck = !(isPy3k);
+  patches = [
+    # Support for poetry-core, https://github.com/vlasovskikh/funcparserlib/pull/73
+    (fetchpatch {
+      name = "support-poetry-core.patch";
+      url = "https://github.com/vlasovskikh/funcparserlib/commit/61ed558fc146b7a30879919325dfa8aae77be556.patch";
+      sha256 = "sha256-tqdR3r4/t7RWBYZeAabaN7oYf6VxkVVz006XICX9rYI=";
+    })
+  ];
+
+  pythonImportsCheck = [
+    "funcparserlib"
+  ];
 
   meta = with lib; {
     description = "Recursive descent parsing library based on functional combinators";
@@ -27,5 +49,4 @@ buildPythonPackage rec {
     license = licenses.mit;
     platforms = platforms.unix;
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/funcy/default.nix b/nixpkgs/pkgs/development/python-modules/funcy/default.nix
index 3bb16d64f1f3..2a41d9955f34 100644
--- a/nixpkgs/pkgs/development/python-modules/funcy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/funcy/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "funcy";
-  version = "1.16";
+  version = "1.17";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2775409b7dc9106283f1224d97e6df5f2c02e7291c8caed72764f5a115dffb50";
+    sha256 = "40b9b9a88141ae6a174df1a95861f2b82f2fdc17669080788b73a3ed9370e968";
   };
 
   # No tests
diff --git a/nixpkgs/pkgs/development/python-modules/furl/default.nix b/nixpkgs/pkgs/development/python-modules/furl/default.nix
index c3c45e48d663..5872ab8b7824 100644
--- a/nixpkgs/pkgs/development/python-modules/furl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/furl/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "furl";
-  version = "2.1.2";
+  version = "2.1.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-99ujPq++59vIOWNTSyXnL4FsztSKxTGR7mC/zGKTORg=";
+    sha256 = "5a6188fe2666c484a12159c18be97a1977a71d632ef5bb867ef15f54af39cc4e";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/future-fstrings/default.nix b/nixpkgs/pkgs/development/python-modules/future-fstrings/default.nix
index ffb798e6487f..c4ef6adaf455 100644
--- a/nixpkgs/pkgs/development/python-modules/future-fstrings/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/future-fstrings/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "future-fstrings";
-  version = "1.0.0";
+  version = "1.2.0";
 
   src = fetchPypi {
     inherit version;
     pname = "future_fstrings";
-    sha256 = "1pra33in6rinrcs5wvdb1rbxmx223j93ahdwhzwgf7wyfsnjda98";
+    sha256 = "6cf41cbe97c398ab5a81168ce0dbb8ad95862d3caf23c21e4430627b90844089";
   };
 
   # No tests included in Pypi archive
diff --git a/nixpkgs/pkgs/development/python-modules/future-typing/default.nix b/nixpkgs/pkgs/development/python-modules/future-typing/default.nix
new file mode 100644
index 000000000000..61a87e02253d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/future-typing/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, typing-extensions
+}:
+
+buildPythonPackage rec {
+  pname = "future-typing";
+  version = "0.4.1";
+
+  src = fetchPypi {
+    pname = "future_typing";
+    inherit version;
+    sha256 = "65fdc5034a95db212790fee5e977fb0a2df8deb60dccf3bac17d6d2b1a9bbacd";
+  };
+
+  doCheck = false; # No tests in pypi source. Did not get tests from GitHub source to work.
+
+  pythonImportsCheck = [ "future_typing" ];
+
+  meta = with lib; {
+    description = "Use generic type hints and new union syntax `|` with python 3.6+";
+    homepage = "https://github.com/PrettyWood/future-typing";
+    license = licenses.mit;
+    maintainers = with maintainers; [ kfollesdal ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gaphas/default.nix b/nixpkgs/pkgs/development/python-modules/gaphas/default.nix
new file mode 100644
index 000000000000..a6351aeeadd7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gaphas/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, poetry-core
+, gobject-introspection
+, gtk3
+, pycairo
+, pygobject3
+, typing-extensions
+}:
+
+buildPythonPackage rec {
+  pname = "gaphas";
+  version = "3.1.9";
+  disabled = pythonOlder "3.7";
+
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-S6cRsfqXYM4mSVSs2M8fET5ShFClKkGkod2w2y6F2gc=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  buildInputs = [ gobject-introspection gtk3 ];
+
+  propagatedBuildInputs = [
+    pycairo
+    pygobject3
+    typing-extensions
+  ];
+
+  pythonImportsCheck = [ "gaphas" ];
+
+  meta = with lib; {
+    description = "GTK+ based diagramming widget";
+    maintainers = with maintainers; [ wolfangaukang ];
+    homepage = "https://github.com/gaphor/gaphas";
+    license = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gateone/default.nix b/nixpkgs/pkgs/development/python-modules/gateone/default.nix
deleted file mode 100644
index 5c45e875e5da..000000000000
--- a/nixpkgs/pkgs/development/python-modules/gateone/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib
-, buildPythonPackage
-, tornado
-, futures
-, html5lib
-, pkgs
-, isPy3k
-}:
-
-buildPythonPackage {
-  pname = "gateone";
-  version = "1.2-0d57c3";
-  disabled = isPy3k;
-
-  src = pkgs.fetchFromGitHub {
-    rev = "1d0e8037fbfb7c270f3710ce24154e24b7031bea";
-    owner= "liftoff";
-    repo = "GateOne";
-    sha256 = "1ghrawlqwv7wnck6alqpbwy9mpv0y21cw2jirrvsxaracmvgk6vv";
-  };
-
-  propagatedBuildInputs = [tornado futures html5lib pkgs.openssl pkgs.cacert pkgs.openssh];
-
-  postInstall=''
-    cp -R "$out/gateone/"* $out/lib/python2.7/site-packages/gateone
-  '';
-
-  meta = with lib; {
-    homepage = "http://liftoffsoftware.com/";
-    description = "GateOne is a web-based terminal emulator and SSH client";
-    maintainers = with maintainers; [ tomberek ];
-    license = licenses.gpl3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/gbinder-python/default.nix b/nixpkgs/pkgs/development/python-modules/gbinder-python/default.nix
index caa848a19a39..42832ff45144 100644
--- a/nixpkgs/pkgs/development/python-modules/gbinder-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gbinder-python/default.nix
@@ -1,5 +1,4 @@
-{ stdenv
-, lib
+{ lib
 , fetchFromGitHub
 , buildPythonPackage
 , cython
diff --git a/nixpkgs/pkgs/development/python-modules/gcsfs/default.nix b/nixpkgs/pkgs/development/python-modules/gcsfs/default.nix
index 71945bfab412..c6e0dc18356b 100644
--- a/nixpkgs/pkgs/development/python-modules/gcsfs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gcsfs/default.nix
@@ -5,6 +5,7 @@
 , pythonOlder
 , google-auth
 , google-auth-oauthlib
+, google-cloud-storage
 , requests
 , decorator
 , fsspec
@@ -17,14 +18,15 @@
 
 buildPythonPackage rec {
   pname = "gcsfs";
-  version = "2021.10.0";
+  version = "2021.10.1";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "dask";
     repo = pname;
     rev = version;
-    sha256 = "sha256-GDVIENtNpo8cg7pplOgoDMVguZmxoUUSs860WNfhmfM=";
+    sha256 = "sha256-BME40kyxZHx9+XrMCqWYp8+q6tjeYwAw/zISMNpQxDU=";
   };
 
   propagatedBuildInputs = [
@@ -34,6 +36,7 @@ buildPythonPackage rec {
     fsspec
     google-auth
     google-auth-oauthlib
+    google-cloud-storage
     requests
     ujson
   ];
@@ -49,12 +52,14 @@ buildPythonPackage rec {
     "test_GoogleCredentials_None"
   ];
 
-  pythonImportsCheck = [ "gcsfs" ];
+  pythonImportsCheck = [
+    "gcsfs"
+  ];
 
   meta = with lib; {
     description = "Convenient Filesystem interface over GCS";
     homepage = "https://github.com/dask/gcsfs";
     license = licenses.bsd3;
-    maintainers = [ maintainers.nbren12 ];
+    maintainers = with maintainers; [ nbren12 ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/gdown/default.nix b/nixpkgs/pkgs/development/python-modules/gdown/default.nix
index 851f76128761..195a7e822d76 100644
--- a/nixpkgs/pkgs/development/python-modules/gdown/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gdown/default.nix
@@ -1,4 +1,5 @@
 { lib
+, beautifulsoup4
 , buildPythonApplication
 , fetchPypi
 , filelock
@@ -10,19 +11,31 @@
 
 buildPythonApplication rec {
   pname = "gdown";
-  version = "4.0.2";
+  version = "4.2.0";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-XSYc3mCsFW+x6aZFDNtUE9lHv9vPUvkdsqmbtFX7aQw=";
+    sha256 = "bd871c125242a9d3691aa74f360b6b5268a58c13991bb2405fdb3ec3028307dc";
   };
 
-  propagatedBuildInputs = [ filelock requests tqdm setuptools six ];
+  propagatedBuildInputs = [
+    beautifulsoup4
+    filelock
+    requests
+    tqdm
+    setuptools
+    six
+  ];
 
   checkPhase = ''
     $out/bin/gdown --help > /dev/null
   '';
 
+  pythonImportsCheck = [
+    "gdown"
+  ];
+
   meta = with lib; {
     description = "A CLI tool for downloading large files from Google Drive";
     homepage = "https://github.com/wkentaro/gdown";
diff --git a/nixpkgs/pkgs/development/python-modules/gdrivefs/default.nix b/nixpkgs/pkgs/development/python-modules/gdrivefs/default.nix
deleted file mode 100644
index 41b6a6a87f19..000000000000
--- a/nixpkgs/pkgs/development/python-modules/gdrivefs/default.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, isPy3k
-, gipc
-, greenlet
-, httplib2
-, six
-, python-dateutil
-, fusepy
-, google-api-python-client
-}:
-
-buildPythonPackage rec {
-  version = "0.14.12";
-  pname = "gdrivefs";
-  disabled = isPy3k;
-
-  src = fetchurl {
-    url = "https://github.com/dsoprea/GDriveFS/archive/${version}.tar.gz";
-    sha256 = "0m45z77idy0bs5fqlz0y534fy28ikamrd321hmqsc3q7d39kqzv0";
-  };
-
-  buildInputs = [ gipc greenlet httplib2 six ];
-  propagatedBuildInputs = [ python-dateutil fusepy google-api-python-client ];
-
-  patchPhase = ''
-    substituteInPlace gdrivefs/resources/requirements.txt \
-      --replace "==" ">="
-  '';
-
-  meta = with lib; {
-    description = "Mount Google Drive as a local file system";
-    longDescription = ''
-      GDriveFS is a FUSE wrapper for Google Drive developed. Design goals:
-      - Thread for monitoring changes via "changes" functionality of API.
-      - Complete stat() implementation.
-      - Seamlessly work around duplicate-file allowances in Google Drive.
-      - Seamlessly manage file-type versatility in Google Drive
-        (Google Doc files do not have a particular format).
-      - Allow for the same file at multiple paths.
-    '';
-    homepage = "https://github.com/dsoprea/GDriveFS";
-    license = licenses.gpl2;
-    platforms = platforms.unix;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/ge25519/default.nix b/nixpkgs/pkgs/development/python-modules/ge25519/default.nix
index 1a00108a8f8f..5c9369e005b9 100644
--- a/nixpkgs/pkgs/development/python-modules/ge25519/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ge25519/default.nix
@@ -11,11 +11,12 @@
 
 buildPythonPackage rec {
   pname = "ge25519";
-  version = "1.0.0";
+  version = "1.1.0";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-f7xvZ92zRO3GLSdfgEyhkWVwAFT2TvKHy6+iF+k43bI=";
+    sha256 = "sha256-0M9RF8tlEoLyduvY3RvltGAnsus3HF6FEy22b6w6aUs=";
   };
 
   propagatedBuildInputs = [
@@ -30,7 +31,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "ge25519" ];
+  pythonImportsCheck = [
+    "ge25519"
+  ];
 
   meta = with lib; {
     description = "Python implementation of Ed25519 group elements and operations";
diff --git a/nixpkgs/pkgs/development/python-modules/gehomesdk/default.nix b/nixpkgs/pkgs/development/python-modules/gehomesdk/default.nix
new file mode 100644
index 000000000000..855b671d2b64
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gehomesdk/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, aiohttp
+, bidict
+, buildPythonPackage
+, fetchPypi
+, humanize
+, lxml
+, pythonOlder
+, requests
+, slixmpp
+, websockets
+}:
+
+buildPythonPackage rec {
+  pname = "gehomesdk";
+  version = "0.4.22";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-3HErbW9/YD8Jd6zr5O2hjoLZ9x5P/vzZLjqPmSm09EM=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    bidict
+    humanize
+    lxml
+    requests
+    slixmpp
+    websockets
+  ];
+
+  # Tests are not shipped and source is not tagged
+  # https://github.com/simbaja/gehome/issues/32
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "gehomesdk"
+  ];
+
+  meta = with lib; {
+    description = "Python SDK for GE smart appliances";
+    homepage = "https://github.com/simbaja/gehome";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gekitchen/default.nix b/nixpkgs/pkgs/development/python-modules/gekitchen/default.nix
new file mode 100644
index 000000000000..8dc5bbdb3ae6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gekitchen/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, aiohttp
+, bidict
+, buildPythonPackage
+, fetchFromGitHub
+, humanize
+, lxml
+, pytestCheckHook
+, pythonOlder
+, requests
+, slixmpp
+, websockets
+}:
+
+buildPythonPackage rec {
+  pname = "gekitchen";
+  version = "0.2.19";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "ajmarks";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-eKGundh7j9LqFd71bx86rNBVu2iAcgLN25JfFa39+VA=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    bidict
+    humanize
+    lxml
+    requests
+    slixmpp
+    websockets
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "gekitchen"
+  ];
+
+  meta = with lib; {
+    description = "Python SDK for GE smart appliances";
+    homepage = "https://github.com/ajmarks/gekitchen";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/genanki/default.nix b/nixpkgs/pkgs/development/python-modules/genanki/default.nix
index 2c54bc4910b5..7b37be48f100 100644
--- a/nixpkgs/pkgs/development/python-modules/genanki/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/genanki/default.nix
@@ -1,37 +1,49 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k
-, cached-property, frozendict, pystache, pyyaml, pytest, pytest-runner
+{ lib
+, buildPythonPackage
+, cached-property
+, chevron
+, fetchPypi
+, frozendict
+, pystache
+, pythonOlder
+, pyyaml
 }:
 
 buildPythonPackage rec {
   pname = "genanki";
-  version = "0.11.0";
+  version = "0.12.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f2be87e3c2850bba21627d26728238f9655b448e564f8c70ab47caef558b63ef";
+    sha256 = "f787ac440ff37a3ef3389030e992e3527f000f7a69498f797033ccfad07ebe62";
   };
 
   propagatedBuildInputs = [
-    pytest-runner
     cached-property
+    chevron
     frozendict
     pystache
     pyyaml
   ];
 
-  checkInputs = [ pytest ];
-
-  disabled = !isPy3k;
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "'pytest-runner'," ""
+  '';
 
   # relies on upstream anki
   doCheck = false;
-  checkPhase = ''
-    py.test
-  '';
+
+  pythonImportsCheck = [
+    "genanki"
+  ];
 
   meta = with lib; {
-    homepage = "https://github.com/kerrickstaley/genanki";
     description = "Generate Anki decks programmatically";
+    homepage = "https://github.com/kerrickstaley/genanki";
     license = licenses.mit;
     maintainers = with maintainers; [ teto ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/generic/default.nix b/nixpkgs/pkgs/development/python-modules/generic/default.nix
new file mode 100644
index 000000000000..87dca630a1b8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/generic/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "generic";
+  version = "1.0.1";
+  disabled = pythonOlder "3.7";
+
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-ex93I+ofo5lP6qoolZwzjxSspeqJimY3vpB32RLJ00k=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  pythonImportsCheck = [ "generic" ];
+
+  meta = with lib; {
+    description = "Generic programming (Multiple dispatch) library for Python";
+    maintainers = with maintainers; [ wolfangaukang ];
+    homepage = "https://github.com/gaphor/generic";
+    license = licenses.bsdOriginal;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix b/nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix
index 077523bdb482..d32eea8cedbc 100644
--- a/nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "GeoAlchemy2";
-  version = "0.9.4";
+  version = "0.10.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b0e56d4a945bdc0f8fa9edd50ecc912889ea68e0e3558a19160dcb0d5b1b65fc";
+    sha256 = "d97f85a4ff84341c12b1d7a6fee5ab5e5e942271279684310bb2f507b6ee5c53";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/geoip2/default.nix b/nixpkgs/pkgs/development/python-modules/geoip2/default.nix
index fcf2441b2e83..2a626c9c9ea8 100644
--- a/nixpkgs/pkgs/development/python-modules/geoip2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/geoip2/default.nix
@@ -8,13 +8,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "4.4.0";
+  version = "4.5.0";
   pname = "geoip2";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f150bed3190d543712a17467208388d31bd8ddb49b2226fba53db8aaedb8ba89";
+    sha256 = "b542252e87eb40adc3a2fc0f4e84b514c4c5e04ed46923a3a74d509f25f3103a";
   };
 
   patchPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/geopandas/default.nix b/nixpkgs/pkgs/development/python-modules/geopandas/default.nix
index 82acdbb8548e..b62b2c67ef78 100644
--- a/nixpkgs/pkgs/development/python-modules/geopandas/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/geopandas/default.nix
@@ -1,32 +1,19 @@
-{ lib, stdenv, buildPythonPackage, fetchFromGitHub, fetchpatch, pythonOlder
+{ lib, stdenv, buildPythonPackage, fetchFromGitHub, pythonOlder
 , pandas, shapely, fiona, pyproj
 , pytestCheckHook, Rtree }:
 
 buildPythonPackage rec {
   pname = "geopandas";
-  version = "0.9.0";
+  version = "0.10.2";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "geopandas";
     repo = "geopandas";
     rev = "v${version}";
-    sha256 = "sha256-58X562OkRzZ4UTNMTwXW4U5czoa5tbSMBCcE90DqbaE=";
+    sha256 = "14azl3gppqn90k8h4hpjilsivj92k6p1jh7mdr6p4grbww1b7sdq";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "skip-pandas-master-fillna-test.patch";
-      url = "https://github.com/geopandas/geopandas/pull/1878.patch";
-      sha256 = "1yw3i4dbhaq7f02n329b9y2cqxbwlz9db81mhgrfc7af3whwysdb";
-    })
-    (fetchpatch {
-      name = "fix-proj4strings-test.patch";
-      url = "https://github.com/geopandas/geopandas/pull/1958.patch";
-      sha256 = "0kzmpq5ry87yvhqr6gnh9p2606b06d3ynzjvw0hpp9fncczpc2yn";
-    })
-  ];
-
   propagatedBuildInputs = [
     pandas
     shapely
@@ -35,6 +22,10 @@ buildPythonPackage rec {
   ];
 
   doCheck = !stdenv.isDarwin;
+  preCheck = ''
+    # Wants to write test files into $HOME.
+    export HOME="$TMPDIR"
+  '';
   checkInputs = [ pytestCheckHook Rtree ];
   disabledTests = [
     # requires network access
diff --git a/nixpkgs/pkgs/development/python-modules/geopy/2.nix b/nixpkgs/pkgs/development/python-modules/geopy/2.nix
deleted file mode 100644
index 48df43e22173..000000000000
--- a/nixpkgs/pkgs/development/python-modules/geopy/2.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, geographiclib
-}:
-
-buildPythonPackage rec {
-  pname = "geopy";
-  version = "1.22.0";
-
-  disabled = !isPy27; # only Python 2.7
-  doCheck = false; # Needs network access
-
-  propagatedBuildInputs = [ geographiclib ];
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0jypkaqlbyr8icqypwm23lzsvq7flakp3a3nqr8ib5fmd0fzsq7q";
-  };
-
-  meta = with lib; {
-    homepage = "https://github.com/geopy/geopy";
-    description = "Python Geocoding Toolbox";
-    license = licenses.mit;
-    maintainers = with maintainers; [GuillaumeDesforges];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/gevent-websocket/default.nix b/nixpkgs/pkgs/development/python-modules/gevent-websocket/default.nix
index 24af4416ab3c..5e93fb32b9e7 100644
--- a/nixpkgs/pkgs/development/python-modules/gevent-websocket/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gevent-websocket/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, isPy3k
 , gevent
 , gunicorn
 }:
diff --git a/nixpkgs/pkgs/development/python-modules/geventhttpclient/default.nix b/nixpkgs/pkgs/development/python-modules/geventhttpclient/default.nix
index fd759a0bd723..7e30b8e83f49 100644
--- a/nixpkgs/pkgs/development/python-modules/geventhttpclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/geventhttpclient/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "geventhttpclient";
-  version = "1.5.1";
+  version = "1.5.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4aead64253d2769a6528544f7812ce8d71ae13551d079f2d9a3533d72818f2e0";
+    sha256 = "d80ec9ff42b7219f33558185499d0b4365597fc55ff886207b45f5632e099780";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/ghapi/default.nix b/nixpkgs/pkgs/development/python-modules/ghapi/default.nix
new file mode 100644
index 000000000000..428215eeee59
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ghapi/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, fastcore
+, packaging
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "ghapi";
+  version = "0.1.19";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "fastai";
+    repo = "ghapi";
+    rev = version;
+    sha256 = "sha256-UV2cfotRad9jg/X3pOysKJyMi4/XKt24kf6F4aw4vcI=";
+  };
+
+  propagatedBuildInputs = [
+    fastcore
+    packaging
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "ghapi"
+  ];
+
+  meta = with lib; {
+    description = "Python interface to GitHub's API";
+    homepage = "https://github.com/fastai/ghapi";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ghp-import/default.nix b/nixpkgs/pkgs/development/python-modules/ghp-import/default.nix
index 0d5506009a75..03aabc4ab6e2 100644
--- a/nixpkgs/pkgs/development/python-modules/ghp-import/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ghp-import/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "ghp-import";
-  version = "1.1.0";
+  version = "2.0.2";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-wiqc4Qw3dT4miNFk12WnANrkuNefptsKLDEyuniBiU8=";
+    hash = "sha256-lHs3cfEb6FDIUsZLVhxgD93feUurNjBghUwe560F4HE=";
   };
 
   propagatedBuildInputs = [ python-dateutil ];
diff --git a/nixpkgs/pkgs/development/python-modules/ghrepo-stats/default.nix b/nixpkgs/pkgs/development/python-modules/ghrepo-stats/default.nix
new file mode 100644
index 000000000000..0552dbbf62dc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ghrepo-stats/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, matplotlib
+, PyGithub
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "ghrepo-stats";
+  version = "0.3.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "mrbean-bremen";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-W6RhVnMuOgB4GNxczx3UlSeq0RWIM7yISKEvpnrE9uk=";
+  };
+
+  propagatedBuildInputs = [
+    matplotlib
+    PyGithub
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "ghrepo_stats"
+  ];
+
+  meta = with lib; {
+    description = "Python module and CLI tool for GitHub repo statistics";
+    homepage = "https://github.com/mrbean-bremen/ghrepo-stats";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gigalixir/default.nix b/nixpkgs/pkgs/development/python-modules/gigalixir/default.nix
index 089c4240f293..e7d19091605d 100644
--- a/nixpkgs/pkgs/development/python-modules/gigalixir/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gigalixir/default.nix
@@ -16,11 +16,11 @@
 
 buildPythonApplication rec {
   pname = "gigalixir";
-  version = "1.2.3";
+  version = "1.2.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1b7a9aed7e61a3828f5a11774803edc39358e2ac463b3b5e52af267f3420dc66";
+    sha256 = "894b7e5bef30abc2c003e6df47f7758de5649b6f593e33926fcd398cc88d9ce2";
   };
 
   postPatch = ''
@@ -50,6 +50,6 @@ buildPythonApplication rec {
     description = "Gigalixir Command-Line Interface";
     homepage = "https://github.com/gigalixir/gigalixir-cli";
     license = licenses.mit;
-    maintainers = with maintainers; [ superherointj ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/gin-config/default.nix b/nixpkgs/pkgs/development/python-modules/gin-config/default.nix
index 14842541d6ce..1c6c4fabaa37 100644
--- a/nixpkgs/pkgs/development/python-modules/gin-config/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gin-config/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "gin-config";
-  version = "0.4.0";
+  version = "0.5.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9499c060e1faa340959fc4ada7fe53f643d6f8996a80262b28a082c1ef6849de";
+    sha256 = "0c6ea5026ded927c8c93c990b01c695257c1df446e45e549a158cfbc79e19ed6";
 
   };
 
diff --git a/nixpkgs/pkgs/development/python-modules/gistyc/default.nix b/nixpkgs/pkgs/development/python-modules/gistyc/default.nix
new file mode 100644
index 000000000000..51003101abde
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/gistyc/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, certifi
+, click
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "gistyc";
+  version = "1.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-WVK45U9e3qyZFi9wSRHNi9+1u4TetlZkYXAZN7LVqhE=";
+  };
+
+  propagatedBuildInputs = [
+    certifi
+    click
+    requests
+  ];
+
+  pythonImportsCheck = [
+    "gistyc"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/ThomasAlbin/gistyc";
+    description = "A Python based GitHub GIST management tool";
+    longDescription = ''
+      gistyc is a Python-based library that enables developers to create, update
+      and delete their GitHub GISTs. CLI capabilities allow you to execute the
+      routines from the shell and can be integrated into your project's CI/CD
+      pipeline to automatically create or update your GISTs (e.g., via GitHub
+      actions). Files are separated in GIST sections depending on the separation
+      blocks.
+    '';
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/git-filter-repo/default.nix b/nixpkgs/pkgs/development/python-modules/git-filter-repo/default.nix
index ac0ee8038582..e6a434c38bd3 100644
--- a/nixpkgs/pkgs/development/python-modules/git-filter-repo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/git-filter-repo/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "git-filter-repo";
-  version = "2.33.0";
+  version = "2.34.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1nxfd5yv8ri7w5pzxclxs0yd317nsdcwvw87ancmdkh69xvx1f2f";
+    sha256 = "sha256-taCfODhl3goWSwa6F0Rh5V2RZ8xvuwbPKh5i2/DNumM=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/gitdb/default.nix b/nixpkgs/pkgs/development/python-modules/gitdb/default.nix
index a5fa11578146..0895270d6c9c 100644
--- a/nixpkgs/pkgs/development/python-modules/gitdb/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gitdb/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "gitdb";
-  version = "4.0.7";
+  version = "4.0.9";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "96bf5c08b157a666fec41129e6d327235284cca4c81e92109260f353ba138005";
+    sha256 = "bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa";
   };
 
   propagatedBuildInputs = [ smmap ];
diff --git a/nixpkgs/pkgs/development/python-modules/github-to-sqlite/default.nix b/nixpkgs/pkgs/development/python-modules/github-to-sqlite/default.nix
index 7853854ccd81..dbdc4be45900 100644
--- a/nixpkgs/pkgs/development/python-modules/github-to-sqlite/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/github-to-sqlite/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "github-to-sqlite";
-  version = "2.8.2";
+  version = "2.8.3";
   disabled = !isPy3k;
 
   src = fetchFromGitHub {
     owner = "dogsheep";
     repo = pname;
     rev = version;
-    sha256 = "16mw429ppnhgsa98qs3fhprqvdpqbr5q1biq3ql8rsf38difdbl8";
+    sha256 = "sha256-4wkwtcChcR7XH421wa3dGdIPhwgeaTFk247zIRX98xo=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/github3_py/default.nix b/nixpkgs/pkgs/development/python-modules/github3_py/default.nix
index 68e277d0b1a5..1f5c983e14f3 100644
--- a/nixpkgs/pkgs/development/python-modules/github3_py/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/github3_py/default.nix
@@ -18,11 +18,11 @@
 
 buildPythonPackage rec {
   pname = "github3.py";
-  version = "2.0.0";
+  version = "3.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8dd4ac612fd60cb277eaf6e2ce02f68dda54aba06870ca6fa2b28369bf39aa14";
+    sha256 = "a9134cb9efd334b1644ad7c5ee3ff3ff488317c4549ffc0e8d82e4d63383a1a4";
   };
 
   checkInputs = [ betamax pytest betamax-matchers ]
diff --git a/nixpkgs/pkgs/development/python-modules/glances-api/default.nix b/nixpkgs/pkgs/development/python-modules/glances-api/default.nix
index 1ec6ce334200..e9d68685a3f1 100644
--- a/nixpkgs/pkgs/development/python-modules/glances-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/glances-api/default.nix
@@ -1,29 +1,50 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, aiohttp
-, async-timeout
+, httpx
+, poetry-core
+, pytest-asyncio
+, pytest-httpx
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "glances-api";
-  version = "0.2.1";
+  version = "0.3.2";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "home-assistant-ecosystem";
     repo = "python-glances-api";
     rev = version;
-    sha256 = "sha256-mbkZZg2fmus4kOXFxHE/UV/nxemFAsoEZu8IUa7SPsg=";
+    sha256 = "sha256-zVK63SI8ZeVrY2iEEkgp8pq6RDheKeApb9/RWgZCKGI=";
   };
 
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
   propagatedBuildInputs = [
-    aiohttp
-    async-timeout
+    httpx
   ];
 
-  # no tests are present
-  doCheck = false;
-  pythonImportsCheck = [ "glances_api" ];
+  checkInputs = [
+    pytest-asyncio
+    pytest-httpx
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'httpx = ">=0.20,<1"' 'httpx = ">=0.19,<1"'
+  '';
+
+  pythonImportsCheck = [
+    "glances_api"
+  ];
 
   meta = with lib; {
     description = "Python API for interacting with Glances";
diff --git a/nixpkgs/pkgs/development/python-modules/glcontext/default.nix b/nixpkgs/pkgs/development/python-modules/glcontext/default.nix
index c5a06fb6499a..32fdae1b3f2c 100644
--- a/nixpkgs/pkgs/development/python-modules/glcontext/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/glcontext/default.nix
@@ -4,8 +4,6 @@
 , isPy3k
 , libGL
 , libX11
-, pytestCheckHook
-, psutil
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/glean-parser/default.nix b/nixpkgs/pkgs/development/python-modules/glean-parser/default.nix
new file mode 100644
index 000000000000..8a774e660751
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/glean-parser/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, pythonOlder
+, setuptools-scm
+# build inputs
+, appdirs
+, click
+, diskcache
+, jinja2
+, jsonschema
+, pyyaml
+, yamllint
+}:
+
+buildPythonPackage rec {
+  pname = "glean_parser";
+  version = "4.3.1";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-wZSro1pX/50TlSfFMh71JlmXlJlONVutTDFL06tkw+s=";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py --replace "pytest-runner" ""
+  '';
+
+  propagatedBuildInputs = [
+    appdirs
+    click
+    diskcache
+    jinja2
+    jsonschema
+    pyyaml
+    yamllint
+  ];
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+  disabledTests = [
+    # https://bugzilla.mozilla.org/show_bug.cgi?id=1741668
+    "test_validate_ping"
+  ];
+
+  pythonImportsCheck = [ "glean_parser" ];
+
+  meta = with lib; {
+    description = "Tools for parsing the metadata for Mozilla's glean telemetry SDK";
+    homepage = "https://github.com/mozilla/glean_parser";
+    license = licenses.mpl20;
+    maintainers = [ maintainers.kvark ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/glean-sdk/default.nix b/nixpkgs/pkgs/development/python-modules/glean-sdk/default.nix
new file mode 100644
index 000000000000..e729d927cdae
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/glean-sdk/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, rustPlatform
+, rustc
+, cargo
+, setuptools-rust
+# build inputs
+, cffi
+, glean-parser
+}:
+
+buildPythonPackage rec {
+  pname = "glean-sdk";
+  version = "42.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-X2p6KQnEB6ZHdCHGFVEoEMiI+0R2vfGqel+jFKTcx74=";
+  };
+
+  patches = [
+    # Fix the environment for spawned process
+    # https://github.com/mozilla/glean/pull/1542
+    ./fix-spawned-process-environment.patch
+  ];
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    name = "${pname}-${version}";
+    sha256 = "sha256-/+rKGPYTLovgjTGL2F/pWzlUy1tY207yuJz3Xdhm1hg=";
+  };
+
+  nativeBuildInputs = [
+    rustc
+    cargo
+    setuptools-rust
+    rustPlatform.cargoSetupHook
+  ];
+  propagatedBuildInputs = [
+    cffi
+    glean-parser
+  ];
+
+  pythonImportsCheck = [ "glean" ];
+
+  meta = with lib; {
+    description = "Modern cross-platform telemetry client libraries and are a part of the Glean project";
+    homepage = "https://mozilla.github.io/glean/book/index.html";
+    license = licenses.mpl20;
+    maintainers = [ maintainers.kvark ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/glean-sdk/fix-spawned-process-environment.patch b/nixpkgs/pkgs/development/python-modules/glean-sdk/fix-spawned-process-environment.patch
new file mode 100644
index 000000000000..f9a7b2723eba
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/glean-sdk/fix-spawned-process-environment.patch
@@ -0,0 +1,20 @@
+diff --git a/glean-core/python/glean/_process_dispatcher.py b/glean-core/python/glean/_process_dispatcher.py
+index 33a8b12796..a39b54a917 100644
+--- a/glean-core/python/glean/_process_dispatcher.py
++++ b/glean-core/python/glean/_process_dispatcher.py
+@@ -120,8 +120,14 @@ def dispatch(cls, func, args) -> Union[_SyncWorkWrapper, subprocess.Popen]:
+                     Path(".coveragerc").absolute()
+                 )
+ 
++            # Explicitly pass the contents of `sys.path` as `PYTHONPATH` to the
++            # subprocess so that there aren't any module search path
++            # differences.
++            python_path = ":".join(sys.path)[1:]
++
+             p = subprocess.Popen(
+-                [sys.executable, _process_dispatcher_helper.__file__, payload]
++                [sys.executable, _process_dispatcher_helper.__file__, payload],
++                env={"PYTHONPATH": python_path},
+             )
+ 
+             cls._last_process = p
diff --git a/nixpkgs/pkgs/development/python-modules/glfw/default.nix b/nixpkgs/pkgs/development/python-modules/glfw/default.nix
index 107f7afb9690..ab42e8fffbfb 100644
--- a/nixpkgs/pkgs/development/python-modules/glfw/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/glfw/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "glfw";
-  version = "2.2.0";
+  version = "2.5.0";
 
   src = fetchFromGitHub {
     owner = "FlorianRhiem";
     repo = "pyGLFW";
     rev = "v${version}";
-    sha256 = "1ygcwnh0x07yi87wkxykw566g74vfi8n0w2rzypidhdss14x3pvf";
+    sha256 = "15kk0zhhja0yqah09wzpg6912zd5bjmk84ab1n5nwryicpg44hqk";
   };
 
   # Patch path to GLFW shared object
diff --git a/nixpkgs/pkgs/development/python-modules/glom/default.nix b/nixpkgs/pkgs/development/python-modules/glom/default.nix
index 89f0de474901..d30a0c7eb1cb 100644
--- a/nixpkgs/pkgs/development/python-modules/glom/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/glom/default.nix
@@ -6,7 +6,6 @@
 , face
 , pytest
 , pyyaml
-, isPy37
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/glymur/default.nix b/nixpkgs/pkgs/development/python-modules/glymur/default.nix
index f14245865f59..40748f86954e 100644
--- a/nixpkgs/pkgs/development/python-modules/glymur/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/glymur/default.nix
@@ -10,6 +10,7 @@
 , mock
 , importlib-resources
 , isPy27
+, lxml
 }:
 
 buildPythonPackage rec {
@@ -31,6 +32,7 @@ buildPythonPackage rec {
     scikitimage
     procps
     pytestCheckHook
+    lxml
   ];
 
   postConfigure = ''
diff --git a/nixpkgs/pkgs/development/python-modules/gmpy2/default.nix b/nixpkgs/pkgs/development/python-modules/gmpy2/default.nix
index 204415d75315..c4b0dbf200b3 100644
--- a/nixpkgs/pkgs/development/python-modules/gmpy2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gmpy2/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , isPyPy
 , gmp
 , mpfr
diff --git a/nixpkgs/pkgs/development/python-modules/gntp/default.nix b/nixpkgs/pkgs/development/python-modules/gntp/default.nix
index cde1f9bb8ca6..364a59732e11 100644
--- a/nixpkgs/pkgs/development/python-modules/gntp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gntp/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, nose }:
+{ lib, buildPythonPackage, fetchPypi }:
 
 buildPythonPackage rec {
   pname = "gntp";
diff --git a/nixpkgs/pkgs/development/python-modules/gnutls/default.nix b/nixpkgs/pkgs/development/python-modules/gnutls/default.nix
deleted file mode 100644
index 3c68a1713a0a..000000000000
--- a/nixpkgs/pkgs/development/python-modules/gnutls/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, pkgs
-}:
-
-buildPythonPackage rec {
-  pname = "python-gnutls";
-  version = "3.1.3";
-
-  # https://github.com/AGProjects/python-gnutls/issues/2
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "79f94017e6472ac665c85bc16d68aa2e6681f53b6a9e74516557b49b6fc6a651";
-  };
-
-  propagatedBuildInputs = [ pkgs.gnutls ];
-  patchPhase = ''
-    substituteInPlace gnutls/library/__init__.py --replace "/usr/local/lib" "${pkgs.gnutls.out}/lib"
-  '';
-
-  meta = with lib; {
-    description = "Python wrapper for the GnuTLS library";
-    homepage = "https://github.com/AGProjects/python-gnutls";
-    license = licenses.lgpl2;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/goalzero/default.nix b/nixpkgs/pkgs/development/python-modules/goalzero/default.nix
index b2cf6e7eadaf..d21b6335a7ff 100644
--- a/nixpkgs/pkgs/development/python-modules/goalzero/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/goalzero/default.nix
@@ -1,31 +1,32 @@
 { lib
+, aiohttp
 , buildPythonPackage
-, pythonOlder
 , fetchPypi
-, aiohttp
-, ratelimit
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "goalzero";
-  version = "0.2.0";
+  version = "0.2.1";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6cb67cf772a758225b2e23b394feb697e8cbfb1aff5a2d7a17a0d4ccf61e55cd";
+    sha256 = "sha256-PveHE317p5fGSxgx7LQkpRYF55HwdzpZFY8/F8s3CBQ=";
   };
 
   propagatedBuildInputs = [
     aiohttp
-    ratelimit
   ];
 
   # no tests implemented
   doCheck = false;
 
-  pythonImportsCheck = [ "goalzero" ];
+  pythonImportsCheck = [
+    "goalzero"
+  ];
 
   meta = with lib; {
     description = "Goal Zero Yeti REST Api Library";
diff --git a/nixpkgs/pkgs/development/python-modules/goodwe/default.nix b/nixpkgs/pkgs/development/python-modules/goodwe/default.nix
new file mode 100644
index 000000000000..567ffef56e69
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/goodwe/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "goodwe";
+  version = "0.2.9";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "marcelblijleven";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0l895nyq2g7isvim2fx4ivdh3xzhyc10yzqvqnlg3fr56l5srfch";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "'marcelblijleven@gmail.com" "marcelblijleven@gmail.com" \
+      --replace "version: file: VERSION" "version = ${version}"
+  '';
+
+  pythonImportsCheck = [
+    "goodwe"
+  ];
+
+  meta = with lib; {
+    description = "Python library for connecting to GoodWe inverter";
+    homepage = "https://github.com/marcelblijleven/goodwe";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google-api-core/default.nix b/nixpkgs/pkgs/development/python-modules/google-api-core/default.nix
index b434a92923cb..9d548b685efd 100644
--- a/nixpkgs/pkgs/development/python-modules/google-api-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-api-core/default.nix
@@ -4,41 +4,67 @@
 , google-auth
 , googleapis-common-protos
 , grpcio
+, grpcio-status
 , protobuf
 , proto-plus
 , requests
 , mock
-, pytest
 , pytest-asyncio
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "google-api-core";
-  version = "2.1.0";
+  version = "2.2.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-XsJ7lCs00EVZy/NnRDC7g/w9dOfTK4u9McRGbnF0C4M=";
+    sha256 = "97349cc18c2bb2415f64f1353a80273a289a61294ce3eb2f7ce682d251bdd997";
   };
 
   propagatedBuildInputs = [
     googleapis-common-protos
     google-auth
     grpcio
+    grpcio-status
     protobuf
     proto-plus
     requests
   ];
 
-  checkInputs = [ mock pytest-asyncio pytestCheckHook ];
+  checkInputs = [
+    mock
+    pytest-asyncio
+    pytestCheckHook
+  ];
 
   # prevent google directory from shadowing google imports
   preCheck = ''
     rm -r google
   '';
 
-  pythonImportsCheck = [ "google.api_core" ];
+  disabledTests = [
+    # Those grpc_helpers tests are failing
+    "test_wrap_unary_errors"
+    "test_wrap_stream_errors_raised"
+    "test_wrap_stream_errors_read"
+    "test_wrap_stream_errors_aiter"
+    "test_wrap_stream_errors_write"
+    "test_wrap_unary_errors"
+    "test___next___w_rpc_error"
+    "test_wrap_stream_errors_invocation"
+    "test_wrap_stream_errors_iterator_initialization"
+    "test_wrap_stream_errors_during_iteration"
+    "test_exception_with_error_code"
+  ];
+
+  pythonImportsCheck = [
+    "google.api_core"
+  ];
 
   meta = with lib; {
     description = "Core Library for Google Client Libraries";
diff --git a/nixpkgs/pkgs/development/python-modules/google-api-python-client/default.nix b/nixpkgs/pkgs/development/python-modules/google-api-python-client/default.nix
index b612a58c4f9e..185c7579e4f7 100644
--- a/nixpkgs/pkgs/development/python-modules/google-api-python-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-api-python-client/default.nix
@@ -1,24 +1,41 @@
-{ lib, buildPythonPackage, fetchPypi
-, google-auth, google-auth-httplib2, google-api-core
-, httplib2, six, uritemplate, oauth2client, setuptools }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, google-auth
+, google-auth-httplib2
+, google-api-core
+, httplib2
+, uritemplate
+, oauth2client
+, setuptools
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "google-api-python-client";
-  version = "2.25.0";
+  version = "2.31.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-dNgF7xC4sfWL04U53T0D+vEYj2TuPKQorAQtU59fVcc=";
+    sha256 = "3f64a5eee6fa03ab51806dccf48e342fda83fea60c290518c6a2dfdbf2de9efd";
   };
 
-  # No tests included in archive
-  doCheck = false;
-
   propagatedBuildInputs = [
-    google-auth google-auth-httplib2 google-api-core
-    httplib2 six uritemplate oauth2client setuptools
+    google-auth
+    google-auth-httplib2
+    google-api-core
+    httplib2
+    uritemplate
+    oauth2client
+    setuptools
   ];
 
+  # No tests included in archive
+  doCheck = false;
+
   pythonImportsCheck = [
     "googleapiclient"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-auth-httplib2/default.nix b/nixpkgs/pkgs/development/python-modules/google-auth-httplib2/default.nix
index ceaec714176f..0109175ab85c 100644
--- a/nixpkgs/pkgs/development/python-modules/google-auth-httplib2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-auth-httplib2/default.nix
@@ -1,5 +1,4 @@
 { lib
-, isPy3k
 , buildPythonPackage
 , fetchPypi
 , flask
diff --git a/nixpkgs/pkgs/development/python-modules/google-auth/default.nix b/nixpkgs/pkgs/development/python-modules/google-auth/default.nix
index 69cd26625093..b51a5569a595 100644
--- a/nixpkgs/pkgs/development/python-modules/google-auth/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-auth/default.nix
@@ -1,7 +1,6 @@
 { stdenv
 , lib
 , buildPythonPackage
-, fetchpatch
 , fetchPypi
 , pytestCheckHook
 , cachetools
@@ -19,11 +18,11 @@
 
 buildPythonPackage rec {
   pname = "google-auth";
-  version = "2.3.0";
+  version = "2.3.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-KAD2360pxs7V+vnKDDjqi6Hr4lWbEMApvQIePeMwFic=";
+    sha256 = "d83570a664c10b97a1dc6f8df87e5fdfff012f48f62be131e449c20dfc32630e";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix
index a3ecf1a6ec4b..05963856edce 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix
@@ -1,20 +1,25 @@
-{ lib, buildPythonPackage, fetchPypi, google-api-core }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, google-api-core
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "google-cloud-access-context-manager";
-  version = "0.1.8";
+  version = "0.1.9";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "29101f61fa0e07db6385a94da45aef8edb4efde0d2b700fbbf65164c045744a8";
+    sha256 = "249a1c1a858bb182b73749784457baacfcab8e7c13da5f3421109d5b8dace5b8";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "google-api-core[grpc] >= 1.26.0, < 2.0.0dev" "google-api-core[grpc] >= 1.26.0, < 2.0.1"
-  '';
-
-  propagatedBuildInputs = [ google-api-core ];
+  propagatedBuildInputs = [
+    google-api-core
+  ];
 
   # No tests in repo
   doCheck = false;
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-appengine-logging/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-appengine-logging/default.nix
index 0bfd6945b128..67296f667ab2 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-appengine-logging/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-appengine-logging/default.nix
@@ -7,16 +7,15 @@
 , proto-plus
 , pytest-asyncio
 , pytestCheckHook
-, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-appengine-logging";
-  version = "1.0.0";
+  version = "1.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f10760c7df7052e63a79547b36fb439ab8a0f72fe28ff8356a0755c45ab75412";
+    sha256 = "91fe9b0833f6e1a46293dcc0e483716372c9ff4a95ebe51276c5f0092cb9defd";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-asset/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-asset/default.nix
index 8a48df97f97d..4e25662b5796 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-asset/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-asset/default.nix
@@ -16,11 +16,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-asset";
-  version = "3.7.0";
+  version = "3.7.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "48b8081700eeaa92f8921d5aff6a5287c0eb47a3cc483f2032105290ce0454b5";
+    sha256 = "848b3028d87358666c50b36253404c15d0a83686700c4586475997b1478d71d5";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-audit-log/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-audit-log/default.nix
index 88e2378aaf74..fabd8dad68e2 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-audit-log/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-audit-log/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-audit-log";
-  version = "0.1.1";
+  version = "0.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a87fdf3c393b830b35c8f7db09094790d0d7babb35068736bea64e1618d286fe";
+    sha256 = "d0852f525ad65705f9fbff6288be4493e1449a7906fb5e01bd71c8d1e424d1fc";
   };
 
   propagatedBuildInputs = [ googleapis-common-protos protobuf ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-automl/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-automl/default.nix
index 98ff29921d0e..d901bb78cddb 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-automl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-automl/default.nix
@@ -14,11 +14,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-automl";
-  version = "2.5.0";
+  version = "2.5.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c360f40f4c63e16ae6dfe701892bb74a1055169e58f1ef39136809eecf73264e";
+    sha256 = "4c759ae99979d9f94ed0bdfe4937f41c81634f934ec11d25eb089430781eafec";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
index 9caa65ae1f93..903db740c09f 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-bigquery-datatransfer";
-  version = "3.4.0";
+  version = "3.4.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "672a86089093e94ccbb3f95dd315f1152ecd239cfab49e1963d217929bab3bcc";
+    sha256 = "fdc8cb68a3ee54780f673f06b3cce83a5bb5d600db7ad363c85e38bf45afb59c";
   };
 
   propagatedBuildInputs = [ google-api-core libcst proto-plus pytz ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix
index 60aea98d9b01..32988e35deac 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix
@@ -7,16 +7,15 @@
 , proto-plus
 , pytest-asyncio
 , pytestCheckHook
-, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-bigquery-logging";
-  version = "1.0.0";
+  version = "1.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a85d11c28733792ee55218fce7786f51fdd013c79ff1d92531ffd50a8a51692c";
+    sha256 = "3cdbf4f82199d2ee0d07fa2c75527661fe034130e27e5c05fd070ed615cd7e23";
   };
 
   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 b96d61bf6724..5daa88ed9492 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery/default.nix
@@ -18,11 +18,12 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-bigquery";
-  version = "2.28.1";
+  version = "2.30.1";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-DiNT2X5SktyM5URHtxL7nolJbnFLXKz8PVNmFNHEYdw=";
+    sha256 = "4e3b5e3dcc475d5a601d84872ac0b63e059540be2251b1c4165c51106d572855";
   };
 
   propagatedBuildInputs = [
@@ -59,6 +60,8 @@ buildPythonPackage rec {
     "test_list_rows_page_size"
     "test_list_rows_scalars"
     "test_list_rows_scalars_extreme"
+    "test_dry_run"
+    "test_session"
     # Mocking of _ensure_bqstorage_client fails
     "test_to_arrow_ensure_bqstorage_client_wo_bqstorage"
     # requires network
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-container/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-container/default.nix
index c388429e56a7..7eb9808c7a2d 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-container/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-container/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-container";
-  version = "2.10.0";
+  version = "2.10.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3804e37865b4d63ac39eac3f8f184225db16bbc69f201b4d54abe6b68f170e60";
+    sha256 = "939970cd09384dde6d6f6758b03648fd8f52fe5c2f83f73300575f7e4e3b2ee0";
   };
 
   propagatedBuildInputs = [ google-api-core grpc-google-iam-v1 libcst proto-plus ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-core/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-core/default.nix
index 657fe314b94e..0351bd51e2ee 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-core/default.nix
@@ -1,21 +1,18 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pythonOlder
 , pytestCheckHook
-, python
 , google-api-core
-, grpcio
 , mock
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-core";
-  version = "2.1.0";
+  version = "2.2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-NaH18CqG4PouKMZp8NtKdtkoZxoo+7u0k6tZup0cuak=";
+    sha256 = "476d1f71ab78089e0638e0aaf34bfdc99bab4fce8f4170ba6321a5243d13c5c7";
   };
 
   propagatedBuildInputs = [ google-api-core ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-datacatalog/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-datacatalog/default.nix
index 74410ea129df..0e0d5982c6e2 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-datacatalog/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-datacatalog/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-datacatalog";
-  version = "3.4.3";
+  version = "3.6.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1b0f7bb8aaf8a3e0f4b4509808ee9e1de77b5f076214b0b3e52e0ce86734fd84";
+    sha256 = "136fb153740d4154d8c9ef306284f7f899399de45eef2c9027ca3e56249c4e2d";
   };
 
   propagatedBuildInputs = [ libcst google-api-core grpc-google-iam-v1 proto-plus ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-dataproc/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-dataproc/default.nix
index 1ea514ef9ecd..7f26b2df28ca 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-dataproc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-dataproc/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-dataproc";
-  version = "3.0.0";
+  version = "3.1.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-a81HBeNoLXSpJJJ0BBqJz24ls0TFMwiHJgkkNyHZGvo=";
+    sha256 = "e012d76aa32b918c71392c11e1c727328c1570364f8d8e0676e52bc64c57a7af";
   };
 
   propagatedBuildInputs = [ google-api-core libcst proto-plus ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-datastore/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-datastore/default.nix
index f1449bbccd0a..0ea9c3e5e33f 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-datastore/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-datastore/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-datastore";
-  version = "2.1.6";
+  version = "2.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-31PBHWnU0KbX8ymFh7+dP0uVbM6BWexdaumMVQbBO6o=";
+    sha256 = "4a6f04112f2685a0a5cd8c7cb7946572bb7e0f6ca7cbe0088514006fca8594ca";
   };
 
   propagatedBuildInputs = [
@@ -41,7 +41,10 @@ buildPythonPackage rec {
 
   disabledTestPaths = [
     # Requires credentials
-    "tests/system/test_system.py"
+    "tests/system/test_allocate_reserve_ids.py"
+    "tests/system/test_query.py"
+    "tests/system/test_put.py"
+    "tests/system/test_transaction.py"
   ];
 
   pythonImportsCheck = [
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 f4b6301f218a..8773b09e59a9 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-dlp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-dlp/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-dlp";
-  version = "3.2.4";
+  version = "3.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-5Z4/jUXyBlC1vpuwS7dPrTRFw1lqf+GGjm2fqFfIOjQ=";
+    sha256 = "0b249fa87deb57f5c7107a7d5d303673590a6524a7f113fc95f87493f3328606";
   };
 
   propagatedBuildInputs = [ google-api-core libcst proto-plus pytz ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-error-reporting/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-error-reporting/default.nix
index 3e1a1c93bfb4..c8edb677c64b 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-error-reporting/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-error-reporting/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-error-reporting";
-  version = "1.3.0";
+  version = "1.4.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a5482a7b05ac3be13a3d96db32d158cb4cebf0ac35c82c3a27ee2fd9aa0dcc25";
+    sha256 = "4a72a65586178daaacf6bbc4b718db0765b99a719fce88a95c2be4f82689b7c1";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-iam-logging/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-iam-logging/default.nix
index d461392705f2..47ca59ab2a21 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-iam-logging/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-iam-logging/default.nix
@@ -7,16 +7,15 @@
 , proto-plus
 , pytest-asyncio
 , pytestCheckHook
-, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-iam-logging";
-  version = "0.2.0";
+  version = "1.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3d4fb605d2611586a66d16d02803fcb306331f21351b16497ee8c40753be3a27";
+    sha256 = "4ac688593279c48d7863f0a90457202ff9b235e3ee8862498e8a5b8f867cc137";
   };
 
   propagatedBuildInputs = [
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 da0fab4ce96f..3a4402beed69 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-iam/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-iam/default.nix
@@ -12,12 +12,12 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-iam";
-  version = "2.4.0";
+  version = "2.5.1";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c5002e29febdd6c63a842e30709fa597742dae82181d8b062fe849d7d638047c";
+    sha256 = "b26294d02b14b40586eceb099a0e3a74265ae10a3f46fd49890cac55ad5f861f";
   };
 
   propagatedBuildInputs = [ google-api-core libcst proto-plus ];
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 203102cafb9a..8f64e9950e0e 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-kms/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-kms/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-kms";
-  version = "2.9.0";
+  version = "2.10.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bedd376807ab3dde08f2d92caa0e4e5ad7c2ccfc7069561e80964b998a0d8f51";
+    sha256 = "6a1cedc549ee0886d8603f519cc8631de3112be6f84c0bbbaedab4ee3f9b58fc";
   };
 
   propagatedBuildInputs = [ grpc-google-iam-v1 google-api-core libcst proto-plus ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-language/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-language/default.nix
index ec3125926def..816e56364b16 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-language/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-language/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-language";
-  version = "2.3.0";
+  version = "2.3.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "feb7e04fc1e70ca6faf1b0b517ff1be644125283c54b24dd698f985afde6a2bf";
+    sha256 = "e0d71b72e2639af0424308a71f871c3fbf7ea86bdcbac1d91910fe2e1b419944";
   };
 
   propagatedBuildInputs = [ google-api-core libcst proto-plus ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-logging/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-logging/default.nix
index f9017eb33fa4..21add76d0ad7 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-logging/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-logging/default.nix
@@ -12,18 +12,22 @@
 , proto-plus
 , pytestCheckHook
 , pytest-asyncio
-, webapp2
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-logging";
-  version = "2.6.0";
+  version = "2.7.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-SZ7tXxPKuAXIeAsNFKDZMan/HWXvzN2eaHctQOfa1MU=";
+    sha256 = "5a4ad2832be3b86c8f0fb57b2d382a1f67218137c6f6051372647ac5147d6421";
   };
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "google-cloud-appengine-logging >= 0.1.0, < 1.0.0dev" "google-cloud-appengine-logging >= 0.1.0"
+  '';
+
   propagatedBuildInputs = [
     google-api-core
     google-cloud-appengine-logging
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-monitoring/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-monitoring/default.nix
index 1ebb1fa6332e..4872f7ac448a 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-monitoring/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-monitoring/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-monitoring";
-  version = "2.6.0";
+  version = "2.8.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "47feb2e635ef79af98696eb22a5af1db8a78b3a2919e39bdec65ba45659b59ac";
+    sha256 = "2a25f7535f21cdeabfccb07fe4a75eae5a47bb36b82025537755b37d3376da46";
   };
 
   propagatedBuildInputs = [ libcst google-api-core proto-plus ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-org-policy/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-org-policy/default.nix
index f96ce0a8f91e..5bada28d01dc 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-org-policy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-org-policy/default.nix
@@ -1,12 +1,12 @@
-{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder, google-api-core, mock, proto-plus, protobuf, pytest-asyncio }:
+{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, google-api-core, mock, proto-plus, protobuf, pytest-asyncio }:
 
 buildPythonPackage rec {
   pname = "google-cloud-org-policy";
-  version = "1.1.0";
+  version = "1.2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8ad50ce9145c3b477536752785635295c318b2b123bc9d251020cc1cfe98b131";
+    sha256 = "cdb2d6878c426ed34af8950b052845a76b0f5fab3f96a2ec5dc80be994ca5cf8";
   };
 
   propagatedBuildInputs = [ google-api-core proto-plus ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-os-config/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-os-config/default.nix
index 8b9f98a1b3f6..3ce5f92fe7b8 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-os-config/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-os-config/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-os-config";
-  version = "1.6.0";
+  version = "1.9.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "204ecbe480e5e5abc17752ac2ac17877e0325f31ed7e57f019724c3041ecc1fa";
+    sha256 = "872774c4791b15d59d866fd965c780beac2772f335ded4a0047e2d844d988f30";
   };
 
   propagatedBuildInputs = [ google-api-core libcst proto-plus ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-pubsub/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-pubsub/default.nix
index 59661f260c3b..67a8daf6f997 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-pubsub/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-pubsub/default.nix
@@ -5,6 +5,7 @@
 , google-api-core
 , google-cloud-testutils
 , grpc-google-iam-v1
+, grpcio-status
 , libcst
 , mock
 , proto-plus
@@ -13,16 +14,18 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-pubsub";
-  version = "2.8.0";
+  version = "2.9.0";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2653c11615480141d359938a4efe9d131425171ec9cec26b6bf1c1231e1ac470";
+    sha256 = "2b3d9336afab0e5df67201234976519a28da3ccb7c9a0e463be28e2827a9fdaa";
   };
 
   propagatedBuildInputs = [
     grpc-google-iam-v1
     google-api-core
+    grpcio-status
     libcst
     proto-plus
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-redis/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-redis/default.nix
index d7c389bb8640..ceacab720aee 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-redis/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-redis/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-redis";
-  version = "2.3.0";
+  version = "2.5.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3b53fde67a97718642d29ac26b1b7608e7581b37d1e468f3c2ae38ea6cf7308f";
+    sha256 = "c5aaf6dbdf8bb1425bd42ef482a6c0ecc4b4d1718d49267d510799015c6ff1d2";
   };
 
   propagatedBuildInputs = [ google-api-core libcst proto-plus ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-resource-manager/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-resource-manager/default.nix
index 6a6d844e1072..98c9f3163202 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-resource-manager/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-resource-manager/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-resource-manager";
-  version = "1.2.0";
+  version = "1.3.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7f519bdf1ed5bfedc4bdcd237c5d3cfa50ef37dd92cf14db123ff80ac99950e0";
+    sha256 = "b13e0a614b4865287a4b5fc43f4810d3d48fef7e24d9bcf54cb4bd93bfbb2bf2";
   };
 
   propagatedBuildInputs = [ google-api-core google-cloud-core grpc-google-iam-v1 proto-plus ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-secret-manager/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-secret-manager/default.nix
index e204436b33e6..b66091c15b29 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-secret-manager/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-secret-manager/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-secret-manager";
-  version = "2.7.2";
+  version = "2.8.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6508a260ea273de0ff17d0bf66a3f93009a9b02ace7736486f70a91789c3e34a";
+    sha256 = "e8a3fb7c2a1595f59923661c568667d1ba40fcaaa4dd55fe8b1f5e54871e9460";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-spanner/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-spanner/default.nix
index 50560585b4ee..b08f8fb31ff9 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-spanner/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-spanner/default.nix
@@ -14,11 +14,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-spanner";
-  version = "3.11.1";
+  version = "3.12.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b993b4c68f11dd6fe0f66e0c437a71f9bed8d77f6bf1ddc4aad422ce3b330ecb";
+    sha256 = "8f1390c3776fcfce71e1ef024d9ccde52c16d1cd728bc587c24065d6e4d21933";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-speech/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-speech/default.nix
index 849f1ea6ef94..f9aa3e43553f 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-speech/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-speech/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-speech";
-  version = "2.10.0";
+  version = "2.11.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bc85ae6694c9a1e02046364776b9f2401a3826ddc7b532b32c316559ff4f1afa";
+    sha256 = "3a15400d2fab2ec161c9b647730e8ba92feb9cbe6a1c0c7734ec8e8941290dbd";
   };
 
   propagatedBuildInputs = [ libcst google-api-core proto-plus ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-storage/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-storage/default.nix
index 5ad4c2a31f66..9d97437b8151 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-storage/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-storage/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-storage";
-  version = "1.42.3";
+  version = "1.43.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-d1TU3KpFl1UUtATs4NortCkqy8Z8pVmmnhKhnVT82wY=";
+    sha256 = "f3b4f4be5c8a1b5727a8f7136c94d3bacdd4b7bf11f9553f51ae4c1d876529d3";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-tasks/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-tasks/default.nix
index 45999fb332bb..e055d462b1f3 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-tasks/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-tasks/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-tasks";
-  version = "2.6.0";
+  version = "2.7.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "fd9fe318063ec0f7e4e1780aca81a798d3e90e8def1c24b6f450ea1a8c131c0a";
+    sha256 = "2fd2222901a7d8ba65f28f9019cb41f5d4c952d012f020bdde105527a3f5ae43";
   };
 
   propagatedBuildInputs = [ google-api-core grpc-google-iam-v1 libcst proto-plus ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-testutils/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-testutils/default.nix
index 2c208511ee3f..24775464a120 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-testutils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-testutils/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-testutils";
-  version = "1.1.0";
+  version = "1.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3d79051b6ca170c2a4f159bf56ac3f66c1e5360486121e72c06fdaa3911154bf";
+    sha256 = "9c60ea86b28998935875b5aea0b89b0a3aac5e433e0039236f633c5d0ff5f8b8";
   };
 
   propagatedBuildInputs = [ click google-auth six ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-texttospeech/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-texttospeech/default.nix
index 9adb5df95974..06c1eeb857f9 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-texttospeech/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-texttospeech/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-texttospeech";
-  version = "2.6.0";
+  version = "2.9.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d24dec1ee71bb63a7f6805b2d78923b2325de59407b4688978b7769bbafc3eb8";
+    sha256 = "e8e272ab54be00285c8f9451081d833980c9fc2a1eff828448dfe315dfa61250";
   };
 
   propagatedBuildInputs = [ libcst google-api-core proto-plus ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-trace/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-trace/default.nix
index 8ee2f6f43d41..4032de9d7c45 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-trace/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-trace/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-trace";
-  version = "1.4.0";
+  version = "1.5.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5955faf99478b4e3c2b2550949e94ec8e2915979e8ef5549044d2d91ced03716";
+    sha256 = "fd4cb8a9efa20598c35a4e6f7ac013a04868e37d7d4ff4ec3080f528b06f8a0e";
   };
 
   propagatedBuildInputs = [ google-api-core google-cloud-core proto-plus ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-translate/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-translate/default.nix
index 43b35ca1988d..956f27e2e525 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-translate/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-translate/default.nix
@@ -5,7 +5,6 @@
 , google-api-core
 , google-cloud-core
 , google-cloud-testutils
-, grpcio
 , libcst
 , mock
 , proto-plus
@@ -14,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-translate";
-  version = "3.5.0";
+  version = "3.6.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "49c91574e04d52fc7c0fade95dd5e6ccb51190ab8b419352d008a617c7799879";
+    sha256 = "38772cc60ef4315d25a7dbeef5ddab9e75674722cb4500bc69b295e5d0af6a97";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-videointelligence/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-videointelligence/default.nix
index e405c43e90f2..db6027f3a1ff 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-videointelligence/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-videointelligence/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-videointelligence";
-  version = "2.4.0";
+  version = "2.5.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "92dd4f1e87b02ab414ad744eefa321e079358527cb8c352e1054ae1dab5f1055";
+    sha256 = "7b735f623d6c3c80d1d40fa491bfe1776a5369d7b240dddab522fd0076d97b1d";
   };
 
   propagatedBuildInputs = [ google-api-core proto-plus ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-vision/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-vision/default.nix
index e6b88e727fa5..c67f910321a4 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-vision/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-vision/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-vision";
-  version = "2.5.0";
+  version = "2.6.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e56e35fa647d794429c6fc1595b2ebf5f4d627f0b3d6499a000b54be343ea37e";
+    sha256 = "54b7f63c746ab95a504bd6b9b1d806192483976a3452a1a59a7faa0eaaa03491";
   };
 
   propagatedBuildInputs = [ libcst google-api-core proto-plus];
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-websecurityscanner/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-websecurityscanner/default.nix
index 97be7fe6a610..521d6c49f15c 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-websecurityscanner/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-websecurityscanner/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-websecurityscanner";
-  version = "1.5.0";
+  version = "1.6.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1b8c6169ec46492a13d1ed2d13b4be6439838bb16bca40314af910e7b105f603";
+    sha256 = "392a21dd238958eb7f480d056ed24110be22808cf4474939db40df0ade2910f3";
   };
 
   propagatedBuildInputs = [ google-api-core libcst proto-plus ];
diff --git a/nixpkgs/pkgs/development/python-modules/google-nest-sdm/default.nix b/nixpkgs/pkgs/development/python-modules/google-nest-sdm/default.nix
new file mode 100644
index 000000000000..93fa676f6f82
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/google-nest-sdm/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, google-auth
+, google-auth-oauthlib
+, google-cloud-pubsub
+, pythonOlder
+, requests_oauthlib
+, pytest-aiohttp
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "google-nest-sdm";
+  version = "1.2.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "allenporter";
+    repo = "python-google-nest-sdm";
+    rev = version;
+    sha256 = "sha256-gg5JAkTUuch6HcRLl1Xm/LAoC32EcayG1w3Fk7GrZD8=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    google-auth
+    google-auth-oauthlib
+    google-cloud-pubsub
+    requests_oauthlib
+  ];
+
+  checkInputs = [
+    pytest-aiohttp
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "google_nest_sdm"
+  ];
+
+  meta = with lib; {
+    description = "Python module for Google Nest Device Access using the Smart Device Management API";
+    homepage = "https://github.com/allenporter/python-google-nest-sdm";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/google-re2/default.nix b/nixpkgs/pkgs/development/python-modules/google-re2/default.nix
index 0e36328bd7a4..f61599d827cd 100644
--- a/nixpkgs/pkgs/development/python-modules/google-re2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-re2/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "google-re2";
-  version = "0.2.20210901";
+  version = "0.2.20211101";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "676fa9ee54e3fb70f290526fc0f4d78d1e5a4add701b5547494eaf7c68c72247";
+    sha256 = "305dc0f749c1abad51f8dc59b49b98a58dc06b976727f6b711c87c01944046d9";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-resumable-media/default.nix b/nixpkgs/pkgs/development/python-modules/google-resumable-media/default.nix
index ad5cc9922c06..0b10fbab29b5 100644
--- a/nixpkgs/pkgs/development/python-modules/google-resumable-media/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-resumable-media/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "google-resumable-media";
-  version = "2.0.3";
+  version = "2.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b4b4709d04a6a03cbec746c2b5cb18f1f9878bf1ef3cd61908842a3d94c20471";
+    sha256 = "725b989e0dd387ef2703d1cc8e86217474217f4549593c477fd94f4024a0f911";
   };
 
   propagatedBuildInputs = [ google-auth google-crc32c requests ];
diff --git a/nixpkgs/pkgs/development/python-modules/goveelights/default.nix b/nixpkgs/pkgs/development/python-modules/goveelights/default.nix
new file mode 100644
index 000000000000..484321cd7cf7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/goveelights/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "goveelights";
+  version = "0.1.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-A7tfY+aFzhfruCZ43usj1/CsTejbPMzHM8SYrY/TU1s=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "goveelights"
+  ];
+
+  meta = with lib; {
+    description = "Python module for interacting with the Govee API";
+    homepage = "https://github.com/arcanearronax/govee_lights";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/gplaycli/default.nix b/nixpkgs/pkgs/development/python-modules/gplaycli/default.nix
index 28f244bc354c..11ff2d6fc1e6 100644
--- a/nixpkgs/pkgs/development/python-modules/gplaycli/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gplaycli/default.nix
@@ -1,21 +1,21 @@
 { buildPythonPackage, lib, libffi, isPy3k, pyasn1, clint, ndg-httpsclient
-, protobuf, requests, args, gpapi, pyaxmlparser, fetchFromGitHub
+, protobuf, requests, args, matlink-gpapi, pyaxmlparser, setuptools, fetchFromGitHub
 }:
 
 buildPythonPackage rec {
   pname = "gplaycli";
-  version = "3.26";
+  version = "3.29";
 
   src = fetchFromGitHub {
     owner = "matlink";
     repo = "gplaycli";
     rev = version;
-    sha256 = "188237d40q35dp5xs7hg4ybhvsyxi0bsqx5dk4ws9007n596in5f";
+    sha256 = "10gc1wr259z5hxyk834wyyggvyh82agfq0zp711s4jf334inp45r";
   };
 
   disabled = !isPy3k;
 
-  propagatedBuildInputs = [ libffi pyasn1 clint ndg-httpsclient protobuf requests args gpapi pyaxmlparser ];
+  propagatedBuildInputs = [ libffi pyasn1 clint ndg-httpsclient protobuf requests args matlink-gpapi pyaxmlparser setuptools ];
 
   meta = with lib; {
     homepage = "https://github.com/matlink/gplaycli";
diff --git a/nixpkgs/pkgs/development/python-modules/gprof2dot/default.nix b/nixpkgs/pkgs/development/python-modules/gprof2dot/default.nix
index 3170d199cf55..4eb3a79e5e87 100644
--- a/nixpkgs/pkgs/development/python-modules/gprof2dot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gprof2dot/default.nix
@@ -1,18 +1,36 @@
-{ lib, fetchFromGitHub, buildPythonApplication, python, graphviz }:
+{ lib
+, fetchFromGitHub
+, buildPythonApplication
+, python
+, graphviz
+}:
 
 buildPythonApplication rec {
   pname = "gprof2dot";
-  version = "2019.11.30";
+  version = "2021.02.21";
 
   src = fetchFromGitHub {
     owner = "jrfonseca";
     repo = "gprof2dot";
     rev = version;
-    sha256 = "1nw4cfwimd0djarw4wc756q095xir78js8flmycg6g7sl3l6p27s";
+    sha256 = "1jjhsjf5fdi1fkn7mvhnzkh6cynl8gcjrygd3cya5mmda3akhzic";
   };
 
+  makeWrapperArgs = [
+    "--prefix PATH : ${lib.makeBinPath [ graphviz ]}"
+  ];
+
+  # Needed so dot is on path of the test script
   checkInputs = [ graphviz ];
-  checkPhase = "${python.interpreter} tests/test.py";
+
+  checkPhase = ''
+    runHook preCheck
+
+    # if options not specified, will use unwrapped gprof2dot from original source
+    ${python.interpreter} tests/test.py --python bash --gprof2dot $out/bin/gprof2dot
+
+    runHook postCheck
+  '';
 
   meta = with lib; {
     homepage = "https://github.com/jrfonseca/gprof2dot";
diff --git a/nixpkgs/pkgs/development/python-modules/gradient-utils/default.nix b/nixpkgs/pkgs/development/python-modules/gradient-utils/default.nix
index 171f87b5ddb2..b7424c44f6de 100644
--- a/nixpkgs/pkgs/development/python-modules/gradient-utils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gradient-utils/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "gradient-utils";
-  version = "0.3.2";
+  version = "0.5.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "Paperspace";
     repo = pname;
     rev = "v${version}";
-    sha256 = "083hnkv19mhvdc8nx28f1nph50c903gxh9g9q8531abv0w8m0744";
+    sha256 = "19plkgwwfs6298vjplgsvhirixi3jbngq5y07x9c0fjxk39fa2dk";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/gradient/default.nix b/nixpkgs/pkgs/development/python-modules/gradient/default.nix
index a0788070a965..735dc03b6df7 100644
--- a/nixpkgs/pkgs/development/python-modules/gradient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gradient/default.nix
@@ -22,11 +22,11 @@
 
 buildPythonPackage rec {
   pname = "gradient";
-  version = "1.7.4";
+  version = "1.8.13";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "de1d33672f13d4de37a66ba9aebfd503a098d0ca26e5eb8b071e1c0dacd557ea";
+    sha256 = "0fa4a0553c28839e364d3aac27ec7292d26c1df27b8c54701d57eb7eda0b14f2";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/grammalecte/default.nix b/nixpkgs/pkgs/development/python-modules/grammalecte/default.nix
index c6fcca9434d2..9aa3c4ffd031 100644
--- a/nixpkgs/pkgs/development/python-modules/grammalecte/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/grammalecte/default.nix
@@ -7,23 +7,29 @@
 
 buildPythonPackage rec {
   pname = "grammalecte";
-  version = "0.6.5";
+  version = "2.1.1";
 
   src = fetchurl {
-    url = "http://www.dicollecte.org/grammalecte/zip/Grammalecte-fr-v${version}.zip";
-    sha256 = "11byjs3ggdhia5f4vyfqfvbbczsfqimll98h98g7hlsrm7vrifb0";
+    url = "https://grammalecte.net/grammalecte/zip/Grammalecte-fr-v${version}.zip";
+    sha256 = "076jv3ywdgqqzg92bfbagc7ypy08xjq5zn4vgna6j9350fkfqhzn";
   };
 
+  patchPhase = ''
+    runHook prePatch
+    substituteInPlace grammalecte-server.py --replace sys.version_info.major sys.version_info
+    runHook postPatch
+  '';
+
   propagatedBuildInputs = [ bottle ];
 
-  preBuild = "cd ..";
+  sourceRoot = ".";
 
   disabled = !isPy3k;
 
   meta = {
-    description = "Grammalecte is an open source grammar checker for the French language";
+    description = "An open source grammar and typographic corrector for the French language";
     homepage = "https://grammalecte.net";
-    license = with lib.licenses; [ gpl3 ];
+    license = lib.licenses.gpl3Only;
     maintainers = with lib.maintainers; [ apeyroux ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/graph-tool/2.x.x.nix b/nixpkgs/pkgs/development/python-modules/graph-tool/2.x.x.nix
index 50d5f0f966b6..c8725dfd1167 100644
--- a/nixpkgs/pkgs/development/python-modules/graph-tool/2.x.x.nix
+++ b/nixpkgs/pkgs/development/python-modules/graph-tool/2.x.x.nix
@@ -2,19 +2,17 @@
 , pkg-config, boost, expat, scipy, cgal, gmp, mpfr
 , gobject-introspection, pygobject3, gtk3, matplotlib, ncurses
 , buildPythonPackage
-, fetchpatch
-, pythonAtLeast
 , lib
 }:
 
 buildPythonPackage rec {
   pname = "graph-tool";
   format = "other";
-  version = "2.32";
+  version = "2.43";
 
   src = fetchurl {
     url = "https://downloads.skewed.de/graph-tool/graph-tool-${version}.tar.bz2";
-    sha256 = "0jir6fhi09lf8xf56dcsdk2knx32vq8wrzh0d0zdp22n7baavq70";
+    hash = "sha256-XxvuCUIgz7JIaNsPr0f44v/Sb3fdcJmVhC5NnomNqGw=";
   };
 
   configureFlags = [
diff --git a/nixpkgs/pkgs/development/python-modules/graphene-django/default.nix b/nixpkgs/pkgs/development/python-modules/graphene-django/default.nix
new file mode 100644
index 000000000000..f736fbe39d85
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/graphene-django/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+
+, graphene
+, graphql-core
+, django
+, djangorestframework
+, promise
+, text-unidecode
+
+, django-filter
+, mock
+, pytest-django
+, pytest-random-order
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "graphene-django";
+  version = "unstable-2021-06-11";
+  format = "setuptools";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "graphql-python";
+    repo = pname;
+    rev = "e7f7d8da07ba1020f9916153f17e97b0ec037712";
+    sha256 = "0b33q1im90ahp3gzy9wx5amfzy6q57ydjpy5rn988gh81hbyqaxv";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace '"pytest-runner"' ""
+  '';
+
+  propagatedBuildInputs = [
+    djangorestframework
+    graphene
+    graphql-core
+    django
+    promise
+    text-unidecode
+  ];
+
+  preCheck = ''
+    export DJANGO_SETTINGS_MODULE=examples.django_test_settings
+  '';
+
+  checkInputs = [
+    django-filter
+    mock
+    pytest-django
+    pytest-random-order
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    description = "Integrate GraphQL into your Django project";
+    homepage = "https://github.com/graphql-python/graphene-django";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/graphene/default.nix b/nixpkgs/pkgs/development/python-modules/graphene/default.nix
index 38c11cc4c8be..7a28bc08cda4 100644
--- a/nixpkgs/pkgs/development/python-modules/graphene/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/graphene/default.nix
@@ -15,13 +15,13 @@
 
 buildPythonPackage rec {
   pname = "graphene";
-  version = "3.0.0b8";
+  version = "3.0.0";
 
   src = fetchFromGitHub {
     owner = "graphql-python";
     repo = "graphene";
     rev = "v${version}";
-    sha256 = "sha256-Pgln369s4qXdKqLxhX+AkgpDQm+MfSZ/OVmB1AaawHI=";
+    sha256 = "0qgp3nl6afyz6y27bw175hyqppx75pp1vqwl7nvlpwvgwyyc2mnl";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/graphql-core/default.nix b/nixpkgs/pkgs/development/python-modules/graphql-core/default.nix
index 1909dd99fe0f..8906af53ce19 100644
--- a/nixpkgs/pkgs/development/python-modules/graphql-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/graphql-core/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pytest-benchmark
+, pytest-asyncio
 , pytestCheckHook
 , pythonOlder
 }:
@@ -9,6 +10,8 @@
 buildPythonPackage rec {
   pname = "graphql-core";
   version = "3.1.6";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
@@ -19,11 +22,14 @@ buildPythonPackage rec {
   };
 
   checkInputs = [
+    pytest-asyncio
     pytest-benchmark
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "graphql" ];
+  pythonImportsCheck = [
+    "graphql"
+  ];
 
   meta = with lib; {
     description = "Port of graphql-js to Python";
diff --git a/nixpkgs/pkgs/development/python-modules/graphql-subscription-manager/default.nix b/nixpkgs/pkgs/development/python-modules/graphql-subscription-manager/default.nix
index 1a3c32e04d44..6ae0dce79cee 100644
--- a/nixpkgs/pkgs/development/python-modules/graphql-subscription-manager/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/graphql-subscription-manager/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "graphql-subscription-manager";
-  version = "0.4.0";
+  version = "0.4.3";
 
   disabled = pythonOlder "3.7";
 
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "Danielhiversen";
     repo = "PyGraphqlWebsocketManager";
     rev = version;
-    sha256 = "1176xzr9fa7gl5cm0pcv5lb45d2ms5awi601rjcr3a0a14a1i8fz";
+    sha256 = "sha256-+LP+MDeHo0svoN/o0in6xtIqrfxs+UCBQRtBe4lZt+4=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/graphviz/default.nix b/nixpkgs/pkgs/development/python-modules/graphviz/default.nix
index d0483864ff85..881dec6b932f 100644
--- a/nixpkgs/pkgs/development/python-modules/graphviz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/graphviz/default.nix
@@ -4,16 +4,18 @@
 , fetchFromGitHub
 , substituteAll
 , graphviz
+, xdg-utils
 , makeFontsConf
 , freefont_ttf
 , mock
-, pytestCheckHook
+, pytest
 , pytest-mock
+, python
 }:
 
 buildPythonPackage rec {
   pname = "graphviz";
-  version = "0.17";
+  version = "0.19.1";
 
   disabled = pythonOlder "3.6";
 
@@ -22,13 +24,14 @@ buildPythonPackage rec {
     owner = "xflr6";
     repo = "graphviz";
     rev = version;
-    sha256 = "sha256-K6z2C7hQH2A9bqgRR4MRqxVAH/k2NQBEelb2/6KDUr0=";
+    sha256 = "sha256-pE1lsx/r/BjvW5W2niDx/UeRXxx4kvCyHzAUAG3bdGc=";
   };
 
   patches = [
     (substituteAll {
-      src = ./hardcode-graphviz-path.patch;
+      src = ./paths.patch;
       inherit graphviz;
+      xdgutils = xdg-utils;
     })
   ];
 
@@ -41,10 +44,18 @@ buildPythonPackage rec {
     fontDirectories = [ freefont_ttf ];
   };
 
-  checkInputs = [ mock pytestCheckHook pytest-mock ];
+  checkInputs = [
+    mock
+    pytest
+    pytest-mock
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+
+    HOME=$TMPDIR ${python.interpreter} run-tests.py
 
-  preCheck = ''
-    export HOME=$TMPDIR
+    runHook postCheck
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/graphviz/hardcode-graphviz-path.patch b/nixpkgs/pkgs/development/python-modules/graphviz/hardcode-graphviz-path.patch
deleted file mode 100644
index ba25d54e3703..000000000000
--- a/nixpkgs/pkgs/development/python-modules/graphviz/hardcode-graphviz-path.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-diff --git a/graphviz/backend.py b/graphviz/backend.py
-index b66e616..3da4ef0 100644
---- a/graphviz/backend.py
-+++ b/graphviz/backend.py
-@@ -124,7 +124,7 @@ def command(engine: str, format_: str, filepath=None,
-         raise ValueError(f'unknown formatter: {formatter!r}')
- 
-     output_format = [f for f in (format_, renderer, formatter) if f is not None]
--    cmd = ['dot', '-K%s' % engine, '-T%s' % ':'.join(output_format)]
-+    cmd = ['@graphviz@/bin/dot', '-K%s' % engine, '-T%s' % ':'.join(output_format)]
- 
-     if filepath is None:
-         rendered = None
-@@ -297,7 +297,7 @@ def unflatten(source: str,
-     if fanout and stagger is None:
-         raise RequiredArgumentError('fanout given without stagger')
- 
--    cmd = ['unflatten']
-+    cmd = ['@graphviz@/bin/unflatten']
-     if stagger is not None:
-         cmd += ['-l', str(stagger)]
-     if fanout:
-@@ -332,7 +332,7 @@ def version() -> typing.Tuple[int, ...]:
-         Graphviz Release version entry format:
-         https://gitlab.com/graphviz/graphviz/-/blob/f94e91ba819cef51a4b9dcb2d76153684d06a913/gen_version.py#L17-20
-     """
--    cmd = ['dot', '-V']
-+    cmd = ['@graphviz@/bin/dot', '-V']
-     out, _ = run(cmd, check=True, encoding='ascii',
-                  stdout=subprocess.PIPE,
-                  stderr=subprocess.STDOUT)
-diff --git a/tests/test_backend.py b/tests/test_backend.py
-index e0a0e1c..681f178 100644
---- a/tests/test_backend.py
-+++ b/tests/test_backend.py
-@@ -54,7 +54,7 @@ def test_run_encoding_mocked(mocker, Popen, input='sp\xe4m', encoding='utf-8'):
-         m.decode.assert_called_once_with(encoding)
- 
- 
--@pytest.mark.exe
-+@pytest.mark.skip(reason='empty $PATH has no effect')
- @pytest.mark.usefixtures('empty_path')
- @pytest.mark.parametrize('func, args', [
-     (render, ['dot', 'pdf', 'nonfilepath']),
-@@ -148,7 +148,7 @@ def test_render_mocked(capsys, mocker, Popen, quiet):  # noqa: N803
- 
-     assert render('dot', 'pdf', 'nonfilepath', quiet=quiet) == 'nonfilepath.pdf'
- 
--    Popen.assert_called_once_with(['dot', '-Kdot', '-Tpdf', '-O', 'nonfilepath'],
-+    Popen.assert_called_once_with(['@graphviz@/bin/dot', '-Kdot', '-Tpdf', '-O', 'nonfilepath'],
-                                   stdout=subprocess.PIPE,
-                                   stderr=subprocess.PIPE,
-                                   cwd=None, startupinfo=mocker.ANY)
-@@ -211,7 +211,7 @@ def test_pipe_pipe_invalid_data_mocked(mocker, Popen, quiet):  # noqa: N803
-     assert e.value.stdout is out
-     e.value.stdout = mocker.sentinel.new_stdout
-     assert e.value.stdout is mocker.sentinel.new_stdout
--    Popen.assert_called_once_with(['dot', '-Kdot', '-Tpng'],
-+    Popen.assert_called_once_with(['@graphviz@/bin/dot', '-Kdot', '-Tpng'],
-                                   stdin=subprocess.PIPE,
-                                   stdout=subprocess.PIPE,
-                                   stderr=subprocess.PIPE,
-@@ -231,7 +231,7 @@ def test_pipe_mocked(capsys, mocker, Popen, quiet):  # noqa: N803
- 
-     assert pipe('dot', 'png', b'nongraph', quiet=quiet) == b'stdout'
- 
--    Popen.assert_called_once_with(['dot', '-Kdot', '-Tpng'],
-+    Popen.assert_called_once_with(['@graphviz@/bin/dot', '-Kdot', '-Tpng'],
-                                   stdin=subprocess.PIPE,
-                                   stdout=subprocess.PIPE,
-                                   stderr=subprocess.PIPE,
-@@ -259,7 +259,7 @@ def test_unflatten_mocked(capsys, mocker, Popen):
-     proc.communicate.return_value = (b'nonresult', b'')
- 
-     assert unflatten('nonsource') == 'nonresult'
--    Popen.assert_called_once_with(['unflatten'],
-+    Popen.assert_called_once_with(['@graphviz@/bin/unflatten'],
-                                   stdin=subprocess.PIPE,
-                                   stdout=subprocess.PIPE,
-                                   stderr=subprocess.PIPE,
-@@ -290,7 +290,7 @@ def test_version_parsefail_mocked(mocker, Popen):  # noqa: N803
-     with pytest.raises(RuntimeError, match=r'nonversioninfo'):
-         version()
- 
--    Popen.assert_called_once_with(['dot', '-V'],
-+    Popen.assert_called_once_with(['@graphviz@/bin/dot', '-V'],
-                                   stdout=subprocess.PIPE,
-                                   stderr=subprocess.STDOUT,
-                                   startupinfo=mocker.ANY)
-@@ -312,7 +312,7 @@ def test_version_mocked(mocker, Popen, stdout, expected):  # noqa: N803
- 
-     assert version() == expected
- 
--    Popen.assert_called_once_with(['dot', '-V'],
-+    Popen.assert_called_once_with(['@graphviz@/bin/dot', '-V'],
-                                   stdout=subprocess.PIPE,
-                                   stderr=subprocess.STDOUT,
-                                   startupinfo=mocker.ANY)
diff --git a/nixpkgs/pkgs/development/python-modules/graphviz/paths.patch b/nixpkgs/pkgs/development/python-modules/graphviz/paths.patch
new file mode 100644
index 000000000000..f53852544a2d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/graphviz/paths.patch
@@ -0,0 +1,79 @@
+diff --git a/graphviz/backend/dot_command.py b/graphviz/backend/dot_command.py
+index 60654bd..2c62b47 100644
+--- a/graphviz/backend/dot_command.py
++++ b/graphviz/backend/dot_command.py
+@@ -9,7 +9,7 @@ from .. import parameters
+ 
+ __all__ = ['DOT_BINARY', 'command']
+ 
+-DOT_BINARY = pathlib.Path('dot')
++DOT_BINARY = pathlib.Path('@graphviz@/bin/dot')
+ 
+ 
+ def command(engine: str, format_: str, *,
+diff --git a/graphviz/backend/unflattening.py b/graphviz/backend/unflattening.py
+index a386b8c..883cdc6 100644
+--- a/graphviz/backend/unflattening.py
++++ b/graphviz/backend/unflattening.py
+@@ -11,7 +11,7 @@ from . import execute
+ 
+ __all__ = ['UNFLATTEN_BINARY', 'unflatten']
+ 
+-UNFLATTEN_BINARY = pathlib.Path('unflatten')
++UNFLATTEN_BINARY = pathlib.Path('@graphviz@/bin/unflatten')
+ 
+ 
+ @_tools.deprecate_positional_args(supported_number=1)
+diff --git a/graphviz/backend/viewing.py b/graphviz/backend/viewing.py
+index fde74a6..6f29b68 100644
+--- a/graphviz/backend/viewing.py
++++ b/graphviz/backend/viewing.py
+@@ -55,7 +55,7 @@ def view_darwin(filepath: typing.Union[os.PathLike, str], *,
+ def view_unixoid(filepath: typing.Union[os.PathLike, str], *,
+                  quiet: bool) -> None:
+     """Open filepath in the user's preferred application (linux, freebsd)."""
+-    cmd = ['xdg-open', filepath]
++    cmd = ['@xdgutils@/bin/xdg-open', filepath]
+     log.debug('view: %r', cmd)
+     kwargs = {'stderr': subprocess.DEVNULL} if quiet else {}
+     subprocess.Popen(cmd, **kwargs)
+diff --git a/tests/_common.py b/tests/_common.py
+index 87b4cbd..4188beb 100644
+--- a/tests/_common.py
++++ b/tests/_common.py
+@@ -14,9 +14,9 @@ __all__ = ['EXPECTED_DOT_BINARY', 'EXPECTED_UNFLATTEN_BINARY',
+            'as_cwd',
+            'check_startupinfo', 'StartupinfoMatcher']
+ 
+-EXPECTED_DOT_BINARY = _compat.make_subprocess_arg(pathlib.Path('dot'))
++EXPECTED_DOT_BINARY = _compat.make_subprocess_arg(pathlib.Path('@graphviz@/bin/dot'))
+ 
+-EXPECTED_UNFLATTEN_BINARY = _compat.make_subprocess_arg(pathlib.Path('unflatten'))
++EXPECTED_UNFLATTEN_BINARY = _compat.make_subprocess_arg(pathlib.Path('@graphviz@/bin/unflatten'))
+ 
+ EXPECTED_DEFAULT_ENCODING = 'utf-8'
+ 
+diff --git a/tests/backend/test_execute.py b/tests/backend/test_execute.py
+index 2cb853a..8093dfe 100644
+--- a/tests/backend/test_execute.py
++++ b/tests/backend/test_execute.py
+@@ -15,6 +15,7 @@ def empty_path(monkeypatch):
+     monkeypatch.setenv('PATH', '')
+ 
+ 
++@pytest.mark.skip(reason='empty $PATH has no effect')
+ @pytest.mark.usefixtures('empty_path')
+ @pytest.mark.parametrize(
+     'func, args',
+diff --git a/tests/backend/test_viewing.py b/tests/backend/test_viewing.py
+index 59a23d5..f73f905 100644
+--- a/tests/backend/test_viewing.py
++++ b/tests/backend/test_viewing.py
+@@ -26,6 +26,6 @@ def test_view_mocked(mocker, mock_platform, mock_popen, mock_startfile, quiet):
+     if mock_platform == 'darwin':
+         mock_popen.assert_called_once_with(['open', 'nonfilepath'], **kwargs)
+     elif mock_platform in ('linux', 'freebsd'):
+-        mock_popen.assert_called_once_with(['xdg-open', 'nonfilepath'], **kwargs)
++        mock_popen.assert_called_once_with(['@xdgutils@/bin/xdg-open', 'nonfilepath'], **kwargs)
+     else:
+         raise RuntimeError
diff --git a/nixpkgs/pkgs/development/python-modules/grappelli_safe/default.nix b/nixpkgs/pkgs/development/python-modules/grappelli_safe/default.nix
index ae7ddb0c76b4..8ef95b460ae2 100644
--- a/nixpkgs/pkgs/development/python-modules/grappelli_safe/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/grappelli_safe/default.nix
@@ -4,12 +4,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "0.5.2";
+  version = "1.0.0";
   pname = "grappelli_safe";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "35b7ccaf9acc54684c73aeefbeaddc63b8a16143bd981bd5b3ebef253def07df";
+    sha256 = "84c03ec5373341d980a76480d992389e286fbc50048e91bc2e5c876d02873cc5";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/graspologic/default.nix b/nixpkgs/pkgs/development/python-modules/graspologic/default.nix
index 2096f22a249c..10e7190d1fde 100644
--- a/nixpkgs/pkgs/development/python-modules/graspologic/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/graspologic/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "graspologic";
-  version = "0.3";
+  version = "0.3.1";
 
   disabled = isPy27;
 
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "microsoft";
     repo = "graspologic";
     rev = "v${version}";
-    sha256 = "0lab76qiryxvwl6zrcikhnxil1xywl0wkkm2vzi4v9mdzpa7w29r";
+    sha256 = "07dmfb1aplha01d22b41js7634dac4v28pv1l3bzssqhi4yyds7h";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/greeclimate/default.nix b/nixpkgs/pkgs/development/python-modules/greeclimate/default.nix
index 9e0086f3e202..5f72411e9e89 100644
--- a/nixpkgs/pkgs/development/python-modules/greeclimate/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/greeclimate/default.nix
@@ -10,15 +10,16 @@
 
 buildPythonPackage rec {
   pname = "greeclimate";
-  version = "0.11.9";
+  version = "1.0.1";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "cmroche";
     repo = "greeclimate";
-    rev = version;
-    sha256 = "sha256-fyIx/w+jKIscPGbK6LqjMtjy43qJtzzITwtUeNurE+o=";
+    rev = "v${version}";
+    hash = "sha256-O9SaEveZntb7VWL5k1WjTDK9fXhTWFIsVh5v7NKASnQ=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/green/default.nix b/nixpkgs/pkgs/development/python-modules/green/default.nix
index 540d3027b94e..e4a3401109b4 100644
--- a/nixpkgs/pkgs/development/python-modules/green/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/green/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , isPy3k
 , fetchPypi
+, django
 , colorama
 , coverage
 , unidecode
@@ -11,6 +12,7 @@
 buildPythonPackage rec {
   pname = "green";
   version = "3.3.0";
+  format = "setuptools";
 
   disabled = !isPy3k;
 
@@ -29,17 +31,28 @@ buildPythonPackage rec {
   '';
 
   propagatedBuildInputs = [
-    colorama coverage unidecode lxml
+    colorama
+    coverage
+    unidecode
+    lxml
   ];
 
   # let green run it's own test suite
   checkPhase = ''
-    $out/bin/green -tvvv green
+    $out/bin/green -tvvv \
+      green.test.test_version \
+      green.test.test_cmdline \
+      green.test.test_command
   '';
 
+  pythonImportsCheck = [
+    "green"
+  ];
+
   meta = with lib; {
     description = "Python test runner";
     homepage = "https://github.com/CleanCut/green";
     license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/greenlet/default.nix b/nixpkgs/pkgs/development/python-modules/greenlet/default.nix
index e997c7da3987..78ac1668b6f8 100644
--- a/nixpkgs/pkgs/development/python-modules/greenlet/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/greenlet/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, six
 , isPyPy
 , python
 }:
@@ -9,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "greenlet";
-  version = "1.1.1";
+  version = "1.1.2";
   disabled = isPyPy;  # builtin for pypy
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c0f22774cd8294078bdf7392ac73cf00bfa1e5e0ed644bd064fdabc5f2a2f481";
+    sha256 = "e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a";
   };
 
   checkPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/grpcio-status/default.nix b/nixpkgs/pkgs/development/python-modules/grpcio-status/default.nix
new file mode 100644
index 000000000000..b20426c0288f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/grpcio-status/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, googleapis-common-protos
+, grpcio
+, protobuf
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "grpcio-status";
+  version = "1.43.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-IXWQBvNqf/v/GH1BkfQRjActiqn6aCOhGq14QqPGzNA=";
+  };
+
+  propagatedBuildInputs = [
+    googleapis-common-protos
+    grpcio
+    protobuf
+  ];
+
+  # Projec thas no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "grpc_status"
+  ];
+
+  meta = with lib; {
+    description = "GRPC Python status proto mapping";
+    homepage = "https://github.com/grpc/grpc/tree/master/src/python/grpcio_status";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/grpcio-tools/default.nix b/nixpkgs/pkgs/development/python-modules/grpcio-tools/default.nix
index 690e4e8141e6..78d952f4cb97 100644
--- a/nixpkgs/pkgs/development/python-modules/grpcio-tools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/grpcio-tools/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "grpcio-tools";
-  version = "1.41.0";
+  version = "1.43.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3891b1df82369acbc8451d4952cd20755f49a82398dce62437511ad17b47290e";
+    sha256 = "f42f1d713096808b1b0472dd2a3749b712d13f0092dab9442d9c096446e860b2";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/nixpkgs/pkgs/development/python-modules/gruut-ipa/default.nix b/nixpkgs/pkgs/development/python-modules/gruut-ipa/default.nix
index 50140ef8308d..ad1da8b2917a 100644
--- a/nixpkgs/pkgs/development/python-modules/gruut-ipa/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gruut-ipa/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "gruut-ipa";
-  version = "0.9.3";
+  version = "0.12.0";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "rhasspy";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-d/AbvgAD3GHXpwhqjT5Xt9q7Kix+eFMX4kW2BywZWX0=";
+    sha256 = "sha256-6pMdBKbp++/5321rc8A2euOSXZCHzHg+wmaEaMZ0egw=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/gruut/default.nix b/nixpkgs/pkgs/development/python-modules/gruut/default.nix
index 75d0c365e610..4718d8244d0c 100644
--- a/nixpkgs/pkgs/development/python-modules/gruut/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gruut/default.nix
@@ -5,11 +5,15 @@
 , fetchFromGitHub
 , Babel
 , gruut-ipa
+, dateparser
 , jsonlines
 , num2words
 , python-crfsuite
 , dataclasses
 , python
+, networkx
+, glibcLocales
+, pytestCheckHook
 }:
 
 let
@@ -17,6 +21,7 @@ let
     "cs"
     "de"
     "es"
+    "en"
     "fr"
     "it"
     "nl"
@@ -28,19 +33,21 @@ let
 in
 buildPythonPackage rec {
   pname = "gruut";
-  version = "1.2.3";
+  version = "2.2.0";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "rhasspy";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-qY4xsoVk1hyY9dYmVXaqDRjcShUQmp8VZOzAQNiC6EM=";
+    sha256 = "sha256-9vj3x2IjTso8ksN1cqe5frwg0Y3GhOB6bPWvaBSBOf8=";
   };
 
   postPatch = ''
     substituteInPlace requirements.txt \
-      --replace "Babel~=2.8.0" "Babel"
+      --replace "Babel~=2.8.0" "Babel" \
+      --replace "dateparser~=1.0.0" "dateparser" \
+      --replace "gruut_lang_en~=2.0.0" "gruut_lang_en"
   '';
 
   propagatedBuildInputs = [
@@ -49,16 +56,28 @@ buildPythonPackage rec {
     jsonlines
     num2words
     python-crfsuite
+    dateparser
+    networkx
   ] ++ lib.optionals (pythonOlder "3.7") [
     dataclasses
   ] ++ (map (lang: callPackage ./language-pack.nix {
     inherit lang version format src;
   }) langPkgs);
 
-  checkPhase = ''
-    runHook preCheck
-    ${python.interpreter} -m unittest discover
-    runHook postCheck
+  checkInputs = [ glibcLocales pytestCheckHook ];
+
+  disabledTests = [
+    # https://github.com/rhasspy/gruut/issues/25
+    "test_lexicon_external"
+
+    # requires mishkal library
+    "test_fa"
+    "test_ar"
+    "test_lb"
+  ];
+
+  preCheck = ''
+    export LC_ALL=en_US.utf-8
   '';
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/gsd/1.7.nix b/nixpkgs/pkgs/development/python-modules/gsd/1.7.nix
deleted file mode 100644
index 8d19acdc70de..000000000000
--- a/nixpkgs/pkgs/development/python-modules/gsd/1.7.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-}:
-
-buildPythonPackage rec {
-  version = "1.7.0";
-  pname = "gsd";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0fpk69wachyydpk9cbs901m7hkwrrvq24ykxsrz62km9ql8lr2vp";
-  };
-
-  propagatedBuildInputs = [ numpy ];
-
-  # tests not packaged with gsd
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://bitbucket.org/glotzer/gsd";
-    description = "General simulation data file format";
-    license = licenses.bsd2;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/gsd/default.nix b/nixpkgs/pkgs/development/python-modules/gsd/default.nix
index e781c2127dab..f4f3a7eb13fa 100644
--- a/nixpkgs/pkgs/development/python-modules/gsd/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gsd/default.nix
@@ -4,7 +4,7 @@
 }:
 
 buildPythonPackage rec {
-  version = "2.5.0";
+  version = "2.5.1";
   pname = "gsd";
   disabled = isPy27;
 
@@ -12,7 +12,7 @@ buildPythonPackage rec {
     owner = "glotzerlab";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0zw3ihbzkldwijz9phwivnzwylj30a2a4lknfbwm6vkx78rdrb1a";
+    sha256 = "00cy4lw7xnl2skfx7fg7cs1c8lrbaxvkym9j6zfi1dbvsdd0r103";
   };
 
   nativeBuildInputs = [ cython ];
diff --git a/nixpkgs/pkgs/development/python-modules/gspread/default.nix b/nixpkgs/pkgs/development/python-modules/gspread/default.nix
index df2615cd3bdf..741882bdbd3d 100644
--- a/nixpkgs/pkgs/development/python-modules/gspread/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gspread/default.nix
@@ -7,12 +7,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "4.0.1";
+  version = "5.1.1";
   pname = "gspread";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "236a0f24e3724b49bae4cbd5144ed036b0ae6feaf5828ad033eb2824bf05e5be";
+    sha256 = "d9db8c43d552f541ea072d4727d1e955bc2368b095dd86c5429a845c9d8aed8f";
   };
 
   propagatedBuildInputs = [ requests google-auth google-auth-oauthlib ];
diff --git a/nixpkgs/pkgs/development/python-modules/gssapi/default.nix b/nixpkgs/pkgs/development/python-modules/gssapi/default.nix
index ce2ba8d3730f..330172f56cee 100644
--- a/nixpkgs/pkgs/development/python-modules/gssapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gssapi/default.nix
@@ -17,14 +17,14 @@
 
 buildPythonPackage rec {
   pname = "gssapi";
-  version = "1.7.0";
+  version = "1.7.2";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "pythongssapi";
     repo = "python-${pname}";
     rev = "v${version}";
-    sha256 = "0ybijgsr4ra7x1w86sva4qljhm54ilm2zv4z0ry1r14kq9hmjfa4";
+    sha256 = "1xdcnm66b07m7chf04pp58p3khvy547hns1fw1xffd4n51kl42pp";
   };
 
   # It's used to locate headers
diff --git a/nixpkgs/pkgs/development/python-modules/guessit/default.nix b/nixpkgs/pkgs/development/python-modules/guessit/default.nix
index 0e8d07465989..8b85a488512a 100644
--- a/nixpkgs/pkgs/development/python-modules/guessit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/guessit/default.nix
@@ -1,31 +1,42 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pytest-runner
 , python-dateutil
 , babelfish
 , rebulk
+, pythonOlder
+, importlib-resources
+, pytestCheckHook
+, pytest-mock
+, pytest-benchmark
+, pyyaml
 }:
 
 buildPythonPackage rec {
   pname = "guessit";
-  version = "3.3.1";
+  version = "3.4.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8305e0086129614a8820a508303f98f56c584811489499bcc54a7ea6f1b0391e";
+    sha256 = "731e96e6a1f3b065d05accc8c19f35d4485d880b77ab8dc4b262cc353df294f7";
   };
 
-  # Tests require more packages.
-  doCheck = false;
-  buildInputs = [ pytest-runner ];
   propagatedBuildInputs = [
-    python-dateutil babelfish rebulk
-  ];
+    rebulk
+    babelfish
+    python-dateutil
+  ] ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ];
+
+  checkInputs = [ pytestCheckHook pytest-mock pytest-benchmark pyyaml ];
+
+  pytestFlagsArray = [ "--benchmark-disable" ];
+
+  pythonImportsCheck = [ "guessit" ];
 
   meta = {
-    homepage = "https://pypi.python.org/pypi/guessit";
-    license = lib.licenses.lgpl3;
-    description = "A library for guessing information from video files";
+    homepage = "https://doc.guessit.io/";
+    description = "A Python library that extracts as much information as possible from a video filename";
+    changelog = "https://github.com/guessit-io/guessit/raw/v${version}/CHANGELOG.md";
+    license = lib.licenses.lgpl3Only;
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/gunicorn/19.nix b/nixpkgs/pkgs/development/python-modules/gunicorn/19.nix
deleted file mode 100644
index a7a418afa18c..000000000000
--- a/nixpkgs/pkgs/development/python-modules/gunicorn/19.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi
-, coverage
-, mock
-, pytest
-, pytest-cov
-, setuptools
-}:
-
-buildPythonPackage rec {
-  pname = "gunicorn";
-  version = "19.10.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1080jk1ly8j0rc6lv8i33sj94rxjaskd1732cdq5chdqb3ij9ppr";
-  };
-
-  propagatedBuildInputs = [ setuptools ];
-
-  checkInputs = [ pytest mock pytest-cov coverage ];
-
-  prePatch = ''
-    substituteInPlace requirements_test.txt --replace "==" ">=" \
-      --replace "coverage>=4.0,<4.4" "coverage"
-  '';
-
-  # better than no tests
-  checkPhase = ''
-    $out/bin/gunicorn --help > /dev/null
-  '';
-
-  pythonImportsCheck = [ "gunicorn" ];
-
-  meta = with lib; {
-    homepage = "https://github.com/benoitc/gunicorn";
-    description = "WSGI HTTP Server for UNIX";
-    license = licenses.mit;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/gviz-api/default.nix b/nixpkgs/pkgs/development/python-modules/gviz-api/default.nix
index 92f33abb594a..04ba3b9520fa 100644
--- a/nixpkgs/pkgs/development/python-modules/gviz-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gviz-api/default.nix
@@ -4,12 +4,12 @@
 
 buildPythonPackage rec {
   pname = "gviz_api";
-  version = "1.9.0";
+  version = "1.10.0";
   format = "wheel";
 
   src = fetchPypi {
     inherit pname version format;
-    sha256 = "1yag559lpmwfdxpxn679a6ajifcbpgljr5n6k5b7rrj38k2xq7jg";
+    sha256 = "a05055fed8c279f34f4b496eace7648c7fe9c1b06851e8a36e748541f1adbb05";
   };
 
   propagatedBuildInputs = [
@@ -18,7 +18,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python API for Google Visualization";
-    homepage = https://developers.google.com/chart/interactive/docs/dev/gviz_api_lib;
+    homepage = "https://developers.google.com/chart/interactive/docs/dev/gviz_api_lib";
     license = licenses.asl20;
     maintainers = with maintainers; [ ndl ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/gvm-tools/default.nix b/nixpkgs/pkgs/development/python-modules/gvm-tools/default.nix
index 8d3d4f240bd5..17fb02fd10d9 100644
--- a/nixpkgs/pkgs/development/python-modules/gvm-tools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gvm-tools/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , poetry-core
 , pytestCheckHook
 , python-gvm
@@ -10,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "gvm-tools";
-  version = "21.6.1";
+  version = "21.10.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +18,7 @@ buildPythonPackage rec {
     owner = "greenbone";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1n9alryf52xkwxwagmq8bdn3a8scnmgh3qfdjwj6jybcyk36rv6n";
+    sha256 = "sha256-LGdbqkIKdmtUOGSoCme6oVG1aCbtASSxi9K9f3khafA=";
   };
 
   nativeBuildInputs = [
@@ -34,15 +33,6 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  patches = [
-    # Switch to poetry-core, https://github.com/greenbone/gvm-tools/pull/520
-    (fetchpatch {
-      name = "switch-to-poetry-core.patch";
-      url = "https://github.com/greenbone/gvm-tools/commit/db65495181ca339610b1007a33cc13285a470242.patch";
-      sha256 = "069rg742pxjd36vap0xp6367rd69pji4yfxbycc7z0b8gvf80w5z";
-    })
-  ];
-
   disabledTests = [
     # Don't test sending
     "SendTargetTestCase"
diff --git a/nixpkgs/pkgs/development/python-modules/gyp/default.nix b/nixpkgs/pkgs/development/python-modules/gyp/default.nix
index 5be56c81257a..e98d844a33e3 100644
--- a/nixpkgs/pkgs/development/python-modules/gyp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gyp/default.nix
@@ -1,7 +1,6 @@
 { lib, stdenv
 , buildPythonPackage
 , fetchFromGitiles
-, isPy3k
 }:
 
 buildPythonPackage {
diff --git a/nixpkgs/pkgs/development/python-modules/h5py/default.nix b/nixpkgs/pkgs/development/python-modules/h5py/default.nix
index dfa4288e54fc..701b8f78f83b 100644
--- a/nixpkgs/pkgs/development/python-modules/h5py/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/h5py/default.nix
@@ -1,5 +1,5 @@
-{ lib, fetchPypi, isPy27, python, buildPythonPackage, pythonOlder
-, numpy, hdf5, cython, six, pkgconfig, unittest2, fetchpatch
+{ lib, fetchPypi, isPy27, buildPythonPackage, pythonOlder
+, numpy, hdf5, cython, six, pkgconfig, unittest2
 , mpi4py ? null, openssh, pytestCheckHook, cached-property }:
 
 assert hdf5.mpiSupport -> mpi4py != null && hdf5.mpi == mpi4py.mpi;
@@ -8,13 +8,13 @@ let
   mpi = hdf5.mpi;
   mpiSupport = hdf5.mpiSupport;
 in buildPythonPackage rec {
-  version = "3.4.0";
+  version = "3.6.0";
   pname = "h5py";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ee1c683d91ab010d5e85cb61e8f9e7ee0d8eab545bf3dd50a9618f1d0e8f615e";
+    sha256 = "8752d2814a92aba4e2b2a5922d2782d0029102d99caaf3c201a566bc0b40db29";
   };
 
   # avoid strict pinning of numpy
diff --git a/nixpkgs/pkgs/development/python-modules/ha-av/default.nix b/nixpkgs/pkgs/development/python-modules/ha-av/default.nix
new file mode 100644
index 000000000000..af5f5f31ab61
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ha-av/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, pkg-config
+, ffmpeg
+}:
+
+buildPythonPackage rec {
+  pname = "ha-av";
+  version = "8.0.4rc1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-txdi2/X6upqrACeHhHpEh4tGqgPpW/dyWda8y++7c3M=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+  ];
+
+  buildInputs = [
+    ffmpeg
+  ];
+
+  pythonImportsCheck = [
+    "av"
+    "av._core"
+  ];
+
+  # tests fail to import av._core
+  doCheck = false;
+
+  meta = with lib; {
+    homepage = "https://pypi.org/project/ha-av/";
+    description = "Pythonic bindings for FFmpeg's libraries";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ha-philipsjs/default.nix b/nixpkgs/pkgs/development/python-modules/ha-philipsjs/default.nix
index 14b60f551435..8bf2b5863f08 100644
--- a/nixpkgs/pkgs/development/python-modules/ha-philipsjs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ha-philipsjs/default.nix
@@ -12,14 +12,16 @@
 
 buildPythonPackage rec {
   pname = "ha-philipsjs";
-  version = "2.7.5";
+  version = "2.7.6";
+  format = "setuptools";
+
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "danielperna84";
     repo = pname;
     rev = version;
-    sha256 = "sha256-CAYyVNVq1rZZ/AYOAE8bfd7f94+PlAsnFRdguparNtY=";
+    sha256 = "sha256-U5XigLFkpRoIXcFB4dpxi8pxqcmmb20sv9i9J70s0C0=";
   };
 
   propagatedBuildInputs = [
@@ -34,7 +36,9 @@ buildPythonPackage rec {
     respx
   ];
 
-  pythonImportsCheck = [ "haphilipsjs" ];
+  pythonImportsCheck = [
+    "haphilipsjs"
+  ];
 
   meta = with lib; {
     description = "Python library to interact with Philips TVs with jointSPACE API";
diff --git a/nixpkgs/pkgs/development/python-modules/hacking/default.nix b/nixpkgs/pkgs/development/python-modules/hacking/default.nix
index 2c345691216d..44a7a2deb75b 100644
--- a/nixpkgs/pkgs/development/python-modules/hacking/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hacking/default.nix
@@ -4,9 +4,7 @@
 , pbr
 , flake8
 , stestr
-, eventlet
 , ddt
-, testtools
 , testscenarios
 }:
 
@@ -37,7 +35,9 @@ buildPythonPackage rec {
   ];
 
   checkPhase = ''
-    stestr run
+    stestr run -e <(echo "
+      hacking.tests.test_doctest.HackingTestCase.test_flake8
+    ")
   '';
 
   pythonImportsCheck = [ "hacking" ];
diff --git a/nixpkgs/pkgs/development/python-modules/hahomematic/default.nix b/nixpkgs/pkgs/development/python-modules/hahomematic/default.nix
new file mode 100644
index 000000000000..287e12afe78e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hahomematic/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, aiohttp
+, pythonOlder
+, voluptuous
+, websocket-client
+, xmltodict
+}:
+
+buildPythonPackage rec {
+  pname = "hahomematic";
+  version = "0.9.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "danielperna84";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-sxYa0SCsX1NZlCRMIpwyU1KPEteVH5HGLx1dFsbiu/E=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    voluptuous
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "hahomematic"
+  ];
+
+  meta = with lib; {
+    description = "Python module to interact with HomeMatic devices";
+    homepage = "https://github.com/danielperna84/hahomematic";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/halo/default.nix b/nixpkgs/pkgs/development/python-modules/halo/default.nix
index e167371b42a4..bd1d5f726363 100644
--- a/nixpkgs/pkgs/development/python-modules/halo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/halo/default.nix
@@ -4,7 +4,6 @@
 , isPy27
 , lib
 , log-symbols
-, pytestCheckHook
 , six
 , spinners
 , termcolor }:
diff --git a/nixpkgs/pkgs/development/python-modules/halohome/default.nix b/nixpkgs/pkgs/development/python-modules/halohome/default.nix
new file mode 100644
index 000000000000..b87b59a46ec0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/halohome/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, aiohttp
+, bleak
+, buildPythonPackage
+, csrmesh
+, fetchFromGitHub
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "halohome";
+  version = "0.4.0";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "nayaverdier";
+    repo = pname;
+    rev = version;
+    sha256 = "W7cqBJmoBUT0VvXeNKxUK0FfAuprjfvFv6rgyL2gqYQ=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    bleak
+    csrmesh
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "halohome"
+  ];
+
+  meta = with lib; {
+    description = "Python library to control Eaton HALO Home Smart Lights";
+    homepage = "https://github.com/nayaverdier/halohome";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/hangups/default.nix b/nixpkgs/pkgs/development/python-modules/hangups/default.nix
index 9c32bc2dd951..1832803388fc 100644
--- a/nixpkgs/pkgs/development/python-modules/hangups/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hangups/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "hangups";
-  version = "0.4.14";
+  version = "0.4.15";
 
   disabled = pythonOlder "3.6";
 
@@ -26,12 +26,13 @@ buildPythonPackage rec {
     owner = "tdryer";
     repo = "hangups";
     rev = "v${version}";
-    sha256 = "14njagpdp13zlaqnwl2mh7fkpnsaqr6wkr4lwh608v06pkwwcwcm";
+    sha256 = "sha256-47OvfFK92AtX6KiYnvro2B17RfQWyzgsgvOfl5T3Kag=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "protobuf>=3.1.0,<3.16" "protobuf" \
+      --replace "protobuf>=3.1.0,<3.17" "protobuf" \
+      --replace "async-timeout>=2,<4" "async-timeout" \
       --replace "MechanicalSoup>=0.6.0,<0.13" "MechanicalSoup"
   '';
 
diff --git a/nixpkgs/pkgs/development/python-modules/hass-nabucasa/default.nix b/nixpkgs/pkgs/development/python-modules/hass-nabucasa/default.nix
index 90fd6bf50185..48788537a660 100644
--- a/nixpkgs/pkgs/development/python-modules/hass-nabucasa/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hass-nabucasa/default.nix
@@ -24,6 +24,13 @@ buildPythonPackage rec {
     sha256 = "sha256-0E8eiHzqbxHbtAd97MbvFMRDWTu25E9x/44oNGC4mUM=";
   };
 
+  postPatch = ''
+    sed -i 's/"acme.*"/"acme"/' setup.py
+    substituteInPlace setup.py \
+      --replace "cryptography>=2.8,<4.0" "cryptography" \
+      --replace "snitun==" "snitun>="
+  '';
+
   propagatedBuildInputs = [
     acme
     aiohttp
@@ -40,12 +47,6 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  postPatch = ''
-    sed -i 's/"acme.*"/"acme"/' setup.py
-    substituteInPlace setup.py \
-      --replace "snitun==" "snitun>="
-  '';
-
   pythonImportsCheck = [ "hass_nabucasa" ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/hatasmota/default.nix b/nixpkgs/pkgs/development/python-modules/hatasmota/default.nix
index e746c4c24850..6a0a3793d87b 100644
--- a/nixpkgs/pkgs/development/python-modules/hatasmota/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hatasmota/default.nix
@@ -3,17 +3,21 @@
 , buildPythonPackage
 , fetchFromGitHub
 , voluptuous
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "hatasmota";
-  version = "0.2.21";
+  version = "0.3.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "emontnemery";
     repo = pname;
     rev = version;
-    sha256 = "sha256-mtn/r6pvHeGMLkvUP4w6CT+2+viLna4Vvn9RFMEmqts=";
+    sha256 = "sha256-/am6cRhAdiqMq0u7Ed4qhIA+Em2O0gIt7HfP19+2XHw=";
   };
 
   propagatedBuildInputs = [
@@ -24,7 +28,9 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "hatasmota" ];
+  pythonImportsCheck = [
+    "hatasmota"
+  ];
 
   meta = with lib; {
     description = "Python module to help parse and construct Tasmota MQTT messages";
diff --git a/nixpkgs/pkgs/development/python-modules/hbmqtt/default.nix b/nixpkgs/pkgs/development/python-modules/hbmqtt/default.nix
deleted file mode 100644
index 37a4762bfc13..000000000000
--- a/nixpkgs/pkgs/development/python-modules/hbmqtt/default.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, pythonAtLeast, setuptools
-, transitions, websockets, passlib, docopt, pyyaml, nose }:
-
-buildPythonPackage rec {
-  pname = "hbmqtt";
-  version = "0.9.6";
-
-  # https://github.com/beerfactory/hbmqtt/issues/223
-  disabled = !isPy3k || pythonAtLeast "3.9";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1n9c8yj11npiq9qxivwmfhib1qkjpcyw42a7q0w641bdrz3x6r37";
-  };
-
-  propagatedBuildInputs = [
-    transitions websockets passlib docopt pyyaml setuptools
-  ];
-
-  postPatch = ''
-    # https://github.com/beerfactory/hbmqtt/pull/241
-    substituteInPlace hbmqtt/adapters.py \
-      --replace "websockets.protocol" "websockets.legacy.protocol"
-
-    # test tries to bind same port multiple times and fails
-    rm tests/test_client.py
-  '';
-
-  checkInputs = [ nose ];
-
-  checkPhase = ''
-    nosetests -e test_connect_tcp
-  '';
-
-  meta = with lib; {
-    homepage = "https://github.com/beerfactory/hbmqtt";
-    description = "MQTT client/broker using Python asynchronous I/O";
-    license = licenses.mit;
-    maintainers = with maintainers; [ dotlambda ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/hdfs/default.nix b/nixpkgs/pkgs/development/python-modules/hdfs/default.nix
new file mode 100644
index 000000000000..05faf08bc5e4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/hdfs/default.nix
@@ -0,0 +1,36 @@
+{ buildPythonPackage
+, docopt
+, fastavro
+, fetchFromGitHub
+, lib
+, nose
+, pytestCheckHook
+, requests
+, six
+}:
+
+buildPythonPackage rec {
+  pname = "hdfs";
+  # See https://github.com/mtth/hdfs/issues/176.
+  version = "2.5.8";
+
+  src = fetchFromGitHub {
+    owner = "mtth";
+    repo = pname;
+    rev = version;
+    hash = "sha256-94Q3IUoX1Cb+uRqvsfpVZJ1koJSx5cQ3/XpYJ0gkQNU=";
+  };
+
+  propagatedBuildInputs = [ docopt requests six ];
+
+  checkInputs = [ fastavro nose pytestCheckHook ];
+
+  pythonImportsCheck = [ "hdfs" ];
+
+  meta = with lib; {
+    description = "Python API and command line interface for HDFS";
+    homepage = "https://github.com/mtth/hdfs";
+    license = licenses.mit;
+    maintainers = with maintainers; [ samuela ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/headerparser/default.nix b/nixpkgs/pkgs/development/python-modules/headerparser/default.nix
new file mode 100644
index 000000000000..b1a38170162b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/headerparser/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+}:
+
+buildPythonPackage rec {
+  pname = "headerparser";
+  version = "0.4.0";
+
+  src = fetchPypi{
+    inherit pname;
+    inherit version;
+    sha256 = "b8ceae4c5e6133fda666d022684e93f9b3d45815c2c7881018123c71ff28c5cc";
+  };
+
+  buildInputs = [
+    six
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/jwodder/headerparser";
+    description = "argparse for mail-style headers";
+    license = with licenses; [ mit ];
+    maintainers = with lib.maintainers; [ ayazhafiz ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/heatzypy/default.nix b/nixpkgs/pkgs/development/python-modules/heatzypy/default.nix
new file mode 100644
index 000000000000..a0647d2dd77d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/heatzypy/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, requests
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "heatzypy";
+  version = "1.4.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "Cyr-ius";
+    repo = pname;
+    rev = version;
+    sha256 = "nENuH2u9RtWq86TW/sDFFeYS8GTWGj7qfcFS8AHFRGk=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "heatzypy"
+  ];
+
+  meta = with lib; {
+    description = "Python module to interact with Heatzy devices";
+    homepage = "https://github.com/Cyr-ius/heatzypy";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/herepy/default.nix b/nixpkgs/pkgs/development/python-modules/herepy/default.nix
index 4b1d5913f7f8..ef7e5b8755c0 100644
--- a/nixpkgs/pkgs/development/python-modules/herepy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/herepy/default.nix
@@ -9,7 +9,8 @@
 
 buildPythonPackage rec {
   pname = "herepy";
-  version = "3.5.4";
+  version = "3.5.6";
+  format = "setuptools";
 
   disabled = pythonOlder "3.5";
 
@@ -17,14 +18,9 @@ buildPythonPackage rec {
     owner = "abdullahselek";
     repo = "HerePy";
     rev = version;
-    sha256 = "0wnkyrzpahxg7yh2qf149fzgs4x2jx3lf458syzz3crm7qix2hsk";
+    sha256 = "sha256-I5u5PKB29jQNFdsx+y5ZJOE837D7Hpcsf3pwlCvmEqU=";
   };
 
-  postPatch = ''
-    substituteInPlace requirements.txt \
-      --replace "requests==2.25.1" "requests>=2.25.1"
-  '';
-
   propagatedBuildInputs = [
     requests
   ];
@@ -34,7 +30,9 @@ buildPythonPackage rec {
     responses
   ];
 
-  pythonImportsCheck = [ "herepy" ];
+  pythonImportsCheck = [
+    "herepy"
+  ];
 
   meta = with lib; {
     description = "Library that provides a Python interface to the HERE APIs";
diff --git a/nixpkgs/pkgs/development/python-modules/hg-evolve/default.nix b/nixpkgs/pkgs/development/python-modules/hg-evolve/default.nix
index 70b1a1fe5276..27c2167ff1dd 100644
--- a/nixpkgs/pkgs/development/python-modules/hg-evolve/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hg-evolve/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "hg-evolve";
-  version = "10.4.0";
+  version = "10.4.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "64fd249a7fcabea60953fc3e7f08da6a85960aca367c04d078b999b7f6fd0246";
+    sha256 = "b47d9a1e0af3d7b54edd646581ac3e3ab046a572368eeb22dfd89dff7f9964d2";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/hg-git/default.nix b/nixpkgs/pkgs/development/python-modules/hg-git/default.nix
index 1d8e1ec1e29f..eccdcdaed422 100644
--- a/nixpkgs/pkgs/development/python-modules/hg-git/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hg-git/default.nix
@@ -2,35 +2,25 @@
 , buildPythonPackage
 , fetchPypi
 , dulwich
-, isPy3k
-, fetchpatch
+, mercurial
 }:
 
 buildPythonPackage rec {
   pname = "hg-git";
-  version = "0.8.12";
-  disabled = isPy3k;
+  version = "0.10.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "13hbm0ki6s88r6p65ibvrbxnskinzdz0m9gsshb8s571p91ymfjn";
+    sha256 = "27e6d7686a1548d4632dcc977f2ff3ce2e42d80735339b1f3b389b7481260cc4";
   };
 
-  propagatedBuildInputs = [ dulwich ];
-
-  # Needs patch to work with Mercurial 4.8
-  # https://bitbucket.org/durin42/hg-git/issues/264/unexpected-keyword-argument-createopts-hg
-  patches =
-    fetchpatch {
-      url = "https://bitbucket.org/rsalmaso/hg-git/commits/a778506fd4be0bf1afa75755f6ee9260fa234a0f/raw";
-      sha256 = "12r4qzbc5xcqwv0kvf8g4wjji7n45421zkbf6i75vyi4nl6n4j15";
-    };
+  propagatedBuildInputs = [ dulwich mercurial ];
 
   meta = with lib; {
     description = "Push and pull from a Git server using Mercurial";
-    homepage = "http://hg-git.github.com/";
+    homepage = "https://hg-git.github.io/";
     maintainers = with maintainers; [ koral ];
-    license = licenses.gpl2;
+    license = licenses.gpl2Only;
   };
 
 }
diff --git a/nixpkgs/pkgs/development/python-modules/hgsvn/default.nix b/nixpkgs/pkgs/development/python-modules/hgsvn/default.nix
deleted file mode 100644
index b8b6d43b5480..000000000000
--- a/nixpkgs/pkgs/development/python-modules/hgsvn/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, hglib
-, isPy3k
-, isPyPy
-}:
-
-buildPythonPackage rec {
-  pname = "hgsvn";
-  version = "0.3.15";
-  disabled = isPy3k || isPyPy;
-
-  src = fetchPypi {
-    inherit pname version;
-    extension = "zip";
-    sha256 = "036270cc2803f7a7de3842e8c593849631b2293e647aa3444f68f1b1834d1fa1";
-  };
-
-  buildInputs = [ nose ];
-  propagatedBuildInputs = [ hglib ];
-
-  doCheck = false;  # too many assumptions
-
-  meta = with lib; {
-    homepage = "https://pypi.python.org/pypi/hgsvn";
-    description = "A set of scripts to work locally on Subversion checkouts using Mercurial";
-    license = licenses.gpl2;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/hid/default.nix b/nixpkgs/pkgs/development/python-modules/hid/default.nix
index 8dc134c61c0f..ce6e1d58def3 100644
--- a/nixpkgs/pkgs/development/python-modules/hid/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hid/default.nix
@@ -1,5 +1,4 @@
 { lib
-, stdenv
 , buildPythonPackage
 , fetchPypi
 , hidapi
diff --git a/nixpkgs/pkgs/development/python-modules/hidapi/default.nix b/nixpkgs/pkgs/development/python-modules/hidapi/default.nix
index 2b9165dee24e..cf54198b18b3 100644
--- a/nixpkgs/pkgs/development/python-modules/hidapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hidapi/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "hidapi";
-  version = "0.10.1";
+  version = "0.11.0.post2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a1170b18050bc57fae3840a51084e8252fd319c0fc6043d68c8501deb0e25846";
+    sha256 = "da815e0d1d4b2ef1ebbcc85034572105dca29627eb61881337aa39010f2ef8cb";
   };
 
   nativeBuildInputs = lib.optionals stdenv.isDarwin [ xcbuild ];
diff --git a/nixpkgs/pkgs/development/python-modules/hjson/default.nix b/nixpkgs/pkgs/development/python-modules/hjson/default.nix
index 096edbe5252e..cd48fcd6187e 100644
--- a/nixpkgs/pkgs/development/python-modules/hjson/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hjson/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, python
 , pythonImportsCheckHook
 , makeWrapper
 }:
@@ -23,7 +24,9 @@ buildPythonPackage rec {
 
   postInstall = ''
     rm $out/bin/hjson.cmd
-    wrapProgram $out/bin/hjson --set PYTHONPATH "$PYTHONPATH"
+    wrapProgram $out/bin/hjson  \
+      --set PYTHONPATH "$PYTHONPATH" \
+      --prefix PATH : ${lib.makeBinPath [ python ]}
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/hole/default.nix b/nixpkgs/pkgs/development/python-modules/hole/default.nix
index 87c63be32e8c..3175a8fabb58 100644
--- a/nixpkgs/pkgs/development/python-modules/hole/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hole/default.nix
@@ -1,17 +1,21 @@
 { lib
-, buildPythonPackage
-, fetchPypi
 , aiohttp
 , async-timeout
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "hole";
-  version = "0.5.1";
+  version = "0.7.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "065fxc0l16j8xkjd0y0qar9cmqmjyp8jcshakbakldkfscpx3s5m";
+    sha256 = "sha256-yZpzGfB5RTWaRn2DmT+cbSDC0pL16FyUc0Nr/V6TlhU=";
   };
 
   propagatedBuildInputs = [
@@ -22,7 +26,9 @@ buildPythonPackage rec {
   # no tests are present
   doCheck = false;
 
-  pythonImportsCheck = [ "hole" ];
+  pythonImportsCheck = [
+    "hole"
+  ];
 
   meta = with lib; {
     description = "Python API for interacting with a Pihole instance.";
diff --git a/nixpkgs/pkgs/development/python-modules/holidays/default.nix b/nixpkgs/pkgs/development/python-modules/holidays/default.nix
index 7ac02fa05ac9..10d333301641 100644
--- a/nixpkgs/pkgs/development/python-modules/holidays/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/holidays/default.nix
@@ -7,17 +7,18 @@
 , korean-lunar-calendar
 , pytestCheckHook
 , pythonOlder
-, six
 }:
 
 buildPythonPackage rec {
   pname = "holidays";
   version = "0.11.3.1";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4855afe0ebf428efbcf848477828b889f8515be7f4f15ae26682919369d92774";
+    sha256 = "sha256-SFWv4Ov0KO+8+EhHeCi4ifhRW+f08VriZoKRk2nZJ3Q=";
   };
 
   propagatedBuildInputs = [
@@ -25,18 +26,19 @@ buildPythonPackage rec {
     python-dateutil
     hijri-converter
     korean-lunar-calendar
-    six
   ];
 
   checkInputs = [
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "holidays" ];
+  pythonImportsCheck = [
+    "holidays"
+  ];
 
   meta = with lib; {
-    homepage = "https://github.com/dr-prodigy/python-holidays";
     description = "Generate and work with holidays in Python";
+    homepage = "https://github.com/dr-prodigy/python-holidays";
     license = licenses.mit;
     maintainers = with maintainers; [ jluttine ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/holoviews/default.nix b/nixpkgs/pkgs/development/python-modules/holoviews/default.nix
index a95d4816c497..89d86ee4eb43 100644
--- a/nixpkgs/pkgs/development/python-modules/holoviews/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/holoviews/default.nix
@@ -16,25 +16,20 @@
 
 buildPythonPackage rec {
   pname = "holoviews";
-  version = "1.14.6";
+  version = "1.14.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3a25c4fe3195fdc4639461abbfa5a8bebce8ab737674b6673da2236a901cfefd";
+    sha256 = "8d8d171227e9c9eaadd4b037b3ddaa01055a33bacbdbeb57a5efbd273986665f";
   };
 
   propagatedBuildInputs = [
     colorcet
-    param
     numpy
-    pyviz-comms
-    ipython
-    notebook
     pandas
-    matplotlib
-    bokeh
-    scipy
     panel
+    param
+    pyviz-comms
   ];
 
   # tests not fully included with pypi release
diff --git a/nixpkgs/pkgs/development/python-modules/homematicip/default.nix b/nixpkgs/pkgs/development/python-modules/homematicip/default.nix
index e6759f498a32..fb10dc516831 100644
--- a/nixpkgs/pkgs/development/python-modules/homematicip/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/homematicip/default.nix
@@ -5,6 +5,7 @@
 , async-timeout
 , buildPythonPackage
 , fetchFromGitHub
+, fetchpatch
 , pytestCheckHook
 , pythonOlder
 , pytest-aiohttp
@@ -17,6 +18,8 @@
 buildPythonPackage rec {
   pname = "homematicip";
   version = "1.0.1";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
@@ -26,6 +29,15 @@ buildPythonPackage rec {
     sha256 = "008snxx9ijpi1zr1pi1v4a6g74j821hyw0khs9lmi08v2mcabm36";
   };
 
+  patches = [
+    (fetchpatch {
+      # Drop loop kwarg from async_timeout.timeout
+      # https://github.com/coreGreenberet/homematicip-rest-api/pull/424
+      url = "https://github.com/coreGreenberet/homematicip-rest-api/commit/90efb335667e3d462b7f9ef113d2e0b8bb4e96b4.patch";
+      sha256 = "0f2bbs0666mf6sc7p4n8fwh29yjilkq36qf5pn0waf6iqdzxqwih";
+    })
+  ];
+
   propagatedBuildInputs = [
     aenum
     aiohttp
@@ -42,6 +54,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  postPatch = ''
+    substituteInPlace homematicip/aio/connection.py \
+      --replace ", loop=self._loop" ""
+  '';
+
   disabledTests = [
     # Assert issues with datetime
     "test_contact_interface_device"
@@ -67,7 +84,9 @@ buildPythonPackage rec {
     "test_websocket"
   ];
 
-  pythonImportsCheck = [ "homematicip" ];
+  pythonImportsCheck = [
+    "homematicip"
+  ];
 
   meta = with lib; {
     description = "Python module for the homematicIP REST API";
diff --git a/nixpkgs/pkgs/development/python-modules/howdoi/default.nix b/nixpkgs/pkgs/development/python-modules/howdoi/default.nix
index 8cd90765ec14..213c382be0bd 100644
--- a/nixpkgs/pkgs/development/python-modules/howdoi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/howdoi/default.nix
@@ -9,19 +9,18 @@
 , pygments
 , pyquery
 , requests
-, six
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "howdoi";
-  version = "2.0.17";
+  version = "2.0.19";
 
   src = fetchFromGitHub {
     owner = "gleitz";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1cc9hbnalbsd5la9wsm8s6drb79vlzin9qnv86ic81r5nq27n180";
+    sha256 = "0hl7cpxm4llsgw6390bpjgkzrprrpb0vxx2flgly7wiy9zl1rc5q";
   };
 
   propagatedBuildInputs = [
@@ -33,7 +32,6 @@ buildPythonPackage rec {
     pygments
     pyquery
     requests
-    six
   ];
 
   checkInputs = [
@@ -50,7 +48,9 @@ buildPythonPackage rec {
     "test_get_text_without_links"
   ];
 
-  pythonImportsCheck = [ "howdoi" ];
+  pythonImportsCheck = [
+    "howdoi"
+  ];
 
   meta = with lib; {
     description = "Instant coding answers via the command line";
diff --git a/nixpkgs/pkgs/development/python-modules/hsaudiotag/default.nix b/nixpkgs/pkgs/development/python-modules/hsaudiotag/default.nix
deleted file mode 100644
index d38ceec7e131..000000000000
--- a/nixpkgs/pkgs/development/python-modules/hsaudiotag/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "hsaudiotag";
-  version = "1.1.1";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "15hgm128p8nysfi0jb127awga3vlj0iw82l50swjpvdh01m7rda8";
-  };
-
-  # no tests
-  doCheck = false;
-
-  meta = with lib; {
-    description = "A pure Python library that lets one to read metadata from media files";
-    homepage = "http://hg.hardcoded.net/hsaudiotag/";
-    license = licenses.bsd3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/hstspreload/default.nix b/nixpkgs/pkgs/development/python-modules/hstspreload/default.nix
index be1d5f7c5844..cab1482ed917 100644
--- a/nixpkgs/pkgs/development/python-modules/hstspreload/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hstspreload/default.nix
@@ -1,25 +1,29 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, isPy27
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "hstspreload";
-  version = "2021.10.1";
-  disabled = isPy27;
+  version = "2021.12.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "sethmlarson";
     repo = pname;
     rev = version;
-    sha256 = "sha256-nd3k2enQvYzASFyLy8chBLGX8dXlLyMyg4yv06VSeUA=";
+    sha256 = "sha256-Qr9K4+egrXD6eUgUtke2n7HyhXLthrju9ykXSI7Wl4Q=";
   };
 
-  # tests require network connection
+  # 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/html2text/2018.nix b/nixpkgs/pkgs/development/python-modules/html2text/2018.nix
deleted file mode 100644
index 06d0c14c7e43..000000000000
--- a/nixpkgs/pkgs/development/python-modules/html2text/2018.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-}:
-
-buildPythonPackage rec {
-  pname = "html2text";
-  version = "2018.1.9";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "627514fb30e7566b37be6900df26c2c78a030cc9e6211bda604d8181233bcdd4";
-  };
-
-  meta = with lib; {
-    description = "Turn HTML into equivalent Markdown-structured text";
-    homepage = "https://github.com/Alir3z4/html2text/";
-    license = licenses.gpl3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/html5lib/default.nix b/nixpkgs/pkgs/development/python-modules/html5lib/default.nix
index f0abbcfbecce..1172b0195132 100644
--- a/nixpkgs/pkgs/development/python-modules/html5lib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/html5lib/default.nix
@@ -1,12 +1,11 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, flake8
-, pytest_4
-, pytest-expect
-, mock
 , six
 , webencodings
+, mock
+, pytest-expect
+, pytestCheckHook_5
 }:
 
 buildPythonPackage rec {
@@ -18,17 +17,16 @@ buildPythonPackage rec {
     sha256 = "b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f";
   };
 
-  checkInputs = [ flake8 pytest_4 pytest-expect mock ];
   propagatedBuildInputs = [
-    six webencodings
+    six
+    webencodings
   ];
 
-  checkPhase = ''
-    # remove test causing error
-    # https://github.com/html5lib/html5lib-python/issues/411
-    rm html5lib/tests/test_stream.py
-    py.test
-  '';
+  checkInputs = [
+    mock
+    pytest-expect
+    pytestCheckHook_5
+  ];
 
   meta = {
     homepage = "https://github.com/html5lib/html5lib-python";
diff --git a/nixpkgs/pkgs/development/python-modules/http_signature/default.nix b/nixpkgs/pkgs/development/python-modules/http_signature/default.nix
deleted file mode 100644
index 9169f1e41266..000000000000
--- a/nixpkgs/pkgs/development/python-modules/http_signature/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, pycrypto
-}:
-
-buildPythonPackage rec {
-  pname = "http_signature";
-  version = "0.1.4";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "14acc192ef20459d5e11b4e800dd3a4542f6bd2ab191bf5717c696bf30936c62";
-  };
-
-  propagatedBuildInputs = [ pycrypto ];
-
-  meta = with lib; {
-    homepage = "https://github.com/atl/py-http-signature";
-    description = "Simple secure signing for HTTP requests using http-signature";
-    license = licenses.mit;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/httpcore/default.nix b/nixpkgs/pkgs/development/python-modules/httpcore/default.nix
index 089c2d9fcc42..99eb08a35a9d 100644
--- a/nixpkgs/pkgs/development/python-modules/httpcore/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/httpcore/default.nix
@@ -3,12 +3,14 @@
 , pythonOlder
 , fetchFromGitHub
 , anyio
+, certifi
 , h11
 , h2
 , pproxy
 , pytest-asyncio
 , pytestCheckHook
 , pytest-cov
+, pytest-httpbin
 , sniffio
 , trio
 , trustme
@@ -17,18 +19,19 @@
 
 buildPythonPackage rec {
   pname = "httpcore";
-  version = "0.13.7";
+  version = "0.14.3";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "encode";
     repo = pname;
     rev = version;
-    sha256 = "sha256-9hG9MqqEYMT2j7tXafToGYwHbJfp9/klNqZozHSbweE=";
+    sha256 = "sha256-jPsbMhY1lWKBXlh6hsX6DGKXi/g7VQSU00tF6H7qkOo=";
   };
 
   propagatedBuildInputs = [
     anyio
+    certifi
     h11
     h2
     sniffio
@@ -39,19 +42,12 @@ buildPythonPackage rec {
     pytest-asyncio
     pytestCheckHook
     pytest-cov
+    pytest-httpbin
     trio
     trustme
     uvicorn
   ];
 
-  disabledTestPaths = [
-    # these tests fail during dns lookups: httpcore.ConnectError: [Errno -2] Name or service not known
-    "tests/test_threadsafety.py"
-    "tests/async_tests/"
-    "tests/sync_tests/test_interfaces.py"
-    "tests/sync_tests/test_retries.py"
-  ];
-
   pythonImportsCheck = [ "httpcore" ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/httplib2/default.nix b/nixpkgs/pkgs/development/python-modules/httplib2/default.nix
index 756d3e4ddcc4..3f48af86e581 100644
--- a/nixpkgs/pkgs/development/python-modules/httplib2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/httplib2/default.nix
@@ -1,8 +1,8 @@
 { lib
 , stdenv
 , buildPythonPackage
+, cryptography
 , fetchFromGitHub
-, fetchpatch
 , isPy27
 , mock
 , pyparsing
@@ -16,35 +16,22 @@
 
 buildPythonPackage rec {
   pname = "httplib2";
-  version = "0.19.1";
+  version = "0.20.3";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-e0Mq9AVJEWQ9GEtYFXk2fMIs7GtAUsyJN6XheqAnD3I=";
+    sha256 = "sha256-Q5KkhVqyHDoIeKjvvYoHRbZPY7LUXGDwgp4CSuyvQ1g=";
   };
 
-  patches = [
-    # fix test_inject_space
-    (fetchpatch {
-      url = "https://github.com/httplib2/httplib2/commit/08d6993b69256fbc6c0b1c615c24910803c4d610.patch";
-      sha256 = "0kbd1skn58m20kfkh4qzd66g9bvj31xlkbhsg435dkk4qz6l3yn3";
-    })
+  propagatedBuildInputs = [
+    pyparsing
   ];
 
-  postPatch = ''
-    sed -i "/--cov/d" setup.cfg
-  '';
-
-  propagatedBuildInputs = [ pyparsing ];
-
-  pythonImportsCheck = [ "httplib2" ];
-
-  # Don't run tests for Python 2.7
-  doCheck = !isPy27;
-
   checkInputs = [
+    cryptography
     mock
     pytest-forked
     pytest-randomly
@@ -54,16 +41,29 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  # Don't run tests for Python 2.7
+  doCheck = !isPy27;
+
+  postPatch = ''
+    sed -i "/--cov/d" setup.cfg
+  '';
+
   disabledTests = lib.optionals (stdenv.isDarwin) [
     # fails with HTTP 408 Request Timeout, instead of expected 200 OK
     "test_timeout_subsequent"
   ];
 
-  pytestFlagsArray = [ "--ignore python2" ];
+  pytestFlagsArray = [
+    "--ignore python2"
+  ];
+
+  pythonImportsCheck = [
+    "httplib2"
+  ];
 
   meta = with lib; {
     description = "A comprehensive HTTP client library";
-    homepage = "https://httplib2.readthedocs.io";
+    homepage = "https://github.com/httplib2/httplib2";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/httpretty/default.nix b/nixpkgs/pkgs/development/python-modules/httpretty/default.nix
index 78a529666139..67ece594071c 100644
--- a/nixpkgs/pkgs/development/python-modules/httpretty/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/httpretty/default.nix
@@ -12,7 +12,6 @@
 , nose-randomly
 , six
 , mock
-, eventlet
 , pytest
 , freezegun
 }:
diff --git a/nixpkgs/pkgs/development/python-modules/httpx-socks/default.nix b/nixpkgs/pkgs/development/python-modules/httpx-socks/default.nix
index f73d81cc6aaa..fac9ecba6ce9 100644
--- a/nixpkgs/pkgs/development/python-modules/httpx-socks/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/httpx-socks/default.nix
@@ -6,26 +6,30 @@
 , flask
 , httpcore
 , httpx
+, hypercorn
 , pytest-asyncio
 , pytest-trio
 , pytestCheckHook
 , python-socks
 , pythonOlder
 , sniffio
+, starlette
 , trio
 , yarl
 }:
 
 buildPythonPackage rec {
   pname = "httpx-socks";
-  version = "0.4.1";
+  version = "0.7.2";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "romis2012";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1rz69z5fcw7d5nzy5q2q0r9gxrsqijgpg70cnyr5br6xnfgy01ar";
+    sha256 = "1wigmkhn4ymfr12z9vhdaimjcma9llicwrr29q0cc8xmy23f3445";
   };
 
   propagatedBuildInputs = [
@@ -40,13 +44,17 @@ buildPythonPackage rec {
 
   checkInputs = [
     flask
+    hypercorn
     pytest-asyncio
     pytest-trio
     pytestCheckHook
+    starlette
     yarl
   ];
 
-  pythonImportsCheck = [ "httpx_socks" ];
+  pythonImportsCheck = [
+    "httpx_socks"
+  ];
 
   meta = with lib; {
     description = "Proxy (HTTP, SOCKS) transports for httpx";
diff --git a/nixpkgs/pkgs/development/python-modules/httpx/default.nix b/nixpkgs/pkgs/development/python-modules/httpx/default.nix
index 014272bcc107..543308a3fdc1 100644
--- a/nixpkgs/pkgs/development/python-modules/httpx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/httpx/default.nix
@@ -9,6 +9,7 @@
 , httpcore
 , rfc3986
 , sniffio
+, python
 , pytestCheckHook
 , pytest-asyncio
 , pytest-trio
@@ -19,14 +20,14 @@
 
 buildPythonPackage rec {
   pname = "httpx";
-  version = "0.19.0";
+  version = "0.21.1";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "encode";
     repo = pname;
     rev = version;
-    sha256 = "sha256-bUxxeUYqOHBmSL2gPQG5cIq6k5QY4Kyhj9ToA5yZXPA=";
+    sha256 = "sha256-ayhLP+1hPWAx2ds227CKp5cebVkD5B2Z59L+3dzdINc=";
   };
 
   propagatedBuildInputs = [
@@ -50,12 +51,24 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "httpx" ];
 
+  # testsuite wants to find installed packages for testing entrypoint
+  preCheck = ''
+    export PYTHONPATH=$out/${python.sitePackages}:$PYTHONPATH
+  '';
+
   disabledTests = [
     # httpcore.ConnectError: [Errno 101] Network is unreachable
     "test_connect_timeout"
     # httpcore.ConnectError: [Errno -2] Name or service not known
     "test_async_proxy_close"
     "test_sync_proxy_close"
+    # sensitive to charset_normalizer output
+    "iso-8859-1"
+    "test_response_no_charset_with_iso_8859_1_content"
+  ];
+
+  disabledTestPaths = [
+    "tests/test_main.py"
   ];
 
   __darwinAllowLocalNetworking = true;
diff --git a/nixpkgs/pkgs/development/python-modules/huawei-lte-api/default.nix b/nixpkgs/pkgs/development/python-modules/huawei-lte-api/default.nix
index 44cbfd4f0e0a..b62ab4f0e77a 100644
--- a/nixpkgs/pkgs/development/python-modules/huawei-lte-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/huawei-lte-api/default.nix
@@ -2,15 +2,15 @@
 , buildPythonPackage
 , pythonOlder
 , fetchFromGitHub
-, dicttoxml
+, pycryptodomex
+, pytestCheckHook
 , requests
 , xmltodict
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "huawei-lte-api";
-  version = "1.4.18";
+  version = "1.5.4";
 
   disabled = pythonOlder "3.4";
 
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "Salamek";
     repo = "huawei-lte-api";
     rev = version;
-    sha256 = "1qaqxmh03j10wa9wqbwgc5r3ays8wfr7bldvsm45fycr3qfyn5fg";
+    hash = "sha256-aTxP2lVrGr2B+ELz7fnVZVB0nm9HHAb15wDafV44h7M=";
   };
 
   postPatch = ''
@@ -27,7 +27,7 @@ buildPythonPackage rec {
   '';
 
   propagatedBuildInputs = [
-    dicttoxml
+    pycryptodomex
     requests
     xmltodict
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/hug/default.nix b/nixpkgs/pkgs/development/python-modules/hug/default.nix
index 872798c6ced8..f19c7a9dd39f 100644
--- a/nixpkgs/pkgs/development/python-modules/hug/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hug/default.nix
@@ -47,6 +47,7 @@ buildPythonPackage rec {
     description = "A Python framework that makes developing APIs as simple as possible, but no simpler";
     homepage = "https://github.com/hugapi/hug";
     license = licenses.mit;
+    # Missing support for later falcon releases
+    broken = true;
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/huggingface-hub/default.nix b/nixpkgs/pkgs/development/python-modules/huggingface-hub/default.nix
index d5db12bd2d94..cf0b27c6c5b3 100644
--- a/nixpkgs/pkgs/development/python-modules/huggingface-hub/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/huggingface-hub/default.nix
@@ -4,25 +4,34 @@
 , pythonOlder
 , filelock
 , importlib-metadata
+, packaging
+, pyyaml
 , requests
+, ruamel-yaml
 , tqdm
+, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "huggingface-hub";
-  version = "0.0.6";
+  version = "0.1.2";
 
   src = fetchFromGitHub {
     owner = "huggingface";
     repo = "huggingface_hub";
     rev = "v${version}";
-    hash = "sha256-0DSgWmodeRmvGq2v3n86BzRx5Xdb8fIQh+G/2O2d+yo=";
+    sha256 = "1pmi76vinwwn0bcxy5hj8pxhzqxdbzp0y3hsd631yyys01s0n6xd";
   };
 
+  nativeBuildInputs = [ packaging ];
+
   propagatedBuildInputs = [
     filelock
+    pyyaml
     requests
+    ruamel-yaml
     tqdm
+    typing-extensions
   ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   # Tests require network access.
diff --git a/nixpkgs/pkgs/development/python-modules/humanize/default.nix b/nixpkgs/pkgs/development/python-modules/humanize/default.nix
index 85ec6257ea5d..d0b2464608b9 100644
--- a/nixpkgs/pkgs/development/python-modules/humanize/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/humanize/default.nix
@@ -1,7 +1,7 @@
 { lib
 , buildPythonPackage
-, fetchPypi
-, isPy27
+, fetchFromGitHub
+, pythonOlder
 , setuptools-scm
 , setuptools
 , pytestCheckHook
@@ -9,18 +9,33 @@
 }:
 
 buildPythonPackage rec {
-  version = "3.11.0";
+  version = "3.13.1";
   pname = "humanize";
-  disabled = isPy27; # setup.py no longer compatible
+  format = "pyproject";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "4160cdc63fcd0daac27d2e1e218a31bb396fc3fe5712d153675d89432a03778f";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "jmoiron";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-lgGBvYb3ciqETBOR31gxQVD7YyopTtmr++nCwvm63Zs=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
-  propagatedBuildInputs = [ setuptools ];
-  checkInputs = [ pytestCheckHook freezegun ];
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    setuptools
+  ];
+
+  checkInputs = [
+    freezegun
+    pytestCheckHook
+  ];
 
   meta = with lib; {
     description = "Python humanize utilities";
diff --git a/nixpkgs/pkgs/development/python-modules/hvplot/default.nix b/nixpkgs/pkgs/development/python-modules/hvplot/default.nix
index 271b3923033c..22be0ff75c9f 100644
--- a/nixpkgs/pkgs/development/python-modules/hvplot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hvplot/default.nix
@@ -1,18 +1,10 @@
 { lib
+, bokeh
 , buildPythonPackage
+, colorcet
 , fetchPypi
-, bokeh
 , holoviews
 , pandas
-, pytest
-, parameterized
-, nbsmoke
-, flake8
-, coveralls
-, xarray
-, networkx
-, streamz
-, colorcet
 , pythonImportsCheckHook
 }:
 
@@ -29,7 +21,6 @@ buildPythonPackage rec {
     pythonImportsCheckHook
   ];
 
-  checkInputs = [ pytest parameterized nbsmoke flake8 coveralls xarray networkx streamz ];
   propagatedBuildInputs = [
     bokeh
     colorcet
@@ -37,11 +28,7 @@ buildPythonPackage rec {
     pandas
   ];
 
-  preCheck = ''
-    export HOME=$(mktemp -d)
-  '';
-
-  # many tests require a network connection
+  # Many tests require a network connection
   doCheck = false;
 
   pythonImportsCheck = [
@@ -52,6 +39,6 @@ buildPythonPackage rec {
     description = "A high-level plotting API for the PyData ecosystem built on HoloViews";
     homepage = "https://hvplot.pyviz.org";
     license = licenses.bsd3;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/hwi/default.nix b/nixpkgs/pkgs/development/python-modules/hwi/default.nix
index 7b6daf1fad05..d4d091c36f8b 100644
--- a/nixpkgs/pkgs/development/python-modules/hwi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hwi/default.nix
@@ -31,6 +31,12 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
+  # make compatible with libusb1 2.x
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace 'libusb1>=1.7,<2.0' 'libusb1>=1.7'
+  '';
+
   # tests require to clone quite a few firmwares
   doCheck = false;
 
diff --git a/nixpkgs/pkgs/development/python-modules/hydra-check/default.nix b/nixpkgs/pkgs/development/python-modules/hydra-check/default.nix
index c01876d3f64c..48833d77e8bf 100644
--- a/nixpkgs/pkgs/development/python-modules/hydra-check/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hydra-check/default.nix
@@ -5,9 +5,8 @@
 , docopt
 , requests
 , beautifulsoup4
-, black
 , mypy
-, flake8
+, types-requests
 }:
 
 buildPythonPackage rec {
@@ -28,14 +27,17 @@ buildPythonPackage rec {
     beautifulsoup4
   ];
 
-  checkInputs = [ mypy ];
+  checkInputs = [
+    mypy
+    types-requests
+  ];
 
   checkPhase = ''
     echo -e "\x1b[32m## run mypy\x1b[0m"
     mypy hydracheck
   '';
 
-  meta = with lib;{
+  meta = with lib; {
     description = "check hydra for the build status of a package";
     homepage = "https://github.com/nix-community/hydra-check";
     license = licenses.mit;
diff --git a/nixpkgs/pkgs/development/python-modules/hydrawiser/default.nix b/nixpkgs/pkgs/development/python-modules/hydrawiser/default.nix
index feccc73707c2..3dfeff72609f 100644
--- a/nixpkgs/pkgs/development/python-modules/hydrawiser/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hydrawiser/default.nix
@@ -5,7 +5,6 @@
 , pytest-cov
 , pytestCheckHook
 , pythonOlder
-, pyyaml
 , requests
 , requests-mock
 }:
diff --git a/nixpkgs/pkgs/development/python-modules/hyperopt/default.nix b/nixpkgs/pkgs/development/python-modules/hyperopt/default.nix
index d407ff95a010..605377a2ec39 100644
--- a/nixpkgs/pkgs/development/python-modules/hyperopt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hyperopt/default.nix
@@ -1,29 +1,53 @@
-{ lib, fetchPypi, buildPythonPackage
-, cloudpickle, numpy, future, networkx
-, six, tqdm, scipy, pymongo
+{ lib
+, buildPythonPackage
+, cloudpickle
+, fetchPypi
+, future
+, networkx
+, numpy
+, py4j
+, pymongo
+, pyspark
+, scipy
+, six
+, tqdm
 }:
 
 buildPythonPackage rec {
   pname = "hyperopt";
-  version = "0.2.5";
+  version = "0.2.7";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bc6047d50f956ae64eebcb34b1fd40f186a93e214957f20e87af2f10195295cc";
+    sha256 = "1bf89ae58050bbd32c7307199046117feee245c2fd9ab6255c7308522b7ca149";
   };
 
-  propagatedBuildInputs = [ future cloudpickle numpy networkx six tqdm scipy pymongo ];
+  propagatedBuildInputs = [
+    cloudpickle
+    future
+    networkx
+    numpy
+    py4j
+    pymongo
+    pyspark
+    scipy
+    six
+    tqdm
+  ];
 
   # tries to use /homeless-shelter to mimic container usage, etc
   doCheck = false;
 
-  pythonImportsCheck = [ "hyperopt" ];
+  pythonImportsCheck = [
+    "hyperopt"
+  ];
 
   meta = with lib; {
     description = "Distributed Asynchronous Hyperparameter Optimization";
-    homepage    = "http://hyperopt.github.com/hyperopt/";
-    license     = licenses.bsd2;
-    platforms   = platforms.unix;
+    homepage = "http://hyperopt.github.io/hyperopt/";
+    license = licenses.bsd2;
+    platforms = platforms.unix;
     maintainers = with maintainers; [ freezeboy ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/hypothesis/default.nix b/nixpkgs/pkgs/development/python-modules/hypothesis/default.nix
index 4d0a1713d954..4cf8acf70872 100644
--- a/nixpkgs/pkgs/development/python-modules/hypothesis/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hypothesis/default.nix
@@ -18,14 +18,14 @@ buildPythonPackage rec {
   # If you need these, you can just add them to your environment.
 
   pname = "hypothesis";
-  version = "6.17.3";
+  version = "6.27.1";
 
   # Use github tarballs that includes tests
   src = fetchFromGitHub {
     owner = "HypothesisWorks";
     repo = "hypothesis-python";
     rev = "hypothesis-python-${version}";
-    sha256 = "1g96q3l97lq3xps36cv147dvj44nh1b0k67z817x7zfwyw844sgn";
+    sha256 = "05kfz041vrd9fy8gl8ch05g806jj4j6l1cnwhqgygagn9z3aq1jx";
   };
 
   postUnpack = "sourceRoot=$sourceRoot/hypothesis-python";
diff --git a/nixpkgs/pkgs/development/python-modules/hypothesmith/default.nix b/nixpkgs/pkgs/development/python-modules/hypothesmith/default.nix
index 0d175989271c..776ff77fce2f 100644
--- a/nixpkgs/pkgs/development/python-modules/hypothesmith/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hypothesmith/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "hypothesmith";
-  version = "0.1.9";
+  version = "0.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "039fd6aa0102f89df9df7ad4cff70aa8068678c13c3be2713c92568917317a04";
+    sha256 = "0fb7b3fd03d76eddd4474b0561e1c2662457593a74cc300fd27e5409cd4d7922";
   };
 
   propagatedBuildInputs = [ hypothesis lark-parser libcst ];
diff --git a/nixpkgs/pkgs/development/python-modules/hyppo/default.nix b/nixpkgs/pkgs/development/python-modules/hyppo/default.nix
index 8dcca1983ba3..61966bc7de76 100644
--- a/nixpkgs/pkgs/development/python-modules/hyppo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/hyppo/default.nix
@@ -1,8 +1,9 @@
 { lib
 , buildPythonPackage
-, isPy27
+, pythonOlder
 , fetchFromGitHub
-, pytestCheckHook , pytest-cov , numba
+, pytestCheckHook
+, numba
 , numpy
 , scikit-learn
 , scipy
@@ -12,15 +13,15 @@
 
 buildPythonPackage rec {
   pname = "hyppo";
-  version = "0.2.1";
+  version = "0.2.2";
 
-  disabled = isPy27;
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "neurodata";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0izjc68rb6sr3x55c3zzraakzspgzh80qykfax9zj868zypfm365";
+    sha256 = "1wrzrppyjq0pc03bn6qcslxzcnwn7fr2z5lm71gfpli5k05i26nr";
   };
 
   propagatedBuildInputs = [
@@ -30,7 +31,7 @@ buildPythonPackage rec {
     scipy
   ];
 
-  checkInputs = [ pytestCheckHook pytest-cov matplotlib seaborn ];
+  checkInputs = [ pytestCheckHook matplotlib seaborn ];
   disabledTestPaths = [
     "docs"
     "benchmarks"
diff --git a/nixpkgs/pkgs/development/python-modules/i3ipc/default.nix b/nixpkgs/pkgs/development/python-modules/i3ipc/default.nix
index 37d5ccd8786f..3805d501305b 100644
--- a/nixpkgs/pkgs/development/python-modules/i3ipc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/i3ipc/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchFromGitHub
-, xorgserver, pytest, pytest-xvfb, i3, python, xlib, xdpyinfo
+, xorgserver, pytest, pytest-xvfb, i3, xlib, xdpyinfo
 , makeFontsConf, coreutils
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/ibis/default.nix b/nixpkgs/pkgs/development/python-modules/ibis/default.nix
index 2d4a19107ce6..a58fb34080a5 100644
--- a/nixpkgs/pkgs/development/python-modules/ibis/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ibis/default.nix
@@ -2,29 +2,35 @@
 , buildPythonPackage
 , fetchFromGitHub
 , python
-, isPy27
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "ibis";
-  version = "1.6.0";
-  disabled = isPy27;
+  version = "3.2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "dmulholl";
     repo = pname;
     rev = version;
-    sha256 = "0xqhk397gzanvj2znwcgy4n5l1lc9r310smxkhjbm1xwvawpixx0";
+    sha256 = "sha256-EPz9zHnxR75WoRaiHKJNiCRWFwU1TBpC4uHz62jUOqM=";
   };
 
   checkPhase = ''
     ${python.interpreter} test_ibis.py
   '';
 
+  pythonImportsCheck = [
+    "ibis"
+  ];
+
   meta = with lib; {
-    description = "A lightweight template engine";
+    description = "Lightweight template engine";
     homepage = "https://github.com/dmulholland/ibis";
     license = licenses.publicDomain;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
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 741fd996ffdc..1f8b4063dd79 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
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "ibm-cloud-sdk-core";
-  version = "3.12.0";
+  version = "3.13.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ff3e8675a982f7754359ec598329ba5635014e2bfd51573b9413605849ef314a";
+    sha256 = "9c615b3a6e9d9dc1c69d8f38742b156e12408521fa180a66558bbb7b850bbbc2";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/icalendar/default.nix b/nixpkgs/pkgs/development/python-modules/icalendar/default.nix
index 289099dbb0e9..1e7200cffe46 100644
--- a/nixpkgs/pkgs/development/python-modules/icalendar/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/icalendar/default.nix
@@ -7,12 +7,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "4.0.8";
+  version = "4.0.9";
   pname = "icalendar";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7508a92b4e36049777640b0ae393e7219a16488d852841a0e57b44fe51d9f848";
+    sha256 = "cc73fa9c848744843046228cb66ea86cd8c18d73a51b140f7c003f760b84a997";
   };
 
   buildInputs = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/icmplib/default.nix b/nixpkgs/pkgs/development/python-modules/icmplib/default.nix
index 9d1ccab3d9a4..82033321f882 100644
--- a/nixpkgs/pkgs/development/python-modules/icmplib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/icmplib/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "icmplib";
-  version = "3.0.1";
+  version = "3.0.2";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "ValentinBELYN";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-avCy/s54JOeHf6py4sPDV+QC2oq2AU6A6J2YOnrQsm0=";
+    sha256 = "sha256-4aq89Nw55OL7JQx3Ra6Ppp5yKLdS6Lc0YA8UJxVhz84=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/idasen/default.nix b/nixpkgs/pkgs/development/python-modules/idasen/default.nix
index c1fb86b951c1..9031b7022d8e 100644
--- a/nixpkgs/pkgs/development/python-modules/idasen/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/idasen/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "idasen";
-  version = "0.8.0";
+  version = "0.8.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "newAM";
     repo = "idasen";
     rev = "v${version}";
-    sha256 = "09s1409ln1x6sxsls2ndqz3piapbwf880rrhmydfm6y7hqxlmzvy";
+    sha256 = "122bhbc3zqqm4x1x7a7mydvxxjrdssnqyxyqg0lbgxgn5rm8wbdd";
   };
 
   nativeBuildInputs = [
@@ -44,6 +44,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python API and CLI for the ikea IDÅSEN desk";
     homepage = "https://github.com/newAM/idasen";
+    changelog = "https://github.com/newAM/idasen/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ newam ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/identify/default.nix b/nixpkgs/pkgs/development/python-modules/identify/default.nix
index defbb12a73b3..194dce3f88df 100644
--- a/nixpkgs/pkgs/development/python-modules/identify/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/identify/default.nix
@@ -1,28 +1,35 @@
 { lib
 , buildPythonPackage
+, editdistance-s
 , fetchFromGitHub
 , pytestCheckHook
-, editdistance-s
+, pythonOlder
+, ukkonen
 }:
 
 buildPythonPackage rec {
   pname = "identify";
-  version = "2.3.0";
+  version = "2.4.1";
+  format = "setuptools";
 
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "pre-commit";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-V+pRxdbWPaIVqIJYcrmeZKPmmC1ouRgdFsaVVrDUsQc=";
+    sha256 = "sha256-+kfIpmJ6Gnb33MZ7NZrE8oVSBbZLuRfIvfCbstxJFX0=";
   };
 
   checkInputs = [
     editdistance-s
     pytestCheckHook
+    ukkonen
   ];
 
-  pythonImportsCheck = [ "identify" ];
+  pythonImportsCheck = [
+    "identify"
+  ];
 
   meta = with lib; {
     description = "File identification library for Python";
diff --git a/nixpkgs/pkgs/development/python-modules/idna/default.nix b/nixpkgs/pkgs/development/python-modules/idna/default.nix
index cb8636f135a8..dd0112860105 100644
--- a/nixpkgs/pkgs/development/python-modules/idna/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/idna/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "idna";
-  version = "3.2";
+  version = "3.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3";
+    sha256 = "9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d";
   };
 
   checkInputs = [ pytestCheckHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/ifcopenshell/default.nix b/nixpkgs/pkgs/development/python-modules/ifcopenshell/default.nix
index 33816631584e..2c51ff2db4f1 100644
--- a/nixpkgs/pkgs/development/python-modules/ifcopenshell/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ifcopenshell/default.nix
@@ -1,7 +1,6 @@
 { lib, stdenv
 , buildPythonPackage
 , fetchFromGitHub
-, python
 , gcc10
 , cmake
 , boost17x
@@ -53,7 +52,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Open source IFC library and geometry engine";
-    homepage    = http://ifcopenshell.org/;
+    homepage    = "http://ifcopenshell.org/";
     license     = licenses.lgpl3;
     maintainers = with maintainers; [ fehnomenal ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/ignite/default.nix b/nixpkgs/pkgs/development/python-modules/ignite/default.nix
index 177fd8915607..c027eba98742 100644
--- a/nixpkgs/pkgs/development/python-modules/ignite/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ignite/default.nix
@@ -8,24 +8,23 @@
 , matplotlib
 , mock
 , pytorch
-, pynvml
 , scikit-learn
 , tqdm
 }:
 
 buildPythonPackage rec {
   pname = "ignite";
-  version = "0.4.6";
+  version = "0.4.7";
 
   src = fetchFromGitHub {
     owner = "pytorch";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-dlKGXjUUnyYmPDilo0LQg9OkSkBnMYNgzlFLIfI0T6I=";
+    sha256 = "11gvw0yqb3y5ddifs5f38bgslvfmw1bmd9rga1ynlrmmgmhxym6h";
   };
 
   checkInputs = [ pytestCheckHook matplotlib mock pytest-xdist torchvision ];
-  propagatedBuildInputs = [ pytorch scikit-learn tqdm pynvml ];
+  propagatedBuildInputs = [ pytorch scikit-learn tqdm ];
 
   # runs succesfully in 3.9, however, async isn't correctly closed so it will fail after test suite.
   doCheck = pythonOlder "3.9";
@@ -51,6 +50,7 @@ buildPythonPackage rec {
     "idist"
     "mlflow"
     "tensorboard"
+    "test_gpu_info" # needs pynvml
     "test_integration"
     "test_output_handler" # needs mlflow
     "test_pbar" # slight output differences
diff --git a/nixpkgs/pkgs/development/python-modules/python-igraph/default.nix b/nixpkgs/pkgs/development/python-modules/igraph/default.nix
index ce5073ed087e..f5b21d58866a 100644
--- a/nixpkgs/pkgs/development/python-modules/python-igraph/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/igraph/default.nix
@@ -9,8 +9,8 @@
 }:
 
 buildPythonPackage rec {
-  pname = "python-igraph";
-  version = "0.9.6";
+  pname = "igraph";
+  version = "0.9.8";
 
   disabled = pythonOlder "3.6";
 
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "igraph";
     repo = "python-igraph";
     rev = version;
-    sha256 = "sha256-x/BUlMmSgjY2v6bVKPxmz86OCz6xgRUcfSqI3vV9MPs=";
+    sha256 = "sha256-RtvT5/LZ/xP68yBB7DDKJGeNCiX4HyPTCuk+Ijd2nFs=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/ihatemoney/default.nix b/nixpkgs/pkgs/development/python-modules/ihatemoney/default.nix
index fc1cb34d32c6..2c535ea79b57 100644
--- a/nixpkgs/pkgs/development/python-modules/ihatemoney/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ihatemoney/default.nix
@@ -1,14 +1,13 @@
 { buildPythonPackage
 , lib
-, fetchFromGitHub
 , isPy27
 , nixosTests
-, fetchpatch
 , fetchPypi
 , alembic
 , aniso8601
 , Babel
 , blinker
+, cachetools
 , click
 , dnspython
 , email_validator
@@ -19,6 +18,7 @@
 , flask_migrate
 , flask-restful
 , flask_sqlalchemy
+, flask-talisman
 , flask_wtf
 , debts
 , idna
@@ -28,6 +28,7 @@
 , markupsafe
 , python-dateutil
 , pytz
+, requests
 , six
 , sqlalchemy
 , sqlalchemy-utils
@@ -43,17 +44,6 @@
 # ihatemoney is not really a library. It will only ever be imported
 # by the interpreter of uwsgi. So overrides for its depencies are fine.
 let
-  # fixed in next release, but patches don't apply
-  # https://github.com/spiral-project/ihatemoney/issues/567
-  pinned_wtforms = wtforms.overridePythonAttrs (old: rec {
-    pname = "WTForms";
-    version = "2.2.1";
-    src = fetchPypi {
-      inherit pname version;
-      sha256 = "0q9vkcq6jnnn618h27lx9sas6s9qlg2mv8ja6dn0hy38gwzarnqc";
-    };
-  });
-
   # sqlalchemy-continuum requires sqlalchemy < 1.4
   pinned_sqlalchemy = sqlalchemy.overridePythonAttrs (
     old: rec {
@@ -70,43 +60,20 @@ in
 
 buildPythonPackage rec {
   pname = "ihatemoney";
-  version = "4.2";
+  version = "5.1.1";
 
-  src = fetchFromGitHub {
-    owner = "spiral-project";
-    repo = pname;
-    rev = version;
-    sha256 = "0d4vc6m0jkwlz9ly0hcjghccydvqbldh2jb8yzf94jrgkd5fd7k1";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0gsqba9qbs1dpmfys8qpiahy4pbn4khcc6mgmdnhssmkjsb94sx6";
   };
 
   disabled = isPy27;
 
-  patches = [
-    # fix migration on postgresql
-    # remove on next release
-    (fetchpatch {
-      url = "https://github.com/spiral-project/ihatemoney/commit/6129191b26784b895e203fa3eafb89cee7d88b71.patch";
-      sha256 = "0yc24gsih9x3pnh2mhj4v5i71x02dq93a9jd2r8b1limhcl4p1sw";
-    })
-    (fetchpatch {
-      name = "CVE-2020-15120.patch";
-      url = "https://github.com/spiral-project/ihatemoney/commit/8d77cf5d5646e1d2d8ded13f0660638f57e98471.patch";
-      sha256 = "0y855sk3qsbpq7slj876k2ifa1lccc2dccag98pkyaadpz5gbabv";
-    })
-    # backported from current master
-    # remove dependency on flask-script, which removed support on some features ihm used to need
-    ./remove_flask_script.patch
-  ];
-
-  postPatch = ''
-    # remove draconian pinning
-    sed -i 's/==.*$//' setup.cfg
-  '';
-
   propagatedBuildInputs = [
     aniso8601
     Babel
     blinker
+    cachetools
     click
     dnspython
     email_validator
@@ -125,7 +92,8 @@ buildPythonPackage rec {
       }
     )
     flask-restful
-    (flask_wtf.override { wtforms = pinned_wtforms; })
+    flask-talisman
+    flask_wtf
     idna
     itsdangerous
     jinja2
@@ -133,6 +101,7 @@ buildPythonPackage rec {
     markupsafe
     python-dateutil
     pytz
+    requests
     six
     (
       (
@@ -158,20 +127,27 @@ buildPythonPackage rec {
       )
     )
     werkzeug
-    pinned_wtforms
+    wtforms
     psycopg2
     debts
   ];
 
+  # upstream performed the update without needing to patch the code
+  # the original patch does not apply, sadly
+  # https://github.com/spiral-project/ihatemoney/pull/912
+  postPatch = ''
+    substituteInPlace setup.cfg --replace "Flask-WTF>=0.14.3,<1" "Flask-WTF>=0.14.3,<2"
+  '';
+
   checkInputs = [
     flask_testing
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [ "--pyargs ihatemoney.tests.tests" ];
   disabledTests = [
     "test_notifications"  # requires running service.
     "test_invite"         # requires running service.
+    "test_invitation_email_failure" # requires dns resolution
   ];
 
   passthru.tests = {
diff --git a/nixpkgs/pkgs/development/python-modules/ihatemoney/remove_flask_script.patch b/nixpkgs/pkgs/development/python-modules/ihatemoney/remove_flask_script.patch
deleted file mode 100644
index dac59680a09c..000000000000
--- a/nixpkgs/pkgs/development/python-modules/ihatemoney/remove_flask_script.patch
+++ /dev/null
@@ -1,284 +0,0 @@
-commit 4d831ba2316d54f4916fb9d1160ec7a3856b47d4
-Author: Glandos <bugs-github@antipoul.fr>
-Date:   Sun Jun 6 14:30:52 2021 +0200
-
-    remove usage of Flask-Script
-    
-    Use flask.cli instead with compatibility layer for existing commands,
-    such as "runserver".
-    
-    cherry-pick from 74e222f1a1cbfc2fac102fefc1115e9d0a6586dc
-
-diff --git a/Makefile b/Makefile
-index a681709..90ab1bb 100644
---- a/Makefile
-+++ b/Makefile
-@@ -38,7 +38,7 @@ update: remove-install-stamp install ## Update the dependencies
- .PHONY: serve
- serve: install ## Run the ihatemoney server
- 	@echo 'Running ihatemoney on http://localhost:5000'
--	$(PYTHON) -m ihatemoney.manage runserver
-+	$(PYTHON) -m ihatemoney.manage run
- 
- .PHONY: test
- test: install-dev ## Run the tests
-diff --git a/docs/installation.rst b/docs/installation.rst
-index 4994499..4df70a2 100644
---- a/docs/installation.rst
-+++ b/docs/installation.rst
-@@ -59,7 +59,7 @@ Test it
- 
- Once installed, you can start a test server::
- 
--  ihatemoney runserver
-+  ihatemoney run
- 
- And point your browser at `http://localhost:5000 <http://localhost:5000>`_.
- 
-diff --git a/ihatemoney/manage.py b/ihatemoney/manage.py
-index a192844..805a07f 100755
---- a/ihatemoney/manage.py
-+++ b/ihatemoney/manage.py
-@@ -5,8 +5,8 @@ import os
- import random
- import sys
- 
--from flask_migrate import Migrate, MigrateCommand
--from flask_script import Command, Manager, Option
-+import click
-+from flask.cli import FlaskGroup
- from werkzeug.security import generate_password_hash
- 
- from ihatemoney.models import Project, db
-@@ -14,31 +14,48 @@ from ihatemoney.run import create_app
- from ihatemoney.utils import create_jinja_env
- 
- 
--class GeneratePasswordHash(Command):
-+@click.group(cls=FlaskGroup, create_app=create_app)
-+def cli():
-+    """IHateMoney Management script"""
- 
--    """Get password from user and hash it without printing it in clear text."""
- 
--    def run(self):
--        password = getpass.getpass(prompt="Password: ")
--        print(generate_password_hash(password))
--
--
--class GenerateConfig(Command):
--    def get_options(self):
--        return [
--            Option(
--                "config_file",
--                choices=[
--                    "ihatemoney.cfg",
--                    "apache-vhost.conf",
--                    "gunicorn.conf.py",
--                    "supervisord.conf",
--                    "nginx.conf",
--                ],
--            )
-+@cli.command(
-+    context_settings={"ignore_unknown_options": True, "allow_extra_args": True}
-+)
-+@click.pass_context
-+def runserver(ctx):
-+    """Deprecated, use the "run" command instead"""
-+    click.secho(
-+        '"runserver" is deprecated, please use the standard "run" flask command',
-+        fg="red",
-+    )
-+    run = cli.get_command(ctx, "run")
-+    ctx.forward(run)
-+
-+
-+@click.command(name="generate_password_hash")
-+def password_hash():
-+    """Get password from user and hash it without printing it in clear text."""
-+    password = getpass.getpass(prompt="Password: ")
-+    print(generate_password_hash(password))
-+
-+
-+@click.command()
-+@click.argument(
-+    "config_file",
-+    type=click.Choice(
-+        [
-+            "ihatemoney.cfg",
-+            "apache-vhost.conf",
-+            "gunicorn.conf.py",
-+            "supervisord.conf",
-+            "nginx.conf",
-         ]
-+    ),
-+)
-+def generate_config(config_file):
-+    """Generate front-end server configuration"""
- 
--    @staticmethod
-     def gen_secret_key():
-         return "".join(
-             [
-@@ -49,59 +66,33 @@ class GenerateConfig(Command):
-             ]
-         )
- 
--    def run(self, config_file):
--        env = create_jinja_env("conf-templates", strict_rendering=True)
--        template = env.get_template("%s.j2" % config_file)
-+    env = create_jinja_env("conf-templates", strict_rendering=True)
-+    template = env.get_template(f"{config_file}.j2")
- 
--        bin_path = os.path.dirname(sys.executable)
--        pkg_path = os.path.abspath(os.path.dirname(__file__))
-+    bin_path = os.path.dirname(sys.executable)
-+    pkg_path = os.path.abspath(os.path.dirname(__file__))
- 
--        print(
--            template.render(
--                pkg_path=pkg_path,
--                bin_path=bin_path,
--                sys_prefix=sys.prefix,
--                secret_key=self.gen_secret_key(),
--            )
-+    print(
-+        template.render(
-+            pkg_path=pkg_path,
-+            bin_path=bin_path,
-+            sys_prefix=sys.prefix,
-+            secret_key=gen_secret_key(),
-         )
--
--
--class DeleteProject(Command):
--    def run(self, project_name):
--        demo_project = Project.query.get(project_name)
--        db.session.delete(demo_project)
-+    )
-+
-+
-+@cli.command()
-+@click.argument("project_name")
-+def delete_project(project_name):
-+    """Delete a project"""
-+    project = Project.query.get(project_name)
-+    if project is None:
-+        click.secho(f'Project "{project_name}" not found', fg="red")
-+    else:
-+        db.session.delete(project)
-         db.session.commit()
- 
- 
--def main():
--    QUIET_COMMANDS = ("generate_password_hash", "generate-config")
--
--    exception = None
--    backup_stderr = sys.stderr
--    # Hack to divert stderr for commands generating content to stdout
--    # to avoid confusing the user
--    if len(sys.argv) > 1 and sys.argv[1] in QUIET_COMMANDS:
--        sys.stderr = open(os.devnull, "w")
--
--    try:
--        app = create_app()
--        Migrate(app, db)
--    except Exception as e:
--        exception = e
--
--    # Restore stderr
--    sys.stderr = backup_stderr
--
--    if exception:
--        raise exception
--
--    manager = Manager(app)
--    manager.add_command("db", MigrateCommand)
--    manager.add_command("generate_password_hash", GeneratePasswordHash)
--    manager.add_command("generate-config", GenerateConfig)
--    manager.add_command("delete-project", DeleteProject)
--    manager.run()
--
--
- if __name__ == "__main__":
--    main()
-+    cli()
-diff --git a/ihatemoney/tests/tests.py b/ihatemoney/tests/tests.py
-index b27fafc..23f19a6 100644
---- a/ihatemoney/tests/tests.py
-+++ b/ihatemoney/tests/tests.py
-@@ -15,7 +15,7 @@ from sqlalchemy import orm
- from werkzeug.security import check_password_hash, generate_password_hash
- 
- from ihatemoney import history, models, utils
--from ihatemoney.manage import DeleteProject, GenerateConfig, GeneratePasswordHash
-+from ihatemoney.manage import delete_project, generate_config, password_hash
- from ihatemoney.run import create_app, db, load_configuration
- from ihatemoney.versioning import LoggingMode
- 
-@@ -2157,28 +2157,24 @@ class CommandTestCase(BaseTestCase):
-         - raise no exception
-         - produce something non-empty
-         """
--        cmd = GenerateConfig()
--        for config_file in cmd.get_options()[0].kwargs["choices"]:
--            with patch("sys.stdout", new=io.StringIO()) as stdout:
--                cmd.run(config_file)
--                print(stdout.getvalue())
--                self.assertNotEqual(len(stdout.getvalue().strip()), 0)
-+        runner = self.app.test_cli_runner()
-+        for config_file in generate_config.params[0].type.choices:
-+            result = runner.invoke(generate_config, config_file)
-+            self.assertNotEqual(len(result.output.strip()), 0)
- 
-     def test_generate_password_hash(self):
--        cmd = GeneratePasswordHash()
--        with patch("sys.stdout", new=io.StringIO()) as stdout, patch(
--            "getpass.getpass", new=lambda prompt: "secret"
--        ):  # NOQA
--            cmd.run()
--            print(stdout.getvalue())
--            self.assertEqual(len(stdout.getvalue().strip()), 189)
-+        runner = self.app.test_cli_runner()
-+        with patch("getpass.getpass", new=lambda prompt: "secret"):
-+            result = runner.invoke(password_hash)
-+            print(result.output.strip())
-+            self.assertEqual(len(result.output.strip()), 102)
- 
-     def test_demo_project_deletion(self):
-         self.create_project("demo")
-         self.assertEquals(models.Project.query.get("demo").name, "demo")
- 
--        cmd = DeleteProject()
--        cmd.run("demo")
-+        runner = self.app.test_cli_runner()
-+        runner.invoke(delete_project, "demo")
- 
-         self.assertEqual(len(models.Project.query.all()), 0)
- 
-diff --git a/setup.cfg b/setup.cfg
-index d493717..48e447c 100644
---- a/setup.cfg
-+++ b/setup.cfg
-@@ -31,7 +31,6 @@ install_requires =
-     Flask-Mail==0.9.1
-     Flask-Migrate==2.5.3
-     Flask-RESTful==0.3.8
--    Flask-Script==2.0.6
-     Flask-SQLAlchemy==2.4.1
-     Flask-WTF==0.14.3
- 	WTForms==2.2.1
-@@ -51,8 +50,12 @@ dev =
-     zest.releaser==6.20.1
- 
- [options.entry_points]
-+flask.commands =
-+    generate_password_hash = ihatemoney.manage:password_hash
-+    generate-config = ihatemoney.manage:generate_config
-+
- console_scripts =
--    ihatemoney = ihatemoney.manage:main
-+    ihatemoney = ihatemoney.manage:cli
- 
- paste.app_factory =
-     main = ihatemoney.run:main
diff --git a/nixpkgs/pkgs/development/python-modules/image-go-nord/default.nix b/nixpkgs/pkgs/development/python-modules/image-go-nord/default.nix
new file mode 100644
index 000000000000..a8fb5df9433d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/image-go-nord/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchFromGitHub, pillow, pytestCheckHook, pythonOlder }:
+
+buildPythonPackage rec {
+  pname = "image-go-nord";
+  version = "0.1.5";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "Schrodinger-Hat";
+    repo = "ImageGoNord-pip";
+    rev = "v${version}";
+    sha256 = "sha256-O34COlGsXExJShRd2zvhdescNfYXWLNuGpkjcH3koPU=";
+  };
+
+  propagatedBuildInputs = [ pillow ];
+
+  checkInputs = [ pytestCheckHook ];
+
+  meta = with lib; {
+    description = "A tool that can convert rgb images to nordtheme palette";
+    homepage = "https://github.com/Schrodinger-Hat/ImageGoNord-pip";
+    license = licenses.mit;
+    maintainers = with maintainers; [ kranzes ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/imageio/default.nix b/nixpkgs/pkgs/development/python-modules/imageio/default.nix
index 1672e798f304..f27c9fded9b2 100644
--- a/nixpkgs/pkgs/development/python-modules/imageio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/imageio/default.nix
@@ -7,15 +7,16 @@
 , pillow
 , psutil
 , pytestCheckHook
+, tifffile
 }:
 
 buildPythonPackage rec {
   pname = "imageio";
-  version = "2.9.0";
+  version = "2.12.0";
   disabled = isPy27;
 
   src = fetchPypi {
-    sha256 = "52ddbaeca2dccf53ba2d6dec5676ca7bc3b2403ef8b37f7da78b7654bb3e10f0";
+    sha256 = "c416dd68328ace8536ff333cbb8927954036be56e201fed416e53e8f95e08a6c";
     inherit pname version;
   };
 
@@ -28,6 +29,7 @@ buildPythonPackage rec {
   checkInputs = [
     psutil
     pytestCheckHook
+    tifffile
   ];
 
   preCheck = ''
@@ -36,6 +38,20 @@ buildPythonPackage rec {
     export HOME="$(mktemp -d)"
   '';
 
+  disabledTests = [
+    # tries to pull remote resources, even with IMAGEIO_NO_INTERNET
+    "test_png_remote"
+    # needs git history
+    "test_mvolread_out_of_bytes"
+    "test_imiter"
+    "test_memory_size"
+    "test_legacy_write_empty"
+  ];
+
+  disabledTestPaths = [
+    "tests/test_pillow.py"
+  ];
+
   meta = with lib; {
     description = "Library for reading and writing a wide range of image, video, scientific, and volumetric data formats";
     homepage = "http://imageio.github.io/";
diff --git a/nixpkgs/pkgs/development/python-modules/imagesize/default.nix b/nixpkgs/pkgs/development/python-modules/imagesize/default.nix
index 42cf6b50764d..0fbe88a520fe 100644
--- a/nixpkgs/pkgs/development/python-modules/imagesize/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/imagesize/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "imagesize";
-  version = "1.2.0";
+  version = "1.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b1f6b5a4eab1f73479a50fb79fcf729514a900c341d8503d62a62dbc4127a2b1";
+    sha256 = "cd1750d452385ca327479d45b64d9c7729ecf0b3969a58148298c77092261f9d";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/imap-tools/default.nix b/nixpkgs/pkgs/development/python-modules/imap-tools/default.nix
index 392663e391d1..3437dd902bcd 100644
--- a/nixpkgs/pkgs/development/python-modules/imap-tools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/imap-tools/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "imap-tools";
-  version = "0.48.1";
+  version = "0.50.2";
 
   disabled = isPy27;
 
@@ -15,7 +15,7 @@ buildPythonPackage rec {
     owner = "ikvk";
     repo = "imap_tools";
     rev = "v${version}";
-    sha256 = "sha256-AS407jsDk+dAz1DPM44vTUQEleohr9xKnjgCw5Rjs9M=";
+    hash = "sha256-ki38Kr+eDEIQPRuoQePR7dCRDSgq2ZLXws1pq2gtQrI=";
   };
 
   checkInputs = [
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     # tests require a network connection
     "test_action"
     "test_folders"
-    "test_connectio"
+    "test_connection"
     "test_attributes"
     "test_live"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/imapclient/default.nix b/nixpkgs/pkgs/development/python-modules/imapclient/default.nix
index ea4f388b6c7e..c1394a7b6b53 100644
--- a/nixpkgs/pkgs/development/python-modules/imapclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/imapclient/default.nix
@@ -7,7 +7,7 @@
 }:
 
 buildPythonPackage rec {
-  pname = "IMAPClient";
+  pname = "imapclient";
   version = "2.2.0";
 
   src = fetchFromGitHub {
diff --git a/nixpkgs/pkgs/development/python-modules/imbalanced-learn/0.4.nix b/nixpkgs/pkgs/development/python-modules/imbalanced-learn/0.4.nix
deleted file mode 100644
index 6709092ca955..000000000000
--- a/nixpkgs/pkgs/development/python-modules/imbalanced-learn/0.4.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, scikit-learn, pandas, nose, pytest }:
-
-buildPythonPackage rec {
-  pname = "imbalanced-learn";
-  version = "0.4.3";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "5bd9e86e40ce4001a57426541d7c79b18143cbd181e3330c1a3e5c5c43287083";
-  };
-
-  propagatedBuildInputs = [ scikit-learn ];
-  checkInputs = [ nose pytest pandas ];
-  checkPhase = ''
-    export HOME=$PWD
-    # skip some tests that fail because of minimal rounding errors
-    # or large dependencies
-    py.test imblearn -k 'not classification \
-                         and not _generator \
-                         and not _forest \
-                         and not wrong_memory'
-  '';
-
-  meta = with lib; {
-    description = "Library offering a number of re-sampling techniques commonly used in datasets showing strong between-class imbalance";
-    homepage = "https://github.com/scikit-learn-contrib/imbalanced-learn";
-    license = licenses.mit;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/img2pdf/default.nix b/nixpkgs/pkgs/development/python-modules/img2pdf/default.nix
index 48557d34bc86..ee11e1280c15 100644
--- a/nixpkgs/pkgs/development/python-modules/img2pdf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/img2pdf/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "img2pdf";
-  version = "0.4.2";
+  version = "0.4.3";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-qs9YZQPWET5Tv7A8hcheVGw4RBOlbBXd0I7lHIZEeaI=";
+    sha256 = "sha256-jlHFBD76lddRSBtRYHGgBvh8KkBZlhqaxD7COJFd4J8=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/imgaug/default.nix b/nixpkgs/pkgs/development/python-modules/imgaug/default.nix
index ab3cdd6e6d06..50faf89d600a 100644
--- a/nixpkgs/pkgs/development/python-modules/imgaug/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/imgaug/default.nix
@@ -59,6 +59,9 @@ buildPythonPackage rec {
     "test_alpha_is_080"
     "test_face_and_lines_at_half_visibility"
     "test_polygon_fully_inside_image__no_rectangular_shape"
+    # flaky due to timing-based assertions
+    "test_imap_batches_output_buffer_size"
+    "test_imap_batches_unordered_output_buffer_size"
   ];
 
   disabledTestPaths = [
diff --git a/nixpkgs/pkgs/development/python-modules/impacket/default.nix b/nixpkgs/pkgs/development/python-modules/impacket/default.nix
index 1c4106babe28..82c49cae8bfc 100644
--- a/nixpkgs/pkgs/development/python-modules/impacket/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/impacket/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "impacket";
-  version = "0.9.23";
+  version = "0.9.24";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1c1be8a50cdbe3cffc566ba64f552b1b28bcc79b7a406b833956b49c56d77184";
+    sha256 = "18d557d387f4914fafa739813b9172bc3f8bd9c036e93bf589a8e0ebb7304bba";
   };
 
   propagatedBuildInputs = [ flask ldapdomaindump pycryptodomex pyasn1 pyopenssl chardet setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/importlib-metadata/2.nix b/nixpkgs/pkgs/development/python-modules/importlib-metadata/2.nix
index 71dcd950db2c..f50b2c07c1da 100644
--- a/nixpkgs/pkgs/development/python-modules/importlib-metadata/2.nix
+++ b/nixpkgs/pkgs/development/python-modules/importlib-metadata/2.nix
@@ -7,8 +7,6 @@
 , contextlib2
 , configparser
 , isPy3k
-, importlib-resources
-, packaging
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/importlib-metadata/default.nix b/nixpkgs/pkgs/development/python-modules/importlib-metadata/default.nix
index d67a6c947517..e13f73616775 100644
--- a/nixpkgs/pkgs/development/python-modules/importlib-metadata/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/importlib-metadata/default.nix
@@ -10,16 +10,20 @@
 
 buildPythonPackage rec {
   pname = "importlib-metadata";
-  version = "4.6.4";
+  version = "4.8.2";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     pname = "importlib_metadata";
     inherit version;
-    sha256 = "sha256-ezCnjbKSLXim9H+zBoMVahTzxqpcwj93zIln6astAC8=";
+    sha256 = "sha256-db3sFMOX9ShyTBv9lwnWYLM6TS53OHozWPILhIu15fs=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
 
   propagatedBuildInputs = [
     toml
@@ -30,7 +34,10 @@ buildPythonPackage rec {
 
   # Cyclic dependencies due to pyflakefs
   doCheck = false;
-  pythonImportsCheck = [ "importlib_metadata" ];
+
+  pythonImportsCheck = [
+    "importlib_metadata"
+  ];
 
   meta = with lib; {
     description = "Read metadata from Python packages";
diff --git a/nixpkgs/pkgs/development/python-modules/importlib-resources/2.nix b/nixpkgs/pkgs/development/python-modules/importlib-resources/2.nix
deleted file mode 100644
index 1034c3111306..000000000000
--- a/nixpkgs/pkgs/development/python-modules/importlib-resources/2.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, importlib-metadata
-, typing
-, singledispatch
-, python
-}:
-
-buildPythonPackage rec {
-  pname = "importlib-resources";
-  version = "3.3.1";
-
-  src = fetchPypi {
-    pname = "importlib_resources";
-    inherit version;
-    sha256 = "0ed250dbd291947d1a298e89f39afcc477d5a6624770503034b72588601bcc05";
-  };
-
-  nativeBuildInputs = [ setuptools-scm ];
-  propagatedBuildInputs = [
-    importlib-metadata
-    singledispatch
-    typing
-  ];
-
-  checkPhase = ''
-    ${python.interpreter} -m unittest discover
-  '';
-
-  meta = with lib; {
-    description = "Read resources from Python packages";
-    homepage = "https://importlib-resources.readthedocs.io/";
-    license = licenses.asl20;
-    maintainers = [ ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/importlib-resources/default.nix b/nixpkgs/pkgs/development/python-modules/importlib-resources/default.nix
index ca361f5b1191..b28932a74f05 100644
--- a/nixpkgs/pkgs/development/python-modules/importlib-resources/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/importlib-resources/default.nix
@@ -1,35 +1,43 @@
 { lib
+, isPy27
 , buildPythonPackage
 , fetchPypi
 , setuptools-scm
 , importlib-metadata
 , typing ? null
-, singledispatch ? null
 , pythonOlder
 , python
 }:
 
 buildPythonPackage rec {
   pname = "importlib-resources";
-  version = "5.2.2";
+  version = "5.4.0";
+  disabled = isPy27;
 
   src = fetchPypi {
     pname = "importlib_resources";
     inherit version;
-    sha256 = "sha256-pliCpND+X79wInNFa6LOdP5EiSwl5C4FespSa3AqbUs=";
+    sha256 = "sha256-11bi+F3U3iuom+CyHboqO77C6HGkKjoWcZJYoR+HUGs=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [
     importlib-metadata
-  ] ++ lib.optional (pythonOlder "3.4") singledispatch
-    ++ lib.optional (pythonOlder "3.5") typing
-  ;
+  ] ++ lib.optional (pythonOlder "3.5") [
+    typing
+  ];
 
   checkPhase = ''
     ${python.interpreter} -m unittest discover
   '';
 
+  pythonImportsCheck = [
+    "importlib_resources"
+  ];
+
   meta = with lib; {
     description = "Read resources from Python packages";
     homepage = "https://importlib-resources.readthedocs.io/";
diff --git a/nixpkgs/pkgs/development/python-modules/influxdb-client/default.nix b/nixpkgs/pkgs/development/python-modules/influxdb-client/default.nix
index 6d2f9f30a4e5..9e3c7be8f4a1 100644
--- a/nixpkgs/pkgs/development/python-modules/influxdb-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/influxdb-client/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "influxdb-client";
-  version = "1.21.0";
+  version = "1.24.0";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "influxdata";
     repo = "influxdb-client-python";
     rev = "v${version}";
-    sha256 = "081pwd3aa7kbgxqcl1hfi2ny4iapnxkcp9ypsfslr69d0khvfc4s";
+    sha256 = "0w0pw87fnxms88f3dadyhxdgms4rzvcww18h6l87wnqc6wxa6paw";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/influxdb/default.nix b/nixpkgs/pkgs/development/python-modules/influxdb/default.nix
index 3b9672701833..8ecd46e3b96b 100644
--- a/nixpkgs/pkgs/development/python-modules/influxdb/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/influxdb/default.nix
@@ -57,6 +57,8 @@ buildPythonPackage rec {
     #   b'foo[30 chars]_one="1",column_two=1i 0\nfoo,tag_one=red,tag_[46 chars]00\n'
     "test_write_points_from_dataframe_with_nan_json"
     "test_write_points_from_dataframe_with_tags_and_nan_json"
+    # Reponse is not empty but `s = '孝'` and the JSON decoder chokes on that
+    "test_query_with_empty_result"
   ];
 
   pythonImportsCheck = [ "influxdb" ];
diff --git a/nixpkgs/pkgs/development/python-modules/inform/default.nix b/nixpkgs/pkgs/development/python-modules/inform/default.nix
index 9ef6fd1e0a1d..aff0d77e7022 100644
--- a/nixpkgs/pkgs/development/python-modules/inform/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/inform/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "inform";
-  version = "1.25";
+  version = "1.26";
 
   src = fetchFromGitHub {
     owner = "KenKundert";
     repo = "inform";
     rev = "v${version}";
-    sha256 = "1r56wmn21c7ggy33548l6dfjswhadkp2iaalfb7xgsxmq7qfcnax";
+    sha256 = "0snrmvmc3rnz90cql5ayzs878rrkadk46rhvf2sn78nb0x57wa20";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/injector/default.nix b/nixpkgs/pkgs/development/python-modules/injector/default.nix
index 921db5d1a877..4651cc3a1fb8 100644
--- a/nixpkgs/pkgs/development/python-modules/injector/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/injector/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "injector";
-  version = "0.18.4";
+  version = "0.19.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "10miwi58g4b8rvdf1pl7s7x9j91qyxxv3kdn5idzkfc387hqxn6f";
+    sha256 = "3eaaf51cd3ba7be1354d92a5210c8bba43dd324300eafd214e1f2568834a912f";
   };
 
   propagatedBuildInputs = [ typing-extensions ];
diff --git a/nixpkgs/pkgs/development/python-modules/inotify/default.nix b/nixpkgs/pkgs/development/python-modules/inotify/default.nix
new file mode 100644
index 000000000000..3590f53e1ecd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/inotify/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, nose
+}:
+
+buildPythonPackage rec {
+  pname = "inotify";
+  version = "unstable-2020-08-27";
+
+  src = fetchFromGitHub {
+    owner = "dsoprea";
+    repo = "PyInotify";
+    rev = "f77596ae965e47124f38d7bd6587365924dcd8f7";
+    sha256 = "X0gu4s1R/Kg+tmf6s8SdZBab2HisJl4FxfdwKktubVc=";
+    fetchSubmodules = false;
+  };
+
+  checkInputs = [
+    nose
+  ];
+
+  # dunno what's wrong but the module works regardless
+  doCheck = false;
+
+  meta = with lib; {
+    homepage = "https://github.com/dsoprea/PyInotify";
+    description = "Monitor filesystems events on Linux platforms with inotify";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/insegel/default.nix b/nixpkgs/pkgs/development/python-modules/insegel/default.nix
new file mode 100644
index 000000000000..499d38067539
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/insegel/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, pygments }:
+
+buildPythonPackage rec {
+  pname = "insegel";
+  version = "1.3.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1d055dd64f6eb335580a485271511ba2f4e3b5e315f48f827f58da3cace4b4ae";
+  };
+
+  propagatedBuildInputs = [ pygments ];
+
+  # No tests included
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "insegel"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/autophagy/insegel";
+    description = "A monochrome 2 column Sphinx theme";
+    license = licenses.mit;
+    maintainers = with maintainers; [ autophagy ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/intake-parquet/default.nix b/nixpkgs/pkgs/development/python-modules/intake-parquet/default.nix
index 49d5e1ed4b93..5c5f598a4526 100644
--- a/nixpkgs/pkgs/development/python-modules/intake-parquet/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/intake-parquet/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, pythonOlder
 , pandas
 , dask
 , fastparquet
diff --git a/nixpkgs/pkgs/development/python-modules/intake/default.nix b/nixpkgs/pkgs/development/python-modules/intake/default.nix
index 361469f540e1..0228ae6bcf23 100644
--- a/nixpkgs/pkgs/development/python-modules/intake/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/intake/default.nix
@@ -1,67 +1,72 @@
 { lib
-, buildPythonPackage
-, fetchPypi
 , appdirs
+, bokeh
+, buildPythonPackage
 , dask
+, entrypoints
+, fetchFromGitHub
+, fsspec
 , holoviews
 , hvplot
-, fsspec
+, intake-parquet
 , jinja2
 , msgpack
 , msgpack-numpy
 , numpy
 , pandas
 , panel
-, intake-parquet
 , pyarrow
 , pytestCheckHook
-, pythonOlder
 , python-snappy
+, pythonOlder
+, pyyaml
 , requests
-, ruamel_yaml
-, six
+, stdenv
 , tornado
 }:
 
 buildPythonPackage rec {
   pname = "intake";
-  version = "0.6.3";
+  version = "0.6.4";
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "f64543353f30d9440b953984f78b7a0954e5756d70c64243609d307ba488014f";
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = version;
+    sha256 = "194cdd6lx92zcpkn3wgm490kxvw0c58ziix8hcihsr5ayfr1wdsl";
   };
 
   propagatedBuildInputs = [
     appdirs
+    bokeh
     dask
+    entrypoints
+    fsspec
     holoviews
     hvplot
     jinja2
-    msgpack-numpy
     msgpack
+    msgpack-numpy
     numpy
     pandas
     panel
+    pyarrow
     python-snappy
+    pyyaml
     requests
-    ruamel_yaml
-    six
     tornado
   ];
 
   checkInputs = [
-    fsspec
     intake-parquet
-    pyarrow
     pytestCheckHook
   ];
 
   postPatch = ''
-    # Is in setup_requires but not used in setup.py...
-    substituteInPlace setup.py --replace "'pytest-runner'" ""
+    substituteInPlace setup.py \
+      --replace "'pytest-runner'" ""
   '';
 
   # test_discover requires driver_with_entrypoints-0.1.dist-info, which is not included in tarball
@@ -72,7 +77,7 @@ buildPythonPackage rec {
   '';
 
   disabledTests = [
-    # disable tests which touch network and are broken
+    # Disable tests which touch network and are broken
     "test_discover"
     "test_filtered_compressed_cache"
     "test_get_dir"
@@ -80,6 +85,16 @@ buildPythonPackage rec {
     "http"
     "test_read_pattern"
     "test_remote_arr"
+    "test_flatten_flag"
+    # Timing-based, flaky on darwin and possibly others
+    "TestServerV1Source.test_idle_timer"
+  ] ++ lib.optionals (stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13") [
+    # Flaky with older low-res mtime on darwin < 10.13 (#143987)
+    "test_second_load_timestamp"
+  ];
+
+  pythonImportsCheck = [
+    "intake"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/intensity-normalization/default.nix b/nixpkgs/pkgs/development/python-modules/intensity-normalization/default.nix
index a3d603a13d42..806153288216 100644
--- a/nixpkgs/pkgs/development/python-modules/intensity-normalization/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/intensity-normalization/default.nix
@@ -15,12 +15,12 @@
 
 buildPythonPackage rec {
   pname = "intensity-normalization";
-  version = "2.1.0";
+  version = "2.1.1";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0d6eab99067e935336289c564caab541209ddd5e951a111f604b1ec92c710b84";
+    sha256 = "sha256-aGuGdUqaUgoD95PLFch+lF9o7eeKwK0bNWTF1beslIY=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/internetarchive/default.nix b/nixpkgs/pkgs/development/python-modules/internetarchive/default.nix
index 60a946291ad9..b87892906072 100644
--- a/nixpkgs/pkgs/development/python-modules/internetarchive/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/internetarchive/default.nix
@@ -15,15 +15,16 @@
 , lib
 , glibcLocales
 , setuptools
+, urllib3
 }:
 
 buildPythonPackage rec {
   pname = "internetarchive";
-  version = "2.1.0";
+  version = "2.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "72094f05df39bb1463f61f928f3a7fa0dd236cab185cb8b7e8eb6c85e09acdc4";
+    sha256 = "ebd11ecd038c71e75a3aef8d87750b46480169ecaefb23074c4ae48440bf2836";
   };
 
   propagatedBuildInputs = [
@@ -36,6 +37,7 @@ buildPythonPackage rec {
     args
     schema
     setuptools
+    urllib3
   ] ++ lib.optionals (!isPy3k) [ backports_csv ];
 
   checkInputs = [ pytest responses glibcLocales ];
diff --git a/nixpkgs/pkgs/development/python-modules/ipfshttpclient/default.nix b/nixpkgs/pkgs/development/python-modules/ipfshttpclient/default.nix
index 62fa6d936149..271cd85a8195 100644
--- a/nixpkgs/pkgs/development/python-modules/ipfshttpclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ipfshttpclient/default.nix
@@ -57,6 +57,18 @@ buildPythonPackage rec {
       --replace 'pytest_ordering' 'pytest_order'
     substituteInPlace test/functional/test_miscellaneous.py \
       --replace '@pytest.mark.last' '@pytest.mark.order("last")'
+
+    # Until a proper fix is created, just skip these tests
+    # and ignore any breakage that may result from the API change in IPFS
+    # See https://github.com/ipfs-shipyard/py-ipfs-http-client/issues/308
+    substituteInPlace test/functional/test_pubsub.py \
+      --replace '# the message that will be published' 'pytest.skip("This test fails because of an incompatibility with the experimental PubSub feature in IPFS>=0.11.0")' \
+      --replace '# subscribe to the topic testing'     'pytest.skip("This test fails because of an incompatibility with the experimental PubSub feature in IPFS>=0.11.0")'
+    substituteInPlace test/functional/test_other.py \
+      --replace 'import ipfshttpclient' 'import ipfshttpclient; import pytest' \
+      --replace 'assert ipfs_is_available' 'pytest.skip("Unknown test failure with IPFS >=0.11.0"); assert ipfs_is_available'
+    substituteInPlace test/run-tests.py \
+      --replace '--cov-fail-under=90' '--cov-fail-under=75'
   '';
 
   checkPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/ipydatawidgets/default.nix b/nixpkgs/pkgs/development/python-modules/ipydatawidgets/default.nix
index 3f8811f4f3b4..d74dbad18be6 100644
--- a/nixpkgs/pkgs/development/python-modules/ipydatawidgets/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ipydatawidgets/default.nix
@@ -5,6 +5,7 @@
 , pytest
 , pytest-cov
 , nbval
+, jupyter-packaging
 , ipywidgets
 , numpy
 , six
@@ -22,6 +23,12 @@ buildPythonPackage rec {
     sha256 = "d0e4b58b59b508165e8562b8f5d1dbfcd739855847ec0477bd9185a5e9b7c5bc";
   };
 
+  nativeBuildInputs = [
+    jupyter-packaging
+  ];
+
+  setupPyBuildFlags = [ "--skip-npm" ];
+
   propagatedBuildInputs = [
     ipywidgets
     numpy
diff --git a/nixpkgs/pkgs/development/python-modules/ipykernel/4.nix b/nixpkgs/pkgs/development/python-modules/ipykernel/4.nix
deleted file mode 100644
index d408c1185dc7..000000000000
--- a/nixpkgs/pkgs/development/python-modules/ipykernel/4.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, isPy27
-, mock
-, ipython
-, jupyter_client
-, pexpect
-, traitlets
-, tornado
-}:
-
-buildPythonPackage rec {
-  pname = "ipykernel";
-  version = "4.10.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "eeb74b2bcfe0ced5a7900361f98fa1171288aa47ed4b522efe5acb167c6cf5fb";
-  };
-
-  checkInputs = [ nose ] ++ lib.optional isPy27 mock;
-  propagatedBuildInputs = [
-    ipython
-    jupyter_client
-    pexpect
-    traitlets
-    tornado
-  ];
-
-  # Tests require backends.
-  # I don't want to add all supported backends as propagatedBuildInputs
-  doCheck = false;
-
-  meta = {
-    description = "IPython Kernel for Jupyter";
-    homepage = "http://ipython.org/";
-    license = lib.licenses.bsd3;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/ipykernel/default.nix b/nixpkgs/pkgs/development/python-modules/ipykernel/default.nix
index 041818900978..f18750af1ffb 100644
--- a/nixpkgs/pkgs/development/python-modules/ipykernel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ipykernel/default.nix
@@ -1,31 +1,33 @@
 { lib
-, stdenv
 , buildPythonPackage
 , callPackage
 , fetchPypi
+, pythonOlder
+, argcomplete
 , debugpy
 , ipython
-, jupyter_client
+, jupyter-client
 , tornado
 , traitlets
-, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "ipykernel";
-  version = "6.3.0";
+  version = "6.5.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5314690a638f893e2cc3bf3d25042920e9fbb873f7d8263033390264caeb95f4";
+    sha256 = "dd27172bccbbcfef952991e49372e4c6fd1c14eed0df05ebd5b4335cb27a81a2";
   };
 
   propagatedBuildInputs = [
     debugpy
     ipython
-    jupyter_client
+    jupyter-client
     tornado
     traitlets
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    argcomplete
   ];
 
   # check in passthru.tests.pytest to escape infinite recursion with ipyparallel
diff --git a/nixpkgs/pkgs/development/python-modules/ipympl/default.nix b/nixpkgs/pkgs/development/python-modules/ipympl/default.nix
index 2d25eb645bad..f04b876f0487 100644
--- a/nixpkgs/pkgs/development/python-modules/ipympl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ipympl/default.nix
@@ -1,21 +1,22 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, ipykernel
 , ipywidgets
-, matplotlib
-, jupyter-packaging
 }:
 
 buildPythonPackage rec {
   pname = "ipympl";
-  version = "0.7.0";
+  version = "0.8.4";
+  format = "wheel";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "f0f1f356d8cb9d4fb51bb86dbbf837c190145316cb72f66081872ebc4d6db0a1";
+    inherit pname version format;
+    sha256 = "2f955c1c04d8e6df883d57866450657040bfc568edeabcace801cbdbaf4d0295";
   };
 
-  propagatedBuildInputs = [ ipywidgets matplotlib jupyter-packaging ];
+
+  propagatedBuildInputs = [ ipykernel ipywidgets ];
 
   # There are no unit tests in repository
   doCheck = false;
@@ -24,7 +25,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Matplotlib Jupyter Extension";
     homepage = "https://github.com/matplotlib/jupyter-matplotlib";
-    maintainers = with maintainers; [ jluttine ];
+    maintainers = with maintainers; [ jluttine fabiangd ];
     license = licenses.bsd3;
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/ipyparallel/default.nix b/nixpkgs/pkgs/development/python-modules/ipyparallel/default.nix
index cc5957d29733..4c64fca34b76 100644
--- a/nixpkgs/pkgs/development/python-modules/ipyparallel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ipyparallel/default.nix
@@ -7,7 +7,7 @@
 , decorator
 , pyzmq
 , ipython
-, jupyter_client
+, jupyter-client
 , ipykernel
 , tornado
 , isPy3k
@@ -25,7 +25,7 @@ buildPythonPackage rec {
 
   buildInputs = [ nose ];
 
-  propagatedBuildInputs = [ python-dateutil ipython_genutils decorator pyzmq ipython jupyter_client ipykernel tornado
+  propagatedBuildInputs = [ python-dateutil ipython_genutils decorator pyzmq ipython jupyter-client ipykernel tornado
   ] ++ lib.optionals (!isPy3k) [ futures ];
 
   # Requires access to cluster
diff --git a/nixpkgs/pkgs/development/python-modules/ipython/5.nix b/nixpkgs/pkgs/development/python-modules/ipython/5.nix
deleted file mode 100644
index 45096bf77816..000000000000
--- a/nixpkgs/pkgs/development/python-modules/ipython/5.nix
+++ /dev/null
@@ -1,72 +0,0 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-# Build dependencies
-, glibcLocales
-# Test dependencies
-, nose
-, pygments
-, testpath
-, isPy27
-, mock
-# Runtime dependencies
-, backports_shutil_get_terminal_size
-, decorator
-, pathlib2
-, pickleshare
-, requests
-, simplegeneric
-, traitlets
-, prompt-toolkit
-, pexpect
-, appnope
-}:
-
-buildPythonPackage rec {
-  pname = "ipython";
-  version = "5.8.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "4bac649857611baaaf76bc82c173aa542f7486446c335fe1a6c05d0d491c8906";
-  };
-
-  prePatch = lib.optionalString stdenv.isDarwin ''
-    substituteInPlace setup.py --replace "'gnureadline'" " "
-  '';
-
-  patches = [
-    # Use the proper pygments lexer for python2 (https://github.com/ipython/ipython/pull/12095)
-    (fetchpatch {
-      name = "python2-lexer.patch";
-      url = "https://github.com/ipython/ipython/pull/12095/commits/8805293b5e4bce9150cc2ad9c5d6d984849ae447.patch";
-      sha256 = "16p4gl7a49v76w33j39ih7yspy6x2d14p9bh4wdpg9cafhw9nbc0";
-    })
-  ];
-
-  buildInputs = [ glibcLocales ];
-
-  checkInputs = [ nose pygments testpath ] ++ lib.optional isPy27 mock;
-
-  propagatedBuildInputs = [
-    backports_shutil_get_terminal_size decorator pickleshare prompt-toolkit
-    simplegeneric traitlets requests pathlib2 pexpect
-  ] ++ lib.optionals stdenv.isDarwin [ appnope ];
-
-  LC_ALL="en_US.UTF-8";
-
-  doCheck = false; # Circular dependency with ipykernel
-
-  checkPhase = ''
-    nosetests
-  '';
-
-  meta = {
-    description = "IPython: Productive Interactive Computing";
-    homepage = "http://ipython.org/";
-    license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ bjornfor orivej lnl7 ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/ipython/7.16.nix b/nixpkgs/pkgs/development/python-modules/ipython/7.16.nix
index d0ca5eef7cde..1f62cc9bc18d 100644
--- a/nixpkgs/pkgs/development/python-modules/ipython/7.16.nix
+++ b/nixpkgs/pkgs/development/python-modules/ipython/7.16.nix
@@ -17,7 +17,6 @@
 , pexpect
 , appnope
 , backcall
-, fetchpatch
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/ipython/default.nix b/nixpkgs/pkgs/development/python-modules/ipython/default.nix
index 548ba874cd70..2065dc2349fd 100644
--- a/nixpkgs/pkgs/development/python-modules/ipython/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ipython/default.nix
@@ -18,17 +18,16 @@
 , pexpect
 , appnope
 , backcall
-, fetchpatch
 }:
 
 buildPythonPackage rec {
   pname = "ipython";
-  version = "7.27.0";
+  version = "7.29.0";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "58b55ebfdfa260dad10d509702dc2857cb25ad82609506b070cf2d7b7df5af13";
+    sha256 = "4f69d7423a5a1972f6347ff233e38bbf4df6a150ef20fbb00c635442ac3060aa";
   };
 
   prePatch = lib.optionalString stdenv.isDarwin ''
diff --git a/nixpkgs/pkgs/development/python-modules/ipyvue/default.nix b/nixpkgs/pkgs/development/python-modules/ipyvue/default.nix
index 0c46ecd8e1d3..6c0b15c41b37 100644
--- a/nixpkgs/pkgs/development/python-modules/ipyvue/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ipyvue/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "ipyvue";
-  version = "1.6.1";
+  version = "1.7.0";
 
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6cc15428bfcd5c7daae73c45c776b34056fe4d885a34192fb93efc80d6b9753f";
+    sha256 = "fa8ff9b9a73b5a925c4af4c05f1839df2bd0fae0063871f403ee821792d5ab72";
   };
 
   propagatedBuildInputs = [ ipywidgets ];
diff --git a/nixpkgs/pkgs/development/python-modules/ipywidgets/default.nix b/nixpkgs/pkgs/development/python-modules/ipywidgets/default.nix
index a0087131b1af..c324eea947da 100644
--- a/nixpkgs/pkgs/development/python-modules/ipywidgets/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ipywidgets/default.nix
@@ -15,11 +15,11 @@
 
 buildPythonPackage rec {
   pname = "ipywidgets";
-  version = "7.6.3";
+  version = "7.6.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9f1a43e620530f9e570e4a493677d25f08310118d315b00e25a18f12913c41f0";
+    sha256 = "00974f7cb4d5f8d494c19810fedb9fa9b64bffd3cda7c2be23c133a1ad3c99c5";
   };
 
   # Tests are not distributed
diff --git a/nixpkgs/pkgs/development/python-modules/ircrobots/default.nix b/nixpkgs/pkgs/development/python-modules/ircrobots/default.nix
index 38cedf939a39..e16ac2449a7d 100644
--- a/nixpkgs/pkgs/development/python-modules/ircrobots/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ircrobots/default.nix
@@ -3,6 +3,7 @@
 , fetchFromGitHub
 , pythonOlder
 , anyio
+, asyncio-rlock
 , asyncio-throttle
 , dataclasses
 , ircstates
@@ -13,23 +14,26 @@
 
 buildPythonPackage rec {
   pname = "ircrobots";
-  version = "0.3.8";
+  version = "0.4.6";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "jesopo";
     repo = pname;
     rev = "v${version}";
-    sha256 = "06q86dqllxvi3nssfplmjk9yxaybighwh87lrxfpfhl8yy4z68jz";
+    sha256 = "sha256-+BrS1+ZkgwT/qvqD0PwRZi2LF+31biS738SzKH1dy7w=";
   };
 
   postPatch = ''
     # too specific pins https://github.com/jesopo/ircrobots/issues/3
     sed -iE 's/anyio.*/anyio/' requirements.txt
+    sed -iE 's/ircstates.*/ircstates/' requirements.txt
+    sed -iE 's/async_timeout.*/async_timeout/' requirements.txt
   '';
 
   propagatedBuildInputs = [
     anyio
+    asyncio-rlock
     asyncio-throttle
     ircstates
     async_stagger
diff --git a/nixpkgs/pkgs/development/python-modules/ircstates/default.nix b/nixpkgs/pkgs/development/python-modules/ircstates/default.nix
index c2813d828daa..49ddb8c0614e 100644
--- a/nixpkgs/pkgs/development/python-modules/ircstates/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ircstates/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , pythonOlder
 , irctokens
 , pendulum
diff --git a/nixpkgs/pkgs/development/python-modules/isbnlib/default.nix b/nixpkgs/pkgs/development/python-modules/isbnlib/default.nix
index 746cd3ab8adf..e43db60fb11d 100644
--- a/nixpkgs/pkgs/development/python-modules/isbnlib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/isbnlib/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "isbnlib";
-  version = "3.10.8";
+  version = "3.10.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-6kBu8uFDiKs5ZJXw9gTS08lstaJWuWvAVW3Ycc19x7Q=";
+    sha256 = "sha256-P4GH6462+gJ9Jv8HdfKr1CDinOMyeUv1Uqhqa9ukcLg=";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/islpy/default.nix b/nixpkgs/pkgs/development/python-modules/islpy/default.nix
index 918d8be8e9f1..d6e4332fdeaa 100644
--- a/nixpkgs/pkgs/development/python-modules/islpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/islpy/default.nix
@@ -5,7 +5,6 @@
 , pybind11
 , pytestCheckHook
 , pythonOlder
-, cffi
 , six
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/ismartgate/default.nix b/nixpkgs/pkgs/development/python-modules/ismartgate/default.nix
index 594764bae0f9..83d29173243d 100644
--- a/nixpkgs/pkgs/development/python-modules/ismartgate/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ismartgate/default.nix
@@ -17,14 +17,14 @@
 
 buildPythonPackage rec {
   pname = "ismartgate";
-  version = "4.0.1";
+  version = "4.0.4";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "bdraco";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1kxlcjnppsk8m93gfcpy3asig1frhp1k5rfqx3rszhkcxmni95m2";
+    sha256 = "sha256-yh7gPyy3VMdyINBCZo5K2wA0BY7yYgHrKGZRB/pm77U=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/iso3166/default.nix b/nixpkgs/pkgs/development/python-modules/iso3166/default.nix
index 1fc5f695831c..2820ff7dd6c1 100644
--- a/nixpkgs/pkgs/development/python-modules/iso3166/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/iso3166/default.nix
@@ -2,28 +2,34 @@
 , fetchFromGitHub
 , buildPythonPackage
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "iso3166";
-  version = "1.0.1";
+  version = "2.0.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "deactivated";
     repo = "python-iso3166";
-    rev = "v${version}";
-    sha256 = "0zs9za9dr2nl5srxir08yibmp6nffcapmzala0fgh8ny7y6rafrx";
+    rev = version;
+    sha256 = "sha256-/y7c2qSA6+WKUP9YTSaMBjBxtqAuF4nB3MKvL5P6vL0=";
   };
 
   checkInputs = [
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "iso3166" ];
+  pythonImportsCheck = [
+    "iso3166"
+  ];
 
   meta = with lib; {
-    homepage = "https://github.com/deactivated/python-iso3166";
     description = "Self-contained ISO 3166-1 country definitions";
+    homepage = "https://github.com/deactivated/python-iso3166";
     license = licenses.mit;
     maintainers = with maintainers; [ zraexy ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/iso4217/default.nix b/nixpkgs/pkgs/development/python-modules/iso4217/default.nix
index 58d9ef5ffbd5..b1438f29a017 100644
--- a/nixpkgs/pkgs/development/python-modules/iso4217/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/iso4217/default.nix
@@ -2,27 +2,34 @@
 , buildPythonPackage
 , fetchFromGitHub
 , fetchurl
+, importlib-resources
 , pytestCheckHook
 , python
+, pythonOlder
 }:
 let
   table = fetchurl {
-    # See https://github.com/dahlia/iso4217/blob/main/setup.py#L18
+    # See https://github.com/dahlia/iso4217/blob/main/setup.py#L19
     url = "http://www.currency-iso.org/dam/downloads/lists/list_one.xml";
-    sha256 = "0frhicc7s8gqglr41hzx61fic3ckvr4sg773ahp1s28n5by3y7ac";
+    hash = "sha256-bp8uTMR1YRaI2cJLo0kdt9xD4nNaWK+LdlheWQ26qy0=";
   };
 in
 buildPythonPackage rec {
   pname = "iso4217";
-  version = "1.6";
+  version = "1.7";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "dahlia";
     repo = pname;
     rev = version;
-    sha256 = "0mdpf5a0xr5lrcfgvqi1sdn7ln2w6pkc3lg0laqkbx5mhxky0fla";
+    hash = "sha256-Ih2l6bGM7i5TUkzJPkgx8EOOL4a3/qE28SUZS6M4sQc=";
   };
 
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.9") [
+    importlib-resources
+  ];
+
   checkInputs = [
     pytestCheckHook
   ];
@@ -39,9 +46,13 @@ buildPythonPackage rec {
     cp -r ${table} $out/${python.sitePackages}/$pname/table.xml
   '';
 
-  pytestFlagsArray = [ "$pname/test.py" ];
+  pytestFlagsArray = [
+    "$pname/test.py"
+  ];
 
-  pythonImportsCheck = [ "iso4217" ];
+  pythonImportsCheck = [
+    "iso4217"
+  ];
 
   meta = with lib; {
     description = "ISO 4217 currency data package for Python";
diff --git a/nixpkgs/pkgs/development/python-modules/isodate/default.nix b/nixpkgs/pkgs/development/python-modules/isodate/default.nix
index 19a643d216ac..21bcc3ed90a3 100644
--- a/nixpkgs/pkgs/development/python-modules/isodate/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/isodate/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "isodate";
-  version = "0.6.0";
+  version = "0.6.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2e364a3d5759479cdb2d37cce6b9376ea504db2ff90252a2e5b7cc89cc9ff2d8";
+    sha256 = "SMWIHefosKDWSMsCTIBi3ITnuEDtgehkx2FP08Envek=";
   };
 
   propagatedBuildInputs = [ six ];
diff --git a/nixpkgs/pkgs/development/python-modules/isort/4.nix b/nixpkgs/pkgs/development/python-modules/isort/4.nix
deleted file mode 100644
index 5da9a5c6b306..000000000000
--- a/nixpkgs/pkgs/development/python-modules/isort/4.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, setuptools, isPy27, futures
-, backports_functools_lru_cache, mock, pytest
-}:
-
-let
-  skipTests = [ "test_requirements_finder" "test_pipfile_finder" ] ++ lib.optional isPy27 "test_standard_library_deprecates_user_issue_778";
-  testOpts = lib.concatMapStringsSep " " (t: "--deselect test_isort.py::${t}") skipTests;
-in buildPythonPackage rec {
-  pname = "isort";
-  version = "4.3.21"; # Note 4.x is the last version that supports Python2
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1";
-  };
-
-  propagatedBuildInputs = [
-    setuptools
-  ] ++ lib.optionals isPy27 [ futures backports_functools_lru_cache ];
-
-  checkInputs = [ mock pytest ];
-
-  checkPhase = ''
-    # isort excludes paths that contain /build/, so test fixtures don't work
-    # with TMPDIR=/build/
-    PATH=$out/bin:$PATH TMPDIR=/tmp/ pytest ${testOpts}
-
-    # Confirm that the produced executable script is wrapped correctly and runs
-    # OK, by launching it in a subshell without PYTHONPATH
-    (
-      unset PYTHONPATH
-      echo "Testing that `isort --version-number` returns OK..."
-      $out/bin/isort --version-number
-    )
-  '';
-
-  meta = with lib; {
-    description = "A Python utility / library to sort Python imports";
-    homepage = "https://github.com/timothycrosley/isort";
-    license = licenses.mit;
-    maintainers = with maintainers; [ couchemar ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/iterm2/default.nix b/nixpkgs/pkgs/development/python-modules/iterm2/default.nix
index a1b777c1bb76..1cba03531b5b 100644
--- a/nixpkgs/pkgs/development/python-modules/iterm2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/iterm2/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "iterm2";
-  version = "1.27";
+  version = "1.30";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "dcbd89d0502e72a9a41b055f5cf10b5a991f60fb12df29918d9c2183d1389abd";
+    sha256 = "148b32a593f3d932a33daad01fdaa4639918eca74a6e153d9729dd8b3cba3345";
   };
 
   propagatedBuildInputs = [ protobuf websockets ];
diff --git a/nixpkgs/pkgs/development/python-modules/jaconv/default.nix b/nixpkgs/pkgs/development/python-modules/jaconv/default.nix
new file mode 100644
index 000000000000..17f044dbd914
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jaconv/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, nose
+, pythonOlder
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "jaconv";
+  version = "0.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "ikegami-yukino";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "rityHi1JWWlV7+sAxNrlbcmfHmORZWrMZqXTRlsclhQ=";
+  };
+
+  checkInputs = [
+    nose
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "jaconv"
+  ];
+
+  meta = with lib; {
+    description = "Python Japanese character interconverter for Hiragana, Katakana, Hankaku and Zenkaku";
+    homepage = "https://github.com/ikegami-yukino/jaconv";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jaeger-client/default.nix b/nixpkgs/pkgs/development/python-modules/jaeger-client/default.nix
new file mode 100644
index 000000000000..a601fd9ce799
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jaeger-client/default.nix
@@ -0,0 +1,40 @@
+{ buildPythonPackage
+, fetchPypi
+, lib
+, opentracing
+, threadloop
+, thrift
+, tornado
+}:
+
+buildPythonPackage rec {
+  pname = "jaeger-client";
+  version = "4.8.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "3157836edab8e2c209bd2d6ae61113db36f7ee399e66b1dcbb715d87ab49bfe0";
+  };
+
+  propagatedBuildInputs = [
+    threadloop
+    thrift
+    tornado
+    opentracing
+  ];
+
+  # FIXME: Missing dependencies: tchannel, opentracing_instrumentation
+  # opentracing_instrumentation: Requires "tornado" lower than 6. Current is 6.1.
+  # https://github.com/uber-common/opentracing-python-instrumentation/pull/115
+  doCheck = false;
+
+  pythonImportsCheck = [ "jaeger_client" ];
+
+  meta = with lib; {
+    description = "Jaeger bindings for Python OpenTracing API";
+    downloadPage = "https://pypi.org/project/jaeger-client/";
+    homepage = "https://github.com/jaegertracing/jaeger-client-python";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/janus/default.nix b/nixpkgs/pkgs/development/python-modules/janus/default.nix
index 14d54ef5a422..c8a9efdb54f8 100644
--- a/nixpkgs/pkgs/development/python-modules/janus/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/janus/default.nix
@@ -1,16 +1,22 @@
-{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder, pytest-asyncio }:
+{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, pythonOlder, pytest-asyncio
+, typing-extensions
+}:
 
 buildPythonPackage rec {
   pname = "janus";
-  version = "0.6.1";
+  version = "0.7.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4712e0ef75711fe5947c2db855bc96221a9a03641b52e5ae8e25c2b705dd1d0c";
+    sha256 = "f10dcf5776e8d49cc30ec86d5eb7268eeec39abaa24fe0332ee8fb8fa3611845";
   };
 
   disabled = pythonOlder "3.6";
 
+  propagatedBuildInputs = [
+    typing-extensions
+  ];
+
   checkInputs = [ pytest-asyncio pytestCheckHook ];
 
   # also fails upstream: https://github.com/aio-libs/janus/pull/258
diff --git a/nixpkgs/pkgs/development/python-modules/jaraco-context/default.nix b/nixpkgs/pkgs/development/python-modules/jaraco-context/default.nix
new file mode 100644
index 000000000000..7be059359259
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jaraco-context/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "jaraco-context";
+  version = "4.1.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "jaraco";
+    repo = "jaraco.context";
+    rev = "v${version}";
+    sha256 = "O9Lwv2d/qbiXxIVCp6FLmVKaz0MzAUkoUd0jAyIvgJc=";
+  };
+
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  pythonNamespaces = [
+    "jaraco"
+  ];
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "jaraco.context" ];
+
+
+  meta = with lib; {
+    description = "Python module for context management";
+    homepage = "https://github.com/jaraco/jaraco.context";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jaraco_functools/2.nix b/nixpkgs/pkgs/development/python-modules/jaraco_functools/2.nix
deleted file mode 100644
index e10a11018a5d..000000000000
--- a/nixpkgs/pkgs/development/python-modules/jaraco_functools/2.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi
-, setuptools-scm
-, more-itertools, backports_functools_lru_cache }:
-
-buildPythonPackage rec {
-  pname = "jaraco.functools";
-  version = "2.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0ickpwvvdrlbm477gdzfjfcbgmfia9ksm9a3i3pbx9xia97r9fim";
-  };
-
-  propagatedBuildInputs = [ more-itertools backports_functools_lru_cache ];
-
-  doCheck = false;
-
-  buildInputs = [ setuptools-scm ];
-
-  meta = with lib; {
-    description = "Additional functools in the spirit of stdlib's functools";
-    homepage = "https://github.com/jaraco/jaraco.functools";
-    license = licenses.mit;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/jaraco_functools/default.nix b/nixpkgs/pkgs/development/python-modules/jaraco_functools/default.nix
index 3ad652af7643..1316c2b4e729 100644
--- a/nixpkgs/pkgs/development/python-modules/jaraco_functools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jaraco_functools/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "jaraco.functools";
-  version = "3.3.0";
+  version = "3.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bfcf7da71e2a0e980189b0744b59dba6c1dcf66dcd7a30f8a4413e478046b314";
+    sha256 = "659a64743047d00c6ae2a2aa60573c62cfc0b4b70eaa14fa50c80360ada32aa8";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/nixpkgs/pkgs/development/python-modules/jaraco_stream/2.nix b/nixpkgs/pkgs/development/python-modules/jaraco_stream/2.nix
deleted file mode 100644
index 1f5a70477a3f..000000000000
--- a/nixpkgs/pkgs/development/python-modules/jaraco_stream/2.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ buildPythonPackage, fetchPypi, setuptools-scm, six }:
-
-buildPythonPackage rec {
-  pname = "jaraco.stream";
-  version = "2.0";
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "196synw4g76yagcflmavi7wakf5cdgsflmvbj7zs616gv03xbsf2";
-  };
-  doCheck = false;
-  buildInputs = [ setuptools-scm ];
-  propagatedBuildInputs = [ six ];
-}
diff --git a/nixpkgs/pkgs/development/python-modules/jaraco_text/default.nix b/nixpkgs/pkgs/development/python-modules/jaraco_text/default.nix
index 32e8aa23aeb4..054f68ba2f24 100644
--- a/nixpkgs/pkgs/development/python-modules/jaraco_text/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jaraco_text/default.nix
@@ -1,33 +1,51 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
 , importlib-resources
 , jaraco_functools
+, jaraco-context
 , setuptools-scm
 }:
 
 buildPythonPackage rec {
   pname = "jaraco.text";
-  version = "3.5.1";
+  version = "3.6.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ede4e9103443b62b3d1d193257dfb85aab7c69a6cef78a0887d64bb307a03bc3";
+    sha256 = "901d3468eaaa04f1d8a8f141f54b8887bfd943ccba311fc1c1de62c66604dfe0";
   };
 
-  pythonNamespaces = [ "jaraco" ];
+  pythonNamespaces = [
+    "jaraco"
+  ];
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
 
-  nativeBuildInputs =[ setuptools-scm ];
   propagatedBuildInputs = [
+    jaraco-context
     jaraco_functools
-  ] ++ lib.optional (pythonOlder "3.7") [ importlib-resources ];
+  ] ++ lib.optional (pythonOlder "3.9") [
+    importlib-resources
+  ];
 
   # no tests in pypi package
   doCheck = false;
 
+  pythonImportsCheck = [
+    "jaraco.text"
+  ];
+
   meta = with lib; {
     description = "Module for text manipulation";
     homepage = "https://github.com/jaraco/jaraco.text";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/jax/cache-fix.patch b/nixpkgs/pkgs/development/python-modules/jax/cache-fix.patch
new file mode 100644
index 000000000000..5db5319485f8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jax/cache-fix.patch
@@ -0,0 +1,12 @@
+diff --git a/jax/experimental/compilation_cache/file_system_cache.py b/jax/experimental/compilation_cache/file_system_cache.py
+index b85969de..92acd523 100644
+--- a/jax/experimental/compilation_cache/file_system_cache.py
++++ b/jax/experimental/compilation_cache/file_system_cache.py
+@@ -33,6 +33,7 @@ class FileSystemCache(CacheInterface):
+     path_to_key = os.path.join(self._path, key)
+     if os.path.exists(path_to_key):
+       with open(path_to_key, "rb") as file:
++        os.utime(file.fileno())
+         return file.read()
+     else:
+       return None
diff --git a/nixpkgs/pkgs/development/python-modules/jax/default.nix b/nixpkgs/pkgs/development/python-modules/jax/default.nix
index f0b4d6e26324..574341f216ab 100644
--- a/nixpkgs/pkgs/development/python-modules/jax/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jax/default.nix
@@ -1,39 +1,69 @@
-{ buildPythonPackage, fetchFromGitHub, lib
-# propagatedBuildInputs
-, absl-py, numpy, opt-einsum
-# checkInputs
-, jaxlib, pytestCheckHook
+{ lib
+, absl-py
+, buildPythonPackage
+, fetchFromGitHub
+, jaxlib
+, numpy
+, opt-einsum
+, pytestCheckHook
+, pythonOlder
+, scipy
+, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "jax";
-  version = "0.2.19";
+  version = "0.2.26";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
-  # Fetching from pypi doesn't allow us to run the test suite. See https://discourse.nixos.org/t/pythonremovetestsdir-hook-being-run-before-checkphase/14612/3.
   src = fetchFromGitHub {
     owner = "google";
     repo = pname;
-    rev = "jax-v${version}";
-    sha256 = "sha256-pVn62G7pydR7ybkf7gSbu0FlEq2c0US6H2GTBAljup4=";
+    rev = "${pname}-v${version}";
+    sha256 = "155hhwgq6axdrj4x4hw72322qv1wc068n4cv4z2vf5jpl05fg93g";
   };
 
+  patches = [
+    # See https://github.com/google/jax/issues/7944
+    ./cache-fix.patch
+  ];
+
   # jaxlib is _not_ included in propagatedBuildInputs because there are
   # different versions of jaxlib depending on the desired target hardware. The
   # JAX project ships separate wheels for CPU, GPU, and TPU. Currently only the
   # CPU wheel is packaged.
-  propagatedBuildInputs = [ absl-py numpy opt-einsum ];
+  propagatedBuildInputs = [
+    absl-py
+    numpy
+    opt-einsum
+    scipy
+    typing-extensions
+  ];
+
+  checkInputs = [
+    jaxlib
+    pytestCheckHook
+  ];
 
-  checkInputs = [ jaxlib pytestCheckHook ];
   # NOTE: Don't run the tests in the expiremental directory as they require flax
   # which creates a circular dependency. See https://discourse.nixos.org/t/how-to-nix-ify-python-packages-with-circular-dependencies/14648/2.
   # Not a big deal, this is how the JAX docs suggest running the test suite
   # anyhow.
-  pytestFlagsArray = [ "-W ignore::DeprecationWarning" "tests/" ];
+  pytestFlagsArray = [
+    "-W ignore::DeprecationWarning"
+    "tests/"
+  ];
+
+  pythonImportsCheck = [
+    "jax"
+  ];
 
   meta = with lib; {
     description = "Differentiate, compile, and transform Numpy code";
-    homepage    = "https://github.com/google/jax";
-    license     = licenses.asl20;
+    homepage = "https://github.com/google/jax";
+    license = licenses.asl20;
     maintainers = with maintainers; [ samuela ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/jaxlib/bin.nix b/nixpkgs/pkgs/development/python-modules/jaxlib/bin.nix
new file mode 100644
index 000000000000..f597eeacfced
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jaxlib/bin.nix
@@ -0,0 +1,90 @@
+# For the moment we only support the CPU and GPU backends of jaxlib. The TPU
+# backend will require some additional work. Those wheels are located here:
+# https://storage.googleapis.com/jax-releases/libtpu_releases.html.
+
+# For future reference, the easiest way to test the GPU backend is to run
+#   NIX_PATH=.. nix-shell -p python3 python3Packages.jax "python3Packages.jaxlib.override { cudaSupport = true; }"
+#   export XLA_FLAGS=--xla_gpu_force_compilation_parallelism=1
+#   python -c "from jax.lib import xla_bridge; assert xla_bridge.get_backend().platform == 'gpu'"
+#   python -c "from jax import random; random.PRNGKey(0)"
+#   python -c "from jax import random; x = random.normal(random.PRNGKey(0), (100, 100)); x @ x"
+# There's no convenient way to test the GPU backend in the derivation since the
+# nix build environment blocks access to the GPU. See also:
+#   * https://github.com/google/jax/issues/971#issuecomment-508216439
+#   * https://github.com/google/jax/issues/5723#issuecomment-913038780
+
+{ addOpenGLRunpath, autoPatchelfHook, buildPythonPackage, config
+, fetchurl, isPy39, lib, stdenv
+# propagatedBuildInputs
+, absl-py, flatbuffers, scipy, cudatoolkit_11
+# Options:
+, cudaSupport ? config.cudaSupport or false
+}:
+
+assert cudaSupport -> lib.versionAtLeast cudatoolkit_11.version "11.1";
+
+let
+  device = if cudaSupport then "gpu" else "cpu";
+in
+buildPythonPackage rec {
+  pname = "jaxlib";
+  version = "0.1.71";
+  format = "wheel";
+
+  # At the time of writing (8/19/21), there are releases for 3.7-3.9. Supporting
+  # all of them is a pain, so we focus on 3.9, the current nixpkgs python3
+  # version.
+  disabled = !isPy39;
+
+  src = {
+    cpu = fetchurl {
+      url = "https://storage.googleapis.com/jax-releases/nocuda/jaxlib-${version}-cp39-none-manylinux2010_x86_64.whl";
+      sha256 = "sha256:0rqhs6qabydizlv5d3rb20dbv6612rr7dqfniy9r6h4kazdinsn6";
+    };
+    gpu = fetchurl {
+      url = "https://storage.googleapis.com/jax-releases/cuda111/jaxlib-${version}+cuda111-cp39-none-manylinux2010_x86_64.whl";
+      sha256 = "sha256:065kyzjsk9m84d138p99iymdiiicm1qz8a3iwxz8rspl43rwrw89";
+    };
+  }.${device};
+
+  # Prebuilt wheels are dynamically linked against things that nix can't find.
+  # Run `autoPatchelfHook` to automagically fix them.
+  nativeBuildInputs = [ autoPatchelfHook ] ++ lib.optional cudaSupport addOpenGLRunpath;
+  # Dynamic link dependencies
+  buildInputs = [ stdenv.cc.cc ];
+
+  # jaxlib contains shared libraries that open other shared libraries via dlopen
+  # and these implicit dependencies are not recognized by ldd or
+  # autoPatchelfHook. That means we need to sneak them into rpath. This step
+  # must be done after autoPatchelfHook and the automatic stripping of
+  # artifacts. autoPatchelfHook runs in postFixup and auto-stripping runs in the
+  # patchPhase. Dependencies:
+  #   * libcudart.so.11.0 -> cudatoolkit_11.lib
+  #   * libcublas.so.11   -> cudatoolkit_11
+  #   * libcuda.so.1      -> opengl driver in /run/opengl-driver/lib
+  preInstallCheck = lib.optional cudaSupport ''
+    shopt -s globstar
+
+    addOpenGLRunpath $out/**/*.so
+
+    for file in $out/**/*.so; do
+      rpath=$(patchelf --print-rpath $file)
+      # For some reason `makeLibraryPath` on `cudatoolkit_11` maps to
+      # <cudatoolkit_11.lib>/lib which is different from <cudatoolkit_11>/lib.
+      patchelf --set-rpath "$rpath:${cudatoolkit_11}/lib:${lib.makeLibraryPath [ cudatoolkit_11.lib ]}" $file
+    done
+  '';
+
+  # pip dependencies and optionally cudatoolkit.
+  propagatedBuildInputs = [ absl-py flatbuffers scipy ] ++ lib.optional cudaSupport cudatoolkit_11;
+
+  pythonImportsCheck = [ "jaxlib" ];
+
+  meta = with lib; {
+    description = "XLA library for JAX";
+    homepage    = "https://github.com/google/jax";
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ samuela ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jaxlib/default.nix b/nixpkgs/pkgs/development/python-modules/jaxlib/default.nix
index 7761c0372994..bfb7f494ce1a 100644
--- a/nixpkgs/pkgs/development/python-modules/jaxlib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jaxlib/default.nix
@@ -1,90 +1,285 @@
-# For the moment we only support the CPU and GPU backends of jaxlib. The TPU
-# backend will require some additional work. Those wheels are located here:
-# https://storage.googleapis.com/jax-releases/libtpu_releases.html.
-
-# For future reference, the easiest way to test the GPU backend is to run
-#   NIX_PATH=.. nix-shell -p python3 python3Packages.jax "python3Packages.jaxlib.override { cudaSupport = true; }"
-#   export XLA_FLAGS=--xla_gpu_force_compilation_parallelism=1
-#   python -c "from jax.lib import xla_bridge; assert xla_bridge.get_backend().platform == 'gpu'"
-#   python -c "from jax import random; random.PRNGKey(0)"
-#   python -c "from jax import random; x = random.normal(random.PRNGKey(0), (100, 100)); x @ x"
-# There's no convenient way to test the GPU backend in the derivation since the
-# nix build environment blocks access to the GPU. See also:
-#   * https://github.com/google/jax/issues/971#issuecomment-508216439
-#   * https://github.com/google/jax/issues/5723#issuecomment-913038780
-
-{ addOpenGLRunpath, autoPatchelfHook, buildPythonPackage, config, fetchPypi
-, fetchurl, isPy39, lib, stdenv
-# propagatedBuildInputs
-, absl-py, flatbuffers, scipy, cudatoolkit_11
-# Options:
-, cudaSupport ? config.cudaSupport or false
-}:
+{ lib
+, pkgs
+, stdenv
+
+  # Build-time dependencies:
+, addOpenGLRunpath
+, bazel_4
+, binutils
+, buildBazelPackage
+, buildPythonPackage
+, cython
+, fetchFromGitHub
+, git
+, jsoncpp
+, pybind11
+, setuptools
+, symlinkJoin
+, wheel
+, which
+
+  # Build-time and runtime CUDA dependencies:
+, cudatoolkit ? null
+, cudnn ? null
+, nccl ? null
 
-assert cudaSupport -> lib.versionAtLeast cudatoolkit_11.version "11.1";
+  # Python dependencies:
+, absl-py
+, flatbuffers
+, numpy
+, scipy
+, six
+
+  # Runtime dependencies:
+, double-conversion
+, giflib
+, grpc
+, libjpeg_turbo
+, python
+, snappy
+, zlib
+
+  # CUDA flags:
+, cudaCapabilities ? [ "sm_35" "sm_50" "sm_60" "sm_70" "sm_75" "compute_80" ]
+, cudaSupport ? false
+
+  # MKL:
+, mklSupport ? true
+}:
 
 let
-  device = if cudaSupport then "gpu" else "cpu";
-in
-buildPythonPackage rec {
+
   pname = "jaxlib";
-  version = "0.1.71";
-  format = "wheel";
+  version = "0.1.75";
+
+  meta = with lib; {
+    description = "JAX is Autograd and XLA, brought together for high-performance machine learning research.";
+    homepage = "https://github.com/google/jax";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ndl ];
+  };
+
+  cudatoolkit_joined = symlinkJoin {
+    name = "${cudatoolkit.name}-merged";
+    paths = [
+      cudatoolkit.lib
+      cudatoolkit.out
+    ] ++ lib.optionals (lib.versionOlder cudatoolkit.version "11") [
+      # for some reason some of the required libs are in the targets/x86_64-linux
+      # directory; not sure why but this works around it
+      "${cudatoolkit}/targets/${stdenv.system}"
+    ];
+  };
+
+  cudatoolkit_cc_joined = symlinkJoin {
+    name = "${cudatoolkit.cc.name}-merged";
+    paths = [
+      cudatoolkit.cc
+      binutils.bintools # for ar, dwp, nm, objcopy, objdump, strip
+    ];
+  };
 
-  # At the time of writing (8/19/21), there are releases for 3.7-3.9. Supporting
-  # all of them is a pain, so we focus on 3.9, the current nixpkgs python3
-  # version.
-  disabled = !isPy39;
+  bazel-build = buildBazelPackage {
+    name = "bazel-build-${pname}-${version}";
 
-  src = {
-    cpu = fetchurl {
-      url = "https://storage.googleapis.com/jax-releases/nocuda/jaxlib-${version}-cp39-none-manylinux2010_x86_64.whl";
-      sha256 = "sha256:0rqhs6qabydizlv5d3rb20dbv6612rr7dqfniy9r6h4kazdinsn6";
+    bazel = bazel_4;
+
+    src = fetchFromGitHub {
+      owner = "google";
+      repo = "jax";
+      rev = "${pname}-v${version}";
+      sha256 = "01ks4djbpjsxjy2zwdwv3h00sgwi4ps3jz75swddrw2f56zjdmw4";
     };
-    gpu = fetchurl {
-      url = "https://storage.googleapis.com/jax-releases/cuda111/jaxlib-${version}+cuda111-cp39-none-manylinux2010_x86_64.whl";
-      sha256 = "sha256:065kyzjsk9m84d138p99iymdiiicm1qz8a3iwxz8rspl43rwrw89";
+
+    nativeBuildInputs = [
+      cython
+      pkgs.flatbuffers
+      git
+      setuptools
+      wheel
+      which
+    ];
+
+    buildInputs = [
+      double-conversion
+      giflib
+      grpc
+      jsoncpp
+      libjpeg_turbo
+      numpy
+      pkgs.flatbuffers
+      pkgs.protobuf
+      pybind11
+      scipy
+      six
+      snappy
+      zlib
+    ] ++ lib.optionals cudaSupport [
+      cudatoolkit
+      cudnn
+    ];
+
+    postPatch = ''
+      rm -f .bazelversion
+    '';
+
+    bazelTarget = "//build:build_wheel";
+
+    removeRulesCC = false;
+
+    GCC_HOST_COMPILER_PREFIX = lib.optionalString cudaSupport "${cudatoolkit_cc_joined}/bin";
+    GCC_HOST_COMPILER_PATH = lib.optionalString cudaSupport "${cudatoolkit_cc_joined}/bin/gcc";
+
+    preConfigure = ''
+      # dummy ldconfig
+      mkdir dummy-ldconfig
+      echo "#!${stdenv.shell}" > dummy-ldconfig/ldconfig
+      chmod +x dummy-ldconfig/ldconfig
+      export PATH="$PWD/dummy-ldconfig:$PATH"
+      cat <<CFG > ./.jax_configure.bazelrc
+      build --strategy=Genrule=standalone
+      build --repo_env PYTHON_BIN_PATH="${python}/bin/python"
+      build --action_env=PYENV_ROOT
+      build --python_path="${python}/bin/python"
+      build --distinct_host_configuration=false
+    '' + lib.optionalString cudaSupport ''
+      build --action_env CUDA_TOOLKIT_PATH="${cudatoolkit_joined}"
+      build --action_env CUDNN_INSTALL_PATH="${cudnn}"
+      build --action_env TF_CUDA_PATHS="${cudatoolkit_joined},${cudnn},${nccl}"
+      build --action_env TF_CUDA_VERSION="${lib.versions.majorMinor cudatoolkit.version}"
+      build --action_env TF_CUDNN_VERSION="${lib.versions.major cudnn.version}"
+      build:cuda --action_env TF_CUDA_COMPUTE_CAPABILITIES="${lib.concatStringsSep "," cudaCapabilities}"
+    '' + ''
+      CFG
+    '';
+
+    # Copy-paste from TF derivation.
+    # Most of these are not really used in jaxlib compilation but it's simpler to keep it
+    # 'as is' so that it's more compatible with TF derivation.
+    TF_SYSTEM_LIBS = lib.concatStringsSep "," [
+      "absl_py"
+      "astor_archive"
+      "astunparse_archive"
+      "boringssl"
+      # Not packaged in nixpkgs
+      # "com_github_googleapis_googleapis"
+      # "com_github_googlecloudplatform_google_cloud_cpp"
+      "com_github_grpc_grpc"
+      "com_google_protobuf"
+      # Fails with the error: external/org_tensorflow/tensorflow/core/profiler/utils/tf_op_utils.cc:46:49: error: no matching function for call to 're2::RE2::FullMatch(absl::lts_2020_02_25::string_view&, re2::RE2&)'
+      # "com_googlesource_code_re2"
+      "curl"
+      "cython"
+      "dill_archive"
+      "double_conversion"
+      "enum34_archive"
+      "flatbuffers"
+      "functools32_archive"
+      "gast_archive"
+      "gif"
+      "hwloc"
+      "icu"
+      "jsoncpp_git"
+      "libjpeg_turbo"
+      "lmdb"
+      "nasm"
+      # "nsync" # not packaged in nixpkgs
+      "opt_einsum_archive"
+      "org_sqlite"
+      "pasta"
+      "pcre"
+      "png"
+      "pybind11"
+      "six_archive"
+      "snappy"
+      "tblib_archive"
+      "termcolor_archive"
+      "typing_extensions_archive"
+      "wrapt"
+      "zlib"
+    ];
+
+    # Make sure Bazel knows about our configuration flags during fetching so that the
+    # relevant dependencies can be downloaded.
+    bazelFetchFlags = bazel-build.bazelBuildFlags;
+
+    bazelBuildFlags = [
+      "-c opt"
+    ] ++ lib.optional (stdenv.targetPlatform.isx86_64 && stdenv.targetPlatform.isUnix) [
+      "--config=avx_posix"
+    ] ++ lib.optional cudaSupport [
+      "--config=cuda"
+    ] ++ lib.optional mklSupport [
+      "--config=mkl_open_source_only"
+    ];
+
+    fetchAttrs = {
+      sha256 =
+        if cudaSupport then
+          "1lyipbflqd1y5cdj4hdml5h1inbr0wwfgp6xw5p5623qv3im16lh"
+        else
+          "09kapzpfwnlr6ghmgwac232bqf2a57mm1brz4cvfx8mlg8bbaw63";
+    };
+
+    buildAttrs = {
+      outputs = [ "out" ];
+
+      # Note: we cannot do most of this patching at `patch` phase as the deps are not available yet.
+      # 1) Fix pybind11 include paths.
+      # 2) Force static protobuf linkage to prevent crashes on loading multiple extensions
+      #    in the same python program due to duplicate protobuf DBs.
+      # 3) Patch python path in the compiler driver.
+      preBuild = ''
+        for src in ./jaxlib/*.{cc,h}; do
+          sed -i 's@include/pybind11@pybind11@g' $src
+        done
+        sed -i 's@-lprotobuf@-l:libprotobuf.a@' ../output/external/org_tensorflow/third_party/systemlibs/protobuf.BUILD
+        sed -i 's@-lprotoc@-l:libprotoc.a@' ../output/external/org_tensorflow/third_party/systemlibs/protobuf.BUILD
+      '' + lib.optionalString cudaSupport ''
+        patchShebangs ../output/external/org_tensorflow/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc.tpl
+      '';
+
+      installPhase = ''
+        ./bazel-bin/build/build_wheel --output_path=$out --cpu=${stdenv.targetPlatform.linuxArch}
+      '';
     };
-  }.${device};
-
-  # Prebuilt wheels are dynamically linked against things that nix can't find.
-  # Run `autoPatchelfHook` to automagically fix them.
-  nativeBuildInputs = [ autoPatchelfHook ] ++ lib.optional cudaSupport addOpenGLRunpath;
-  # Dynamic link dependencies
-  buildInputs = [ stdenv.cc.cc ];
-
-  # jaxlib contains shared libraries that open other shared libraries via dlopen
-  # and these implicit dependencies are not recognized by ldd or
-  # autoPatchelfHook. That means we need to sneak them into rpath. This step
-  # must be done after autoPatchelfHook and the automatic stripping of
-  # artifacts. autoPatchelfHook runs in postFixup and auto-stripping runs in the
-  # patchPhase. Dependencies:
-  #   * libcudart.so.11.0 -> cudatoolkit_11.lib
-  #   * libcublas.so.11   -> cudatoolkit_11
-  #   * libcuda.so.1      -> opengl driver in /run/opengl-driver/lib
-  preInstallCheck = lib.optional cudaSupport ''
-    shopt -s globstar
-
-    addOpenGLRunpath $out/**/*.so
-
-    for file in $out/**/*.so; do
-      rpath=$(patchelf --print-rpath $file)
-      # For some reason `makeLibraryPath` on `cudatoolkit_11` maps to
-      # <cudatoolkit_11.lib>/lib which is different from <cudatoolkit_11>/lib.
-      patchelf --set-rpath "$rpath:${cudatoolkit_11}/lib:${lib.makeLibraryPath [ cudatoolkit_11.lib ]}" $file
+
+    inherit meta;
+  };
+
+in
+buildPythonPackage {
+  inherit meta pname version;
+  format = "wheel";
+
+  src = "${bazel-build}/jaxlib-${version}-cp${builtins.replaceStrings ["."] [""] python.pythonVersion}-none-manylinux2010_${stdenv.targetPlatform.linuxArch}.whl";
+
+  postInstall = lib.optionalString cudaSupport ''
+    find $out -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do
+      addOpenGLRunpath "$lib"
+      patchelf --set-rpath "${cudatoolkit}/lib:${cudatoolkit.lib}/lib:${cudnn}/lib:${nccl}/lib:$(patchelf --print-rpath "$lib")" "$lib"
     done
   '';
 
-  # pip dependencies and optionally cudatoolkit.
-  propagatedBuildInputs = [ absl-py flatbuffers scipy ] ++ lib.optional cudaSupport cudatoolkit_11;
+  nativeBuildInputs = lib.optional cudaSupport addOpenGLRunpath;
+
+  propagatedBuildInputs = [
+    absl-py
+    double-conversion
+    flatbuffers
+    giflib
+    grpc
+    jsoncpp
+    libjpeg_turbo
+    numpy
+    scipy
+    six
+    snappy
+  ];
 
   pythonImportsCheck = [ "jaxlib" ];
 
-  meta = with lib; {
-    description = "XLA library for JAX";
-    homepage    = "https://github.com/google/jax";
-    license     = licenses.asl20;
-    maintainers = with maintainers; [ samuela ];
-    platforms = [ "x86_64-linux" ];
-  };
+  # Without it there are complaints about libcudart.so.11.0 not being found
+  # because RPATH path entries added above are stripped.
+  dontPatchELF = cudaSupport;
 }
diff --git a/nixpkgs/pkgs/development/python-modules/jc/default.nix b/nixpkgs/pkgs/development/python-modules/jc/default.nix
index 7a4873a00e04..1a4ce8f7498a 100644
--- a/nixpkgs/pkgs/development/python-modules/jc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jc/default.nix
@@ -1,7 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, ruamel_yaml
+, ruamel-yaml
 , xmltodict
 , pygments
 , pytestCheckHook
@@ -10,17 +10,17 @@
 
 buildPythonPackage rec {
   pname = "jc";
-  version = "1.17.0";
+  version = "1.17.5";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "kellyjonbrazil";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-8GTRBoZuA/fsfVxCBpvNefWHuWLvN/L/BT31OFpslxA=";
+    sha256 = "004773a1wsip1gnqvas78k0snv7yq83qv1spir891sz4mmg7fyin";
   };
 
-  propagatedBuildInputs = [ ruamel_yaml xmltodict pygments ];
+  propagatedBuildInputs = [ ruamel-yaml xmltodict pygments ];
 
   checkInputs = [ pytestCheckHook ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/jdatetime/default.nix b/nixpkgs/pkgs/development/python-modules/jdatetime/default.nix
index 96e8e4d7c34f..c498a69d0a62 100644
--- a/nixpkgs/pkgs/development/python-modules/jdatetime/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jdatetime/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "jdatetime";
-  version = "3.6.4";
+  version = "3.7.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "39d0be41076b3a3850c3bfa90817e7ed459edc0e9cadce37dc7229b11f121c7e";
+    sha256 = "f06876c926b8cf88b2f0f68d6cda2b0ff86002385877c9867970e1d017ef82a8";
   };
 
   propagatedBuildInputs = [ six ];
diff --git a/nixpkgs/pkgs/development/python-modules/jedi-language-server/default.nix b/nixpkgs/pkgs/development/python-modules/jedi-language-server/default.nix
new file mode 100644
index 000000000000..90e4634b46c9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jedi-language-server/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchFromGitHub
+, poetry
+, docstring-to-markdown
+, jedi
+, pygls
+, pytestCheckHook
+, pyhamcrest
+, python-jsonrpc-server
+}:
+
+buildPythonPackage rec {
+  pname = "jedi-language-server";
+  version = "0.34.11";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "pappasam";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0gxpq93mfyzhjz5yvjwv2jjda1djpf20x38893ngswsm7lrh62x5";
+  };
+
+  nativeBuildInputs = [
+    poetry
+  ];
+
+  propagatedBuildInputs = [
+    docstring-to-markdown
+    jedi
+    pygls
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    pyhamcrest
+    python-jsonrpc-server
+  ];
+
+  preCheck = ''
+    HOME="$(mktemp -d)"
+  '';
+
+  pythonImportsCheck = [
+    "jedi_language_server"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/pappasam/jedi-language-server";
+    description = "A Language Server for the latest version(s) of Jedi";
+    license = licenses.mit;
+    maintainers = with maintainers; [ doronbehar ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jedi/default.nix b/nixpkgs/pkgs/development/python-modules/jedi/default.nix
index 0dba5e8f192c..ad94a3a3f7bc 100644
--- a/nixpkgs/pkgs/development/python-modules/jedi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jedi/default.nix
@@ -1,29 +1,51 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchPypi, pytest, glibcLocales, tox, pytest-cov, parso }:
+{ lib
+, stdenv
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, colorama
+, django
+, docopt
+, pytestCheckHook
+, parso
+}:
 
 buildPythonPackage rec {
   pname = "jedi";
-  # switch back to stable version on the next release.
-  # current stable is incompatible with parso
-  version = "2020-08-06";
+  version = "0.18.0";
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "davidhalter";
     repo = "jedi";
-    rev = "216f976fd5cab7a460e5d287e853d11759251e52";
-    sha256 = "1kb2ajzigadl95pnwglg8fxz9cvpg9hx30hqqj91jkgrc7djdldj";
+    rev = "v${version}";
+    sha256 = "0d8zdj56hyxbsvvrid6r3nprm0ygxaad6zpsbhbj6k7p3dcx7acw";
     fetchSubmodules = true;
   };
 
-  checkInputs = [ pytest glibcLocales tox pytest-cov ];
-
   propagatedBuildInputs = [ parso ];
 
-  checkPhase = ''
-    LC_ALL="en_US.UTF-8" py.test test
+  checkInputs = [
+    colorama
+    django
+    docopt
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    export HOME=$TMPDIR
   '';
 
-  # tox required for tests: https://github.com/davidhalter/jedi/issues/808
-  doCheck = false;
+  disabledTests = [
+    # Assertions mismatches with pytest>=6.0
+    "test_completion"
+
+    # sensitive to platform, causes false negatives on darwin
+    "test_import"
+  ] ++ lib.optionals (stdenv.isAarch64 && pythonOlder "3.9") [
+    # AssertionError: assert 'foo' in ['setup']
+    "test_init_extension_module"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/davidhalter/jedi";
diff --git a/nixpkgs/pkgs/development/python-modules/jellyfin-apiclient-python/default.nix b/nixpkgs/pkgs/development/python-modules/jellyfin-apiclient-python/default.nix
index ca96e63060da..08eed6e941e7 100644
--- a/nixpkgs/pkgs/development/python-modules/jellyfin-apiclient-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jellyfin-apiclient-python/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , pythonOlder
 , fetchPypi
+, certifi
 , requests
 , six
 , websocket-client
@@ -9,15 +10,16 @@
 
 buildPythonPackage rec {
   pname = "jellyfin-apiclient-python";
-  version = "1.7.2";
+  version = "1.8.1";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-nSLUa9/jAT6XrHo77kV5HYBxPO/lhcWKqPfpES7ul9A=";
+    sha256 = "t2XmZ7rsrZq943lzRDrqzsY/djFNjFbkEYeHeA2AViI=";
   };
 
   propagatedBuildInputs = [
+    certifi
     requests
     six
     websocket-client
diff --git a/nixpkgs/pkgs/development/python-modules/jellyfish/default.nix b/nixpkgs/pkgs/development/python-modules/jellyfish/default.nix
index 436aad07bf8c..546e56f702f6 100644
--- a/nixpkgs/pkgs/development/python-modules/jellyfish/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jellyfish/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "jellyfish";
-  version = "0.8.8";
+  version = "0.8.9";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0506089cacf9b5897442134417b04b3c6610c19f280ae535eace390dc6325a5c";
+    sha256 = "90d25e8f5971ebbcf56f216ff5bb65d6466572b78908c88c47ab588d4ea436c2";
   };
 
   checkInputs = [ pytest unicodecsv ];
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 5b3f68272fa2..5613b904f63d 100644
--- a/nixpkgs/pkgs/development/python-modules/jenkins-job-builder/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jenkins-job-builder/default.nix
@@ -1,5 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, fasteners
+{ lib, buildPythonPackage, fetchPypi, fasteners
 , jinja2
 , pbr
 , python-jenkins
@@ -10,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "jenkins-job-builder";
-  version = "3.10.0";
+  version = "3.11.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-8MP8YHIkxDqjPsUYv6ROmuRwcGMzPpsVCRwxga3XdYU=";
+    sha256 = "42ea423f44beafee0e985009124968e300447f6e3be4180e83568cf21520d1b1";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/jinja2/2.nix b/nixpkgs/pkgs/development/python-modules/jinja2/2.nix
index dce93d33ab50..02127a50df74 100644
--- a/nixpkgs/pkgs/development/python-modules/jinja2/2.nix
+++ b/nixpkgs/pkgs/development/python-modules/jinja2/2.nix
@@ -21,10 +21,11 @@ buildPythonPackage rec {
 
   # Multiple tests run out of stack space on 32bit systems with python2.
   # See https://github.com/pallets/jinja/issues/1158
-  doCheck = !stdenv.is32bit || isPy3k;
+  # warnings are no longer being filtered correctly for python2
+  doCheck = !stdenv.is32bit && isPy3k;
 
   checkPhase = ''
-    pytest -v tests
+    pytest -v tests -W ignore::DeprecationWarning
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/jinja2/default.nix b/nixpkgs/pkgs/development/python-modules/jinja2/default.nix
index d54372379b86..5d7ca68b19b7 100644
--- a/nixpkgs/pkgs/development/python-modules/jinja2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jinja2/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "Jinja2";
-  version = "3.0.1";
+  version = "3.0.3";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "197ms1wimxql650245v63wkv04n8bicj549wfhp51bx68x5lhgvh";
+    sha256 = "611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7";
   };
 
   propagatedBuildInputs = [
@@ -31,6 +31,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  pytestFlagsArray = [
+    # Avoid failure due to deprecation warning
+    # Fixed in https://github.com/python/cpython/pull/28153
+    # Remove after cpython 3.9.8
+    "-p no:warnings"
+  ];
+
   meta = with lib; {
     homepage = "http://jinja.pocoo.org/";
     description = "Stand-alone template engine";
diff --git a/nixpkgs/pkgs/development/python-modules/jmp/default.nix b/nixpkgs/pkgs/development/python-modules/jmp/default.nix
new file mode 100644
index 000000000000..dc096b93ae46
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jmp/default.nix
@@ -0,0 +1,42 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, jax
+, jaxlib
+, lib
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "jmp";
+  # As of 2022-01-01, the latest stable version (0.0.2) fails tests with recent JAX versions,
+  # IIUC it's fixed in https://github.com/deepmind/jmp/commit/4969392f618d7733b265677143d8c81e44085867
+  version = "unstable-2021-10-03";
+
+  src = fetchFromGitHub {
+    owner = "deepmind";
+    repo = pname;
+    rev = "4b94370b8de29b79d6f840b09d1990b91c1afddd";
+    sha256 = "0hh4cmp93wjyidj48gh07vhx2kjvpwd23xvy79bsjn5qaaf6q4cm";
+  };
+
+  # Wheel requires only `numpy`, but the import needs both `jax` and `jaxlib`.
+  propagatedBuildInputs = [
+    jax
+    jaxlib
+  ];
+
+  pythonImportsCheck = [
+    "jmp"
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    description = "This library implements support for mixed precision training in JAX.";
+    homepage = "https://github.com/deepmind/jmp";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ndl ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/joblib/default.nix b/nixpkgs/pkgs/development/python-modules/joblib/default.nix
index aad27b5ae636..2b011f56c1e8 100644
--- a/nixpkgs/pkgs/development/python-modules/joblib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/joblib/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "joblib";
-  version = "1.0.1";
+  version = "1.1.0";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9c17567692206d2f3fb9ecf5e991084254fe631665c450b443761c4186a613f7";
+    sha256 = "4158fcecd13733f8be669be0683b96ebdbbd38d23559f54dca7205aea1bf1e35";
   };
 
   checkInputs = [ sphinx numpydoc pytestCheckHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/johnnycanencrypt/default.nix b/nixpkgs/pkgs/development/python-modules/johnnycanencrypt/default.nix
index a8ce23d371f8..2f7921374e75 100644
--- a/nixpkgs/pkgs/development/python-modules/johnnycanencrypt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/johnnycanencrypt/default.nix
@@ -13,6 +13,7 @@
 , pytestCheckHook
 , pythonOlder
 , PCSC
+, libiconv
 }:
 
 buildPythonPackage rec {
@@ -55,7 +56,10 @@ buildPythonPackage rec {
   buildInputs = [
     pcsclite
     nettle
-  ] ++ lib.optionals stdenv.isDarwin [ PCSC ];
+  ] ++ lib.optionals stdenv.isDarwin [
+    PCSC
+    libiconv
+  ];
 
   # Needed b/c need to check AFTER python wheel is installed (using Rust Build, not buildPythonPackage)
   doCheck = false;
@@ -70,6 +74,8 @@ buildPythonPackage rec {
   # for compatibility with maturin 0.9.0.
   postPatch = ''
     sed '/project-url = /d' -i Cargo.toml
+    substituteInPlace pyproject.toml \
+      --replace 'manylinux = "off"' 'skip-auditwheel = true'
   '';
 
   preCheck = ''
diff --git a/nixpkgs/pkgs/development/python-modules/josepy/default.nix b/nixpkgs/pkgs/development/python-modules/josepy/default.nix
index 02f7319d7ff9..c091480f63c6 100644
--- a/nixpkgs/pkgs/development/python-modules/josepy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/josepy/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "josepy";
-  version = "1.9.0";
+  version = "1.11.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "51cce8d97ced0556aae0ce3161b26d5f0f54bc42c749d3c606edc6d97d9802dc";
+    sha256 = "40ef59f2f537ec01bafe698dad66281f6ccf4642f747411647db403ab8fa9a2d";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/jproperties/default.nix b/nixpkgs/pkgs/development/python-modules/jproperties/default.nix
new file mode 100644
index 000000000000..0089e153f4f3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jproperties/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, six
+, pytest-datadir
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "jproperties";
+  version = "2.1.1";
+  format = "setuptools";
+
+  src = fetchFromGitHub {
+    owner = "Tblue";
+    repo = "python-jproperties";
+    rev = "v${version}";
+    sha256 = "sha256-O+ALeGHMNjW1dc9IRyLzO81k8DW2vbGjuZqXxgrhYjo=";
+  };
+
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    six
+  ];
+
+  checkInputs = [
+    pytest-datadir
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "setuptools_scm ~= 3.3" "setuptools_scm"
+    substituteInPlace pytest.ini \
+      --replace "--cov=jproperties --cov-report=term --cov-report=html --cov-branch" ""
+  '';
+
+  disabledTestPaths = [
+    # TypeError: 'PosixPath' object...
+    "tests/test_simple_utf8.py"
+  ];
+
+  pythonImportsCheck = [
+    "jproperties"
+  ];
+
+  meta = with lib; {
+    description = "Java Property file parser and writer for Python";
+    homepage = "https://github.com/Tblue/python-jproperties";
+    license = with licenses; [ bsd3 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jschema-to-python/default.nix b/nixpkgs/pkgs/development/python-modules/jschema-to-python/default.nix
new file mode 100644
index 000000000000..a9100e061d7b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jschema-to-python/default.nix
@@ -0,0 +1,39 @@
+{ lib, buildPythonPackage, fetchPypi
+, attrs
+, jsonpickle
+, pbr
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "jschema-to-python";
+  version = "1.2.3";
+
+  src = fetchPypi {
+    pname = "jschema_to_python";
+    inherit version;
+    sha256 = "76ff14fe5d304708ccad1284e4b11f96a658949a31ee7faed9e0995279549b91";
+  };
+
+  nativeBuildInputs = [
+    pbr
+  ];
+
+  propagatedBuildInputs = [
+    attrs
+    jsonpickle
+  ];
+
+  checkInputs =[
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "jschema_to_python" ];
+
+  meta = with lib; {
+    description = "Generate source code for Python classes from a JSON schema";
+    homepage = "https://github.com/microsoft/jschema-to-python";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jonringer ];
+  };
+}
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 8df7d6f6e00f..5f2c5ac7fdde 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
@@ -2,14 +2,16 @@
 , beautifulsoup4
 , buildPythonPackage
 , click
+, dataclasses
 , dataclasses-json
 , fetchFromGitHub
 , htmlmin
 , jinja2
 , markdown2
-, pbr
+, poetry-core
 , pygments
 , pytestCheckHook
+, pythonOlder
 , pytz
 , pyyaml
 , requests
@@ -17,16 +19,21 @@
 
 buildPythonPackage rec {
   pname = "json-schema-for-humans";
-  version = "0.31.0";
+  version = "0.39.3";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "coveooss";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1aj1w0qxdw8d6mf5vngk0xjgs7z8vzwc2aycahnkqg7q3cagq19n";
+    sha256 = "sha256-rg50AE30R1OErtOKppnkhg8MTuhEY6gdBgc7ipEkONA=";
   };
 
-  nativeBuildInputs = [ pbr ];
+  nativeBuildInputs = [
+    poetry-core
+  ];
 
   propagatedBuildInputs = [
     click
@@ -38,12 +45,10 @@ buildPythonPackage rec {
     pytz
     pyyaml
     requests
+  ] ++ lib.optionals (pythonOlder "3.7") [
+    dataclasses
   ];
 
-  preBuild = ''
-    export PBR_VERSION=0.0.1
-  '';
-
   checkInputs = [
     beautifulsoup4
     pytestCheckHook
@@ -52,9 +57,13 @@ buildPythonPackage rec {
   disabledTests = [
     # Tests require network access
     "test_references_url"
+    # Tests are failing
+    "TestMdGenerate"
   ];
 
-  pythonImportsCheck = [ "json_schema_for_humans" ];
+  pythonImportsCheck = [
+    "json_schema_for_humans"
+  ];
 
   meta = with lib; {
     description = "Quickly generate HTML documentation from a JSON schema";
diff --git a/nixpkgs/pkgs/development/python-modules/jsonpointer/default.nix b/nixpkgs/pkgs/development/python-modules/jsonpointer/default.nix
index 39249c648f56..2bd41e0815b4 100644
--- a/nixpkgs/pkgs/development/python-modules/jsonpointer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jsonpointer/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "jsonpointer";
-  version = "2.1";
+  version = "2.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5a34b698db1eb79ceac454159d3f7c12a451a91f6334a4f638454327b7a89962";
+    sha256 = "f09f8deecaaa5aea65b5eb4f67ca4e54e1a61f7a11c75085e360fe6feb6a48bf";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/jsonrpc-websocket/default.nix b/nixpkgs/pkgs/development/python-modules/jsonrpc-websocket/default.nix
index 530c08dbaa05..ba7237022968 100644
--- a/nixpkgs/pkgs/development/python-modules/jsonrpc-websocket/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jsonrpc-websocket/default.nix
@@ -1,19 +1,25 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , aiohttp
 , jsonrpc-base
 , pytest-asyncio
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "jsonrpc-websocket";
-  version = "3.1.0";
+  version = "3.1.1";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "eeaaac2330f6f1cdafd378ddf5287a47a7c8609ab212a2f576121c1e61c7a344";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "emlove";
+    repo = "jsonrpc-websocket";
+    rev = version;
+    sha256 = "aAXY1OUsF83rGQ1sg1lDrbWmxWqJJ+ZnuvHR1Y+ZDs4=";
   };
 
   propagatedBuildInputs = [
@@ -26,7 +32,13 @@ buildPythonPackage rec {
     pytest-asyncio
   ];
 
-  pytestFlagsArray = [ "tests.py" ];
+  pytestFlagsArray = [
+    "tests.py"
+  ];
+
+  pythonImportsCheck = [
+    "jsonrpc_websocket"
+  ];
 
   meta = with lib; {
     description = "A JSON-RPC websocket client library for asyncio";
diff --git a/nixpkgs/pkgs/development/python-modules/jsonrpclib/default.nix b/nixpkgs/pkgs/development/python-modules/jsonrpclib/default.nix
deleted file mode 100644
index b1b4648e903d..000000000000
--- a/nixpkgs/pkgs/development/python-modules/jsonrpclib/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cjson
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "jsonrpclib";
-  version = "0.2.1";
-
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "8138078fd0f2a5b1df7925e4fa0b82a7c17a4be75bf5634af20463172f44f5c0";
-  };
-
-  propagatedBuildInputs = [ cjson ];
-
-  meta = with lib; {
-    description = "JSON RPC client library";
-    homepage = "https://pypi.python.org/pypi/jsonrpclib/";
-    license = lib.licenses.asl20;
-    maintainers = [ lib.maintainers.joachifm ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/jsonschema/default.nix b/nixpkgs/pkgs/development/python-modules/jsonschema/default.nix
index 583936255fde..b78165fc4f32 100644
--- a/nixpkgs/pkgs/development/python-modules/jsonschema/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jsonschema/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, python, isPy27
+{ lib, buildPythonPackage, fetchPypi, isPy27
 , attrs
 , functools32
 , importlib-metadata
diff --git a/nixpkgs/pkgs/development/python-modules/jsonwatch/default.nix b/nixpkgs/pkgs/development/python-modules/jsonwatch/default.nix
deleted file mode 100644
index 7b08572d2319..000000000000
--- a/nixpkgs/pkgs/development/python-modules/jsonwatch/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, six
-, isPyPy
-}:
-
-buildPythonPackage {
-  pname = "jsonwatch";
-  version = "0.2.0";
-  disabled = isPyPy; # doesn't find setuptools
-
-  src = fetchurl {
-    url = "https://github.com/dbohdan/jsonwatch/archive/v0.2.0.tar.gz";
-    sha256 = "04b616ef97b9d8c3887004995420e52b72a4e0480a92dbf60aa6c50317261e06";
-  };
-
-  propagatedBuildInputs = [ six ];
-
-  meta = with lib; {
-    description = "Like watch -d but for JSON";
-    longDescription = ''
-      jsonwatch is a command line utility with which you can track
-      changes in JSON data delivered by a shell command or a web
-      (HTTP/HTTPS) API.  jsonwatch requests data from the designated
-      source repeatedly at a set interval and displays the
-      differences when the data changes. It is similar in its
-      behavior to how watch(1) with the -d switch works for
-      plain-text data.
-    '';
-    homepage = "https://github.com/dbohdan/jsonwatch";
-    license = licenses.mit;
-    platforms = platforms.all;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/jug/default.nix b/nixpkgs/pkgs/development/python-modules/jug/default.nix
index 0750744885d3..3c805b4eca58 100644
--- a/nixpkgs/pkgs/development/python-modules/jug/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jug/default.nix
@@ -1,5 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, fetchpatch
-, nose, numpy
+{ lib, buildPythonPackage, fetchPypi, nose, numpy
 , bottle, pyyaml, redis, six
 , zlib
 , pytestCheckHook }:
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter_client/default.nix b/nixpkgs/pkgs/development/python-modules/jupyter-client/default.nix
index e30b3cb63a71..9cb465947551 100644
--- a/nixpkgs/pkgs/development/python-modules/jupyter_client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupyter-client/default.nix
@@ -14,11 +14,11 @@
 
 buildPythonPackage rec {
   pname = "jupyter_client";
-  version = "7.0.2";
+  version = "7.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0c6cabd07e003a2e9692394bf1ae794188ad17d2e250ed747232d7a473aa772c";
+    sha256 = "a5f995a73cffb314ed262713ae6dfce53c6b8216cea9f332071b8ff44a6e1654";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter-repo2docker/default.nix b/nixpkgs/pkgs/development/python-modules/jupyter-repo2docker/default.nix
index f4eb9190aa4b..c3971c687505 100644
--- a/nixpkgs/pkgs/development/python-modules/jupyter-repo2docker/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupyter-repo2docker/default.nix
@@ -1,39 +1,49 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder
+{ lib
+, buildPythonPackage
 , docker
+, entrypoints
 , escapism
+, fetchFromGitHub
+, iso8601
 , jinja2
 , pkgs-docker
 , python-json-logger
-, pyyaml
-, ruamel_yaml
+, pythonOlder
+, ruamel-yaml
 , semver
 , toml
 , traitlets
 }:
 
 buildPythonPackage rec {
-  version = "2021.8.0";
+  version = "2021.08.0";
   pname = "jupyter-repo2docker";
-  disabled = pythonOlder "3.4";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "9d1b3c3ec7944ea6b0a234d6fa77293a2d1ed1c080eba8466aba94f811b3465d";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "jupyterhub";
+    repo = "repo2docker";
+    rev = version;
+    sha256 = "10hcdag7ivyqyiqrmr9c48zynp8d81ic3px1ffgnaysih7lvkwb6";
   };
 
   propagatedBuildInputs = [
     docker
+    entrypoints
     escapism
+    iso8601
     jinja2
     pkgs-docker
     python-json-logger
-    ruamel_yaml
+    ruamel-yaml
     semver
     toml
     traitlets
   ];
 
-  # tests not packaged with pypi release
+  # Tests require a running Docker instance
   doCheck = false;
 
   pythonImportsCheck = [
@@ -44,9 +54,9 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    homepage = "https://repo2docker.readthedocs.io/en/latest/";
-    description = "Repo2docker: Turn code repositories into Jupyter enabled Docker Images";
+    description = "Turn code repositories into Jupyter enabled Docker Images";
+    homepage = "https://repo2docker.readthedocs.io/";
     license = licenses.bsdOriginal;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter-server-mathjax/default.nix b/nixpkgs/pkgs/development/python-modules/jupyter-server-mathjax/default.nix
new file mode 100644
index 000000000000..9aff01cd9d38
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jupyter-server-mathjax/default.nix
@@ -0,0 +1,39 @@
+{ lib, buildPythonPackage, fetchPypi
+, jupyter-packaging
+, jupyter_server
+, pytest-tornasync
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "jupyter-server-mathjax";
+  version = "0.2.3";
+
+  src = fetchPypi {
+    inherit version;
+    pname = "jupyter_server_mathjax";
+    sha256 = "564e8d1272019c6771208f577b5f9f2b3afb02b9e2bff3b34c042cef8ed84451";
+  };
+
+  nativeBuildInputs = [
+    jupyter-packaging
+  ];
+
+  propagatedBuildInputs = [
+    jupyter_server
+  ];
+
+  checkInputs = [
+    pytest-tornasync
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "jupyter_server_mathjax" ];
+
+  meta = with lib; {
+    description = "MathJax resources as a Jupyter Server Extension";
+    homepage = "http://jupyter.org";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ jonringer ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter-sphinx/default.nix b/nixpkgs/pkgs/development/python-modules/jupyter-sphinx/default.nix
index 4d2efcf00b7a..2da21db1eb14 100644
--- a/nixpkgs/pkgs/development/python-modules/jupyter-sphinx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupyter-sphinx/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "jupyter-sphinx";
-  version = "0.2.4";
+  version = "0.3.2";
 
   src = fetchPypi {
     inherit version;
     pname = "jupyter_sphinx";
-    sha256 = "b5ba1efdd1488b385de0068036a665932ed93998e40ce3a342c60f0926781fd9";
+    sha256 = "37fc9408385c45326ac79ca0452fbd7ae2bf0e97842d626d2844d4830e30aaf2";
   };
 
   propagatedBuildInputs = [ nbformat sphinx ipywidgets ];
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter-telemetry/default.nix b/nixpkgs/pkgs/development/python-modules/jupyter-telemetry/default.nix
index 9dddd8ec5684..f7efc0a1598c 100644
--- a/nixpkgs/pkgs/development/python-modules/jupyter-telemetry/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupyter-telemetry/default.nix
@@ -4,7 +4,7 @@
 , pythonOlder
 , python-json-logger
 , jsonschema
-, ruamel_yaml
+, ruamel-yaml
 , traitlets
 }:
 
@@ -19,7 +19,7 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [
-    python-json-logger jsonschema ruamel_yaml traitlets
+    python-json-logger jsonschema ruamel-yaml traitlets
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter_client/5.nix b/nixpkgs/pkgs/development/python-modules/jupyter_client/5.nix
deleted file mode 100644
index e4e77cf47510..000000000000
--- a/nixpkgs/pkgs/development/python-modules/jupyter_client/5.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, traitlets
-, jupyter_core
-, pyzmq
-, python-dateutil
-, isPyPy
-, py
-, tornado
-}:
-
-buildPythonPackage rec {
-  pname = "jupyter_client";
-  version = "5.3.5";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "5efdf4131124d4a0d5789101e74827022585f172d2f4b60cf6fa98e0a7511b25";
-  };
-
-  propagatedBuildInputs = [
-    traitlets
-    jupyter_core
-    pyzmq
-    python-dateutil
-    tornado
-  ] ++ lib.optional isPyPy py;
-
-  # Circular dependency with ipykernel
-  doCheck = false;
-
-  meta = {
-    description = "Jupyter protocol implementation and client libraries";
-    homepage = "https://jupyter.org/";
-    license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [  ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter_console/5.nix b/nixpkgs/pkgs/development/python-modules/jupyter_console/5.nix
deleted file mode 100644
index 2072b24a3781..000000000000
--- a/nixpkgs/pkgs/development/python-modules/jupyter_console/5.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, jupyter_client
-, ipython
-, ipykernel
-, prompt-toolkit
-, pygments
-}:
-
-buildPythonPackage rec {
-  pname = "jupyter_console";
-  version = "5.2.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "545dedd3aaaa355148093c5609f0229aeb121b4852995c2accfa64fe3e0e55cd";
-  };
-
-  checkInputs = [ nose ];
-  propagatedBuildInputs = [
-    jupyter_client
-    ipython
-    ipykernel
-    prompt-toolkit
-    pygments
-  ];
-
-  # ValueError: underlying buffer has been detached
-  doCheck = false;
-
-  meta = {
-    description = "Jupyter terminal console";
-    homepage = "https://jupyter.org/";
-    license = lib.licenses.bsd3;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter_console/default.nix b/nixpkgs/pkgs/development/python-modules/jupyter_console/default.nix
index 2858f008c2ce..9716fbe8e5d7 100644
--- a/nixpkgs/pkgs/development/python-modules/jupyter_console/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupyter_console/default.nix
@@ -2,7 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , nose
-, jupyter_client
+, jupyter-client
 , ipython
 , ipykernel
 , prompt-toolkit
@@ -21,7 +21,7 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [
-    jupyter_client
+    jupyter-client
     ipython
     ipykernel
     prompt-toolkit
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter_core/default.nix b/nixpkgs/pkgs/development/python-modules/jupyter_core/default.nix
index cdd0485b6843..a7dd89a1f89a 100644
--- a/nixpkgs/pkgs/development/python-modules/jupyter_core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupyter_core/default.nix
@@ -12,12 +12,12 @@
 
 buildPythonPackage rec {
   pname = "jupyter_core";
-  version = "4.7.1";
+  version = "4.9.1";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "79025cb3225efcd36847d0840f3fc672c0abd7afd0de83ba8a1d3837619122b4";
+    sha256 = "dce8a7499da5a53ae3afd5a9f4b02e5df1d57250cf48f3ad79da23b4778cd6fa";
   };
 
   checkInputs = [ pytest mock glibcLocales nose ];
diff --git a/nixpkgs/pkgs/development/python-modules/jupyter_server/default.nix b/nixpkgs/pkgs/development/python-modules/jupyter_server/default.nix
index 68c6492bfc4b..2cb7d06b646a 100644
--- a/nixpkgs/pkgs/development/python-modules/jupyter_server/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupyter_server/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , buildPythonPackage
+, fetchpatch
 , fetchPypi
 , pythonOlder
 , pytestCheckHook
@@ -12,7 +13,7 @@
 , ipython_genutils
 , traitlets
 , jupyter_core
-, jupyter_client
+, jupyter-client
 , nbformat
 , nbconvert
 , send2trash
@@ -26,14 +27,21 @@
 
 buildPythonPackage rec {
   pname = "jupyter_server";
-  version = "1.11.1";
+  version = "1.11.2";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ab7ab1cc38512f15026cbcbb96300fb46ec8b24aa162263d9edd00e0a749b1e8";
+    sha256 = "c1f32e0c1807ab2de37bf70af97a36b4436db0bc8af3124632b1f4441038bf95";
   };
 
+  patches = [ (fetchpatch
+    { name = "Normalize-file-name-and-path.patch";
+      url = "https://github.com/jupyter-server/jupyter_server/pull/608/commits/345e26cdfd78651954b68708fa44119c2ac0dbd5.patch";
+      sha256 = "1kqz3dyh2w0h1g1fbvqa13q17hb6y32694rlaasyg213mq6g4k32";
+    })
+  ];
+
   propagatedBuildInputs = [
     argon2_cffi
     jinja2
@@ -42,7 +50,7 @@ buildPythonPackage rec {
     ipython_genutils
     traitlets
     jupyter_core
-    jupyter_client
+    jupyter-client
     nbformat
     nbconvert
     send2trash
diff --git a/nixpkgs/pkgs/development/python-modules/jupyterhub-systemdspawner/default.nix b/nixpkgs/pkgs/development/python-modules/jupyterhub-systemdspawner/default.nix
index bd3e073a7724..2137a0f3f055 100644
--- a/nixpkgs/pkgs/development/python-modules/jupyterhub-systemdspawner/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupyterhub-systemdspawner/default.nix
@@ -1,6 +1,6 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , jupyterhub
 , tornado
 , bash
@@ -8,11 +8,13 @@
 
 buildPythonPackage rec {
   pname = "jupyterhub-systemdspawner";
-  version = "0.15.0";
+  version = "0.15";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b6e2d981657aa5d3794abb89b1650d056524158a3d0f0f706007cae9b6dbeb2b";
+  src = fetchFromGitHub {
+    owner = "jupyterhub";
+    repo = "systemdspawner";
+    rev = "v${version}";
+    sha256 = "sha256-EUCA+CKCeYr+cLVrqTqe3Q32JkbqeALL6tfOnlVHk8Q=";
   };
 
   propagatedBuildInputs = [
@@ -20,6 +22,8 @@ buildPythonPackage rec {
     tornado
   ];
 
+  buildInputs = [ bash ];
+
   postPatch = ''
     substituteInPlace systemdspawner/systemd.py \
       --replace "/bin/bash" "${bash}/bin/bash"
@@ -31,10 +35,16 @@ buildPythonPackage rec {
   # no tests
   doCheck = false;
 
+  postInstall = ''
+    mkdir -p $out/bin
+    cp check-kernel.bash $out/bin/
+    patchShebangs $out/bin
+  '';
+
   meta = with lib; {
     description = "JupyterHub Spawner using systemd for resource isolation";
     homepage = "https://github.com/jupyterhub/systemdspawner";
     license = licenses.bsd3;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc erictapen ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/jupyterlab-git/default.nix b/nixpkgs/pkgs/development/python-modules/jupyterlab-git/default.nix
index dbff1660b1cc..46c76ebfe20e 100644
--- a/nixpkgs/pkgs/development/python-modules/jupyterlab-git/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupyterlab-git/default.nix
@@ -1,40 +1,76 @@
-{ lib, stdenv
+{ lib
+, stdenv
 , buildPythonPackage
 , fetchPypi
-, pythonOlder
-, notebook
-, nbdime
 , git
-, pytest
+, jupyter_server
+, jupyter-packaging
+, jupyterlab
+, nbdime
+, nbformat
+, pexpect
+, pytest-asyncio
+, pytest-tornasync
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
-  pname = "jupyterlab_git";
-  version = "0.32.2";
-  disabled = pythonOlder "3.5";
+  pname = "jupyterlab-git";
+  version = "0.34.0";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "4c5743a05150ed7736e028aac15787a66735f160e9ae198dacc5a4bd1a727ce2";
+    pname = "jupyterlab_git";
+    inherit version;
+    sha256 = "3b9ee3a577834c0f021d41069be7b03068297ce0c2a73c76b17e8018eb3eb62f";
   };
 
-  propagatedBuildInputs = [ notebook nbdime git ];
+  nativeBuildInputs = [
+    jupyter-packaging
+  ];
 
-  # all Tests on darwin fail or are skipped due to sandbox
+  propagatedBuildInputs = [
+    jupyter_server
+    nbdime
+    git
+    nbformat
+    pexpect
+  ];
+
+  checkInputs = [
+    jupyterlab
+    pytest-asyncio
+    pytest-tornasync
+    pytestCheckHook
+  ];
+
+  # All Tests on darwin fail or are skipped due to sandbox
   doCheck = !stdenv.isDarwin;
 
-  checkInputs = [ pytest ];
+  disabledTestPaths = [
+    "jupyterlab_git/tests/test_handlers.py"
+    # PyPI doesn't ship all required files for the tests
+    "jupyterlab_git/tests/test_config.py"
+    "jupyterlab_git/tests/test_integrations.py"
+    "jupyterlab_git/tests/test_remote.py"
+    "jupyterlab_git/tests/test_settings.py"
+  ];
 
-  checkPhase = ''
-    pytest jupyterlab_git/ --ignore=jupyterlab_git/tests/test_handlers.py
-  '';
+  disabledTests = [
+    "test_Git_get_nbdiff_file"
+    "test_Git_get_nbdiff_dict"
+  ];
 
-  pythonImportsCheck = [ "jupyterlab_git" ];
+  pythonImportsCheck = [
+    "jupyterlab_git"
+  ];
 
   meta = with lib; {
-    description = "Jupyter lab extension for version control with Git.";
-    license = with licenses; [ bsd3 ];
+    description = "Jupyter lab extension for version control with Git";
     homepage = "https://github.com/jupyterlab/jupyterlab-git";
+    license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ chiroptical ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/jupyterlab/default.nix b/nixpkgs/pkgs/development/python-modules/jupyterlab/default.nix
index b1c70d0263d8..76b160eb97c3 100644
--- a/nixpkgs/pkgs/development/python-modules/jupyterlab/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupyterlab/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "jupyterlab";
-  version = "3.1.17";
+  version = "3.2.5";
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7e829cedce4fec676fb9d83850805df9e563b3ca7f20f70bd2ea177a462b7a78";
+    sha256 = "31b28f473b0f5826d2020583973c385526f0559b5b26efac6b8035ac1562874a";
   };
 
   nativeBuildInputs = [ jupyter-packaging ];
diff --git a/nixpkgs/pkgs/development/python-modules/jupyterlab_server/default.nix b/nixpkgs/pkgs/development/python-modules/jupyterlab_server/default.nix
index a56b5d86abef..7216421a86c7 100644
--- a/nixpkgs/pkgs/development/python-modules/jupyterlab_server/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupyterlab_server/default.nix
@@ -16,12 +16,12 @@
 
 buildPythonPackage rec {
   pname = "jupyterlab_server";
-  version = "2.8.1";
+  version = "2.10.2";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "39fd519e9b3275873bd15de891363c28f2649814f7bbc11c57469c60e8408e97";
+    sha256 = "bf1ec9e49d4e26f14d70055cc293b3f8ec8410f95a4d5b4bd55c442d9b8b266c";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/jupytext/default.nix b/nixpkgs/pkgs/development/python-modules/jupytext/default.nix
index 0b893f7776a2..777f82a3e5ad 100644
--- a/nixpkgs/pkgs/development/python-modules/jupytext/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jupytext/default.nix
@@ -1,23 +1,23 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, pythonOlder
 , GitPython
+, jupyter-client
 , jupyter-packaging
-, jupyter_client
 , jupyterlab
 , markdown-it-py
 , mdit-py-plugins
 , nbformat
 , notebook
 , pytestCheckHook
+, pythonOlder
 , pyyaml
 , toml
 }:
 
 buildPythonPackage rec {
   pname = "jupytext";
-  version = "1.11.2";
+  version = "1.13.5";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -26,10 +26,14 @@ buildPythonPackage rec {
     owner = "mwouts";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-S2SKAC2oT4VIVMMDbu/Puo87noAgnQs1hh88JphutA8=";
+    sha256 = "0rapp2baqml1z3n8k7ijf5461b3p8wgr45y3njz54q75v0jk7v45";
   };
 
-  buildInputs = [ jupyter-packaging jupyterlab ];
+  buildInputs = [
+    jupyter-packaging
+    jupyterlab
+  ];
+
   propagatedBuildInputs = [
     markdown-it-py
     mdit-py-plugins
@@ -39,16 +43,32 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    pytestCheckHook
     GitPython
-    jupyter_client
+    jupyter-client
     notebook
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    # https://github.com/mwouts/jupytext/pull/885
+    substituteInPlace setup.py \
+      --replace "markdown-it-py~=1.0" "markdown-it-py>=1.0.0,<3.0.0"
+  '';
+
+  preCheck = ''
+    # Tests that use a Jupyter notebook require $HOME to be writable
+    export HOME=$(mktemp -d);
+  '';
+
+  pytestFlagsArray = [
+    # Pre-commit tests expect the source directory to be a Git repository
+    "--ignore-glob='tests/test_pre_commit_*.py'"
+  ];
+
+  pythonImportsCheck = [
+    "jupytext"
+    "jupytext.cli"
   ];
-  # Tests that use a Jupyter notebook require $HOME to be writable.
-  HOME = "$TMPDIR";
-  # Pre-commit tests expect the source directory to be a Git repository.
-  pytestFlagsArray = [ "--ignore-glob='tests/test_pre_commit_*.py'" ];
-  pythonImportsCheck = [ "jupytext" "jupytext.cli" ];
 
   meta = with lib; {
     description = "Jupyter notebooks as Markdown documents, Julia, Python or R scripts";
diff --git a/nixpkgs/pkgs/development/python-modules/justbackoff/default.nix b/nixpkgs/pkgs/development/python-modules/justbackoff/default.nix
new file mode 100644
index 000000000000..814d1d3e53f3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/justbackoff/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "justbackoff";
+  version = "0.6.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "alexferl";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "097j6jxgl4b3z46x9y9z10643vnr9v831vhagrxzrq6nviil2z6l";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "pytest-runner>=5.2" ""
+  '';
+
+  pythonImportsCheck = [
+    "justbackoff"
+  ];
+
+  meta = with lib; {
+    description = "Simple backoff algorithm in Python";
+    homepage = "https://github.com/alexferl/justbackoff";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/k5test/default.nix b/nixpkgs/pkgs/development/python-modules/k5test/default.nix
index 0079194f4fa7..f5efb24633bb 100644
--- a/nixpkgs/pkgs/development/python-modules/k5test/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/k5test/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "k5test";
-  version = "0.10.0";
+  version = "0.10.1";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "fc5e7e5e286b2f331c1396c33f2a1cd8cf34e78d8d482168a50ffd8576a1455c";
+    sha256 = "2c9181133f3d52c8e29a5ba970b668273c08f855e5da834aaee2ea9efeb6b069";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/kajiki/default.nix b/nixpkgs/pkgs/development/python-modules/kajiki/default.nix
index 3f202bd51f9f..6dd55a4876f1 100644
--- a/nixpkgs/pkgs/development/python-modules/kajiki/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/kajiki/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "kajiki";
-  version = "0.8.3";
+  version = "0.9.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c7a1f033b5cfaafa97bda5a475f58a7abcd76b348494995428fdcf6c8f648ad9";
+    sha256 = "f0d6dfa27eb2b6c0d2a28ae21d69dceb5363cc0432f4045bcc98aac42a662ccb";
   };
 
   propagatedBuildInputs = [ Babel pytz nine ];
diff --git a/nixpkgs/pkgs/development/python-modules/kaldi-active-grammar/fork.nix b/nixpkgs/pkgs/development/python-modules/kaldi-active-grammar/fork.nix
index ba14aec768cb..8f5a11f14c61 100644
--- a/nixpkgs/pkgs/development/python-modules/kaldi-active-grammar/fork.nix
+++ b/nixpkgs/pkgs/development/python-modules/kaldi-active-grammar/fork.nix
@@ -6,7 +6,6 @@
 , icu
 , pkg-config
 , fetchFromGitHub
-, git
 , python3
 , openblas
 , zlib
diff --git a/nixpkgs/pkgs/development/python-modules/karton-autoit-ripper/default.nix b/nixpkgs/pkgs/development/python-modules/karton-autoit-ripper/default.nix
index e675c055d786..2e7d561cf6e0 100644
--- a/nixpkgs/pkgs/development/python-modules/karton-autoit-ripper/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/karton-autoit-ripper/default.nix
@@ -9,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "karton-autoit-ripper";
-  version = "1.0.1";
+  version = "1.1.0";
 
   src = fetchFromGitHub {
     owner = "CERT-Polska";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1bsqpf9w6d9fjysmnafaglg2w41gsafs2xz4dzcgc7n92shpcs8w";
+    sha256 = "1gclrrc0n72bfj4m55kk8d69zrfvnlwm9692ni9w7d2231mvv7bw";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/karton-dashboard/default.nix b/nixpkgs/pkgs/development/python-modules/karton-dashboard/default.nix
index ad7d87138569..5b67123ee278 100644
--- a/nixpkgs/pkgs/development/python-modules/karton-dashboard/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/karton-dashboard/default.nix
@@ -5,11 +5,15 @@
 , karton-core
 , mistune
 , prometheus-client
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "karton-dashboard";
   version = "1.2.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "CERT-Polska";
@@ -28,7 +32,7 @@ buildPythonPackage rec {
   postPatch = ''
     substituteInPlace requirements.txt \
       --replace "Flask==1.1.1" "Flask" \
-      --replace "prometheus-client==0.9.0" "prometheus-client"
+      --replace "prometheus_client==0.11.0" "prometheus_client"
   '';
 
   # Project has no tests. pythonImportsCheck requires MinIO configuration
diff --git a/nixpkgs/pkgs/development/python-modules/keepkey/default.nix b/nixpkgs/pkgs/development/python-modules/keepkey/default.nix
index 95981992fea3..a29ce9368071 100644
--- a/nixpkgs/pkgs/development/python-modules/keepkey/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/keepkey/default.nix
@@ -1,5 +1,13 @@
-{ lib, fetchFromGitHub, buildPythonPackage, pytest
-, ecdsa , mnemonic, protobuf, hidapi, trezor }:
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, ecdsa
+, hidapi
+, libusb1
+, mnemonic
+, protobuf
+, pytest
+}:
 
 buildPythonPackage rec {
   pname = "keepkey";
@@ -12,9 +20,7 @@ buildPythonPackage rec {
     sha256 = "00hqppdj3s9y25x4ad59y8axq94dd4chhw9zixq32sdrd9v8z55a";
   };
 
-  propagatedBuildInputs = [ protobuf hidapi trezor ];
-
-  buildInputs = [ ecdsa mnemonic ];
+  propagatedBuildInputs = [ ecdsa hidapi libusb1 mnemonic protobuf ];
 
   checkInputs = [ pytest ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/keras-preprocessing/default.nix b/nixpkgs/pkgs/development/python-modules/keras-preprocessing/default.nix
index d62a179136f4..a0d9d4bb153d 100644
--- a/nixpkgs/pkgs/development/python-modules/keras-preprocessing/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/keras-preprocessing/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, numpy, six, scipy, pillow, pytest, Keras }:
+{ lib, buildPythonPackage, fetchPypi, numpy, six, scipy, pillow, pytest, keras }:
 
 buildPythonPackage rec {
   pname = "Keras_Preprocessing";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    pytest Keras
+    pytest keras
   ];
 
   checkPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/keras/default.nix b/nixpkgs/pkgs/development/python-modules/keras/default.nix
index 28b09222b472..2b9a269e280f 100644
--- a/nixpkgs/pkgs/development/python-modules/keras/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/keras/default.nix
@@ -5,12 +5,13 @@
 }:
 
 buildPythonPackage rec {
-  pname = "Keras";
-  version = "2.4.3";
+  pname = "keras";
+  version = "2.7.0";
+  format = "wheel";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "fedd729b52572fb108a98e3d97e1bac10a81d3917d2103cc20ab2a5f03beb973";
+    inherit format pname version;
+    sha256 = "0c33ae1f728064ca0d35dfba999e9c316f03623bf5688c82fb83cc74a80ea248";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/keyboard/default.nix b/nixpkgs/pkgs/development/python-modules/keyboard/default.nix
new file mode 100644
index 000000000000..8c85da5ef4c2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/keyboard/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub }:
+
+buildPythonPackage rec {
+  pname = "keyboard";
+  version = "0.13.5";
+
+  src = fetchFromGitHub {
+    owner = "boppreh";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-U4GWhPp28azBE3Jn9xpLxudOKx0PjnYO77EM2HsJ9lM=";
+  };
+
+  pythonImportsCheck = [ "keyboard" ];
+
+  # Specific OS tests are being run for other OS, like
+  # winmouse on Linux, which provides the following error:
+  # AttributeError: module 'ctypes' has no attribute 'WinDLL'
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Hook and simulate keyboard events on Windows and Linux";
+    homepage = "https://github.com/boppreh/keyboard";
+    license = licenses.mit;
+    maintainers = with maintainers; [ wolfangaukang ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/keyring/2.nix b/nixpkgs/pkgs/development/python-modules/keyring/2.nix
deleted file mode 100644
index 553b649b6382..000000000000
--- a/nixpkgs/pkgs/development/python-modules/keyring/2.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi
-, dbus-python, setuptools-scm, entrypoints, secretstorage
-, pytest, pytest-flake8 }:
-
-buildPythonPackage rec {
-  pname = "keyring";
-  version = "18.0.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0f58jq58jhfzlhix7x2zz7c4ycdvcs1z3sgs4lkr4xxx680wrmk7";
-  };
-
-  nativeBuildInputs = [ setuptools-scm ];
-
-  checkInputs = [ pytest pytest-flake8 ];
-
-  propagatedBuildInputs = [ dbus-python entrypoints ] ++ lib.optional stdenv.isLinux secretstorage;
-
-  doCheck = !stdenv.isDarwin;
-
-  checkPhase = ''
-    py.test
-  '';
-
-  meta = with lib; {
-    description = "Store and access your passwords safely";
-    homepage    = "https://pypi.python.org/pypi/keyring";
-    license     = licenses.psfl;
-    maintainers = with maintainers; [ lovek323 orivej ];
-    platforms   = platforms.unix;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/keyring/default.nix b/nixpkgs/pkgs/development/python-modules/keyring/default.nix
index cf765c06d869..68043f268ba5 100644
--- a/nixpkgs/pkgs/development/python-modules/keyring/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/keyring/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "keyring";
-  version = "23.1.0";
+  version = "23.4.0";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b7e0156667f5dcc73c1f63a518005cd18a4eb23fe77321194fefcc03748b21a4";
+    sha256 = "sha256-iPIGAkKV48b7FrsKYPtLt+wRhWKdxacp8SqnwjbQE4c=";
   };
 
   nativeBuildInputs = [
@@ -43,12 +43,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  # Keychain communications isn't possible in our build environment
-  # keyring.errors.KeyringError: Can't get password from keychain: (-25307, 'Unknown Error')
-  disabledTests = lib.optionals (stdenv.isDarwin) [
-    "test_multiprocess_get"
-    "test_multiprocess_get_after_native_get"
-  ] ++ [
+  disabledTests = [
     # E       ValueError: too many values to unpack (expected 1)
     "test_entry_point"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/keystone-engine/default.nix b/nixpkgs/pkgs/development/python-modules/keystone-engine/default.nix
index ed9f3a6bb702..7c3cf2e70d83 100644
--- a/nixpkgs/pkgs/development/python-modules/keystone-engine/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/keystone-engine/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, keystone }:
+{ lib, stdenv, buildPythonPackage, fetchPypi, keystone }:
 
 buildPythonPackage rec {
   pname = "keystone-engine";
@@ -9,6 +9,8 @@ buildPythonPackage rec {
    sha256 = "1xahdr6bh3dw5swrc2r8kqa8ljhqlb7k2kxv5mrw5rhcmcnzcyig";
   };
 
+  setupPyBuildFlags = lib.optionals stdenv.isLinux [ "--plat-name" "linux" ];
+
   preConfigure = ''
     substituteInPlace setup.py --replace \
       "libkeystone" "${keystone}/lib/libkeystone"
diff --git a/nixpkgs/pkgs/development/python-modules/keyutils/default.nix b/nixpkgs/pkgs/development/python-modules/keyutils/default.nix
index 3d1575d8c37f..21eeb11d136c 100644
--- a/nixpkgs/pkgs/development/python-modules/keyutils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/keyutils/default.nix
@@ -12,6 +12,10 @@ buildPythonPackage rec {
     sha256 = "0pfqfr5xqgsqkxzrmj8xl2glyl4nbq0irs0k6ik7iy3gd3mxf5g1";
   };
 
+  postPatch = ''
+    substituteInPlace setup.py --replace '"pytest-runner"' ""
+  '';
+
   buildInputs = [ keyutils ];
   checkInputs = [ pytest pytest-runner ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/kivy/default.nix b/nixpkgs/pkgs/development/python-modules/kivy/default.nix
index d4fa39c0c363..0e8b81ed19cd 100644
--- a/nixpkgs/pkgs/development/python-modules/kivy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/kivy/default.nix
@@ -1,8 +1,11 @@
-{ lib
-, buildPythonPackage, fetchPypi
+{ lib, stdenv
+, buildPythonPackage, fetchFromGitHub, fetchpatch
 , pkg-config, cython, docutils
 , kivy-garden
-, mesa, mtdev, SDL2, SDL2_image, SDL2_ttf, SDL2_mixer, gst_all_1
+, mesa, mtdev, SDL2, SDL2_image, SDL2_ttf, SDL2_mixer
+, ApplicationServices, AVFoundation, libcxx
+, withGstreamer ? true
+, gst_all_1
 , pillow, requests, pygments
 }:
 
@@ -10,11 +13,21 @@ buildPythonPackage rec {
   pname = "Kivy";
   version = "2.0.0";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1n0j9046vgjncy50v06r3wcg3q2l37jp8n0cznr64dz48kml8pnj";
+  # use github since pypi line endings are CRLF and patches do not apply
+  src = fetchFromGitHub {
+    owner = "kivy";
+    repo = "kivy";
+    rev = version;
+    sha256 = "sha256-/7GSVQUkYSBEnLVBizMnZAZZxvXVN4r4lskyOgLEcew=";
   };
 
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/kivy/kivy/commit/1c0656c4472817677cf3b08be504de9ca6b1713f.patch";
+      sha256 = "sha256-phAjMaC3LQuvufwiD0qXzie5B+kezCf8FpKeQMhy/ms=";
+    })
+  ];
+
   nativeBuildInputs = [
     pkg-config
     cython
@@ -22,19 +35,24 @@ buildPythonPackage rec {
   ];
 
   buildInputs = [
-    mesa
-    mtdev
     SDL2
     SDL2_image
     SDL2_ttf
     SDL2_mixer
-
+  ] ++ lib.optionals stdenv.isLinux [
+    mesa
+    mtdev
+  ] ++ lib.optionals stdenv.isDarwin [
+    ApplicationServices
+    AVFoundation
+    libcxx
+  ] ++ lib.optionals withGstreamer (with gst_all_1; [
     # NOTE: The degree to which gstreamer actually works is unclear
-    gst_all_1.gstreamer
-    gst_all_1.gst-plugins-base
-    gst_all_1.gst-plugins-good
-    gst_all_1.gst-plugins-bad
-  ];
+    gstreamer
+    gst-plugins-base
+    gst-plugins-good
+    gst-plugins-bad
+  ]);
 
   propagatedBuildInputs = [
     kivy-garden
@@ -46,8 +64,12 @@ buildPythonPackage rec {
   KIVY_NO_CONFIG = 1;
   KIVY_NO_ARGS = 1;
   KIVY_NO_FILELOG = 1;
+  # prefer pkg-config over hardcoded framework paths
+  USE_OSX_FRAMEWORKS = 0;
+  # work around python distutils compiling C++ with $CC (see issue #26709)
+  NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-I${lib.getDev libcxx}/include/c++/v1";
 
-  postPatch = ''
+  postPatch = lib.optionalString stdenv.isLinux ''
     substituteInPlace kivy/lib/mtdev.py \
       --replace "LoadLibrary('libmtdev.so.1')" "LoadLibrary('${mtdev}/lib/libmtdev.so.1')"
   '';
diff --git a/nixpkgs/pkgs/development/python-modules/kiwisolver/1_1.nix b/nixpkgs/pkgs/development/python-modules/kiwisolver/1_1.nix
deleted file mode 100644
index 762b5bc0b7b3..000000000000
--- a/nixpkgs/pkgs/development/python-modules/kiwisolver/1_1.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, stdenv
-, libcxx
-}:
-
-buildPythonPackage rec {
-  pname = "kiwisolver";
-  version = "1.1.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "53eaed412477c836e1b9522c19858a8557d6e595077830146182225613b11a75";
-  };
-
-  NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-I${lib.getDev libcxx}/include/c++/v1";
-
-  # Does not include tests
-  doCheck = false;
-
-  meta = {
-    description = "A fast implementation of the Cassowary constraint solver";
-    homepage = "https://github.com/nucleic/kiwi";
-    license = lib.licenses.bsd3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/kmapper/default.nix b/nixpkgs/pkgs/development/python-modules/kmapper/default.nix
index 630c025e0936..c3418b2c5c94 100644
--- a/nixpkgs/pkgs/development/python-modules/kmapper/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/kmapper/default.nix
@@ -8,7 +8,7 @@
 , pytestCheckHook
 , networkx
 , matplotlib
-, python-igraph
+, igraph
 , plotly
 , ipywidgets
 }:
@@ -35,7 +35,7 @@ buildPythonPackage rec {
     pytestCheckHook
     networkx
     matplotlib
-    python-igraph
+    igraph
     plotly
     ipywidgets
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/knack/default.nix b/nixpkgs/pkgs/development/python-modules/knack/default.nix
index 5a05449e610b..be5cfc14e131 100644
--- a/nixpkgs/pkgs/development/python-modules/knack/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/knack/default.nix
@@ -15,11 +15,11 @@
 
 buildPythonPackage rec {
   pname = "knack";
-  version = "0.8.2";
+  version = "0.9.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4eaa50a1c5e79d1c5c8e5e1705b661721b0b83a089695e59e229cc26c64963b9";
+    sha256 = "7fcab17585c0236885eaef311c01a1e626d84c982aabcac81703afda3f89c81f";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/koji/default.nix b/nixpkgs/pkgs/development/python-modules/koji/default.nix
deleted file mode 100644
index cd3b5ff62c26..000000000000
--- a/nixpkgs/pkgs/development/python-modules/koji/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ lib, fetchurl, buildPythonPackage, isPy3k, pycurl, six, rpm, python-dateutil }:
-
-buildPythonPackage rec {
-  pname = "koji";
-  version = "1.14.3";
-  format = "other";
-
-  src = fetchurl {
-    url = "https://releases.pagure.org/koji/${pname}-${version}.tar.bz2";
-    sha256 = "0a3kn3qvspvx15imgzzzjsbvw6bqmbk29apbliqwifa9cj7pvb40";
-  };
-
-  propagatedBuildInputs = [ pycurl six rpm python-dateutil ];
-
-  # Judging from SyntaxError
-  disabled = isPy3k;
-
-  makeFlags = [ "DESTDIR=$(out)" ];
-
-  postInstall = ''
-    mv $out/usr/* $out/
-    cp -R $out/nix/store/*/* $out/
-    rm -rf $out/nix
-  '';
-
-  meta = with lib; {
-    description = "An RPM-based build system";
-    homepage = "https://pagure.io/koji";
-    license = licenses.lgpl21;
-    platforms = platforms.unix;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/kombu/default.nix b/nixpkgs/pkgs/development/python-modules/kombu/default.nix
index 3ba2291da792..319461b98344 100644
--- a/nixpkgs/pkgs/development/python-modules/kombu/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/kombu/default.nix
@@ -15,13 +15,13 @@
 
 buildPythonPackage rec {
   pname = "kombu";
-  version = "5.1.0";
+  version = "5.2.2";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "01481d99f4606f6939cdc9b637264ed353ee9e3e4f62cfb582324142c41a572d";
+    sha256 = "0f5d0763fb916808f617b886697b2be28e6bc35026f08e679697fc814b48a608";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/konfig/default.nix b/nixpkgs/pkgs/development/python-modules/konfig/default.nix
deleted file mode 100644
index e7062bad5ee7..000000000000
--- a/nixpkgs/pkgs/development/python-modules/konfig/default.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy3k, writeText, configparser, six, pytest, glibcLocales }:
-
-buildPythonPackage rec {
-  pname = "konfig";
-  version = "1.1";
-
-  # konfig unconditionaly depend on configparser, even if it is part of
-  # the standard library in python 3.2 or above.
-  disabled = isPy3k;
-
-  # PyPI tarball is missing utf8.ini, required for tests
-  src = fetchFromGitHub {
-    owner = "mozilla-services";
-    repo = pname;
-    rev = version;
-    sha256 = "1h780fbrv275dcik4cs3rincza805z6q726b48r4a0qmh5d8160c";
-  };
-
-  propagatedBuildInputs = [ configparser six ];
-
-  patches = [ (writeText "konfig.patch" ''
-    diff --git a/setup.py b/setup.py
-    index 96fd858..bb4db06 100644
-    --- a/setup.py
-    +++ b/setup.py
-    @@ -20,7 +20,7 @@ setup(name='konfig',
-           author_email="tarek@mozilla.com",
-           include_package_data=True,
-           install_requires = [
-    -        'configparser', 'argparse', 'six'
-    +        'configparser', 'six'
-           ],
-           zip_safe=False,
-           classifiers=classifiers,
-  '') ];
-
-  checkInputs = [ pytest glibcLocales ];
-
-  checkPhase = ''
-    LC_ALL=en_US.utf8 pytest -v konfig/tests
-  '';
-
-  meta = with lib; {
-    description = "Yet Another Config Parser";
-    homepage    = "https://github.com/mozilla-services/konfig";
-    license     = licenses.mpl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/kubernetes/default.nix b/nixpkgs/pkgs/development/python-modules/kubernetes/default.nix
index da3c36f6ce04..3df049c1cec6 100644
--- a/nixpkgs/pkgs/development/python-modules/kubernetes/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/kubernetes/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "kubernetes";
-  version = "18.20.0";
+  version = "20.13.0";
   format = "setuptools";
   disabled = pythonOlder "3.6";
 
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = "kubernetes-client";
     repo = "python";
     rev = "v${version}";
-    sha256 = "1sawp62j7h0yksmg9jlv4ik9b9i1a1w9syywc9mv8x89wibf5ql1";
+    sha256 = "sha256-zZb5jEQEluY1dfa7UegW+P7MV86ESqOey7kkC74ETlM=";
     fetchSubmodules = true;
   };
 
diff --git a/nixpkgs/pkgs/development/python-modules/labelbox/default.nix b/nixpkgs/pkgs/development/python-modules/labelbox/default.nix
index 5f8057df849d..ba7579d10670 100644
--- a/nixpkgs/pkgs/development/python-modules/labelbox/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/labelbox/default.nix
@@ -19,14 +19,14 @@
 
 buildPythonPackage rec {
   pname = "labelbox";
-  version = "3.2.0";
+  version = "3.10.0";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "Labelbox";
     repo = "labelbox-python";
-    rev = "V${version}";
-    sha256 = "0vp1lk7hipa4ixa1zcy99r9b5xb1gv54h4i0izx6fv4zf9m0gmw1";
+    rev = "v${version}";
+    sha256 = "0afrzxy8hmsvqp84mf89k7sqlzzyh6xwp2pz5abj0981mqlzf2x9";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/labgrid/default.nix b/nixpkgs/pkgs/development/python-modules/labgrid/default.nix
index 238ba0571e4d..c95acdf68e30 100644
--- a/nixpkgs/pkgs/development/python-modules/labgrid/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/labgrid/default.nix
@@ -22,13 +22,13 @@
 
 buildPythonPackage rec {
   pname = "labgrid";
-  version = "0.4.0";
+  version = "0.4.1";
 
   src = fetchFromGitHub {
     owner = "labgrid-project";
     repo = "labgrid";
     rev = "v${version}";
-    sha256 = "17j013dw66h4jm1hl92g892sx9r9c48pnl7d58p1y0l4jfca8gmn";
+    sha256 = "0ih04lh1q3dysps4vfmk2rhqqrsimssadsxvbxdsnim2yihrrw47";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/langcodes/default.nix b/nixpkgs/pkgs/development/python-modules/langcodes/default.nix
index 292a13d7bd09..e3454acd5cd9 100644
--- a/nixpkgs/pkgs/development/python-modules/langcodes/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/langcodes/default.nix
@@ -3,30 +3,48 @@
 , marisa-trie
 , pythonOlder
 , fetchPypi
-, nose
+, poetry-core
+, pytestCheckHook
+, language-data
 }:
 
 buildPythonPackage rec {
   pname = "langcodes";
-  version = "3.2.1";
-  disabled = pythonOlder "3.3";
+  version = "3.3.0";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "779a6da5036f87b6b56c180b2782ab111ddd6aa9157670a9b918402b0e07cd93";
+    sha256 = "794d07d5a28781231ac335a1561b8442f8648ca07cd518310aeb45d6f0807ef6";
   };
 
-  propagatedBuildInputs = [ marisa-trie ];
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    language-data
+    marisa-trie
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  checkInputs = [ nose ];
+  disabledTests = [
+    # AssertionError: assert 'Unknown language [aqk]' == 'Aninka'
+    "test_updated_iana"
+  ];
 
-  checkPhase = ''
-    nosetests
-  '';
+  pythonImportsCheck = [
+    "langcodes"
+  ];
 
   meta = with lib; {
-    description = "A toolkit for working with and comparing the standardized codes for languages, such as ‘en’ for English or ‘es’ for Spanish";
-    homepage =  "https://github.com/LuminosoInsight/langcodes";
+    description = "Python toolkit for working with and comparing the standardized codes for languages";
+    homepage = "https://github.com/LuminosoInsight/langcodes";
     license = licenses.mit;
     maintainers = with maintainers; [ ixxie ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/language-data/default.nix b/nixpkgs/pkgs/development/python-modules/language-data/default.nix
new file mode 100644
index 000000000000..98d4885b1e94
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/language-data/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildPythonApplication
+, fetchFromGitHub
+, marisa-trie
+, poetry-core
+, pythonOlder
+}:
+
+buildPythonApplication rec {
+  pname = "language-data";
+  version = "1.0.1";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "rspeer";
+    repo = "language_data";
+    rev = "v${version}";
+    sha256 = "51TUVHXPHG6ofbnxI6+o5lrtr+QCIpGKu+OjDK3l7Mc=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    marisa-trie
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "language_data"
+  ];
+
+  meta = with lib; {
+    description = "Supplement module for langcodes";
+    homepage = "https://github.com/rspeer/language_data";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/larch/default.nix b/nixpkgs/pkgs/development/python-modules/larch/default.nix
deleted file mode 100644
index 630430b8270b..000000000000
--- a/nixpkgs/pkgs/development/python-modules/larch/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, sphinx
-, tracing
-, ttystatus
-, cliapp
-}:
-
-buildPythonPackage rec {
-  pname = "larch";
-  version = "1.20131130";
-
-  src = fetchurl {
-    url = "http://code.liw.fi/debian/pool/main/p/python-larch/python-larch_${version}.orig.tar.gz";
-    sha256 = "1hfanp9l6yc5348i3f5sb8c5s4r43y382hflnbl6cnz4pm8yh5r7";
-  };
-
-  buildInputs = [ sphinx ];
-  propagatedBuildInputs = [ tracing ttystatus cliapp ];
-
-  # error: invalid command 'test'
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://liw.fi/larch/";
-    description = "Python B-tree library";
-    license = licenses.gpl3;
-    maintainers = [];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/lasagne/default.nix b/nixpkgs/pkgs/development/python-modules/lasagne/default.nix
deleted file mode 100644
index 5db149708ff3..000000000000
--- a/nixpkgs/pkgs/development/python-modules/lasagne/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, Theano
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "Lasagne";
-  version = "0.1";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0cqj86rdm6c7y5vq3i13qy76fg5xi3yjp4r0hpqy8hvynv54wqrw";
-  };
-
-  propagatedBuildInputs = [ numpy Theano ];
-
-  # there are no tests
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Lightweight library to build and train neural networks in Theano";
-    homepage = "https://github.com/Lasagne/Lasagne";
-    maintainers = with maintainers; [ NikolaMandic ];
-    license = licenses.mit;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/launchpadlib/default.nix b/nixpkgs/pkgs/development/python-modules/launchpadlib/default.nix
index 14833f7f622c..a9f2923bd073 100644
--- a/nixpkgs/pkgs/development/python-modules/launchpadlib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/launchpadlib/default.nix
@@ -15,11 +15,11 @@
 
 buildPythonPackage rec {
   pname = "launchpadlib";
-  version = "1.10.14";
+  version = "1.10.15.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5edfc7f615c88475b3d8549731cb57e2d9bf15d0b9bc21a43e88626b67deef4b";
+    sha256 = "4891f5b0c9bafbbb78aa06eeba1635629663c6aa80f621bcd1fc1057c8dd14b5";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/lc7001/default.nix b/nixpkgs/pkgs/development/python-modules/lc7001/default.nix
new file mode 100644
index 000000000000..0683794eda50
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lc7001/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, cryptography
+, fetchPypi
+, pythonOlder
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "lc7001";
+  version = "1.0.5";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-I4I3vwW1kJsgLFPMGpe9hkD3iEeC3AqI4pCi6SCWPx4=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    cryptography
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "lc7001"
+  ];
+
+  meta = with lib; {
+    description = "Python module for interacting with Legrand LC7001";
+    homepage = "https://github.com/rtyle/lc7001";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ldap/default.nix b/nixpkgs/pkgs/development/python-modules/ldap/default.nix
index 1b1aea2ab114..f9acc0a7674b 100644
--- a/nixpkgs/pkgs/development/python-modules/ldap/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ldap/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "python-ldap";
-  version = "3.3.1";
+  version = "3.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "198as30xy6p760niqps2zdvq2xcmr765h06pmda8fa9y077wl4a7";
+    sha256 = "60464c8fc25e71e0fd40449a24eae482dcd0fb7fcf823e7de627a6525b3e0d12";
   };
 
   propagatedBuildInputs = [ pyasn1 pyasn1-modules ];
diff --git a/nixpkgs/pkgs/development/python-modules/ldappool/default.nix b/nixpkgs/pkgs/development/python-modules/ldappool/default.nix
index bc08633da8b4..a3cb21c10972 100644
--- a/nixpkgs/pkgs/development/python-modules/ldappool/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ldappool/default.nix
@@ -3,12 +3,12 @@
 
 buildPythonPackage rec {
   pname = "ldappool";
-  version = "2.4.1";
+  version = "3.0.0";
 
   src = fetchPypi {
     pname = "ldappool";
     inherit version;
-    sha256 = "23edef09cba4b1ae764f1ddada828d8e39d72cf32a457e599f5a70064310ea00";
+    sha256 = "4bb59b7d6b11407f48ee01a781267e3c8ba98d91f426806ac7208612ae087b86";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/ldaptor/19.nix b/nixpkgs/pkgs/development/python-modules/ldaptor/19.nix
deleted file mode 100644
index cca696f1dff0..000000000000
--- a/nixpkgs/pkgs/development/python-modules/ldaptor/19.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, twisted
-, passlib
-, pyopenssl
-, pyparsing
-, service-identity
-, zope_interface
-, isPy3k
-, python
-}:
-
-buildPythonPackage rec {
-  pname = "ldaptor";
-  version = "19.1.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "64c7b870c77e34e4f5f9cfdf330b9702e89b4dd0f64275704f86c1468312c755";
-  };
-
-  propagatedBuildInputs = [
-    twisted passlib pyopenssl pyparsing service-identity zope_interface
-  ];
-
-  disabled = isPy3k;
-
-  doCheck = false;
-
-  meta = {
-    description = "A Pure-Python Twisted library for LDAP";
-    homepage = "https://github.com/twisted/ldaptor";
-    license = lib.licenses.mit;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/le/default.nix b/nixpkgs/pkgs/development/python-modules/le/default.nix
deleted file mode 100644
index d42527ae97a9..000000000000
--- a/nixpkgs/pkgs/development/python-modules/le/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, isPy3k
-, simplejson
-, psutil
-}:
-
-buildPythonPackage rec {
-  pname = "le";
-  version = "1.4.29";
-
-  src = fetchurl {
-    url = "https://github.com/logentries/le/archive/v${version}.tar.gz";
-    sha256 = "d29738937cb6e714b6ec2ae74b66b1983482ffd54b4faa40767af18509521d4c";
-  };
-
-  disabled = isPy3k;
-
-  doCheck = false;
-
-  propagatedBuildInputs = [ simplejson psutil ];
-
-  meta = with lib; {
-    homepage = "https://github.com/rapid7/le";
-    description = "Logentries agent";
-    license = licenses.mit;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/leather/default.nix b/nixpkgs/pkgs/development/python-modules/leather/default.nix
index 197e88e8e8b2..af2cb219cdbd 100644
--- a/nixpkgs/pkgs/development/python-modules/leather/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/leather/default.nix
@@ -1,16 +1,35 @@
-{ lib, fetchPypi, buildPythonPackage, six }:
+{ lib
+, fetchPypi
+, buildPythonPackage
+, six
+, cssselect
+, lxml
+, nose
+}:
 
 buildPythonPackage rec {
   pname = "leather";
-  version = "0.3.3";
+  version = "0.3.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "125r372q7bwcajfdysp7w5zh5wccwxf1mkhqawl8h518nl1icv87";
+    sha256 = "b43e21c8fa46b2679de8449f4d953c06418666dc058ce41055ee8a8d3bb40918";
   };
 
   propagatedBuildInputs = [ six ];
 
+  checkInputs = [
+    cssselect
+    lxml
+    nose
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+    nosetests
+    runHook postCheck
+  '';
+
   meta = with lib; {
     homepage = "http://leather.rtfd.io";
     description = "Python charting library";
diff --git a/nixpkgs/pkgs/development/python-modules/ledgerblue/default.nix b/nixpkgs/pkgs/development/python-modules/ledgerblue/default.nix
index 84c3ad8c614d..ff489f4cf222 100644
--- a/nixpkgs/pkgs/development/python-modules/ledgerblue/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ledgerblue/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "ledgerblue";
-  version = "0.1.38";
+  version = "0.1.41";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "df1fffc4f586eaa95b8cf910176d28997e65a3ecd43d9c0af34e46078b6b6ee3";
+    sha256 = "7246a1a0442a63aff0b5de2796d306f0033e1937b3c9b9c2a92c9101cde4fe8d";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/ledgerwallet/default.nix b/nixpkgs/pkgs/development/python-modules/ledgerwallet/default.nix
index 7650e375b41f..cf2be98f922a 100644
--- a/nixpkgs/pkgs/development/python-modules/ledgerwallet/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ledgerwallet/default.nix
@@ -1,5 +1,6 @@
 { lib, stdenv
 , fetchFromGitHub
+, fetchpatch
 , buildPythonPackage
 , cryptography
 , click
@@ -25,6 +26,15 @@ buildPythonPackage rec {
     sha256 = "0fb93h2wxm9as9rsywlgz2ng4wrlbjphn6mgbhj6nls2i86rrdxk";
   };
 
+  patches = [
+    (fetchpatch {
+      # Fix removed function in construct library
+      url = "https://github.com/LedgerHQ/ledgerctl/commit/fd23d0e14721b93789071e80632e6bd9e47c1256.patch";
+      sha256 = "sha256-YNlENguPQW5FNFT7mqED+ghF3TJiKao4H+56Eu+j+Eo=";
+      excludes = [ "setup.py" ];
+    })
+  ];
+
   buildInputs = lib.optionals stdenv.isDarwin [ AppKit ];
   propagatedBuildInputs = [
     cryptography click construct ecdsa hidapi intelhex pillow protobuf requests tabulate
diff --git a/nixpkgs/pkgs/development/python-modules/levenshtein/default.nix b/nixpkgs/pkgs/development/python-modules/levenshtein/default.nix
new file mode 100644
index 000000000000..cc4a029b7b55
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/levenshtein/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, pytestCheckHook
+, rapidfuzz
+}:
+
+buildPythonPackage rec {
+  pname = "levenshtein";
+  version = "0.16.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "maxbachmann";
+    repo = "Levenshtein";
+    rev = "v${version}";
+    sha256 = "agshUVkkqogj4FbonFd/rrGisMOomS62NND66YKZvjg=";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "rapidfuzz >= 1.8.2, < 1.9" "rapidfuzz"
+  '';
+
+  propagatedBuildInputs = [
+    rapidfuzz
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "Levenshtein"
+  ];
+
+  meta = with lib; {
+    description = "Functions for fast computation of Levenshtein distance and string similarity";
+    homepage = "https://github.com/maxbachmann/Levenshtein";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lexid/default.nix b/nixpkgs/pkgs/development/python-modules/lexid/default.nix
index 5ef175d57878..0e9cf69ea8c0 100644
--- a/nixpkgs/pkgs/development/python-modules/lexid/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/lexid/default.nix
@@ -1,4 +1,4 @@
-{ lib, python, pythonOlder, buildPythonPackage, fetchPypi, pytestCheckHook, click }:
+{ lib, pythonOlder, buildPythonPackage, fetchPypi, pytestCheckHook, click }:
 
 buildPythonPackage rec {
   pname = "lexid";
diff --git a/nixpkgs/pkgs/development/python-modules/libarchive-c/default.nix b/nixpkgs/pkgs/development/python-modules/libarchive-c/default.nix
index 48262398fcbf..13f61c6aa949 100644
--- a/nixpkgs/pkgs/development/python-modules/libarchive-c/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/libarchive-c/default.nix
@@ -1,7 +1,6 @@
 { lib
 , stdenv
 , buildPythonPackage
-, pythonAtLeast
 , fetchFromGitHub
 , libarchive
 , glibcLocales
@@ -11,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "libarchive-c";
-  version = "3.1";
+  version = "3.2";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "Changaco";
     repo = "python-${pname}";
     rev = version;
-    sha256 = "1z4lqy9zlzymshzrcldsc9ipys2l7grqg4yff6ndl6dgbfb0g4jb";
+    sha256 = "1kj3y9vnsc9m2hvnvgk5inawxfknz5drj3q51hqgcbq8p4dm8vli";
   };
 
   LC_ALL="en_US.UTF-8";
@@ -38,11 +37,6 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTests = lib.optionals (pythonAtLeast "3.9") [
-    # causes python3.9 to segfault
-    "test_custom_writer_and_stream_reader"
-  ];
-
   meta = with lib; {
     homepage = "https://github.com/Changaco/python-libarchive-c";
     description = "Python interface to libarchive";
diff --git a/nixpkgs/pkgs/development/python-modules/libarcus/default.nix b/nixpkgs/pkgs/development/python-modules/libarcus/default.nix
index 4002f527a451..494e786e9784 100644
--- a/nixpkgs/pkgs/development/python-modules/libarcus/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/libarcus/default.nix
@@ -4,14 +4,14 @@
 
 buildPythonPackage rec {
   pname = "libarcus";
-  version = "4.10.0";
+  version = "4.12.0";
   format = "other";
 
   src = fetchFromGitHub {
     owner = "Ultimaker";
     repo = "libArcus";
     rev = version;
-    sha256 = "1ahka8s8fjwymyr7pca7i7h51ikfr35zy4nkzfcjn946x7p0dprf";
+    sha256 = "sha256-X33ptwYj9YkVWqUDPP+Ic+hoIb+rwsLdQXvHLA9z+3w=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/libasyncns/default.nix b/nixpkgs/pkgs/development/python-modules/libasyncns/default.nix
index 38ca9b26360c..bd28c2207340 100644
--- a/nixpkgs/pkgs/development/python-modules/libasyncns/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/libasyncns/default.nix
@@ -1,5 +1,10 @@
-{ lib, buildPythonPackage, fetchurl
-, libasyncns, pkg-config }:
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchurl
+, libasyncns
+, pkg-config
+}:
 
 buildPythonPackage rec {
   pname = "libasyncns-python";
@@ -12,10 +17,17 @@ buildPythonPackage rec {
 
   patches = [ ./libasyncns-fix-res-consts.patch ];
 
+  postPatch = lib.optionalString stdenv.isDarwin ''
+    substituteInPlace resquery.c \
+      --replace '<arpa/nameser.h>' '<arpa/nameser_compat.h>'
+  '';
+
   buildInputs = [ libasyncns ];
   nativeBuildInputs = [ pkg-config ];
   doCheck = false; # requires network access
 
+  pythonImportsCheck = [ "libasyncns" ];
+
   meta = with lib; {
     description = "libasyncns-python is a python binding for the asynchronous name service query library";
     license = licenses.lgpl21;
diff --git a/nixpkgs/pkgs/development/python-modules/libcloud/default.nix b/nixpkgs/pkgs/development/python-modules/libcloud/default.nix
index 78afad13dd20..77aa9e2927a5 100644
--- a/nixpkgs/pkgs/development/python-modules/libcloud/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/libcloud/default.nix
@@ -1,40 +1,49 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, isPy27
-, mock
 , pycrypto
+, pythonOlder
 , requests
-, pytest-runner
-, pytest
-, requests-mock
-, typing
 }:
 
 buildPythonPackage rec {
   pname = "apache-libcloud";
-  version = "3.3.1";
+  version = "3.4.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d7450453eaf5904eb4fb4f74cf9f37dc83721a719bce34f5abb336b1a1ab974d";
+    sha256 = "sha256-iPGNoM8/rAr3I+dD+3QdnRviUYge2reloNFimVW1ARs=";
   };
 
-  checkInputs = [ mock pytest pytest-runner requests-mock ];
-  propagatedBuildInputs = [ pycrypto requests ] ++ lib.optionals isPy27 [ typing ];
+  propagatedBuildInputs = [
+    pycrypto
+    requests
+  ];
+
+  preConfigure = ''
+    cp libcloud/test/secrets.py-dist libcloud/test/secrets.py
+  '';
 
-  preConfigure = "cp libcloud/test/secrets.py-dist libcloud/test/secrets.py";
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "setup_requires=pytest_runner," "setup_requires=[],"
+  '';
 
   # requires a certificates file
   doCheck = false;
 
-  pythonImportsCheck = [ "libcloud" ];
+  pythonImportsCheck = [
+    "libcloud"
+  ];
 
   meta = with lib; {
     description = "A unified interface to many cloud providers";
     homepage = "https://libcloud.apache.org/";
     changelog = "https://github.com/apache/libcloud/blob/v${version}/CHANGES.rst";
     license = licenses.asl20;
+    maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/libcst/default.nix b/nixpkgs/pkgs/development/python-modules/libcst/default.nix
index 5b950ab57397..774cb572e95b 100644
--- a/nixpkgs/pkgs/development/python-modules/libcst/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/libcst/default.nix
@@ -9,24 +9,37 @@
 , python
 , pythonOlder
 , pyyaml
+, setuptools-scm
 , typing-extensions
 , typing-inspect
 }:
 
 buildPythonPackage rec {
   pname = "libcst";
-  version = "0.3.20";
+  version = "0.3.23";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
-  # Some files for tests missing from PyPi
-  # https://github.com/Instagram/LibCST/issues/331
   src = fetchFromGitHub {
     owner = "instagram";
     repo = pname;
     rev = "v${version}";
-    sha256 = "063bl21gyyd25i2v0j6kz29cxxdfhng2nins4i2qblmac90f2nqy";
+    sha256 = "1r4aiqpndqa75119faknsghi7zxyjrx5r6i7cb3d0liwiqrkzrvx";
   };
 
+  postPatch = ''
+    # test try to format files, which isn't necessary when consuming releases
+    sed -i libcst/codegen/generate.py \
+      -e '/ufmt/c\        pass'
+  '';
+
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [
     hypothesis
     typing-extensions
@@ -54,7 +67,9 @@ buildPythonPackage rec {
     "test_codemod_formatter_error_input"
   ];
 
-  pythonImportsCheck = [ "libcst" ];
+  pythonImportsCheck = [
+    "libcst"
+  ];
 
   meta = with lib; {
     description = "Concrete Syntax Tree (CST) parser and serializer library for Python";
diff --git a/nixpkgs/pkgs/development/python-modules/liblzfse/default.nix b/nixpkgs/pkgs/development/python-modules/liblzfse/default.nix
index 72159fa5f134..90533cc30206 100644
--- a/nixpkgs/pkgs/development/python-modules/liblzfse/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/liblzfse/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , lzfse
-, pytestCheckHook
 }:
 buildPythonPackage rec {
   pname = "pyliblzfse";
diff --git a/nixpkgs/pkgs/development/python-modules/libnacl/default.nix b/nixpkgs/pkgs/development/python-modules/libnacl/default.nix
index f8cb85ab4182..7ced26888b80 100644
--- a/nixpkgs/pkgs/development/python-modules/libnacl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/libnacl/default.nix
@@ -2,6 +2,7 @@
 , stdenv
 , buildPythonPackage
 , fetchFromGitHub
+, fetchpatch
 , libsodium
 , pytestCheckHook
 }:
@@ -17,6 +18,15 @@ buildPythonPackage rec {
     sha256 = "sha256-nttR9PQimhqd2pByJ5IJzJ4RmSI4y7lcX7a7jcK+vqc=";
   };
 
+  patches = [
+    # Fixes build on 32-bit platforms
+    (fetchpatch {
+      name = "fix-crypto_kdf_derive_from_key-32bit.patch";
+      url = "https://github.com/saltstack/libnacl/commit/e8a1f95ee1d4d0806fb6aee793dcf308b05d485d.patch";
+      sha256 = "sha256-z6TAVNfPcuWZ/hRgk6Aa8I1IGzne7/NYnUOOQ3TjGVU=";
+    })
+  ];
+
   buildInputs = [ libsodium ];
 
   postPatch =
diff --git a/nixpkgs/pkgs/development/python-modules/libpyvivotek/default.nix b/nixpkgs/pkgs/development/python-modules/libpyvivotek/default.nix
new file mode 100644
index 000000000000..db9f14a5a80a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/libpyvivotek/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+, requests
+, vcrpy
+}:
+
+buildPythonPackage rec {
+  pname = "libpyvivotek";
+  version = "0.4.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "HarlemSquirrel";
+    repo = "python-vivotek";
+    rev = "v${version}";
+    sha256 = "pNlnGpDjdYE7Lxog8GGZV+UZZmfmt5bwHof5LngPQjg=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    vcrpy
+  ];
+
+  pythonImportsCheck = [
+    "libpyvivotek"
+  ];
+
+  meta = with lib; {
+    description = "Python Library for Vivotek IP Cameras";
+    homepage = "https://github.com/HarlemSquirrel/python-vivotek";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/librouteros/default.nix b/nixpkgs/pkgs/development/python-modules/librouteros/default.nix
index 32c9889681ca..6e9d3ebd5296 100644
--- a/nixpkgs/pkgs/development/python-modules/librouteros/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/librouteros/default.nix
@@ -8,14 +8,16 @@
 
 buildPythonPackage rec {
   pname = "librouteros";
-  version = "3.1.0";
+  version = "3.2.0";
+  format = "setuptools";
+
   disabled = !isPy3k;
 
   src = fetchFromGitHub {
     owner = "luqasz";
     repo = pname;
     rev = version;
-    sha256 = "1skjwnqa3vcpq9gzgpw93wdmisq15fp0q07kzyq3fgx4yg7b6sql";
+    sha256 = "sha256-Zo9HCjYe9cCkqXhikAjDQKQXGkrMni3f+9KoqhZskNk=";
   };
 
   checkInputs = [
@@ -33,7 +35,9 @@ buildPythonPackage rec {
     "test_generator_ditch"
   ];
 
-  pythonImportsCheck = [ "librouteros" ];
+  pythonImportsCheck = [
+    "librouteros"
+  ];
 
   meta = with lib; {
     description = "Python implementation of the MikroTik RouterOS API";
diff --git a/nixpkgs/pkgs/development/python-modules/libsavitar/default.nix b/nixpkgs/pkgs/development/python-modules/libsavitar/default.nix
index e82400b565fd..588ebfcd1e95 100644
--- a/nixpkgs/pkgs/development/python-modules/libsavitar/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/libsavitar/default.nix
@@ -2,14 +2,14 @@
 
 buildPythonPackage rec {
   pname = "libsavitar";
-  version = "4.10.0";
+  version = "4.12.0";
   format = "other";
 
   src = fetchFromGitHub {
     owner = "Ultimaker";
     repo = "libSavitar";
     rev = version;
-    sha256 = "1zyzsrdm5aazv12h7ga35amfryrbxdsmx3abvh27hixyh9f92fdp";
+    sha256 = "sha256-MAA1WtGED6lvU6N4BE6wwY1aYaFrCq/gkmQFz3VWqNA=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/libtmux/default.nix b/nixpkgs/pkgs/development/python-modules/libtmux/default.nix
index 5d2a8dd38a78..5b251f842bff 100644
--- a/nixpkgs/pkgs/development/python-modules/libtmux/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/libtmux/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "libtmux";
-  version = "0.10.1";
+  version = "0.10.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c8bc81499616ba899538704e419463a1c83ba7ca21e53b1efc6abbe98eb26b61";
+    sha256 = "a0e958b85ec14cdaabecfa738a0dd51846f05e5c5e9d6749a2bf5160b9f7e1d2";
   };
 
   checkInputs = [ pytest ];
diff --git a/nixpkgs/pkgs/development/python-modules/libusb1/default.nix b/nixpkgs/pkgs/development/python-modules/libusb1/default.nix
index ce39ec117ee0..f1b474b960f6 100644
--- a/nixpkgs/pkgs/development/python-modules/libusb1/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/libusb1/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi, libusb1, pytest }:
+{ lib, stdenv, buildPythonPackage, fetchPypi, libusb1, pytestCheckHook }:
 
 buildPythonPackage rec {
   pname = "libusb1";
@@ -17,11 +17,11 @@ buildPythonPackage rec {
 
   buildInputs = [ libusb1 ];
 
-  checkInputs = [ pytest ];
+  checkInputs = [ pytestCheckHook ];
 
-  checkPhase = ''
-    py.test usb1/testUSB1.py
-  '';
+  pytestFlagsArray = [
+    "usb1/testUSB1.py"
+  ];
 
   meta = with lib; {
     homepage    = "https://github.com/vpelletier/python-libusb1";
diff --git a/nixpkgs/pkgs/development/python-modules/libversion/default.nix b/nixpkgs/pkgs/development/python-modules/libversion/default.nix
index fb77eeed4c2c..a492ea7806a0 100644
--- a/nixpkgs/pkgs/development/python-modules/libversion/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/libversion/default.nix
@@ -1,23 +1,41 @@
-{ lib, buildPythonPackage, fetchPypi, pkg-config, libversion, pythonOlder }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, libversion
+, pkg-config
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "libversion";
-  version = "1.2.3";
+  version = "1.2.4";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "e6e903cc6307c3eda90401373eb81bfd0dd2dc93772ddab3d23705bed0c6f6e9";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "repology";
+    repo = "py-libversion";
+    rev = version;
+    sha256 = "sha256-p0wtSB+QXAERf+57MMb8cqWoy1bG3XaCpR9GPwYYvJM=";
   };
 
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ libversion ];
+  nativeBuildInputs = [
+    pkg-config
+  ];
 
-  disabled = pythonOlder "3.6";
+  buildInputs = [
+    libversion
+  ];
+
+  pythonImportsCheck = [
+    "libversion"
+  ];
 
   meta = with lib; {
-    homepage = "https://github.com/repology/py-libversion";
     description = "Python bindings for libversion, which provides fast, powerful and correct generic version string comparison algorithm";
+    homepage = "https://github.com/repology/py-libversion";
     license = licenses.mit;
-    maintainers = [ maintainers.ryantm ];
+    maintainers = with maintainers; [ ryantm ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/libvirt/5.9.0.nix b/nixpkgs/pkgs/development/python-modules/libvirt/5.9.0.nix
deleted file mode 100644
index 9cbd042c55ae..000000000000
--- a/nixpkgs/pkgs/development/python-modules/libvirt/5.9.0.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib, buildPythonPackage, fetchgit, pkg-config, lxml, libvirt, nose }:
-
-buildPythonPackage rec {
-  pname = "libvirt";
-  version = "5.9.0";
-
-  src = fetchgit {
-    url = "git://libvirt.org/libvirt-python.git";
-    rev = "v${version}";
-    sha256 = "0qvr0s7yasswy1s5cvkm91iifk33pb8s7nbb38zznc46706b358r";
-  };
-
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ libvirt lxml ];
-
-  checkInputs = [ nose ];
-  checkPhase = ''
-    nosetests
-  '';
-
-  passthru = {
-    inherit libvirt;
-  };
-
-  meta = with lib; {
-    homepage = "http://www.libvirt.org/";
-    description = "libvirt Python bindings";
-    license = licenses.lgpl2;
-    maintainers = [ maintainers.fpletz ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/libvirt/default.nix b/nixpkgs/pkgs/development/python-modules/libvirt/default.nix
index 4572aee08b33..c2c0469aa819 100644
--- a/nixpkgs/pkgs/development/python-modules/libvirt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/libvirt/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "libvirt";
-  version = "7.8.0";
+  version = "7.9.0";
 
   src = assert version == libvirt.version; fetchFromGitLab {
     owner = "libvirt";
     repo = "libvirt-python";
     rev = "v${version}";
-    sha256 = "sha256-GuV++CFkywW0LGconyahfBGY+jjFA27Qu9JGIFt4bus=";
+    sha256 = "sha256-cfCyQ3KTv0lYTZMriUhm6psBAcJJIcmR/M9V/lrLmVE=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/nixpkgs/pkgs/development/python-modules/life360/default.nix b/nixpkgs/pkgs/development/python-modules/life360/default.nix
new file mode 100644
index 000000000000..1739881ea96d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/life360/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "life360";
+  version = "4.1.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "pnbruckner";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "v+j0DBWQb1JdOu+uxJAdWhzef5zB62z+NSQ+WxpsinA=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "life360"
+  ];
+
+  meta = with lib; {
+    description = "Python module to interact with Life360";
+    homepage = "https://github.com/pnbruckner/life360";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lightblue/default.nix b/nixpkgs/pkgs/development/python-modules/lightblue/default.nix
deleted file mode 100644
index feb271812443..000000000000
--- a/nixpkgs/pkgs/development/python-modules/lightblue/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, pkgs
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "lightblue";
-  version = "0.4";
-  disabled = isPy3k; # build fails, 2018-04-11
-
-  src = fetchurl {
-    url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
-    sha256 = "016h1mlhpqxjj25lcvl4fqc19k8ifmsv6df7rhr12fyfcrp5i14d";
-  };
-
-  buildInputs = [ pkgs.bluez pkgs.openobex ];
-
-  meta = with lib; {
-    homepage = "http://lightblue.sourceforge.net";
-    description = "Cross-platform Bluetooth API for Python";
-    maintainers = with maintainers; [ leenaars ];
-    license = licenses.gpl3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/lightgbm/default.nix b/nixpkgs/pkgs/development/python-modules/lightgbm/default.nix
index 0bfa586a8ba5..7e241be4aafe 100644
--- a/nixpkgs/pkgs/development/python-modules/lightgbm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/lightgbm/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "lightgbm";
-  version = "3.3.0";
+  version = "3.3.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "107ae7babbbda2c2f0e07484f0c53cdeb455e9219235f79dc4e1685d7541e505";
+    sha256 = "5b9f31759ab4e94d9409deb03104c55b0a40058a6ccea804022046d926bc4904";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/lightwave2/default.nix b/nixpkgs/pkgs/development/python-modules/lightwave2/default.nix
new file mode 100644
index 000000000000..61bb86b8f769
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/lightwave2/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "lightwave2";
+  version = "0.8.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "2f18ee4aba0431236a4c48a032de6714cfb56ff1e97c86d48cfe619eb961b21a";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "lightwave2"
+  ];
+
+  meta = with lib; {
+    description = "Python library to interact with LightWaveRF 2nd Gen lights and switches";
+    homepage = "https://github.com/bigbadblunt/lightwave2";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/limnoria/default.nix b/nixpkgs/pkgs/development/python-modules/limnoria/default.nix
index 1753b0dce8c1..ba45ffbdeac4 100644
--- a/nixpkgs/pkgs/development/python-modules/limnoria/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/limnoria/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "limnoria";
-  version = "2021.10.9";
+  version = "2021.11.20";
   disabled = isPy27; # abandoned upstream
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "907a4a0765ab29ccd1c2247efa0eda7a9bd82d3be3a2ecfdeb9b9e6fbb9aa56e";
+    sha256 = "da9c33497a09b4ed0cff6ed44954bbde6cb317edb68d56c73ef235128a802c11";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/line_profiler/default.nix b/nixpkgs/pkgs/development/python-modules/line_profiler/default.nix
index aac026cea929..76aa30f06980 100644
--- a/nixpkgs/pkgs/development/python-modules/line_profiler/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/line_profiler/default.nix
@@ -7,15 +7,19 @@
 , python
 , scikit-build
 , cmake
+, pythonOlder
 }:
 
 buildPythonPackage rec {
-  pname = "line_profiler";
-  version = "3.3.0";
+  pname = "line-profiler";
+  version = "3.4.0";
+
+  disabled = pythonOlder "3.6" || isPyPy;
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "8bd8353e9403b226def4438dbfdb57cafefb24488e49a6039cc63906c0bc8836";
+    pname = "line_profiler";
+    inherit version;
+    sha256 = "b6b0a8100a2829358e31ef7c6f427b1dcf2b1d8e5d38b55b219719ecf758aee5";
   };
 
   nativeBuildInputs = [
@@ -24,30 +28,32 @@ buildPythonPackage rec {
     scikit-build
   ];
 
-  dontUseCmakeConfigure = true;
-
   propagatedBuildInputs = [
     ipython
   ];
 
-  disabled = isPyPy;
+  checkInputs = [
+    ipython
+  ];
+
+  dontUseCmakeConfigure = true;
 
   preBuild = ''
     rm -f _line_profiler.c
   '';
 
-  checkInputs = [
-    ipython
-  ];
-
   checkPhase = ''
     PYTHONPATH=$out/${python.sitePackages}:$PYTHONPATH cd tests && ${python.interpreter} -m unittest discover -s .
   '';
 
-  meta = {
+  pythonImportsCheck = [
+    "line_profiler"
+  ];
+
+  meta = with lib; {
     description = "Line-by-line profiler";
-    homepage = "https://github.com/rkern/line_profiler";
-    license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ fridh ];
+    homepage = "https://github.com/pyutils/line_profiler";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fridh ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/linecache2/default.nix b/nixpkgs/pkgs/development/python-modules/linecache2/default.nix
index 3c2238b0875d..4231ed43ad5b 100644
--- a/nixpkgs/pkgs/development/python-modules/linecache2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/linecache2/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , pbr
-, isPy3k
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/linkify-it-py/default.nix b/nixpkgs/pkgs/development/python-modules/linkify-it-py/default.nix
index b9511bd5f35b..ef97439cdc86 100644
--- a/nixpkgs/pkgs/development/python-modules/linkify-it-py/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/linkify-it-py/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "linkify-it-py";
-  version = "1.0.1";
+  version = "1.0.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "tsutsu3";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-gd51no6VqvIiW9fbCdp30zHG/us6by7FLHV2ul/XJAM=";
+    hash = "sha256-1QqfqFdTEdZr02jQnmHmvw3fgnC/ktsfALyhtkGSXoY=";
   };
 
   propagatedBuildInputs = [ uc-micro-py ];
diff --git a/nixpkgs/pkgs/development/python-modules/liquidctl/default.nix b/nixpkgs/pkgs/development/python-modules/liquidctl/default.nix
index 9ac682b42422..c37183e22ec0 100644
--- a/nixpkgs/pkgs/development/python-modules/liquidctl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/liquidctl/default.nix
@@ -35,6 +35,10 @@ buildPythonPackage rec {
     colorlog
   ];
 
+  propagatedNativeBuildInputs = [
+    smbus-cffi
+  ];
+
   outputs = [ "out" "man" ];
 
   postInstall = ''
diff --git a/nixpkgs/pkgs/development/python-modules/livelossplot/default.nix b/nixpkgs/pkgs/development/python-modules/livelossplot/default.nix
index 2951ab7a427b..467d239857af 100644
--- a/nixpkgs/pkgs/development/python-modules/livelossplot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/livelossplot/default.nix
@@ -1,8 +1,8 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, isPy27
-, pytest
+, pythonOlder
+, pytestCheckHook
 , bokeh
 , ipython
 , matplotlib
@@ -13,23 +13,23 @@
 
 buildPythonPackage rec {
   pname = "livelossplot";
-  version = "0.5.0";
+  version = "0.5.4";
 
-  disabled = isPy27;
+  disabled = pythonOlder "3.6";
+
+  # version number in source is wrong in this release
+  postPatch = ''substituteInPlace ${pname}/version.py --replace "0.5.3" "0.5.4"'';
 
   src = fetchFromGitHub {
     owner  = "stared";
     repo   = pname;
     rev    = "v${version}";
-    sha256 = "164v65qglgyg38q9ajnas99rp14mvrk5hn8x76b8iy81vszmx1c0";
+    sha256 = "IV6YAidoqVoKvpy+LNNHTPpobiDoGX59bHqJcBtaydk=";
   };
 
   propagatedBuildInputs = [ bokeh ipython matplotlib numpy ];
 
-  checkInputs = [ pytest nbconvert nbformat ];
-  checkPhase = ''
-    pytest tests tests/external_test_examples.py
-  '';
+  checkInputs = [ nbconvert nbformat pytestCheckHook ];
 
   meta = with lib; {
     description = "Live training loss plot in Jupyter for Keras, PyTorch, and others";
diff --git a/nixpkgs/pkgs/development/python-modules/livestreamer-curses/default.nix b/nixpkgs/pkgs/development/python-modules/livestreamer-curses/default.nix
index 5f17a7006177..53cb71a123b5 100644
--- a/nixpkgs/pkgs/development/python-modules/livestreamer-curses/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/livestreamer-curses/default.nix
@@ -1,18 +1,20 @@
 { lib
 , buildPythonPackage
-, fetchurl
+, fetchFromGitHub
 , isPyPy
 , livestreamer
 }:
 
 buildPythonPackage rec {
-  version = "1.5.2";
   pname = "livestreamer-curses";
+  version = "1.5.2";
   disabled = isPyPy;
 
-  src = fetchurl {
-    url = "https://github.com/gapato/livestreamer-curses/archive/v${version}.tar.gz";
-    sha256 = "1v49sym6mrci9dxy0a7cpbp4bv6fg2ijj6rwk4wzg18c2x4qzkhn";
+  src = fetchFromGitHub {
+    owner = "gapato";
+    repo = "livestreamer-curses";
+    rev = "v${version}";
+    sha256 = "sha256-Pi0PIOUhMMAWft9ackB04IgF6DyPrXppNqyVjozIjN4=";
   };
 
   propagatedBuildInputs = [ livestreamer ];
@@ -21,6 +23,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/gapato/livestreamer-curses";
     description = "Curses frontend for livestreamer";
     license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/livestreamer/default.nix b/nixpkgs/pkgs/development/python-modules/livestreamer/default.nix
index b77cf430717c..4dd4c35cc738 100644
--- a/nixpkgs/pkgs/development/python-modules/livestreamer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/livestreamer/default.nix
@@ -1,39 +1,36 @@
 { lib
 , buildPythonPackage
-, pkgs
+, fetchFromGitHub
 , isPyPy
+, makeWrapper
+, rtmpdump
 , pycrypto
 , requests
-, singledispatch ? null
-, futures ? null
-, isPy27
 }:
 
 buildPythonPackage rec {
-  version = "1.12.2";
   pname = "livestreamer";
+  version = "1.12.2";
   disabled = isPyPy;
 
-  src = pkgs.fetchurl {
-    url = "https://github.com/chrippa/livestreamer/archive/v${version}.tar.gz";
-    sha256 = "1fp3d3z2grb1ls97smjkraazpxnvajda2d1g1378s6gzmda2jvjd";
+  src = fetchFromGitHub {
+    owner = "chrippa";
+    repo = "livestreamer";
+    rev = "v${version}";
+    sha256 = "sha256-PqqyBh+oMmu7Ynly3fqx/+6mQYX+6SpI0Okj2O+YLz0=";
   };
 
-  nativeBuildInputs = [ pkgs.makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
 
-  propagatedBuildInputs = [ pkgs.rtmpdump pycrypto requests ]
-    ++ lib.optionals isPy27 [ singledispatch futures ];
+  propagatedBuildInputs = [ rtmpdump pycrypto requests ];
 
   postInstall = ''
-    wrapProgram $out/bin/livestreamer --prefix PATH : ${pkgs.rtmpdump}/bin
+    wrapProgram $out/bin/livestreamer --prefix PATH : ${lib.makeBinPath [ rtmpdump ]}
   '';
 
   meta = with lib; {
     homepage = "http://livestreamer.tanuki.se";
-    description = ''
-      Livestreamer is CLI program that extracts streams from various
-      services and pipes them into a video player of choice.
-    '';
+    description = "Livestreamer is CLI program that extracts streams from various services and pipes them into a video player of choice";
     license = licenses.bsd2;
     maintainers = with maintainers; [ ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/llfuse/default.nix b/nixpkgs/pkgs/development/python-modules/llfuse/default.nix
index 44aa9136b07c..cbf7e84c7203 100644
--- a/nixpkgs/pkgs/development/python-modules/llfuse/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/llfuse/default.nix
@@ -31,8 +31,13 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ contextlib2 ];
 
+  preConfigure = ''
+    substituteInPlace setup.py \
+        --replace "'pkg-config'" "'${stdenv.cc.targetPrefix}pkg-config'"
+  '';
+
   preBuild = ''
-    ${python.interpreter} setup.py build_cython
+    ${python.pythonForBuild.interpreter} setup.py build_cython
   '';
 
   # On Darwin, the test requires macFUSE to be installed outside of Nix.
diff --git a/nixpkgs/pkgs/development/python-modules/lmdb/default.nix b/nixpkgs/pkgs/development/python-modules/lmdb/default.nix
index 3e78626238a7..8efc1e3fb12c 100644
--- a/nixpkgs/pkgs/development/python-modules/lmdb/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/lmdb/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "lmdb";
-  version = "1.2.1";
+  version = "1.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5f76a90ebd08922acca11948779b5055f7a262687178e9e94f4e804b9f8465bc";
+    sha256 = "60a11efc21aaf009d06518996360eed346f6000bfc9de05114374230879f992e";
   };
 
   buildInputs = [ lmdb ];
diff --git a/nixpkgs/pkgs/development/python-modules/log-symbols/default.nix b/nixpkgs/pkgs/development/python-modules/log-symbols/default.nix
index f8cdce634ac9..819f771b91ee 100644
--- a/nixpkgs/pkgs/development/python-modules/log-symbols/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/log-symbols/default.nix
@@ -2,7 +2,6 @@
 , colorama
 , fetchPypi
 , isPy27
-, pytestCheckHook
 , lib }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/logfury/default.nix b/nixpkgs/pkgs/development/python-modules/logfury/default.nix
index 5f83c8633dc1..64766c232cdb 100644
--- a/nixpkgs/pkgs/development/python-modules/logfury/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/logfury/default.nix
@@ -2,30 +2,49 @@
 , buildPythonPackage
 , fetchPypi
 , funcsigs
-, six
+, setuptools-scm
+, pytestCheckHook
+, pythonOlder
+, testfixtures
 }:
 
 buildPythonPackage rec {
   pname = "logfury";
-  version = "0.1.2";
+  version = "1.0.1";
+
+  disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1lywirv3d1lw691mc4mfpz7ak6r49klri43bbfgdnvsfppxminj2";
+    sha256 = "sha256-EwpdrOq5rVNJJCUt33BIKqLJZmKzo4JafTCYHQO3aiY=";
   };
 
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [
     funcsigs
-    six
   ];
 
-  # No tests
-  doCheck = false;
+  checkInputs = [
+    pytestCheckHook
+    testfixtures
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "'setuptools_scm<6.0'" "'setuptools_scm'"
+  '';
+
+  pythonImportsCheck = [
+    "logfury"
+  ];
 
-  meta = {
-    description = "Logfury is for python library maintainers. It allows for responsible, low-boilerplate logging of method calls.";
+  meta = with lib; {
+    description = "Python module that allows for responsible, low-boilerplate logging of method calls";
     homepage = "https://github.com/ppolewicz/logfury";
-    license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ jwiegley ];
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ jwiegley ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/losant-rest/default.nix b/nixpkgs/pkgs/development/python-modules/losant-rest/default.nix
new file mode 100644
index 000000000000..36b6efa724e2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/losant-rest/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+, requests
+, requests-mock
+}:
+
+buildPythonPackage rec {
+  pname = "losant-rest";
+  version = "1.15.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "Losant";
+    repo = "losant-rest-python";
+    rev = "v${version}";
+    sha256 = "sha256-j8Vzr83pvl/AnXfA+nl5uRXf+y6ndKmQHM3bl306wFM=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    requests-mock
+  ];
+
+  pytestFlagsArray = [
+    "tests/losantrest_tests.py"
+  ];
+
+  pythonImportsCheck = [
+    "losantrest"
+  ];
+
+  meta = with lib; {
+    description = "Python module for consuming the Losant IoT Platform API";
+    homepage = "https://github.com/Losant/losant-rest-python";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lsassy/default.nix b/nixpkgs/pkgs/development/python-modules/lsassy/default.nix
index 7b550b2430e6..421c1f481e8a 100644
--- a/nixpkgs/pkgs/development/python-modules/lsassy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/lsassy/default.nix
@@ -9,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "lsassy";
-  version = "3.0.0";
+  version = "3.1.1";
 
   src = fetchFromGitHub {
     owner = "Hackndo";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-75gs08QGjN5iUT4HQZZTSKi3vzNNKQvZR2JTObYNb7w=";
+    sha256 = "0jd0kmp0mc8jn5qmgrspdx05vy6nyq773cj4yid1qyr8dmyx6a7n";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/lsi/default.nix b/nixpkgs/pkgs/development/python-modules/lsi/default.nix
deleted file mode 100644
index b570a62d9e34..000000000000
--- a/nixpkgs/pkgs/development/python-modules/lsi/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib
-, buildPythonPackage
-, isPy3k
-, fetchPypi
-, colored
-, boto
-, pkgs
-}:
-
-buildPythonPackage rec {
-  pname = "lsi";
-  version = "0.4.0";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b2c4a9a276a32f914a6193509503c28b3cc84bf42d58e191214811cfe78f4736";
-  };
-
-  propagatedBuildInputs = [ colored boto pkgs.openssh pkgs.which ];
-
-  meta = with lib; {
-    description = "CLI for querying and SSHing onto AWS EC2 instances";
-    homepage = "https://github.com/NarrativeScience/lsi";
-    maintainers = [maintainers.adnelson];
-    license = licenses.mit;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/ludios_wpull/default.nix b/nixpkgs/pkgs/development/python-modules/ludios_wpull/default.nix
index e87146f6fbc3..0045f4b3e0fa 100644
--- a/nixpkgs/pkgs/development/python-modules/ludios_wpull/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ludios_wpull/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, isPy3k
 , chardet
 , dnspython
 , html5-parser
@@ -15,15 +14,16 @@
 
 buildPythonPackage rec {
   pname = "ludios_wpull";
-  version = "3.0.7";
+  version = "3.0.9";
 
-  disabled = (!isPy3k) || (pythonAtLeast "3.8");
+  # https://github.com/ArchiveTeam/ludios_wpull/issues/20
+  disabled = pythonAtLeast "3.9";
 
   src = fetchFromGitHub {
     rev = version;
-    owner = "ludios";
-    repo = "wpull";
-    sha256 = "1j96avm0ynbazypzp766wh26n4qc73y7wgsiqfrdfl6x7rx20wgf";
+    owner = "ArchiveTeam";
+    repo = "ludios_wpull";
+    sha256 = "0j4dir0dgg8pkf4d1znicz6wyyi1wzij50r21z838cycsdr54j4c";
   };
 
   propagatedBuildInputs = [ chardet dnspython html5-parser lxml namedlist sqlalchemy tornado Yapsy ];
@@ -33,7 +33,7 @@ buildPythonPackage rec {
 
   meta = {
     description = "Web crawler; fork of wpull used by grab-site";
-    homepage = "https://github.com/ludios/wpull";
+    homepage = "https://github.com/ArchiveTeam/ludios_wpull";
     license = lib.licenses.gpl3;
     maintainers = with lib.maintainers; [ ivan ];
     broken = lib.versions.major tornado.version != "4";
diff --git a/nixpkgs/pkgs/development/python-modules/luftdaten/default.nix b/nixpkgs/pkgs/development/python-modules/luftdaten/default.nix
index 71daa4bdbfa4..c8ca8254b363 100644
--- a/nixpkgs/pkgs/development/python-modules/luftdaten/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/luftdaten/default.nix
@@ -1,20 +1,41 @@
-{ lib, buildPythonPackage, isPy3k, fetchPypi, aiohttp, async-timeout }:
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, poetry-core
+, httpx
+, pytest-asyncio
+, pytest-httpx
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "luftdaten";
-  version = "0.6.5";
+  version = "0.7.1";
+  format = "pyproject";
 
-  disabled = !isPy3k;
+  disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-5SFb+psULyg9UKVY3oJPNLF3TGS/W+Bxoj79iTzReL4=";
+  src = fetchFromGitHub {
+    owner = "home-assistant-ecosystem";
+    repo = "python-luftdaten";
+    rev = version;
+    sha256 = "sha256-76Y5TJet0WtzYXuK8Og0rmpsUIlXK7b37oesh+MliU8=";
   };
 
-  propagatedBuildInputs = [ aiohttp async-timeout ];
+  nativeBuildInputs = [
+    poetry-core
+  ];
 
-  # No tests implemented
-  doCheck = false;
+  propagatedBuildInputs = [
+    httpx
+  ];
+
+  checkInputs = [
+    pytest-asyncio
+    pytest-httpx
+    pytestCheckHook
+  ];
 
   pythonImportsCheck = [ "luftdaten" ];
 
@@ -22,6 +43,6 @@ buildPythonPackage rec {
     description = "Python API for interacting with luftdaten.info";
     homepage = "https://github.com/home-assistant-ecosystem/python-luftdaten";
     license = licenses.mit;
-    maintainers = with maintainers; [ dotlambda ];
+    maintainers = with maintainers; [ dotlambda fab ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/luhn/default.nix b/nixpkgs/pkgs/development/python-modules/luhn/default.nix
new file mode 100644
index 000000000000..09ab90a3b177
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/luhn/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "luhn";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "mmcloughlin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-ZifaCjOVhWdXuzi5n6V+6eVN5vrEHKgUdpSOXoMyR18=";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "test.py"
+  ];
+
+  pythonImportsCheck = [
+    "luhn"
+  ];
+
+  meta = with lib; {
+    description = "Python module for generate and verify Luhn check digits";
+    homepage = "https://github.com/mmcloughlin/luhn";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lupupy/default.nix b/nixpkgs/pkgs/development/python-modules/lupupy/default.nix
index a1248d331426..23ec7c33c205 100644
--- a/nixpkgs/pkgs/development/python-modules/lupupy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/lupupy/default.nix
@@ -1,7 +1,7 @@
 { lib
 , buildPythonPackage
 , colorlog
-, demjson
+, pyyaml
 , fetchPypi
 , pythonOlder
 , requests
@@ -9,26 +9,28 @@
 
 buildPythonPackage rec {
   pname = "lupupy";
-  version = "0.0.21";
+  version = "0.1.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0cpamb1fp84psiqm7xr156zi4f2fv2wijbjjyk6w87z8fl2aw8xc";
+    sha256 = "sha256-bWBiM+u5wl9fWqL8k+R2IaYXSNnc4IxgWgUzyJVxkKk=";
   };
 
   propagatedBuildInputs = [
     colorlog
-    demjson
+    pyyaml
     requests
   ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "lupupy" ];
+  pythonImportsCheck = [
+    "lupupy"
+  ];
 
   meta = with lib; {
     description = "Python module to control Lupusec alarm control panels";
diff --git a/nixpkgs/pkgs/development/python-modules/luxor/default.nix b/nixpkgs/pkgs/development/python-modules/luxor/default.nix
new file mode 100644
index 000000000000..ebebdd0d9bc9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/luxor/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, pytest-aiohttp
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "luxor";
+  version = "0.0.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "GIwVEOKZAudTu2M3OM4LFVR8e22q52m/AN0anskdmWQ=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  checkInputs = [
+    pytest-aiohttp
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "luxor"
+  ];
+
+  meta = with lib; {
+    description = "Python module to control FX Luminaire controllers";
+    homepage = "https://github.com/pbozeman/luxor";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/luxtronik/default.nix b/nixpkgs/pkgs/development/python-modules/luxtronik/default.nix
new file mode 100644
index 000000000000..9aab07b01665
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/luxtronik/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, poetry-core
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "luxtronik";
+  version = "0.3.9";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "Bouni";
+    repo = "python-luxtronik";
+    rev = version;
+    sha256 = "mScdTQ82tV5fyy1S0YDDOz1UC4VB0OmSXD5gHp53WsE=";
+  };
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "luxtronik"
+  ];
+
+  meta = with lib; {
+    description = "Python library to interact with Luxtronik heatpump controllers";
+    homepage = "https://github.com/Bouni/python-luxtronik";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lxc/default.nix b/nixpkgs/pkgs/development/python-modules/lxc/default.nix
deleted file mode 100644
index 4534e0a01ef3..000000000000
--- a/nixpkgs/pkgs/development/python-modules/lxc/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, pkgs
-}:
-
-buildPythonPackage {
-  pname = "python-lxc-unstable";
-  version = "2016-08-25";
-  disabled = isPy3k;
-
-  src = fetchFromGitHub {
-    owner = "lxc";
-    repo = "python2-lxc";
-    rev = "0553f05d23b56b59bf3015fa5e45bfbfab9021ef";
-    sha256 = "0p9kb20xvq91gx2wfs3vppb7vsp8kmd90i3q95l4nl1y4aismdn4";
-  };
-
-  buildInputs = [ pkgs.lxc ];
-
-  meta = with lib; {
-    description = "Out of tree python 2.7 binding for liblxc";
-    homepage = "https://github.com/lxc/python2-lxc";
-    license = licenses.lgpl2;
-    maintainers = with maintainers; [ mic92 ];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/lxml/default.nix b/nixpkgs/pkgs/development/python-modules/lxml/default.nix
index 984219b802b7..60deaa5af127 100644
--- a/nixpkgs/pkgs/development/python-modules/lxml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/lxml/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "lxml";
-  version = "4.6.3";
+  version = "4.6.4-5";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
-    rev = "${pname}-${version}";
-    sha256 = "1rhkv75qr4ij3653l97sy752gyp6f20sxfpiqp1vp08fpy47q8qn";
+    rev = "lxml-${version}";
+    sha256 = "159cc48nl40qsx8pc8sasgny5xc0s3y0xrq3w3aw53s3ijncsgfl";
   };
 
   # setuptoolsBuildPhase needs dependencies to be passed through nativeBuildInputs
diff --git a/nixpkgs/pkgs/development/python-modules/lz4/default.nix b/nixpkgs/pkgs/development/python-modules/lz4/default.nix
index 180264f102d0..cc84fa75c699 100644
--- a/nixpkgs/pkgs/development/python-modules/lz4/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/lz4/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "python-lz4";
-  version = "3.1.3";
+  version = "3.1.10";
 
   # get full repository inorder to run tests
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
-    rev = "v${version}";
-    sha256 = "009c4rbyj4cjb8fznccfpr5wrzdmi56wq990yjh22n0z2qqylmkf";
+    rev = version;
+    sha256 = "0a4gic8xh3simkk5k8302rxwf765pr6y63k3js79mkl983vpxcim";
   };
 
   nativeBuildInputs = [ setuptools-scm pkgconfig pytest-runner ];
diff --git a/nixpkgs/pkgs/development/python-modules/m3u8/default.nix b/nixpkgs/pkgs/development/python-modules/m3u8/default.nix
index decad482bef1..e69bf61657fa 100644
--- a/nixpkgs/pkgs/development/python-modules/m3u8/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/m3u8/default.nix
@@ -1,24 +1,34 @@
-{ lib, buildPythonPackage, python, fetchFromGitHub, requests, iso8601, bottle, pytest, pytest-cov }:
+{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch, requests, iso8601, bottle, pytestCheckHook }:
 
 buildPythonPackage rec {
   pname = "m3u8";
-  version = "0.6.0";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "globocom";
     repo = pname;
     rev = version;
-    sha256 = "0cmg993icpsa1b19kljxvjwhs167bsqrs0ad4wnwsi8qq6na5d4p";
+    sha256 = "sha256-EfHhmV2otEgEy2OVohS+DF7dk97GFdWZ4cFCERZBmlA=";
   };
 
-  checkInputs = [ bottle pytest pytest-cov ];
-
-  checkPhase = ''
-    pytest tests/test_{parser,model,variant_m3u8}.py
-  '';
+  patches = [
+    # Fix hardcoded /tmp dir (fix build on Hydra)
+    (fetchpatch {
+      url = "https://github.com/globocom/m3u8/commit/cf7ae5fda4681efcea796cd7c51c02f152c36009.patch";
+      sha256 = "sha256-SEETpIJQddid8D//6DVrSGs/BqDeMOzufE0bBrm+/xY=";
+    })
+  ];
 
   propagatedBuildInputs = [ requests iso8601 ];
 
+  checkInputs = [ bottle pytestCheckHook ];
+
+  pytestFlagsArray = [
+    "tests/test_parser.py"
+    "tests/test_model.py"
+    "tests/test_variant_m3u8.py"
+  ];
+
   meta = with lib; {
     homepage = "https://github.com/globocom/m3u8";
     description = "Python m3u8 parser";
diff --git a/nixpkgs/pkgs/development/python-modules/maestral/default.nix b/nixpkgs/pkgs/development/python-modules/maestral/default.nix
index 054a21f539a1..90494de82233 100644
--- a/nixpkgs/pkgs/development/python-modules/maestral/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/maestral/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "maestral";
-  version = "1.5.0";
+  version = "1.5.2";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "SamSchott";
     repo = "maestral";
     rev = "v${version}";
-    sha256 = "sha256-OMqCwJTsg4RMK138cKDYz+iQV0HvelGTZfE4m+UkSzE=";
+    sha256 = "sha256-nFXgvFLw6ru/Sw3+LoZ7V09dyn0L21We/Dlwib2gZB8=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/magicgui/default.nix b/nixpkgs/pkgs/development/python-modules/magicgui/default.nix
new file mode 100644
index 000000000000..03ca9d791597
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/magicgui/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools-scm
+, pytestCheckHook
+, pytest-mypy-plugins
+, typing-extensions
+, qtpy
+, pyside2
+, psygnal
+, docstring-parser
+}: buildPythonPackage rec {
+  pname = "magicgui";
+  version = "0.3.0";
+  src = fetchFromGitHub {
+    owner = "napari";
+    repo = "magicgui";
+    rev = "v${version}";
+    sha256 = "sha256-DvL1szk2RoCrpisjp0BVNL6qFZtYc2oYDenX59Cxbug=";
+  };
+  nativeBuildInputs = [ setuptools-scm ];
+  propagatedBuildInputs = [ typing-extensions qtpy pyside2 psygnal docstring-parser ];
+  checkInputs = [ pytestCheckHook pytest-mypy-plugins ];
+  doCheck = false; # Reports "Fatal Python error"
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  meta = with lib; {
+    description = "Build GUIs from python functions, using magic.  (napari/magicgui)";
+    homepage = "https://github.com/napari/magicgui";
+    license = licenses.mit;
+    maintainers = with maintainers; [ SomeoneSerge ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mahotas/default.nix b/nixpkgs/pkgs/development/python-modules/mahotas/default.nix
index 707ad9f3c8f6..efc1bec76731 100644
--- a/nixpkgs/pkgs/development/python-modules/mahotas/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mahotas/default.nix
@@ -1,21 +1,43 @@
-{ buildPythonPackage, fetchFromGitHub, pillow, scipy, numpy, pytestCheckHook, imread, freeimage, lib, stdenv }:
+{ buildPythonPackage
+, fetchFromGitHub
+, fetchpatch
+, pillow
+, scipy
+, numpy
+, pytestCheckHook
+, imread
+, freeimage
+, lib
+, stdenv
+}:
 
 buildPythonPackage rec {
   pname = "mahotas";
-  version = "1.4.11";
+  version = "1.4.12";
 
   src = fetchFromGitHub {
     owner = "luispedro";
     repo = "mahotas";
     rev = "v${version}";
-    sha256 = "029gvy1fb855pvxvy8zwj44k4s7qpqi0161bg5wldfiprrysn1kw";
+    sha256 = "1n19yha1cqyx7hnlici1wkl7n68dh0vbpsyydfhign2c0w9jvg42";
   };
 
+  patches = [
+    (fetchpatch {
+      name = "fix-freeimage-tests.patch";
+      url = "https://github.com/luispedro/mahotas/commit/08cc4aa0cbd5dbd4c37580d52b822810c03b2c69.patch";
+      sha256 = "0389sz7fyl8h42phw8sn4pxl4wc3brcrj9d05yga21gzil9bfi23";
+      excludes = [ "ChangeLog" ];
+    })
+  ];
+
   propagatedBuildInputs = [ numpy imread pillow scipy freeimage ];
   checkInputs = [ pytestCheckHook ];
 
   postPatch = ''
-    substituteInPlace mahotas/io/freeimage.py --replace "/opt/local/lib" "${freeimage}/lib"
+    substituteInPlace mahotas/io/freeimage.py \
+      --replace "ctypes.util.find_library('freeimage')" 'True' \
+      --replace 'ctypes.CDLL(libname)' 'np.ctypeslib.load_library("libfreeimage", "${freeimage}/lib")'
   '';
 
   # tests must be run in the build directory
@@ -31,6 +53,11 @@ buildPythonPackage rec {
     "test_haralick3d"
   ];
 
+  pythonImportsCheck = [
+    "mahotas"
+    "mahotas.freeimage"
+  ];
+
   disabled = stdenv.isi686; # Failing tests
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/mailman-hyperkitty/default.nix b/nixpkgs/pkgs/development/python-modules/mailman-hyperkitty/default.nix
index 3bf996fa714a..117ec4fb4361 100644
--- a/nixpkgs/pkgs/development/python-modules/mailman-hyperkitty/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mailman-hyperkitty/default.nix
@@ -1,26 +1,53 @@
-{ lib, buildPythonPackage, fetchPypi, mailman, mock }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mailman
+, mock
+, nose2
+, python
+, pythonOlder
+, requests
+, zope_interface
+}:
 
 buildPythonPackage rec {
   pname = "mailman-hyperkitty";
-  version = "1.1.0";
+  version = "1.2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1lfqa9admhvdv71f528jmz2wl0i5cv77v6l64px2pm4zqr9ckkjx";
+    sha256 = "sha256-EQBx1KX3z/Wv3QAHOi+s/ihLOjpiupIQBYyE6IPbJto=";
   };
 
-  propagatedBuildInputs = [ mailman ];
-  checkInputs = [ mock ];
+  propagatedBuildInputs = [
+    mailman
+    requests
+    zope_interface
+  ];
+
+  checkInputs = [
+    mock
+    nose2
+  ];
 
   checkPhase = ''
-    python -m nose2 -v
+    ${python.interpreter} -m nose2 -v
   '';
+
+  # There is an AssertionError
   doCheck = false;
 
+  pythonImportsCheck = [
+    "mailman_hyperkitty"
+  ];
+
   meta = with lib; {
     description = "Mailman archiver plugin for HyperKitty";
     homepage = "https://gitlab.com/mailman/mailman-hyperkitty";
-    license = licenses.gpl3;
+    license = licenses.gpl3Plus;
     maintainers = with maintainers; [ globin qyliss ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/mailsuite/default.nix b/nixpkgs/pkgs/development/python-modules/mailsuite/default.nix
index 23167af45b0e..8d1046387ef0 100644
--- a/nixpkgs/pkgs/development/python-modules/mailsuite/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mailsuite/default.nix
@@ -7,7 +7,7 @@
 , dnspython
 , html2text
 , mail-parser
-, IMAPClient
+, imapclient
 }:
 
 buildPythonPackage rec {
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     dnspython
     html2text
     mail-parser
-    IMAPClient
+    imapclient
   ];
 
   pythonImportsCheck = [ "mailsuite" ];
diff --git a/nixpkgs/pkgs/development/python-modules/makefun/default.nix b/nixpkgs/pkgs/development/python-modules/makefun/default.nix
index 12655c0d6de1..aeb13abd0dfe 100644
--- a/nixpkgs/pkgs/development/python-modules/makefun/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/makefun/default.nix
@@ -2,24 +2,30 @@
 , fetchPypi
 , buildPythonPackage
 , setuptools-scm
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "makefun";
-  version = "1.11.3";
+  version = "1.12.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "033eed65e2c1804fca84161a38d1fc8bb8650d32a89ac1c5dc7e54b2b2c2e88c";
+    sha256 = "4d0e90ca3fdbdeb6a4a0891e2da7d4b8e80386e19e6db91ce29b8aa5c876ecfe";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "pytest-runner" ""
+  '';
 
-  # Disabling tests for now due to various (transitive) dependencies on modules
-  # from @smarie which are, as of yet, not part of nixpkgs. Also introduces
-  # a tricky dependency: makefun tests depend on pytest-cases, installing
-  # pytest-cases depends on makefun.
-  doCheck = false;
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
 
   pythonImportsCheck = [ "makefun" ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/manimpango/default.nix b/nixpkgs/pkgs/development/python-modules/manimpango/default.nix
new file mode 100644
index 000000000000..0b84726d5a5f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/manimpango/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, lib, buildPythonPackage, fetchFromGitHub, python, pkg-config, pango, cython, AppKit, pytestCheckHook }:
+
+buildPythonPackage rec {
+  pname = "manimpango";
+  version = "0.4.0.post0";
+
+  src = fetchFromGitHub {
+    owner = "ManimCommunity";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1avlh6wk6a2mq6fl2idqk2z5bncglyla8p9m7az0430k9vdv4qks";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.cfg --replace "--cov --no-cov-on-fail" ""
+  '';
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ pango ] ++ lib.optionals stdenv.isDarwin [ AppKit ];
+  propagatedBuildInputs = [
+    cython
+  ];
+
+  preBuild = ''
+    ${python.interpreter} setup.py build_ext --inplace
+  '';
+
+  checkInputs = [ pytestCheckHook ];
+  pythonImportsCheck = [ "manimpango" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/ManimCommunity/ManimPango";
+    license = licenses.gpl3Plus;
+    description = "Binding for Pango";
+    maintainers = [ maintainers.angustrau ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/manticore/default.nix b/nixpkgs/pkgs/development/python-modules/manticore/default.nix
index 9e0938fb1486..0c36f2cc6cc6 100644
--- a/nixpkgs/pkgs/development/python-modules/manticore/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/manticore/default.nix
@@ -1,38 +1,46 @@
 { lib
 , buildPythonPackage
-, fetchFromGitHub
 , capstone
 , crytic-compile
+, fetchFromGitHub
+, intervaltree
 , ply
 , prettytable
+, protobuf
 , pyelftools
 , pyevmasm
 , pysha3
+, pytestCheckHook
+, pythonOlder
 , pyyaml
 , rlp
 , stdenv
 , unicorn
 , wasm
 , yices
-, pytestCheckHook
 , z3
 }:
 
 buildPythonPackage rec {
   pname = "manticore";
-  version = "0.3.5";
+  version = "0.3.6";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "trailofbits";
     repo = "manticore";
     rev = version;
-    sha256 = "0z2nhfcraa5dx6srbrw8s11awh2la0x7d88yw9in8g548nv6qa69";
+    sha256 = "sha256-L112YwrBcdcLBeBsPLWt3C57u2WDvGLq50EzW9ojdyg=";
   };
 
   propagatedBuildInputs = [
     crytic-compile
+    intervaltree
     ply
     prettytable
+    protobuf
     pyevmasm
     pysha3
     pyyaml
@@ -49,22 +57,29 @@ buildPythonPackage rec {
     sed -ie s/z3-solver// setup.py
   '';
 
-  checkInputs = [ pytestCheckHook ];
-  preCheck = "export PATH=${yices}/bin:${z3}/bin:$PATH";
-  pytestFlagsArray = [
-    "--ignore=tests/ethereum" # TODO: enable when solc works again
-    "--ignore=tests/ethereum_bench"
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    export PATH=${yices}/bin:${z3}/bin:$PATH
+  '';
+
+  disabledTestPaths = [
+    "tests/ethereum" # Enable when solc works again
+    "tests/ethereum_bench"
   ] ++ lib.optionals (!stdenv.isLinux) [
-    "--ignore=tests/native"
-    "--ignore=tests/other/test_locking.py"
-    "--ignore=tests/other/test_state_introspection.py"
+    "tests/native"
+    "tests/other/test_locking.py"
+    "tests/other/test_state_introspection.py"
   ];
+
   disabledTests = [
-    # failing tests
+    # Failing tests
     "test_chmod"
     "test_timeout"
     "test_wasm_main"
-    # slow tests
+    # Slow tests
     "testmprotectFailSymbReading"
     "test_ConstraintsForking"
     "test_resume"
@@ -97,6 +112,13 @@ buildPythonPackage rec {
     "test_implicit_call"
     "test_trace"
     "test_plugin"
+    # Tests are failing with latest unicorn
+    "Aarch64UnicornInstructions"
+    "test_integration_resume"
+  ];
+
+  pythonImportsCheck = [
+    "manticore"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/mapsplotlib/default.nix b/nixpkgs/pkgs/development/python-modules/mapsplotlib/default.nix
deleted file mode 100644
index 28a6e9c0c5c4..000000000000
--- a/nixpkgs/pkgs/development/python-modules/mapsplotlib/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ lib
-, buildPythonPackage
-, isPy3k
-, fetchPypi
-, matplotlib
-, scipy
-, pandas
-, requests
-, pillow
-}:
-
-buildPythonPackage rec {
-  pname = "mapsplotlib";
-  version = "1.2.1";
-
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "7650754e3175f13a1cb4406a62e4cfeb424036377992b9c3c2e3f6c2404d06b3";
-  };
-
-  propagatedBuildInputs = [ matplotlib scipy pandas requests pillow ];
-
-  meta = with lib; {
-    description = "Custom Python plots on a Google Maps background";
-    homepage = "https://github.com/tcassou/mapsplotlib";
-    license = licenses.mit;
-    maintainers = [ maintainers.rob ];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/mariadb/default.nix b/nixpkgs/pkgs/development/python-modules/mariadb/default.nix
new file mode 100644
index 000000000000..251b69e8e67c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mariadb/default.nix
@@ -0,0 +1,30 @@
+{ buildPythonPackage, fetchPypi, libmysqlclient, lib, pythonOlder }:
+
+buildPythonPackage rec {
+  pname = "mariadb";
+  version = "1.0.9";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-Aqmz0KB26aDQ6hxItF7Qm2R14rak6Mge2fHoLK87/Ck=";
+    extension = "zip";
+  };
+
+  nativeBuildInputs = [
+    libmysqlclient
+  ];
+
+  # Requires a running MariaDB instance
+  doCheck = false;
+
+  pythonImportsCheck = [ "mariadb" ];
+
+  meta = with lib; {
+    description = "MariaDB Connector/Python";
+    homepage = "https://github.com/mariadb-corporation/mariadb-connector-python";
+    license = licenses.lgpl21Only;
+    maintainers = with maintainers; [ vanilla ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/default.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/default.nix
deleted file mode 100644
index 187e3a646a02..000000000000
--- a/nixpkgs/pkgs/development/python-modules/marionette-harness/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, mozprofile
-, mozversion
-, moztest
-, manifestparser
-, marionette_driver
-, browsermob-proxy
-, wptserve
-}:
-
-buildPythonPackage rec {
-  pname = "marionette-harness";
-  version = "5.0.0";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "041cd779ae383fb5c56f2bb44824f4e80ba895febd9a3f21570ac274221c82e0";
-  };
-
-  propagatedBuildInputs = [ mozprofile mozversion browsermob-proxy moztest
-    wptserve manifestparser marionette_driver ];
-
-  meta = {
-    description = "Mozilla Marionette protocol test automation harness";
-    homepage = "https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette";
-    license = lib.licenses.mpl20;
-    maintainers = with lib.maintainers; [ raskin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/marionette_driver.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/marionette_driver.nix
deleted file mode 100644
index 28193528ed28..000000000000
--- a/nixpkgs/pkgs/development/python-modules/marionette-harness/marionette_driver.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, mozversion
-, mozrunner
-}:
-
-buildPythonPackage rec {
-  pname = "marionette_driver";
-  version = "3.0.0";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "99ca2513d4e2ca29a08e550346f23947a50627a2b02f6ad36a4550e779fa0ce8";
-  };
-
-  propagatedBuildInputs = [ mozversion mozrunner ];
-
-  meta = {
-    description = "Mozilla Marionette driver";
-    homepage = "https://wiki.mozilla.org/Auto-tools/Projects/Marionette";
-    license = lib.licenses.mpl20;
-    maintainers = with lib.maintainers; [ raskin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozcrash.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozcrash.nix
deleted file mode 100644
index 18b39307a17e..000000000000
--- a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozcrash.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mozfile
-, mozlog
-}:
-
-buildPythonPackage rec {
-  pname = "mozcrash";
-  version = "1.1.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "8c2d2f32bd6e0ba3644f5d16e427444d8cb51ec1e9baa340a33e10687307f8c4";
-  };
-
-  propagatedBuildInputs = [ mozfile mozlog ];
-
-  meta = {
-    description = "Minidump stack trace extractor";
-    homepage = "https://wiki.mozilla.org/Auto-tools/Projects/Mozbase";
-    license = lib.licenses.mpl20;
-    maintainers = with lib.maintainers; [ raskin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozdevice.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozdevice.nix
deleted file mode 100644
index 56c8fc5254d2..000000000000
--- a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozdevice.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mozlog
-, moznetwork
-, mozprocess
-}:
-
-buildPythonPackage rec {
-  pname = "mozdevice";
-  version = "3.0.7";
-  format = "wheel";
-
-  src = fetchPypi {
-    inherit pname version format;
-    sha256 = "1n7l3drdh3rm3320v98c9hhh37ljk9l861hyw18psca7jdd717n5";
-  };
-
-  propagatedBuildInputs = [ mozlog moznetwork mozprocess ];
-
-  meta = {
-    description = "Mozilla-authored device management";
-    homepage = "https://wiki.mozilla.org/Auto-tools/Projects/Mozbase";
-    license = lib.licenses.mpl20;
-    maintainers = with lib.maintainers; [ raskin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozfile.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozfile.nix
deleted file mode 100644
index 2cce0a221244..000000000000
--- a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozfile.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-}:
-
-buildPythonPackage rec {
-  pname = "mozfile";
-  version = "2.1.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "e5dc835582ea150e35ecd57e9d86cb707d3aa3b2505679db7332326dd49fd6b8";
-  };
-
-  propagatedBuildInputs = [ six ];
-
-  # mozhttpd -> moznetwork -> mozinfo -> mozfile
-  doCheck = false;
-
-  meta = {
-    description = "File utilities for Mozilla testing";
-    homepage = "https://wiki.mozilla.org/Auto-tools/Projects/Mozbase";
-    license = lib.licenses.mpl20;
-    maintainers = with lib.maintainers; [ raskin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozhttpd.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozhttpd.nix
deleted file mode 100644
index a7cbb7ece08c..000000000000
--- a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozhttpd.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, moznetwork
-}:
-
-buildPythonPackage rec {
-  pname = "mozhttpd";
-  version = "0.7.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "3e2a9b4d6c007a1a9fb729d6e95b5404d138914727747e10155426492dced975";
-  };
-
-  propagatedBuildInputs = [ moznetwork ];
-
-  meta = {
-    description = "Webserver for Mozilla testing";
-    homepage = "https://wiki.mozilla.org/Auto-tools/Projects/Mozbase";
-    license = lib.licenses.mpl20;
-    maintainers = with lib.maintainers; [ raskin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozinfo.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozinfo.nix
deleted file mode 100644
index 99f3afc31f61..000000000000
--- a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozinfo.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, mozfile
-}:
-
-buildPythonPackage rec {
-  pname = "mozinfo";
-  version = "1.1.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "4525c26350fb85c26b38c5f853a19f47b17b49a74de363d285d54258972a4cbc";
-  };
-
-  disabled = isPy3k;
-
-  propagatedBuildInputs = [ mozfile ];
-
-  meta = with lib; {
-    description = "System information utilities for Mozilla testing";
-    homepage = "https://wiki.mozilla.org/Auto-tools/Projects/Mozbase";
-    license = licenses.mpl20;
-    maintainers = with maintainers; [ raskin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozlog.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozlog.nix
deleted file mode 100644
index ee1aed055e74..000000000000
--- a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozlog.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, blessings
-, mozterm
-, six
-, mozfile
-}:
-
-buildPythonPackage rec {
-  pname = "mozlog";
-  version = "5.0";
-
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0h1hgs13c1w0wvz60400i37m00077li1ky28j7kgx4bl75pkd3sw";
-  };
-
-  propagatedBuildInputs = [ blessings mozterm six ];
-
-  checkInputs = [ mozfile ];
-
-  meta = {
-    description = "Mozilla logging library";
-    homepage = "https://wiki.mozilla.org/Auto-tools/Projects/Mozbase";
-    license = lib.licenses.mpl20;
-    maintainers = with lib.maintainers; [ raskin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/moznetwork.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/moznetwork.nix
deleted file mode 100644
index 6bdc93f680a7..000000000000
--- a/nixpkgs/pkgs/development/python-modules/marionette-harness/moznetwork.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mozlog
-, mozinfo
-}:
-
-buildPythonPackage rec {
-  pname = "moznetwork";
-  version = "1.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0ws20l4ggb6mj7ycwrk5h7hj1jmj3mj0ca48k5jzsa4n042ahwrd";
-  };
-
-  propagatedBuildInputs = [ mozlog mozinfo ];
-
-  meta = {
-    description = "Network utilities for Mozilla testing";
-    homepage = "https://wiki.mozilla.org/Auto-tools/Projects/Mozbase";
-    license = lib.licenses.mpl20;
-    maintainers = with lib.maintainers; [ raskin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozprocess.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozprocess.nix
deleted file mode 100644
index 91ed225ecb80..000000000000
--- a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozprocess.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mozinfo
-}:
-
-buildPythonPackage rec {
-  pname = "mozprocess";
-  version = "1.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "a0fd8367e663d3cac74ee46bffa789667bc8d52f242d81a14522205fa6650cb2";
-  };
-
-  propagatedBuildInputs = [ mozinfo ];
-
-  meta = {
-    description = "Mozilla-authored process handling";
-    homepage = "https://wiki.mozilla.org/Auto-tools/Projects/Mozbase";
-    license = lib.licenses.mpl20;
-    maintainers = with lib.maintainers; [ raskin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozprofile.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozprofile.nix
deleted file mode 100644
index 7075a37263b3..000000000000
--- a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozprofile.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mozlog
-, mozfile
-, mozhttpd
-, wptserve
-}:
-
-buildPythonPackage rec {
-  pname = "mozprofile";
-  version = "2.4.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "09l18x72vahq7il9nj6qj7la2d21vvbcn9szlm3vsvsbkz68w0yk";
-  };
-
-  propagatedBuildInputs = [ mozlog mozfile mozhttpd ];
-
-  checkInputs = [ wptserve ];
-
-  meta = {
-    description = "Mozilla application profile handling library";
-    homepage = "https://wiki.mozilla.org/Auto-tools/Projects/Mozbase";
-    license = lib.licenses.mpl20;
-    maintainers = with lib.maintainers; [ raskin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozrunner.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozrunner.nix
deleted file mode 100644
index fc1d8a7bc7c8..000000000000
--- a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozrunner.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mozdevice
-, mozfile
-, mozinfo
-, mozlog
-, mozprocess
-, mozprofile
-, mozcrash
-}:
-
-buildPythonPackage rec {
-  pname = "mozrunner";
-  version = "7.7.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "04s6w0sp83bn3c6ym75rnlpmcy3yr7d35jxkxhgzmy75gbcps7bi";
-  };
-
-  propagatedBuildInputs = [ mozdevice mozfile mozinfo mozlog mozprocess
-    mozprofile mozcrash ];
-
-  meta = {
-    description = "Mozilla application start/stop helpers";
-    homepage = "https://wiki.mozilla.org/Auto-tools/Projects/Mozbase";
-    license = lib.licenses.mpl20;
-    maintainers = with lib.maintainers; [ raskin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/moztest.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/moztest.nix
deleted file mode 100644
index 1c9f9259d995..000000000000
--- a/nixpkgs/pkgs/development/python-modules/marionette-harness/moztest.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mozinfo
-}:
-
-buildPythonPackage rec {
-  pname = "moztest";
-  version = "0.8";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1pg9pqq4xnn14k1jqbyqg81zag2v66y725537v6hixi41yiqkdas";
-  };
-
-  propagatedBuildInputs = [ mozinfo ];
-
-  meta = {
-    description = "Mozilla test result storage and output";
-    homepage = "https://wiki.mozilla.org/Auto-tools/Projects/Mozbase";
-    license = lib.licenses.mpl20;
-    maintainers = with lib.maintainers; [ raskin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozversion.nix b/nixpkgs/pkgs/development/python-modules/marionette-harness/mozversion.nix
deleted file mode 100644
index 9717a847d359..000000000000
--- a/nixpkgs/pkgs/development/python-modules/marionette-harness/mozversion.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mozlog
-, mozdevice
-}:
-
-buildPythonPackage rec {
-  pname = "mozversion";
-  version = "2.2.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0jczc1yr2yi3mf1qdgpvg9sidp5hf3jplzs4917j65ymvk2zw9na";
-  };
-
-  propagatedBuildInputs = [ mozlog mozdevice ];
-
-  meta = {
-    description = "Application version information library";
-    homepage = "https://wiki.mozilla.org/Auto-tools/Projects/Mozbase";
-    license = lib.licenses.mpl20;
-    maintainers = with lib.maintainers; [ raskin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/markdown-include/default.nix b/nixpkgs/pkgs/development/python-modules/markdown-include/default.nix
new file mode 100644
index 000000000000..389c94fb2381
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/markdown-include/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, markdown
+}:
+
+buildPythonPackage rec {
+  pname = "markdown-include";
+  version = "0.6.0";
+  format = "setuptools";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "18p4qfhazvskcg6xsdv1np8m1gc1llyabp311xzhqy7p6q76hpbg";
+  };
+
+  propagatedBuildInputs = [
+    markdown
+  ];
+
+  pythonImportsCheck = [
+    "markdown_include"
+  ];
+
+  doCheck = false; # no tests
+
+  meta = with lib; {
+    description = "Extension to Python-Markdown which provides an include function";
+    homepage = "https://github.com/cmacmackin/markdown-include";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/markdown-it-py/default.nix b/nixpkgs/pkgs/development/python-modules/markdown-it-py/default.nix
index 8ed57f3ff031..f056c104e759 100644
--- a/nixpkgs/pkgs/development/python-modules/markdown-it-py/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/markdown-it-py/default.nix
@@ -1,19 +1,20 @@
 { lib
+, attrs
 , buildPythonPackage
 , fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, attrs
 , linkify-it-py
+, mdurl
 , psutil
 , pytest-benchmark
 , pytest-regressions
+, pytestCheckHook
+, pythonOlder
 , typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "markdown-it-py";
-  version = "1.1.0";
+  version = "2.0.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -22,11 +23,16 @@ buildPythonPackage rec {
     owner = "executablebooks";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0h7rn3rcqfwmnqs97qczwkw9w5g4df8bgn6sw7k149svfqgrkf56";
+    sha256 = "sha256-ahg+aAVpAh07PZ1mfrne0EP9K2J4tb8eLp5XXFpWp00=";
   };
 
-  propagatedBuildInputs = [ attrs linkify-it-py ]
-    ++ lib.optional (pythonOlder "3.8") typing-extensions;
+  propagatedBuildInputs = [
+    attrs
+    linkify-it-py
+    mdurl
+  ] ++ lib.optional (pythonOlder "3.8") [
+    typing-extensions
+  ];
 
   checkInputs = [
     psutil
@@ -34,11 +40,14 @@ buildPythonPackage rec {
     pytest-regressions
     pytestCheckHook
   ];
-  pythonImportsCheck = [ "markdown_it" ];
+
+  pythonImportsCheck = [
+    "markdown_it"
+  ];
 
   meta = with lib; {
-    description = "Markdown parser done right";
-    homepage = "https://markdown-it-py.readthedocs.io/en/latest";
+    description = "Markdown parser in Python";
+    homepage = "https://markdown-it-py.readthedocs.io/";
     changelog = "https://github.com/executablebooks/markdown-it-py/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ bhipple ];
diff --git a/nixpkgs/pkgs/development/python-modules/markdown/3_1.nix b/nixpkgs/pkgs/development/python-modules/markdown/3_1.nix
index eb9b2e59ec81..13ed2f1744a2 100644
--- a/nixpkgs/pkgs/development/python-modules/markdown/3_1.nix
+++ b/nixpkgs/pkgs/development/python-modules/markdown/3_1.nix
@@ -6,7 +6,6 @@
 , pyyaml
 , pythonOlder
 , importlib-metadata
-, isPy3k
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/markdown/default.nix b/nixpkgs/pkgs/development/python-modules/markdown/default.nix
index c1eff88b926d..83a4f224f2fb 100644
--- a/nixpkgs/pkgs/development/python-modules/markdown/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/markdown/default.nix
@@ -8,17 +8,18 @@
 }:
 
 buildPythonPackage rec {
-  pname = "Markdown";
-  version = "3.3.4";
+  pname = "markdown";
+  version = "3.3.5";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "31b5b491868dcc87d6c24b7e3d19a0d730d59d3e46f4eea6430a321bed387a49";
+    pname = "Markdown";
+    inherit version;
+    sha256 = "sha256-JulUa/vN5fzQcr2PYSycG24md8uKrb32UgZnT0bd4Gk=";
   };
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [
     importlib-metadata
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/mask-rcnn/default.nix b/nixpkgs/pkgs/development/python-modules/mask-rcnn/default.nix
index 4c500a18515a..2ef6ff5c56d9 100644
--- a/nixpkgs/pkgs/development/python-modules/mask-rcnn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mask-rcnn/default.nix
@@ -1,10 +1,11 @@
 { buildPythonPackage
 , cython
 , fetchFromGitHub
+, fetchpatch
 , h5py
 , imgaug
 , ipython
-, Keras
+, keras
 , lib
 , matplotlib
 , numpy
@@ -12,7 +13,7 @@
 , pillow
 , scikitimage
 , scipy
-, tensorflow_2
+, tensorflow
 }:
 
 buildPythonPackage rec {
@@ -26,20 +27,36 @@ buildPythonPackage rec {
     sha256 = "13s3q9yh2q9m9vyksd269mww3bni4q2w7q5l419q70ca075qp8zp";
   };
 
+  patches = [
+    # Fix for TF2:
+    # https://github.com/matterport/Mask_RCNN/issues/2734
+    (fetchpatch {
+      url = "https://github.com/BupyeongHealer/Mask_RCNN_tf_2.x/commit/7957839fe2b248f2f22c7e991ead12068ddc6cfc.diff";
+      excludes = [ "mrcnn/model.py" ];
+      sha256 = "sha256-70BGrx6X1uJDA2025f0YTlreT2uB3n35yIzuhf+ypVc=";
+    })
+  ];
+
+  # Fix for recent Keras
+  postPatch = ''
+    substituteInPlace mrcnn/model.py \
+      --replace "KE." "KL."
+  '';
+
   nativeBuildInputs = [ cython ];
 
   propagatedBuildInputs = [
     h5py
     imgaug
     ipython
-    Keras
+    keras
     matplotlib
     numpy
     opencv3
     pillow
     scikitimage
     scipy
-    tensorflow_2 # Keras only supports tensorflow 2 now
+    tensorflow
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/mathlibtools/default.nix b/nixpkgs/pkgs/development/python-modules/mathlibtools/default.nix
index 969a91870b0f..517d74563aea 100644
--- a/nixpkgs/pkgs/development/python-modules/mathlibtools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mathlibtools/default.nix
@@ -1,17 +1,17 @@
 { lib, buildPythonPackage, fetchPypi, PyGithub, GitPython, toml, click, tqdm,
-  paramiko, networkx, pydot, pyyaml }:
+  networkx, pydot, pyyaml, atomicwrites }:
 
 buildPythonPackage rec {
   pname = "mathlibtools";
-  version = "1.0.0";
+  version = "1.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "da41c65e206f55b1faea303581fc11215e52d6e6990b827336b2e1eb82aad96c";
+    sha256 = "789f070f35424e89e4f2e2c007382250133cc48877627e37c5c463bcf4a1b58a";
   };
 
   propagatedBuildInputs = [
-    PyGithub GitPython toml click tqdm paramiko networkx pydot pyyaml
+    PyGithub GitPython toml click tqdm networkx pydot pyyaml atomicwrites
   ];
 
   # requires internet access
diff --git a/nixpkgs/pkgs/development/python-modules/matlink-gpapi/default.nix b/nixpkgs/pkgs/development/python-modules/matlink-gpapi/default.nix
new file mode 100644
index 000000000000..1f8533748965
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/matlink-gpapi/default.nix
@@ -0,0 +1,35 @@
+{ buildPythonPackage
+, cryptography
+, fetchPypi
+, lib
+, pythonOlder
+, protobuf
+, pycryptodome
+, requests
+}:
+
+buildPythonPackage rec {
+  version = "0.4.4.5";
+  pname = "matlink-gpapi";
+  disabled = pythonOlder "3.3"; # uses shutil.which(), added in 3.3
+
+  src = fetchPypi {
+    inherit version pname;
+    sha256 = "0s45yb2xiq3pc1fh4bygfgly0fsjk5fkc4wckbckn3ddl7v7vz8c";
+  };
+
+  # package doesn't contain unit tests
+  # scripts in ./test require networking
+  doCheck = false;
+
+  pythonImportsCheck = [ "gpapi.googleplay" ];
+
+  propagatedBuildInputs = [ cryptography protobuf pycryptodome requests ];
+
+  meta = with lib; {
+    homepage = "https://github.com/NoMore201/googleplay-api";
+    license = licenses.gpl3Only;
+    description = "Google Play Unofficial Python API";
+    maintainers = with maintainers; [ schnusch ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/matplotlib-inline/default.nix b/nixpkgs/pkgs/development/python-modules/matplotlib-inline/default.nix
index f4c220dea6c6..9ee23b87ee81 100644
--- a/nixpkgs/pkgs/development/python-modules/matplotlib-inline/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/matplotlib-inline/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "matplotlib-inline";
-  version = "0.1.2";
+  version = "0.1.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0glrhcv1zqck1whsh3p75x0chda588xw22swbmvqalwz7kvmy7gl";
+    sha256 = "a04bfba22e0d1395479f866853ec1ee28eea1485c1d69a6faf00dc3e24ff34ee";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/matplotlib/2.nix b/nixpkgs/pkgs/development/python-modules/matplotlib/2.nix
deleted file mode 100644
index 96d33b681ebc..000000000000
--- a/nixpkgs/pkgs/development/python-modules/matplotlib/2.nix
+++ /dev/null
@@ -1,80 +0,0 @@
-{ lib, stdenv, fetchPypi, writeText, python, buildPythonPackage, pycairo, backports_functools_lru_cache
-, which, cycler, python-dateutil, nose, numpy, pyparsing, sphinx, tornado, kiwisolver
-, freetype, libpng, pkg-config, mock, pytz, pygobject3, gobject-introspection, functools32, subprocess32
-, fetchpatch
-, enableGhostscript ? false, ghostscript, gtk3
-, enableGtk3 ? false, cairo
-# darwin has its own "MacOSX" backend
-, enableTk ? !stdenv.isDarwin, tcl, tk, tkinter, libX11
-, enableQt ? false, pyqt4
-, Cocoa
-, pythonOlder
-}:
-
-buildPythonPackage rec {
-  version = "2.2.3";
-  pname = "matplotlib";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "7355bf757ecacd5f0ac9dd9523c8e1a1103faadf8d33c22664178e17533f8ce5";
-  };
-
-  patches = [
-    # https://github.com/matplotlib/matplotlib/pull/12478
-    (fetchpatch {
-      name = "numpy-1.16-compat.patch";
-      url = "https://github.com/matplotlib/matplotlib/commit/2980184d092382a40ab21f95b79582ffae6e19d6.patch";
-      sha256 = "1c0wj28zy8s5h6qiavx9zzbhlmhjwpzbc3fyyw9039mbnqk0spg2";
-    })
-  ];
-
-  XDG_RUNTIME_DIR = "/tmp";
-
-  nativeBuildInputs = [ pkg-config ];
-
-  buildInputs = [ which sphinx ]
-    ++ lib.optional enableGhostscript ghostscript
-    ++ lib.optional stdenv.isDarwin [ Cocoa ];
-
-  propagatedBuildInputs =
-    [ cycler python-dateutil nose numpy pyparsing tornado freetype kiwisolver
-      libpng mock pytz ]
-    ++ lib.optional (pythonOlder "3.3") backports_functools_lru_cache
-    ++ lib.optionals enableGtk3 [ cairo pycairo gtk3 gobject-introspection pygobject3 ]
-    ++ lib.optionals enableTk [ tcl tk tkinter libX11 ]
-    ++ lib.optionals enableQt [ pyqt4 ]
-    ++ lib.optionals python.isPy2 [ functools32 subprocess32 ];
-
-  passthru.config = {
-    directories = { basedirlist = "."; };
-  };
-  setup_cfg = writeText "setup.cfg" (lib.generators.toINI {} passthru.config);
-  preBuild = ''
-    cp "$setup_cfg" ./setup.cfg
-  '';
-
-  # Matplotlib tries to find Tcl/Tk by opening a Tk window and asking the
-  # corresponding interpreter object for its library paths. This fails if
-  # `$DISPLAY` is not set. The fallback option assumes that Tcl/Tk are both
-  # installed under the same path which is not true in Nix.
-  # With the following patch we just hard-code these paths into the install
-  # script.
-  postPatch =
-    let
-      tcl_tk_cache = ''"${tk}/lib", "${tcl}/lib", "${lib.strings.substring 0 3 tk.version}"'';
-    in
-    lib.optionalString enableTk
-      "sed -i '/self.tcl_tk_cache = None/s|None|${tcl_tk_cache}|' setupext.py";
-
-  # Matplotlib needs to be built against a specific version of freetype in
-  # order for all of the tests to pass.
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Python plotting library, making publication quality plots";
-    homepage    = "https://matplotlib.org/";
-    maintainers = with maintainers; [ lovek323 veprbl ];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/matplotlib/default.nix b/nixpkgs/pkgs/development/python-modules/matplotlib/default.nix
index 0e874d25f679..cc118d9f0ab0 100644
--- a/nixpkgs/pkgs/development/python-modules/matplotlib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/matplotlib/default.nix
@@ -1,7 +1,7 @@
 { lib, stdenv, fetchPypi, writeText, buildPythonPackage, isPy3k, pycairo
 , which, cycler, python-dateutil, numpy, pyparsing, sphinx, tornado, kiwisolver
 , freetype, qhull, libpng, pkg-config, mock, pytz, pygobject3, gobject-introspection
-, certifi, pillow
+, certifi, pillow, fonttools, setuptools-scm, setuptools-scm-git-archive, packaging
 , enableGhostscript ? true, ghostscript, gtk3
 , enableGtk3 ? false, cairo
 # darwin has its own "MacOSX" backend
@@ -17,30 +17,64 @@ let
 in
 
 buildPythonPackage rec {
-  version = "3.4.3";
+  version = "3.5.1";
   pname = "matplotlib";
+  format = "setuptools";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "06032j0ccjxldx4z9kf97qps2g36mfgvy1nap3b9n75kzmnm4kzw";
+    sha256 = "b2e9810e09c3a47b73ce9cab5a72243a1258f61e7900969097a817232246ce1c";
   };
 
   XDG_RUNTIME_DIR = "/tmp";
 
-  nativeBuildInputs = [ pkg-config ];
+  nativeBuildInputs = [
+    pkg-config
+    setuptools-scm
+    setuptools-scm-git-archive
+  ];
 
-  buildInputs = [ which sphinx ]
-    ++ lib.optional enableGhostscript ghostscript
-    ++ lib.optional stdenv.isDarwin [ Cocoa ];
+  buildInputs = [
+    which
+    sphinx
+  ] ++ lib.optional enableGhostscript [
+    ghostscript
+  ] ++ lib.optional stdenv.isDarwin [
+    Cocoa
+  ];
 
-  propagatedBuildInputs =
-    [ cycler python-dateutil numpy pyparsing tornado freetype qhull
-      kiwisolver certifi libpng mock pytz pillow ]
-    ++ lib.optionals enableGtk3 [ cairo pycairo gtk3 gobject-introspection pygobject3 ]
-    ++ lib.optionals enableTk [ tcl tk tkinter libX11 ]
-    ++ lib.optionals enableQt [ pyqt5 ];
+  propagatedBuildInputs = [
+    certifi
+    cycler
+    fonttools
+    freetype
+    kiwisolver
+    libpng
+    mock
+    numpy
+    packaging
+    pillow
+    pyparsing
+    python-dateutil
+    pytz
+    qhull
+    tornado
+  ] ++ lib.optionals enableGtk3 [
+    cairo
+    gobject-introspection
+    gtk3
+    pycairo
+    pygobject3
+  ] ++ lib.optionals enableTk [
+    libX11
+    tcl
+    tk
+    tkinter
+  ] ++ lib.optionals enableQt [
+    pyqt5
+  ];
 
   passthru.config = {
     directories = { basedirlist = "."; };
@@ -52,10 +86,8 @@ buildPythonPackage rec {
       enable_lto = false;
     };
   };
-  setup_cfg = writeText "setup.cfg" (lib.generators.toINI {} passthru.config);
-  preBuild = ''
-    cp "$setup_cfg" ./setup.cfg
-  '';
+
+  MPLSETUPCFG = writeText "mplsetup.cfg" (lib.generators.toINI {} passthru.config);
 
   # Matplotlib tries to find Tcl/Tk by opening a Tk window and asking the
   # corresponding interpreter object for its library paths. This fails if
@@ -74,6 +106,12 @@ buildPythonPackage rec {
       substituteInPlace src/_c_internal_utils.c \
         --replace libX11.so.6 ${libX11}/lib/libX11.so.6 \
         --replace libwayland-client.so.0 ${wayland}/lib/libwayland-client.so.0
+    '' +
+    # avoid matplotlib trying to download dependencies
+    ''
+      echo "[libs]
+      system_freetype=true
+      system_qhull=true" > mplsetup.cfg
     '';
 
   # Matplotlib needs to be built against a specific version of freetype in
@@ -86,5 +124,4 @@ buildPythonPackage rec {
     license     = with licenses; [ psfl bsd0 ];
     maintainers = with maintainers; [ lovek323 veprbl ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/matrix-nio/default.nix b/nixpkgs/pkgs/development/python-modules/matrix-nio/default.nix
index 96f333fcf8a6..69721aeb8280 100644
--- a/nixpkgs/pkgs/development/python-modules/matrix-nio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/matrix-nio/default.nix
@@ -41,12 +41,14 @@ buildPythonPackage rec {
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace 'aiofiles = "^0.6.0"' 'aiofiles = "*"'
+    # Remove after https://github.com/poljar/matrix-nio/pull/288
+    substituteInPlace pyproject.toml \
+      --replace 'aiohttp-socks = "^0.6.0"' 'aiohttp-socks = "^0.7.0"'
   '';
 
   nativeBuildInputs = [
     git
     poetry-core
-    pytestCheckHook
   ];
 
   propagatedBuildInputs = [
@@ -73,8 +75,11 @@ buildPythonPackage rec {
     hypothesis
     pytest-aiohttp
     pytest-benchmark
+    pytestCheckHook
   ];
 
+  pytestFlagsArray = [ "--benchmark-disable" ];
+
   disabledTests = [
     # touches network
     "test_connect_wrapper"
diff --git a/nixpkgs/pkgs/development/python-modules/mautrix/default.nix b/nixpkgs/pkgs/development/python-modules/mautrix/default.nix
index c74d2f547c5b..1be685e013b4 100644
--- a/nixpkgs/pkgs/development/python-modules/mautrix/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mautrix/default.nix
@@ -1,14 +1,14 @@
 { lib, buildPythonPackage, fetchPypi, aiohttp, pythonOlder
-, sqlalchemy, ruamel_yaml, CommonMark, lxml
+, sqlalchemy, ruamel-yaml, CommonMark, lxml, aiosqlite
 }:
 
 buildPythonPackage rec {
   pname = "mautrix";
-  version = "0.10.10";
+  version = "0.14.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "78309702392fe1ced000a23cfacb9bae0511ba533963b82d1d040f4a39924c09";
+    sha256 = "5ad04e87bcf31eb3479fdd3cabd5082b257013e5c00f6b369539a2b584afadaf";
   };
 
   propagatedBuildInputs = [
@@ -16,7 +16,8 @@ buildPythonPackage rec {
 
     # defined in optional-requirements.txt
     sqlalchemy
-    ruamel_yaml
+    aiosqlite
+    ruamel-yaml
     CommonMark
     lxml
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/maya/default.nix b/nixpkgs/pkgs/development/python-modules/maya/default.nix
index 4a751a188c24..baa95f7c7de2 100644
--- a/nixpkgs/pkgs/development/python-modules/maya/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/maya/default.nix
@@ -1,5 +1,5 @@
 { lib, fetchPypi, fetchpatch, buildPythonPackage
-, dateparser, humanize, pendulum, ruamel_yaml, tzlocal }:
+, dateparser, humanize, pendulum, ruamel-yaml, tzlocal }:
 
 buildPythonPackage rec {
   pname = "maya";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [ dateparser humanize pendulum ruamel_yaml tzlocal ];
+  propagatedBuildInputs = [ dateparser humanize pendulum ruamel-yaml tzlocal ];
 
   # No tests
   doCheck = false;
diff --git a/nixpkgs/pkgs/development/python-modules/mayavi/default.nix b/nixpkgs/pkgs/development/python-modules/mayavi/default.nix
index 169928e48b68..6f13e63b9341 100644
--- a/nixpkgs/pkgs/development/python-modules/mayavi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mayavi/default.nix
@@ -4,14 +4,14 @@
 
 buildPythonPackage rec {
   pname = "mayavi";
-  version = "4.7.3";
+  version = "4.7.4";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
     extension = "tar.gz";
-    sha256 = "Zw0AI7nNLSNGxFHbm6L2HaI6XfUDOyWuqJy22BuUZPA=";
+    sha256 = "ec50e7ec6afb0f9224ad1863d104a0d1ded6c8deb13e720652007aaca2303332";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/mcstatus/default.nix b/nixpkgs/pkgs/development/python-modules/mcstatus/default.nix
index 45e0c2d00aa6..f5c6c276867f 100644
--- a/nixpkgs/pkgs/development/python-modules/mcstatus/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mcstatus/default.nix
@@ -5,6 +5,7 @@
 , dnspython
 , fetchFromGitHub
 , mock
+, poetry-core
 , pytest-asyncio
 , pytestCheckHook
 , pythonOlder
@@ -13,16 +14,22 @@
 
 buildPythonPackage rec {
   pname = "mcstatus";
-  version = "6.5.0";
+  version = "7.0.0";
+  format = "pyproject";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "Dinnerbone";
     repo = pname;
     rev = "v${version}";
-    sha256 = "00xi3452lap4zx38msx89vvhrzkzb2dvwis1fcmx24qngj9g3yfr";
+    sha256 = "sha256-/EoVM3wEiA2suJHxMu2zZktQhO6T9grWcvWuzmUe6V0=";
   };
 
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
   propagatedBuildInputs = [
     asyncio-dgram
     click
@@ -36,7 +43,16 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "mcstatus" ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'asyncio-dgram = "1.2.0"' 'asyncio-dgram = ">=1.2.0"' \
+      --replace 'six = "1.14.0"' 'six = ">=1.14.0"' \
+      --replace 'click = "7.1.2"' 'click = ">=7.1.2"'
+  '';
+
+  pythonImportsCheck = [
+    "mcstatus"
+  ];
 
   meta = with lib; {
     description = "Python library for checking the status of Minecraft servers";
diff --git a/nixpkgs/pkgs/development/python-modules/md-toc/default.nix b/nixpkgs/pkgs/development/python-modules/md-toc/default.nix
index fcc102926b8d..58670c49a90b 100644
--- a/nixpkgs/pkgs/development/python-modules/md-toc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/md-toc/default.nix
@@ -8,14 +8,16 @@
 
 buildPythonPackage rec {
   pname = "md-toc";
-  version = "8.0.1";
+  version = "8.1.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "frnmst";
     repo = pname;
     rev = version;
-    sha256 = "sha256-nh9KxjwF+O4n0qVo9yPP6fvKB5XFICh+Ak6oD2fQVdk=";
+    sha256 = "sha256-FTvHPV/QIpKRF7wcZ6yuik4GzPrwyg4Oxc5/cdCs6Qo=";
   };
 
   propagatedBuildInputs = [
@@ -26,9 +28,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [ "md_toc/tests/*.py" ];
+  pytestFlagsArray = [
+    "md_toc/tests/*.py"
+  ];
 
-  pythonImportsCheck = [ "md_toc" ];
+  pythonImportsCheck = [
+    "md_toc"
+  ];
 
   meta = with lib; {
     description = "Table of contents generator for Markdown";
diff --git a/nixpkgs/pkgs/development/python-modules/mdformat/default.nix b/nixpkgs/pkgs/development/python-modules/mdformat/default.nix
index 43f95bc952a2..02aafd3302a9 100644
--- a/nixpkgs/pkgs/development/python-modules/mdformat/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mdformat/default.nix
@@ -6,20 +6,22 @@
 , poetry-core
 , pytestCheckHook
 , pythonOlder
+, tomli
 , typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "mdformat";
-  version = "0.7.9";
+  version = "0.7.11";
   format = "pyproject";
-  disabled = pythonOlder "3.6";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "executablebooks";
     repo = pname;
     rev = version;
-    sha256 = "sha256-qGRZCDo/ACSXtJa4omepjaR0KNWeR4vvvUUbQpKlrtI=";
+    sha256 = "sha256-EhMoGSCtlEcm1+1aHn9DhBnLQvolhq62SMF/AdaY1/E=";
   };
 
   nativeBuildInputs = [
@@ -28,6 +30,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     markdown-it-py
+    tomli
   ] ++ lib.optionals (pythonOlder "3.10") [
     importlib-metadata
   ] ++ lib.optionals (pythonOlder "3.7") [
@@ -38,7 +41,16 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "mdformat" ];
+  disabledTests = [
+    # AssertionError
+    "test_no_codeblock_trailing_newline"
+    # Issue with upper/lower case
+    "default_style.md-options0"
+  ];
+
+  pythonImportsCheck = [
+    "mdformat"
+  ];
 
   meta = with lib; {
     description = "CommonMark compliant Markdown formatter";
diff --git a/nixpkgs/pkgs/development/python-modules/mdit-py-plugins/default.nix b/nixpkgs/pkgs/development/python-modules/mdit-py-plugins/default.nix
index 9c5705dbc408..03a64588f85b 100644
--- a/nixpkgs/pkgs/development/python-modules/mdit-py-plugins/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mdit-py-plugins/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "mdit-py-plugins";
-  version = "0.2.8";
+  version = "0.3.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -18,13 +18,21 @@ buildPythonPackage rec {
     owner = "executablebooks";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-MXQjaVDuguGbmby6BQnrTdpq6Mih3HabXuyFxf9jB18=";
+    sha256 = "sha256-3zFSTjqwjUV6+fU6falYbIzj/Hp7E/9EXKZIi00tkg4=";
   };
 
-  propagatedBuildInputs = [ markdown-it-py ];
+  propagatedBuildInputs = [
+    markdown-it-py
+  ];
 
-  checkInputs = [ pytestCheckHook pytest-regressions ];
-  pythonImportsCheck = [ "mdit_py_plugins" ];
+  checkInputs = [
+    pytestCheckHook
+    pytest-regressions
+  ];
+
+  pythonImportsCheck = [
+    "mdit_py_plugins"
+  ];
 
   meta = with lib; {
     description = "Collection of core plugins for markdown-it-py";
diff --git a/nixpkgs/pkgs/development/python-modules/mdp/default.nix b/nixpkgs/pkgs/development/python-modules/mdp/default.nix
index 55a440e68089..dc73daa449b9 100644
--- a/nixpkgs/pkgs/development/python-modules/mdp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mdp/default.nix
@@ -1,4 +1,10 @@
-{ lib, buildPythonPackage, fetchPypi, pytest, future, numpy }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, future
+, numpy
+, pytest
+}:
 
 buildPythonPackage rec {
   pname = "MDP";
@@ -9,11 +15,27 @@ buildPythonPackage rec {
     sha256 = "ac52a652ccbaed1857ff1209862f03bf9b06d093b12606fb410787da3aa65a0e";
   };
 
-  checkInputs = [ pytest ];
   propagatedBuildInputs = [ future numpy ];
 
-  # Tests disabled because of missing dependencies not in nix
-  doCheck = false;
+  checkInputs = [ pytest ];
+
+  doCheck = true;
+
+  pythonImportsCheck = [ "mdp" "bimdp" ];
+
+  postPatch = ''
+    # https://github.com/mdp-toolkit/mdp-toolkit/issues/92
+    substituteInPlace mdp/utils/routines.py --replace numx.typeDict numx.sctypeDict
+  '';
+
+  checkPhase = ''
+    runHook preCheck
+
+    pytest --seed 7710873 mdp
+    pytest --seed 7710873 bimdp
+
+    runHook postCheck
+  '';
 
   meta = with lib; {
     description = "Library for building complex data processing software by combining widely used machine learning algorithms";
diff --git a/nixpkgs/pkgs/development/python-modules/mdurl/default.nix b/nixpkgs/pkgs/development/python-modules/mdurl/default.nix
new file mode 100644
index 000000000000..37b3e9ad56ac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mdurl/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, flit-core
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "mdurl";
+  version = "0.1.0";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "hukkin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-AVklWFc4o5R9OzS9BYauuOaxm89P/Ih5l3Vrb2P0El4=";
+  };
+
+  nativeBuildInputs = [
+    flit-core
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "mdurl"
+  ];
+
+  meta = with lib; {
+    description = "URL utilities for markdown-it";
+    homepage = "https://github.com/hukkin/mdurl";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mediafile/default.nix b/nixpkgs/pkgs/development/python-modules/mediafile/default.nix
index a90b3868eb00..c15bb59f4738 100644
--- a/nixpkgs/pkgs/development/python-modules/mediafile/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mediafile/default.nix
@@ -1,23 +1,46 @@
-{ buildPythonPackage
-, fetchPypi
-, lib
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, flit-core
 , mutagen
+, pytestCheckHook
+, pythonOlder
 , six
 }:
 
 buildPythonPackage rec {
   pname = "mediafile";
-  version = "0.8.1";
+  version = "0.9.0";
+  format = "flit";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "878ccc378b77f2d6c175abea135ea25631f28c722e01e1a051924d962ebea165";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "beetbox";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-S90BgjKXpE4kAR0mPXgacmr2A+0hrkGpHRMeuvyFNCg=";
   };
 
-  propagatedBuildInputs = [ mutagen six ];
+  nativeBuildInputs = [
+    flit-core
+  ];
+
+  propagatedBuildInputs = [
+    mutagen
+    six
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "mediafile"
+  ];
 
   meta = with lib; {
-    description = "MediaFile is a simple interface to the metadata tags for many audio file formats.";
+    description = "Python interface to the metadata tags for many audio file formats";
     homepage = "https://github.com/beetbox/mediafile";
     license = licenses.mit;
     maintainers = with maintainers; [ lovesegfault ];
diff --git a/nixpkgs/pkgs/development/python-modules/meliae/default.nix b/nixpkgs/pkgs/development/python-modules/meliae/default.nix
deleted file mode 100644
index 4c6aa746448e..000000000000
--- a/nixpkgs/pkgs/development/python-modules/meliae/default.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cython
-, isPy3k
-, simplejson
-}:
-
-buildPythonPackage rec {
-  pname = "meliae";
-  version = "0.4.0";
-
-  src = fetchPypi {
-    inherit pname;
-    # FIXME when updating to the next version: The tarball on pypi is called
-    # "meliae-0.4.0.tar.gz" while the version within that tarball is
-    # "0.4.0.final.0".
-    version = "0.4.0";
-    sha256 = "976519ab02aaa6a8fb5f596dc4dd9f64fc9510b00e054979566e51c9be7cec99";
-  };
-
-  disabled = isPy3k;
-
-  doCheck = true;
-
-  checkPhase = ''
-    python setup.py build_ext -i
-    python run_tests.py
-  '';
-
-  checkInputs = [ simplejson ];
-
-  propagatedBuildInputs = [ cython ];
-
-  meta = with lib; {
-    description = "Python Memory Usage Analyzer";
-    homepage = "https://launchpad.net/meliae";
-    license = licenses.gpl3;
-    maintainers = with maintainers; [ xvapx ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/memory-allocator/default.nix b/nixpkgs/pkgs/development/python-modules/memory-allocator/default.nix
index cbb521ea985a..bee35f94f6e9 100644
--- a/nixpkgs/pkgs/development/python-modules/memory-allocator/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/memory-allocator/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "memory-allocator";
-  version = "0.1.0";
+  version = "0.1.2";
 
   src = fetchPypi {
     inherit version;
     pname = "memory_allocator";
-    sha256 = "sha256-UUcR71e3eAQIQpmWM+AVQxVtgHvrNjaIlHo5pURUln0=";
+    sha256 = "ddf42a2dcc678062f30c63c868335204d46a4ecdf4db0dc43ed4529f1d0ffab9";
   };
 
   propagatedBuildInputs = [ cython ];
diff --git a/nixpkgs/pkgs/development/python-modules/meross-iot/default.nix b/nixpkgs/pkgs/development/python-modules/meross-iot/default.nix
new file mode 100644
index 000000000000..5c2bbe9222b7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/meross-iot/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, paho-mqtt
+, pytestCheckHook
+, pythonOlder
+, requests
+, retrying
+}:
+
+buildPythonPackage rec {
+  pname = "meross-iot";
+  version = "0.4.3.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "albertogeniola";
+    repo = "MerossIot";
+    rev = version;
+    sha256 = "sha256-PZ1+Bjw7k6EFZEuPhbkGrdQzdLGiM4U0ecAAN8SxWU4=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    paho-mqtt
+    requests
+    retrying
+  ];
+
+  # Test require network access
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "meross_iot"
+  ];
+
+  meta = with lib; {
+    description = "Python library to interact with Meross devices";
+    homepage = "https://github.com/albertogeniola/MerossIot";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/meshlabxml/default.nix b/nixpkgs/pkgs/development/python-modules/meshlabxml/default.nix
index c1091296d2e1..e0793f3ec978 100644
--- a/nixpkgs/pkgs/development/python-modules/meshlabxml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/meshlabxml/default.nix
@@ -1,7 +1,6 @@
 {
   buildPythonPackage,
   fetchPypi,
-  pythonOlder,
   lib,
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/meshtastic/default.nix b/nixpkgs/pkgs/development/python-modules/meshtastic/default.nix
index 6826298699e1..0d1e17afc386 100644
--- a/nixpkgs/pkgs/development/python-modules/meshtastic/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/meshtastic/default.nix
@@ -1,26 +1,33 @@
 { lib
 , buildPythonPackage
 , dotmap
-, fetchPypi
+, fetchFromGitHub
 , pexpect
 , protobuf
 , pygatt
 , pypubsub
 , pyqrcode
 , pyserial
+, pytestCheckHook
 , pythonOlder
+, pyyaml
 , tabulate
+, pytap2
 , timeago
 }:
 
 buildPythonPackage rec {
   pname = "meshtastic";
-  version = "1.2.40";
+  version = "1.2.51";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "be8464037d0c8085350065b38e7a7b028db15f2524764dec0e3548ea5b53500f";
+  src = fetchFromGitHub {
+    owner = "meshtastic";
+    repo = "Meshtastic-python";
+    rev = version;
+    sha256 = "sha256-CMoa7FQnGTWS14WmWvuryO2bKMWC05PBIDBlEWRjNRA=";
   };
 
   propagatedBuildInputs = [
@@ -31,22 +38,23 @@ buildPythonPackage rec {
     pypubsub
     pyqrcode
     pyserial
+    pyyaml
     tabulate
     timeago
   ];
 
-  postPatch = ''
-    # https://github.com/meshtastic/Meshtastic-python/pull/87
-    substituteInPlace setup.py \
-      --replace 'with open("README.md", "r") as fh:' "" \
-      --replace "long_description = fh.read()" "" \
-      --replace "long_description=long_description," 'long_description="",'
+  checkInputs = [
+    pytap2
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    export PATH="$PATH:$out/bin";
   '';
 
-  # Project only provides PyPI releases which don't contain the tests
-  # https://github.com/meshtastic/Meshtastic-python/issues/86
-  doCheck = false;
-  pythonImportsCheck = [ "meshtastic" ];
+  pythonImportsCheck = [
+    "meshtastic"
+  ];
 
   meta = with lib; {
     description = "Python API for talking to Meshtastic devices";
diff --git a/nixpkgs/pkgs/development/python-modules/mesonpep517/default.nix b/nixpkgs/pkgs/development/python-modules/mesonpep517/default.nix
index 8805c2039034..5e33ae9c1033 100644
--- a/nixpkgs/pkgs/development/python-modules/mesonpep517/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mesonpep517/default.nix
@@ -3,9 +3,7 @@
 , fetchPypi
 , meson
 , ninja
-, intreehooks
 , toml
-, pythonOlder
 }:
 
 # TODO: offer meson as a Python package so we have dist-info folder.
diff --git a/nixpkgs/pkgs/development/python-modules/metakernel/default.nix b/nixpkgs/pkgs/development/python-modules/metakernel/default.nix
index eec3da25e0f2..b07f68401e25 100644
--- a/nixpkgs/pkgs/development/python-modules/metakernel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/metakernel/default.nix
@@ -2,18 +2,15 @@
 , buildPythonPackage
 , fetchPypi
 , ipykernel
-, isPy27
-, mock
-, pytest
 }:
 
 buildPythonPackage rec {
   pname = "metakernel";
-  version = "0.27.5";
+  version = "0.28.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0aqq9zil6h7kxsg3v2008nr6lv47qvcsash8qzmi1xh6r4x606zy";
+    sha256 = "3b57eb7b3b332614dcba1fa53c8cc1253dbccf962b111517ea16cbecce9a11d5";
   };
 
   propagatedBuildInputs = [ ipykernel ];
diff --git a/nixpkgs/pkgs/development/python-modules/metaphone/default.nix b/nixpkgs/pkgs/development/python-modules/metaphone/default.nix
deleted file mode 100644
index d6b0c30c504c..000000000000
--- a/nixpkgs/pkgs/development/python-modules/metaphone/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib, buildPythonPackage, isPy3k, fetchPypi, nose }:
-
-buildPythonPackage rec {
-  pname = "metaphone";
-  version = "0.6";
-
-  src = fetchPypi {
-    pname = "Metaphone";
-    inherit version;
-    sha256 = "09ysaczwh2rlsqq9j5fz7m4pq2fs0axp5vvivrpfrdvclvffl2xd";
-  };
-
-  disabled = isPy3k;
-
-  buildInputs = [ nose ];
-
-  meta = with lib; {
-    homepage = "https://github.com/oubiwann/metaphone";
-    description = "A Python implementation of the metaphone and double metaphone algorithms";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ris ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/mill-local/default.nix b/nixpkgs/pkgs/development/python-modules/mill-local/default.nix
new file mode 100644
index 000000000000..9d00bb71c8bc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mill-local/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, aiohttp
+, async-timeout
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "mill-local";
+  version = "0.1.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "Danielhiversen";
+    repo = "pyMillLocal";
+    rev = version;
+    sha256 = "0q0frwj9yxdmqi5axl7gxirfflgn8xh1932c6lhp9my2v1d0gdrk";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    async-timeout
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "mill_local"
+  ];
+
+  meta = with lib; {
+    description = "Python module to communicate locally with Mill heaters";
+    homepage = "https://github.com/Danielhiversen/pyMillLocal";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/millheater/default.nix b/nixpkgs/pkgs/development/python-modules/millheater/default.nix
index 7926b157118c..3968e8bf8088 100644
--- a/nixpkgs/pkgs/development/python-modules/millheater/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/millheater/default.nix
@@ -1,4 +1,3 @@
-
 { lib
 , aiohttp
 , async-timeout
@@ -10,14 +9,16 @@
 
 buildPythonPackage rec {
   pname = "millheater";
-  version = "0.6.2";
+  version = "0.9.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "Danielhiversen";
     repo = "pymill";
     rev = version;
-    sha256 = "sha256-CG0hQN4m8EE+j5yUqODJX8/DLTVWS9tSPADSDHl6K9o=";
+    sha256 = "sha256-ocPp9tRghlOb0vZrpELDkwOq8ue+JBCRf2uB0Q7CPF8=";
   };
 
   propagatedBuildInputs = [
@@ -29,7 +30,9 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "mill" ];
+  pythonImportsCheck = [
+    "mill"
+  ];
 
   meta = with lib; {
     description = "Python library for Mill heater devices";
diff --git a/nixpkgs/pkgs/development/python-modules/miniaudio/default.nix b/nixpkgs/pkgs/development/python-modules/miniaudio/default.nix
index 2056bbb0b946..0f3372a6048c 100644
--- a/nixpkgs/pkgs/development/python-modules/miniaudio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/miniaudio/default.nix
@@ -19,9 +19,8 @@ buildPythonPackage rec {
     sha256 = "1yx4n4zax103fmjzdiqzw37zibsh68b2p2l5qvgcnx2zrrjd31yl";
   };
 
-  propagatedBuildInputs = [
-    cffi
-  ];
+  propagatedNativeBuildInputs = [ cffi ];
+  propagatedBuildInputs = [ cffi ];
 
   checkInputs = [
     pytestCheckHook
diff --git a/nixpkgs/pkgs/development/python-modules/minidump/default.nix b/nixpkgs/pkgs/development/python-modules/minidump/default.nix
index 2f1f4718c611..76ac4abf8ca1 100644
--- a/nixpkgs/pkgs/development/python-modules/minidump/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/minidump/default.nix
@@ -1,25 +1,32 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "minidump";
-  version = "0.0.20";
+  version = "0.0.21";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1rr91nnlzv7gnbcvv8qhbyx1kh2s4jdv7nv0qka5jya32rzjaigm";
+    sha256 = "sha256-g9YSr7bFdyfr84rKQztVD4P5+MfDtlYq0quXBx/YXzo=";
   };
 
   # Upstream doesn't have tests
   doCheck = false;
-  pythonImportsCheck = [ "minidump" ];
+
+  pythonImportsCheck = [
+    "minidump"
+  ];
 
   meta = with lib; {
     description = "Python library to parse and read Microsoft minidump file format";
     homepage = "https://github.com/skelsec/minidump";
     license = with licenses; [ mit ];
-    maintainers = [ maintainers.fab ];
+    maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/minio/default.nix b/nixpkgs/pkgs/development/python-modules/minio/default.nix
index 7b1085e78fec..477ed47e9dd1 100644
--- a/nixpkgs/pkgs/development/python-modules/minio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/minio/default.nix
@@ -16,14 +16,16 @@
 
 buildPythonPackage rec {
   pname = "minio";
-  version = "7.1.0";
+  version = "7.1.2";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "minio";
     repo = "minio-py";
     rev = version;
-    sha256 = "sha256-0N9hPjGGYHFyGzEWWDnW7KsPQtv0y/j/lCBLNC9IlpA=";
+    sha256 = "sha256-KluSdmhpSSqUTLVdFpIGwre7LOu3A16rt73FvaTmuz8=";
   };
 
   propagatedBuildInputs = [
@@ -42,12 +44,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  # example credentials aren't present
   disabledTestPaths = [
+    # example credentials aren't present
     "tests/unit/credentials_test.py"
   ];
 
-  pythonImportsCheck = [ "minio" ];
+  pythonImportsCheck = [
+    "minio"
+  ];
 
   meta = with lib; {
     description = "Simple APIs to access any Amazon S3 compatible object storage server";
diff --git a/nixpkgs/pkgs/development/python-modules/misaka/default.nix b/nixpkgs/pkgs/development/python-modules/misaka/default.nix
index 07f251f75b5f..e4c807a5bf5e 100644
--- a/nixpkgs/pkgs/development/python-modules/misaka/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/misaka/default.nix
@@ -8,6 +8,8 @@ buildPythonPackage rec {
     sha256 = "1mzc29wwyhyardclj1vg2xsfdibg2lzb7f1azjcxi580ama55wv2";
   };
 
+  propagatedNativeBuildInputs = [ cffi ];
+
   propagatedBuildInputs = [ cffi ];
 
   # The tests require write access to $out
diff --git a/nixpkgs/pkgs/development/python-modules/mistletoe/default.nix b/nixpkgs/pkgs/development/python-modules/mistletoe/default.nix
index 29666254e7f0..0de5077ebee8 100644
--- a/nixpkgs/pkgs/development/python-modules/mistletoe/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mistletoe/default.nix
@@ -5,12 +5,12 @@
 
 buildPythonPackage rec {
   pname = "mistletoe";
-  version = "0.7.2";
+  version = "0.8.1";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "18z6hqfnfjqnrcgfgl5pkj9ggf9yx0yyy94azcn1qf7hqn6g3l14";
+    sha256 = "468c6a42fd98b85e05b318033f63d76e02712e1ea1328a7ebcba7e47fb6f1e41";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/mistune/default.nix b/nixpkgs/pkgs/development/python-modules/mistune/default.nix
index 3020eca4eed5..c7e7d6d54c73 100644
--- a/nixpkgs/pkgs/development/python-modules/mistune/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mistune/default.nix
@@ -4,8 +4,8 @@ self: rec {
     sha256 = "59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e";
   };
   mistune_2_0 = self.callPackage ./common.nix {
-    version = "2.0.0a4";
-    sha256 = "0i6cblmjl58kdmaa21xm0l1ls0kvjpfy45sf73fw3ws6305f628k";
+    version = "2.0.0rc1";
+    sha256 = "1nd7iav1ixh9hlj4hxn6lmpava88d86ys8rqm30wgvr7gjlxnas5";
   };
   mistune = mistune_0_8;
 }
diff --git a/nixpkgs/pkgs/development/python-modules/mitmproxy/default.nix b/nixpkgs/pkgs/development/python-modules/mitmproxy/default.nix
index 4f31c512197d..bc5835fac539 100644
--- a/nixpkgs/pkgs/development/python-modules/mitmproxy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mitmproxy/default.nix
@@ -24,7 +24,7 @@
 , pyopenssl
 , pyparsing
 , pyperclip
-, ruamel_yaml
+, ruamel-yaml
 , setuptools
 , sortedcontainers
 , tornado
@@ -78,7 +78,7 @@ buildPythonPackage rec {
     pyopenssl
     pyparsing
     pyperclip
-    ruamel_yaml
+    ruamel-yaml
     sortedcontainers
     tornado
     urwid
diff --git a/nixpkgs/pkgs/development/python-modules/mitogen/default.nix b/nixpkgs/pkgs/development/python-modules/mitogen/default.nix
index 3268e8fae7ba..789d68c7f93e 100644
--- a/nixpkgs/pkgs/development/python-modules/mitogen/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mitogen/default.nix
@@ -5,13 +5,13 @@
 
 buildPythonPackage rec {
   pname = "mitogen";
-  version = "0.3.0rc1";
+  version = "0.3.0";
 
   src = fetchFromGitHub {
     owner = "mitogen-hq";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0hxb41sshybxjyvyarl2axs0v6w53vqxafgfjrmpp5k20z5kapz4";
+    sha256 = "sha256-SotxlsJDIeFd4BN9C7afyyybET5ST2yaoWVEyT/lr48=";
   };
 
   # Tests require network access and Docker support
diff --git a/nixpkgs/pkgs/development/python-modules/mizani/default.nix b/nixpkgs/pkgs/development/python-modules/mizani/default.nix
new file mode 100644
index 000000000000..f7bf273f1a27
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mizani/default.nix
@@ -0,0 +1,37 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, lib
+, matplotlib
+, palettable
+, pandas
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "mizani";
+  version = "0.7.3";
+
+  src = fetchFromGitHub {
+    owner = "has2k1";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "04r53dp5jbklv8l9ncgc5wiq0gx25y73h65gmmbbfkxwgsl3w78l";
+  };
+
+  postPatch = ''
+    substituteInPlace pytest.ini --replace " --cov=mizani --cov-report=xml" ""
+  '';
+
+  propagatedBuildInputs = [ matplotlib palettable pandas ];
+
+  checkInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "mizani" ];
+
+  meta = with lib; {
+    description = "Scales for Python";
+    homepage = "https://github.com/has2k1/mizani";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ samuela ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ml-collections/default.nix b/nixpkgs/pkgs/development/python-modules/ml-collections/default.nix
new file mode 100644
index 000000000000..ffa3a6ade32e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ml-collections/default.nix
@@ -0,0 +1,53 @@
+{ absl-py
+, buildPythonPackage
+, contextlib2
+, fetchPypi
+, fetchurl
+, lib
+, pyyaml
+}:
+
+let
+  requirements = fetchurl {
+    url = "https://raw.githubusercontent.com/google/ml_collections/7f749a281c69f9d0b339c05ecb94b80d95029f25/requirements.txt";
+    sha256 = "1xb351hiscj4zmajfkql3swpacdp6lmz8iwdvwwdx2zqw9a62zps";
+  };
+  requirements-test = fetchurl {
+    url = "https://raw.githubusercontent.com/google/ml_collections/7f749a281c69f9d0b339c05ecb94b80d95029f25/requirements-test.txt";
+    sha256 = "0r457k2nrg5jkf093r0x29yf8xwy6l7jxi6al0fh7mmnfrhr9cb1";
+  };
+in
+buildPythonPackage rec {
+  pname = "ml-collections";
+  version = "0.1.0";
+
+  # ml-collections does not have any git release tags. See https://github.com/google/ml_collections/issues/8.
+  src = fetchPypi {
+    inherit version;
+    pname = "ml_collections";
+    sha256 = "0g6gxfz8g6fh1sghys869ylxgpda9hq7ylc8jw05608l3k6pz8ar";
+  };
+
+  # The pypi source archive does not include requirements.txt or
+  # requirements-test.txt. See https://github.com/google/ml_collections/issues/7.
+  postPatch = ''
+    cp ${requirements} requirements.txt
+    cp ${requirements-test} requirements-test.txt
+  '';
+
+  propagatedBuildInputs = [ absl-py contextlib2 pyyaml ];
+
+  # The official test suite uses bazel. With pytestCheckHook there are name
+  # conflicts between files and tests have assumptions that are broken by the
+  # nix-build environment, eg. re module names and __file__ attributes.
+  doCheck = false;
+
+  pythonImportsCheck = [ "ml_collections" ];
+
+  meta = with lib; {
+    description = "ML Collections is a library of Python collections designed for ML usecases.";
+    homepage = "https://github.com/google/ml_collections";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ samuela ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mlflow/default.nix b/nixpkgs/pkgs/development/python-modules/mlflow/default.nix
index b50d98513a2f..255c9039ae97 100644
--- a/nixpkgs/pkgs/development/python-modules/mlflow/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mlflow/default.nix
@@ -20,17 +20,16 @@
 , sqlalchemy
 , gorilla
 , gunicorn
-, pytest
 }:
 
 buildPythonPackage rec {
   pname = "mlflow";
-  version = "1.20.1";
+  version = "1.21.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "71764443c4942f181fee2d5bf44dd74a0507bcc5b62a1f1e08079d1f40a15fc0";
+    sha256 = "5524a371f19c66a18e7ebe9b1085a77f63a6ae514271e487428f28187d79fc8f";
   };
 
   # run into https://stackoverflow.com/questions/51203641/attributeerror-module-alembic-context-has-no-attribute-config
diff --git a/nixpkgs/pkgs/development/python-modules/mne-python/default.nix b/nixpkgs/pkgs/development/python-modules/mne-python/default.nix
index 8e17eacbf7b5..c6e9ee01ffed 100644
--- a/nixpkgs/pkgs/development/python-modules/mne-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mne-python/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "mne-python";
-  version = "0.23.4";
+  version = "0.24.1";
 
   disabled = isPy27;
 
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "mne-tools";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1kik52ssa6difkqz8xnvrcbpp4p7792hj1rcgyypb4q7sc048aqy";
+    sha256 = "0n91pj97xmpn0bmlv56q2117szlvvs4b52pjjlm3g8ny4xb3iwr0";
   };
 
   propagatedBuildInputs = [ numpy scipy ];
diff --git a/nixpkgs/pkgs/development/python-modules/mnemonic/default.nix b/nixpkgs/pkgs/development/python-modules/mnemonic/default.nix
index 8d47db636964..86590c1d7b8d 100644
--- a/nixpkgs/pkgs/development/python-modules/mnemonic/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mnemonic/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "mnemonic";
-  version = "0.19";
+  version = "0.20";
 
   src = fetchFromGitHub {
     owner = "trezor";
     repo = "python-${pname}";
     rev = "v${version}";
-    sha256 = "0rs3szdikkgypiwn43ad3lwh7zvpccw39j5ggkziq6v7pnw3isaq";
+    sha256 = "sha256-YYgWlYfVd1iALOziaUI8uVYjJDCIVk/dXcUmJd2jcvQ=";
   };
 
   checkInputs = [ pytestCheckHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/mocket/default.nix b/nixpkgs/pkgs/development/python-modules/mocket/default.nix
index 8739c0812833..9d6c64da2153 100644
--- a/nixpkgs/pkgs/development/python-modules/mocket/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mocket/default.nix
@@ -19,12 +19,12 @@
 
 buildPythonPackage rec {
   pname = "mocket";
-  version = "3.10.0";
+  version = "3.10.2";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1fcb4203ae257145b97c865135b3a064b47f20f42dde88c8579f43d88f1a7dfb";
+    sha256 = "sha256-bb/Uf9xWKRNr27SHzTzI14a0At9Ua5xxBr7XN2d6qfQ=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/mockito/default.nix b/nixpkgs/pkgs/development/python-modules/mockito/default.nix
index 69cdf7b56b09..e11e2f7b41b9 100644
--- a/nixpkgs/pkgs/development/python-modules/mockito/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mockito/default.nix
@@ -1,12 +1,12 @@
 { lib, buildPythonPackage, fetchPypi, isPy3k, funcsigs, pytest, numpy }:
 
 buildPythonPackage rec {
-  version = "1.2.2";
+  version = "1.3.0";
   pname = "mockito";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d6b3aca6cdb92bbd47e19ebdb1a0b84ef23ab874eae5c6d505323c8657257c06";
+    sha256 = "5d41a5f6ec0b8fc32b6d796480d4849ee5fb0ac75d12f13862f1622684f5f578";
   };
 
   propagatedBuildInputs = lib.optionals (!isPy3k) [ funcsigs ];
diff --git a/nixpkgs/pkgs/development/python-modules/mohawk/default.nix b/nixpkgs/pkgs/development/python-modules/mohawk/default.nix
index e260bb7b54a3..6616ba7d537b 100644
--- a/nixpkgs/pkgs/development/python-modules/mohawk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mohawk/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, python, mock, nose, pytest, six }:
+{ lib, buildPythonPackage, fetchPypi, mock, nose, pytest, six }:
 
 with lib;
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/moinmoin/default.nix b/nixpkgs/pkgs/development/python-modules/moinmoin/default.nix
deleted file mode 100644
index b4ecf28724a4..000000000000
--- a/nixpkgs/pkgs/development/python-modules/moinmoin/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib, buildPythonPackage, fetchurl, isPy3k
-, pytest, werkzeug, pygments
-}:
-
-buildPythonPackage rec {
-  pname = "moinmoin";
-  version = "1.9.11";
-
-  # SyntaxError in setup.py
-  disabled = isPy3k;
-
-  src = fetchurl {
-    url = "http://static.moinmo.in/files/moin-${version}.tar.gz";
-    sha256 = "sha256-Ar4x1V851P4MYlPfi0ngG3bQlWNMvRtW0YX2bh4MPPU=";
-  };
-
-  patches = [
-    # Recommended to install on their download page.
-    ./fix_tests.patch
-  ];
-
-  prePatch = ''
-    sed -i "s/\xfc/ü/" setup.cfg
-  '';
-
-  checkInputs = [ pytest werkzeug pygments ];
-
-  meta = with lib; {
-    description = "Advanced, easy to use and extensible WikiEngine";
-
-    homepage = "https://moinmo.in/";
-
-    license = licenses.gpl2Plus;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/moinmoin/fix_tests.patch b/nixpkgs/pkgs/development/python-modules/moinmoin/fix_tests.patch
deleted file mode 100644
index e9856eeffca6..000000000000
--- a/nixpkgs/pkgs/development/python-modules/moinmoin/fix_tests.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -ru3 moin-1.9.9-old/MoinMoin/conftest.py moin-1.9.9-new/MoinMoin/conftest.py
---- moin-1.9.9-old/MoinMoin/conftest.py	2016-10-31 23:44:02.000000000 +0300
-+++ moin-1.9.9-new/MoinMoin/conftest.py	2018-02-18 12:13:19.551929093 +0300
-@@ -22,10 +22,11 @@
- 
- import atexit
- import sys
-+import os
- 
- import py
- 
--rootdir = py.magic.autopath().dirpath()
-+rootdir = os.path.abspath(os.path.dirname(__file__))
- moindir = rootdir.join("..")
- sys.path.insert(0, str(moindir))
- 
diff --git a/nixpkgs/pkgs/development/python-modules/monkeyhex/default.nix b/nixpkgs/pkgs/development/python-modules/monkeyhex/default.nix
index f627505cbddd..7c10ad743f9c 100644
--- a/nixpkgs/pkgs/development/python-modules/monkeyhex/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/monkeyhex/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "monkeyhex";
-  version = "1.7.2";
+  version = "1.7.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e2add1f7f1f620be9ccec0618342e6a9e47de50e0d2252628bffd452bfd3762b";
+    sha256 = "a646096dd3114ee8a7c6f30363f38c288ec56c4e032c8fc7e681792b604dd122";
   };
 
   propagatedBuildInputs = [ future ];
diff --git a/nixpkgs/pkgs/development/python-modules/monty/default.nix b/nixpkgs/pkgs/development/python-modules/monty/default.nix
index 73325c24d94c..36d798e5504d 100644
--- a/nixpkgs/pkgs/development/python-modules/monty/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/monty/default.nix
@@ -8,20 +8,20 @@
 , pandas
 , pydantic
 , pymongo
-, ruamel_yaml
+, ruamel-yaml
 , tqdm
 }:
 
 buildPythonPackage rec {
   pname = "monty";
-  version = "2021.8.17";
+  version = "2021.12.1";
   disabled = pythonOlder "3.5"; # uses type annotations
 
   src = fetchFromGitHub {
     owner = "materialsvirtuallab";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0lg6d0qk6iv476rcn45p5f50kips5g9s709cxddwnk5yrz57c4d0";
+    sha256 = "0zcbdh7pqv4dq3fan0zh912w9bvmf2p0zj1fhp0ayhdsc50cwldh";
   };
 
   postPatch = ''
@@ -30,7 +30,7 @@ buildPythonPackage rec {
   '';
 
   propagatedBuildInputs = [
-    ruamel_yaml
+    ruamel-yaml
     tqdm
     msgpack
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/moonraker-api/default.nix b/nixpkgs/pkgs/development/python-modules/moonraker-api/default.nix
new file mode 100644
index 000000000000..2888ff1e06d1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/moonraker-api/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, pytest-aiohttp
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "moonraker-api";
+  version = "2.0.4";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "cmroche";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1hhm3jnl9qm44y4k927fzw1n32c3551kgsk7i57qw25nca9x3k61";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  checkInputs = [
+    pytest-aiohttp
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "moonraker_api"
+  ];
+
+  meta = with lib; {
+    description = "Python API for the Moonraker API";
+    homepage = "https://github.com/cmroche/moonraker-api";
+    license = with licenses; [ gpl3Only ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/more-itertools/default.nix b/nixpkgs/pkgs/development/python-modules/more-itertools/default.nix
index d523a0bdb1e8..21f0b70f63ac 100644
--- a/nixpkgs/pkgs/development/python-modules/more-itertools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/more-itertools/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "more-itertools";
-  version = "8.8.0";
+  version = "8.12.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "83f0308e05477c68f56ea3a888172c78ed5d5b3c282addb67508e7ba6c8f813a";
+    sha256 = "7dc6ad46f05f545f900dd59e8dfb4e84a4827b97b3cfecb175ea0c7d247f6064";
   };
 
   checkInputs = [ nose ];
diff --git a/nixpkgs/pkgs/development/python-modules/motionblinds/default.nix b/nixpkgs/pkgs/development/python-modules/motionblinds/default.nix
new file mode 100644
index 000000000000..a8fb0ae58dd4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/motionblinds/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pycryptodomex
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "motionblinds";
+  version = "0.5.8.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "starkillerOG";
+    repo = "motion-blinds";
+    rev = version;
+    sha256 = "6aSwUuH5IpfcuVGXWVmb0DHglsUtGh/ATOe6iih6fXk=";
+  };
+
+  propagatedBuildInputs = [
+    pycryptodomex
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "motionblinds"
+  ];
+
+  meta = with lib; {
+    description = "Python library for interfacing with Motion Blinds";
+    homepage = "https://github.com/starkillerOG/motion-blinds";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/motioneye-client/default.nix b/nixpkgs/pkgs/development/python-modules/motioneye-client/default.nix
index 35632e780e7e..c5a3a2cd4954 100644
--- a/nixpkgs/pkgs/development/python-modules/motioneye-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/motioneye-client/default.nix
@@ -11,15 +11,16 @@
 
 buildPythonPackage rec {
   pname = "motioneye-client";
-  version = "0.3.11";
+  version = "0.3.12";
   format = "pyproject";
+
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "dermotduffy";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0f34ig8njyn7dzy8272m0b1nlnnhir58ar3vx4zps10i0dc32hb2";
+    sha256 = "sha256-vEB9ztz0RTGoolFUVQcMV7DUthCEAx1kpwkAS2186OU=";
   };
 
   nativeBuildInputs = [
@@ -41,7 +42,9 @@ buildPythonPackage rec {
       --replace " --cov-report=html:htmlcov --cov-report=xml:coverage.xml --cov-report=term-missing --cov=motioneye_client --cov-fail-under=100" ""
   '';
 
-  pythonImportsCheck = [ "motioneye_client" ];
+  pythonImportsCheck = [
+    "motioneye_client"
+  ];
 
   meta = with lib; {
     description = "Python library for motionEye";
diff --git a/nixpkgs/pkgs/development/python-modules/mouseinfo/default.nix b/nixpkgs/pkgs/development/python-modules/mouseinfo/default.nix
new file mode 100644
index 000000000000..5279165b2f1d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mouseinfo/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, pyperclip
+, fetchFromGitHub
+, xlib
+, pillow
+}:
+buildPythonPackage rec {
+  pname = "MouseInfo";
+  version = "0.1.3";
+
+  src = fetchFromGitHub {
+    owner = "asweigart";
+    repo = "mouseinfo";
+    rev = "1876ad5cd311b4352d46bc64a12edfb4da49974e";
+    sha256 = "sha256-UTaHTJE0xFihN9r+DY/WhekZ7S/CXtMFbqAayzexRxk=";
+  };
+
+  patches = [
+    ./fix-xlib-version.patch
+    ./pillow-version.patch
+  ];
+
+  doCheck = false;
+  # Mouseinfo requires a X server running to import succesfully
+  # pythonImportsCheck = [ "mouseinfo" ];
+
+  propagatedBuildInputs = [
+    pyperclip
+    xlib
+    pillow
+  ];
+
+  meta = with lib; {
+    description = "An application to display XY position and RGB color information for the pixel currently under the mouse. Works on Python 2 and 3.";
+    homepage = "https://github.com/asweigart/mouseinfo";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ lucasew ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mouseinfo/fix-xlib-version.patch b/nixpkgs/pkgs/development/python-modules/mouseinfo/fix-xlib-version.patch
new file mode 100644
index 000000000000..d6bd5f71ac57
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mouseinfo/fix-xlib-version.patch
@@ -0,0 +1,14 @@
+diff --git a/setup.py b/setup.py
+index 37d5f77..894fe78 100644
+--- a/setup.py
++++ b/setup.py
+@@ -31,8 +31,7 @@ setup(
+     test_suite='tests',
+     # NOTE: Update the python_version info for Pillow as Pillow supports later versions of Python.
+     install_requires=['rubicon-objc;platform_system=="Darwin"',
+-                      'python3-Xlib;platform_system=="Linux" and python_version>="3.0"',
+-                      'Xlib;platform_system=="Linux" and python_version<"3.0"',
++                      'python-Xlib;platform_system=="Linux"',
+                       'pyperclip',
+                       'Pillow >= 6.2.1; python_version == "3.8"',
+                       'Pillow >= 5.2.0; python_version == "3.7"',
diff --git a/nixpkgs/pkgs/development/python-modules/mouseinfo/pillow-version.patch b/nixpkgs/pkgs/development/python-modules/mouseinfo/pillow-version.patch
new file mode 100644
index 000000000000..b8abb02695f4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mouseinfo/pillow-version.patch
@@ -0,0 +1,20 @@
+diff --git a/setup.py b/setup.py
+index 894fe78..ac580a6 100644
+--- a/setup.py
++++ b/setup.py
+@@ -33,14 +33,7 @@ setup(
+     install_requires=['rubicon-objc;platform_system=="Darwin"',
+                       'python-Xlib;platform_system=="Linux"',
+                       'pyperclip',
+-                      'Pillow >= 6.2.1; python_version == "3.8"',
+-                      'Pillow >= 5.2.0; python_version == "3.7"',
+-                      'Pillow >= 4.0.0; python_version == "3.6"',
+-                      'Pillow >= 3.2.0; python_version == "3.5"',
+-                      'Pillow <= 5.4.1, >= 2.5.0; python_version == "3.4"',
+-                      'Pillow <= 4.3.0, >= 2.0.0; python_version == "3.3"',
+-                      'Pillow <= 3.4.2, >= 2.0.0; python_version == "3.2"',
+-                      'Pillow >= 2.0.0; python_version == "2.7"',
++                      'Pillow',
+                       ],
+     keywords='',
+     classifiers=[
diff --git a/nixpkgs/pkgs/development/python-modules/mox3/default.nix b/nixpkgs/pkgs/development/python-modules/mox3/default.nix
index 593d845ad866..3aa8b02dc101 100644
--- a/nixpkgs/pkgs/development/python-modules/mox3/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mox3/default.nix
@@ -2,14 +2,12 @@
 , buildPythonPackage
 , fetchPypi
 , pythonOlder
-, python
 , subunit
 , testrepository
 , testtools
 , six
 , pbr
 , fixtures
-, isPy36
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/mozsvc/default.nix b/nixpkgs/pkgs/development/python-modules/mozsvc/default.nix
deleted file mode 100644
index 0caa347edacf..000000000000
--- a/nixpkgs/pkgs/development/python-modules/mozsvc/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyramid
-, simplejson
-, konfig
-}:
-
-buildPythonPackage rec {
-  pname = "mozsvc";
-  version = "0.10";
-
-  src = fetchFromGitHub {
-    owner = "mozilla-services";
-    repo = "mozservices";
-    rev = version;
-    sha256 = "0a0558g8j55pd1nnhnnf3k377jv6cah8lxb24v98rq8kxr5960cg";
-  };
-
-  doCheck = false; # too many dependencies and conflicting versions; I (nadrieril) gave up
-  propagatedBuildInputs = [ pyramid simplejson konfig ];
-
-  meta = with lib; {
-    homepage = "https://github.com/mozilla-services/mozservices";
-    description = "Various utilities for Mozilla apps";
-    license = licenses.mpl20;
-    maintainers = with maintainers; [ nadrieril ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/mozterm/default.nix b/nixpkgs/pkgs/development/python-modules/mozterm/default.nix
deleted file mode 100644
index c7f2b4cbc349..000000000000
--- a/nixpkgs/pkgs/development/python-modules/mozterm/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, six }:
-
-buildPythonPackage rec {
-  pname = "mozterm";
-  version = "1.0.0";
-
-  # name 'unicode' is not defined
-  disabled = isPy3k;
-
-  propagatedBuildInputs = [six];
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b1e91acec188de07c704dbb7b0100a7be5c1e06567b3beb67f6ea11d00a483a4";
-  };
-
-  meta = with lib; {
-    description = "Terminal abstractions built around the blessings module";
-    license = licenses.mpl20;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/mpd/default.nix b/nixpkgs/pkgs/development/python-modules/mpd/default.nix
deleted file mode 100644
index b535144fac91..000000000000
--- a/nixpkgs/pkgs/development/python-modules/mpd/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "python-mpd";
-  version = "0.3.0";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "02812eba1d2e0f46e37457f5a6fa23ba203622e4bcab0a19b265e66b08cd21b4";
-  };
-
-  meta = with lib; {
-    description = "An MPD (Music Player Daemon) client library written in pure Python";
-    homepage = "http://jatreuman.indefero.net/p/python-mpd/";
-    license = licenses.gpl3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/mrbob/default.nix b/nixpkgs/pkgs/development/python-modules/mrbob/default.nix
deleted file mode 100644
index 8921719a3ae2..000000000000
--- a/nixpkgs/pkgs/development/python-modules/mrbob/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ buildPythonPackage, lib, glibcLocales, mock, nose, isPy3k, jinja2, six
-, fetchPypi
-}:
-
-buildPythonPackage rec {
-  pname = "mr-bob";
-  version = "0.1.2";
-
-  src = fetchPypi {
-    inherit version;
-    pname = "mr.bob";
-    sha256 = "6737eaf98aaeae85e07ebef844ee5156df2f06a8b28d7c3dcb056f811c588121";
-  };
-
-  disabled = isPy3k;
-
-  checkInputs = [ nose glibcLocales mock ];
-  checkPhase = ''
-    LC_ALL="en_US.UTF-8" nosetests
-  '';
-
-  propagatedBuildInputs = [ jinja2 six ];
-
-  meta = with lib; {
-    homepage = "https://github.com/domenkozar/mr.bob";
-    description = "A tool to generate code skeletons from templates";
-    license = licenses.bsd3;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/mrkd/default.nix b/nixpkgs/pkgs/development/python-modules/mrkd/default.nix
new file mode 100644
index 000000000000..22cd93910d6b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mrkd/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, jinja2
+, mistune
+, pygments
+, setuptools
+}:
+
+buildPythonPackage rec {
+  pname = "mrkd";
+  version = "0.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "456f8c1be99da268554b29c6b5383532e58119def5a65d85270bc6a0ecc26aaf";
+  };
+
+  propagatedBuildInputs = [ jinja2 mistune pygments setuptools ];
+
+  pythonImportsCheck = [ "mrkd" ];
+
+  meta = with lib; {
+    description = "Write man pages using Markdown, and convert them to Roff or HTML";
+    homepage = "https://github.com/refi64/mrkd";
+    license = licenses.bsd2;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ms-active-directory/default.nix b/nixpkgs/pkgs/development/python-modules/ms-active-directory/default.nix
new file mode 100644
index 000000000000..3262ba31cb6b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ms-active-directory/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, dnspython
+, fetchFromGitHub
+, ldap3
+, pyasn1
+, pycryptodome
+, pythonOlder
+, pytz
+, six
+}:
+
+buildPythonPackage rec {
+  pname = "ms-active-directory";
+  version = "1.12.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "zorn96";
+    repo = "ms_active_directory";
+    rev = "v${version}";
+    sha256 = "sha256-mErQib8xTgo29iPAtiLnhxLXyFboAzyEW9A/QMseM6k=";
+  };
+
+  propagatedBuildInputs = [
+    dnspython
+    ldap3
+    pyasn1
+    pycryptodome
+    pytz
+    six
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "ms_active_directory"
+  ];
+
+  meta = with lib; {
+    description = "Python module for integrating with Microsoft Active Directory domains";
+    homepage = "https://github.com/zorn96/ms_active_directory/";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/msal/default.nix b/nixpkgs/pkgs/development/python-modules/msal/default.nix
index aa8daa1a2e8d..aca7def34a17 100644
--- a/nixpkgs/pkgs/development/python-modules/msal/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/msal/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "msal";
-  version = "1.15.0";
+  version = "1.16.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "00d3cc77c3bcd8e2accaf178aa58a1d036918faa9c0f3039772cc16a470bdacc";
+    sha256 = "240fb04dba46a27fd6a3178db8334412d0d02e0be85166f9e05bb45d03399084";
   };
 
   propagatedBuildInputs = [
@@ -21,6 +21,13 @@ buildPythonPackage rec {
     requests
   ];
 
+  # we already have cryptography included, version bounds are causing issues
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "PyJWT[crypto]>=1.0.0,<3" "PyJWT" \
+      --replace "cryptography>=0.6,<38" "cryptography"
+  '';
+
   # Tests assume Network Connectivity:
   # https://github.com/AzureAD/microsoft-authentication-library-for-python/blob/e2958961e8ec16d0af4199f60c36c3f913497e48/tests/test_authority.py#L73
   doCheck = false;
diff --git a/nixpkgs/pkgs/development/python-modules/msgpack/default.nix b/nixpkgs/pkgs/development/python-modules/msgpack/default.nix
index 262e5d5ecd0e..3feeca74ccd6 100644
--- a/nixpkgs/pkgs/development/python-modules/msgpack/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/msgpack/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "msgpack";
-  version = "1.0.2";
+  version = "1.0.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1109s2yynrahwi64ikax68hx0mbclz8p35afmpphw5dwynb49q7s";
+    sha256 = "51fdc7fb93615286428ee7758cecc2f374d5ff363bdd884c7ea622a7a327a81e";
   };
 
   checkPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/msoffcrypto-tool/default.nix b/nixpkgs/pkgs/development/python-modules/msoffcrypto-tool/default.nix
new file mode 100644
index 000000000000..4f3dbc60d18a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/msoffcrypto-tool/default.nix
@@ -0,0 +1,55 @@
+{ lib
+, olefile
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, cryptography
+, pytestCheckHook
+, pythonOlder
+, setuptools
+}:
+
+buildPythonPackage rec {
+  pname = "msoffcrypto-tool";
+  version = "4.12.0";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "nolze";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-EBEwldh2Ct/4oxnAF1hWeW/uRrVsCYEi0cJaZubofFk=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    cryptography
+    olefile
+    setuptools
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Test fails with AssertionError
+    "test_cli"
+  ];
+
+  pythonImportsCheck = [
+    "msoffcrypto"
+  ];
+
+  meta = with lib; {
+    description = "Python tool and library for decrypting MS Office files with passwords or other keys";
+    homepage = "https://github.com/nolze/msoffcrypto-tool";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/msrplib/default.nix b/nixpkgs/pkgs/development/python-modules/msrplib/default.nix
deleted file mode 100644
index e615b3e34e2c..000000000000
--- a/nixpkgs/pkgs/development/python-modules/msrplib/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchdarcs
-, eventlib
-, application
-, gnutls
-}:
-
-buildPythonPackage rec {
-  pname = "python-msrplib";
-  version = "0.19.2";
-
-  src = fetchdarcs {
-    url = "http://devel.ag-projects.com/repositories/${pname}";
-    rev = "release-${version}";
-    sha256 = "0d0krwv4hhspjgppnvh0iz51bvdbz23cjasgrppip7x8b00514gz";
-  };
-
-  propagatedBuildInputs = [ eventlib application gnutls ];
-
-  meta = with lib; {
-    homepage = "https://github.com/AGProjects/python-msrplib";
-    description = "Client library for MSRP protocol and its relay extension (RFC 4975 and RFC4976)";
-    license = licenses.lgpl3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/mujson/default.nix b/nixpkgs/pkgs/development/python-modules/mujson/default.nix
new file mode 100644
index 000000000000..10f0e40b7626
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/mujson/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "mujson";
+  version = "1.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-J9nPGxDkLQje6AkL9cewNqmQ7Z+00TXBEr3p71E2cnE=";
+  };
+
+  # LICENSE file missing from src
+  # https://github.com/mattgiles/mujson/issues/8
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "license_file = LICENSE" ""
+  '';
+
+  # No tests
+  doCheck = false;
+  pythonImportsCheck = [ "mujson" ];
+
+  meta = with lib; {
+    description = "Use the fastest JSON functions available at import time";
+    homepage = "https://github.com/mattgiles/mujson";
+    license = licenses.mit;
+    maintainers = with maintainers; [ artturin ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/multidict/default.nix b/nixpkgs/pkgs/development/python-modules/multidict/default.nix
index ec19843ab9dc..0ea21ecbe405 100644
--- a/nixpkgs/pkgs/development/python-modules/multidict/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/multidict/default.nix
@@ -1,22 +1,28 @@
 { lib
 , fetchPypi
 , buildPythonPackage
-, pytestCheckHook, pytest-runner, pytest-cov
-, isPy3k
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "multidict";
-  version = "5.1.0";
+  version = "5.2.0";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "25b4e5f22d3a37ddf3effc0710ba692cfc792c2b9edfb9c05aefe823256e84d5";
+    sha256 = "0dd1c93edb444b33ba2274b66f63def8a327d607c6c790772f448a53b6ea59ce";
   };
 
-  checkInputs = [ pytestCheckHook pytest-runner pytest-cov ];
+  postPatch = ''
+    sed -i '/^addopts/d' setup.cfg
+  '';
+
+  checkInputs = [ pytestCheckHook ];
 
-  disabled = !isPy3k;
+  pythonImportsCheck = [ "multidict" ];
 
   meta = with lib; {
     description = "Multidict implementation";
diff --git a/nixpkgs/pkgs/development/python-modules/multimethod/default.nix b/nixpkgs/pkgs/development/python-modules/multimethod/default.nix
index af2e5950dc2d..fe2bb2ef45c1 100644
--- a/nixpkgs/pkgs/development/python-modules/multimethod/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/multimethod/default.nix
@@ -1,21 +1,23 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , pytestCheckHook
-, pytest-cov
 }:
+
 buildPythonPackage rec {
   pname = "multimethod";
-  version = "1.5";
+  version = "1.6";
+  format = "pyproject";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b9c6f85ecf187f14a3951fff319643e1fac3086d757dec64f2469e1fd136b65d";
+  src = fetchFromGitHub {
+    owner = "coady";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "09vrxzv8q0lqsbh6d83wjdd29ja66rj31y7wmyha14jk603fd9k0";
   };
 
   checkInputs = [
     pytestCheckHook
-    pytest-cov
   ];
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/multiprocess/default.nix b/nixpkgs/pkgs/development/python-modules/multiprocess/default.nix
index df304efb9199..491aa131bb59 100644
--- a/nixpkgs/pkgs/development/python-modules/multiprocess/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/multiprocess/default.nix
@@ -1,22 +1,36 @@
-{ lib, buildPythonPackage, fetchPypi, dill }:
+{ lib
+, buildPythonPackage
+, dill
+, fetchFromGitHub
+}:
 
 buildPythonPackage rec {
   pname = "multiprocess";
-  version = "0.70.9";
+  version = "0.70.12.2";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "9fd5bd990132da77e73dec6e9613408602a4612e1d73caf2e2b813d2b61508e5";
+  src = fetchFromGitHub {
+    owner = "uqfoundation";
+    repo = pname;
+    rev = "multiprocess-${version}";
+    sha256 = "1npikdgj0qriqj384vg22qgq2xqylypk67sx1qfmdzvk6c4iyg0w";
   };
 
-  propagatedBuildInputs = [ dill ];
+  propagatedBuildInputs = [
+    dill
+  ];
 
   # Python-version dependent tests
   doCheck = false;
 
+  pythonImportsCheck = [
+    "multiprocess"
+  ];
+
   meta = with lib; {
-    description = "Better multiprocessing and multithreading in python";
+    description = "Multiprocessing and multithreading in Python";
     homepage = "https://github.com/uqfoundation/multiprocess";
     license = licenses.bsd3;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/multitasking/default.nix b/nixpkgs/pkgs/development/python-modules/multitasking/default.nix
index 8ea4d633f662..2784a0d2e2ee 100644
--- a/nixpkgs/pkgs/development/python-modules/multitasking/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/multitasking/default.nix
@@ -5,12 +5,12 @@
 
 buildPythonPackage rec {
   pname = "multitasking";
-  version = "0.0.9";
+  version = "0.0.10";
 
   # GitHub source releases aren't tagged
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b59d99f709d2e17d60ccaa2be09771b6e9ed9391c63f083c0701e724f624d2e0";
+    sha256 = "810640fa6670be41f4a712b287d9307a14ad849d966f06a17d2cf1593b66c3cd";
   };
 
   doCheck = false;  # No tests included
diff --git a/nixpkgs/pkgs/development/python-modules/murmurhash/default.nix b/nixpkgs/pkgs/development/python-modules/murmurhash/default.nix
index 297026c18f72..a5f414cad54f 100644
--- a/nixpkgs/pkgs/development/python-modules/murmurhash/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/murmurhash/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "murmurhash";
-  version = "1.0.5";
+  version = "1.0.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "98ec9d727bd998a35385abd56b062cf0cca216725ea7ec5068604ab566f7e97f";
+    sha256 = "00a5252b569d3f914b5bd0bce72d2efe9c0fb91a9703556ea1b608b141c68f2d";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/mutagen/1.43.nix b/nixpkgs/pkgs/development/python-modules/mutagen/1.43.nix
index a7a7c7c66049..7f2e9f452b4d 100644
--- a/nixpkgs/pkgs/development/python-modules/mutagen/1.43.nix
+++ b/nixpkgs/pkgs/development/python-modules/mutagen/1.43.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , hypothesis
 , pycodestyle
 , pyflakes
diff --git a/nixpkgs/pkgs/development/python-modules/mutagen/default.nix b/nixpkgs/pkgs/development/python-modules/mutagen/default.nix
index df0872242a17..33fc3c02daeb 100644
--- a/nixpkgs/pkgs/development/python-modules/mutagen/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mutagen/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , isPy27
-, fetchpatch
 , flake8
 , hypothesis
 , pycodestyle
diff --git a/nixpkgs/pkgs/development/python-modules/mutf8/default.nix b/nixpkgs/pkgs/development/python-modules/mutf8/default.nix
index ce783bbb5ff9..954cc663c2a4 100644
--- a/nixpkgs/pkgs/development/python-modules/mutf8/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mutf8/default.nix
@@ -7,7 +7,8 @@
 
 buildPythonPackage rec {
   pname = "mutf8";
-  version = "1.0.5";
+  version = "1.0.6";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
@@ -15,7 +16,7 @@ buildPythonPackage rec {
     owner = "TkTech";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0blp6gb7q3f7if326xard8zlfg2rcmb3a7mxvaxgkvxigipjb9af";
+    hash = "sha256-4Ojn3t0EbOVdrYEiY8JegJuvW9sz8jt9tKFwOluiGQo=";
   };
 
   checkInputs = [
@@ -27,7 +28,9 @@ buildPythonPackage rec {
     pytest
   '';
 
-  pythonImportsCheck = [ "mutf8" ];
+  pythonImportsCheck = [
+    "mutf8"
+  ];
 
   meta = with lib; {
     description = "Fast MUTF-8 encoder & decoder";
diff --git a/nixpkgs/pkgs/development/python-modules/muttils/default.nix b/nixpkgs/pkgs/development/python-modules/muttils/default.nix
deleted file mode 100644
index 98f96d132123..000000000000
--- a/nixpkgs/pkgs/development/python-modules/muttils/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, isPy3k
-}:
-
-buildPythonPackage {
-  pname = "muttils";
-  version = "1.3";
-  disabled = isPy3k;
-
-  src = fetchurl {
-    url = "https://www.blacktrash.org/hg/muttils/archive/8bb26094df06.tar.bz2";
-    sha256 = "1a4kxa0fpgg6rdj5p4kggfn8xpniqh8v5kbiaqc6wids02m7kag6";
-  };
-
-  # Tests don't work
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Utilities for use with console mail clients, like mutt";
-    homepage = "https://www.blacktrash.org/hg/muttils";
-    license = licenses.gpl2Plus;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/mwdblib/default.nix b/nixpkgs/pkgs/development/python-modules/mwdblib/default.nix
index e73cf06194fe..53ca11459efe 100644
--- a/nixpkgs/pkgs/development/python-modules/mwdblib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mwdblib/default.nix
@@ -13,13 +13,13 @@
 
 buildPythonPackage rec {
   pname = "mwdblib";
-  version = "3.4.0";
+  version = "3.4.1";
 
   src = fetchFromGitHub {
     owner = "CERT-Polska";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0dbdmps4a3mav02m4h37bj2bw8pg6h52yf3gpdkhi3k9hl9f942h";
+    sha256 = "sha256-jCtK3Fk725EaA26GG6j6xqEMFH4Qq92QWrJ7sxcWRaY=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/mwlib-ext/default.nix b/nixpkgs/pkgs/development/python-modules/mwlib-ext/default.nix
deleted file mode 100644
index b9b18eaf9e5f..000000000000
--- a/nixpkgs/pkgs/development/python-modules/mwlib-ext/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  version = "0.13.2";
-  pname = "mwlib.ext";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    extension = "zip";
-    sha256 = "9229193ee719568d482192d9d913b3c4bb96af7c589d6c31ed4a62caf5054278";
-  };
-
-  meta = with lib; {
-    description = "Dependencies for mwlib markup";
-    homepage = "http://pediapress.com/code/";
-    license = licenses.bsd3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/mwlib-rl/default.nix b/nixpkgs/pkgs/development/python-modules/mwlib-rl/default.nix
deleted file mode 100644
index fdb70726eb6e..000000000000
--- a/nixpkgs/pkgs/development/python-modules/mwlib-rl/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mwlib
-, mwlib-ext
-, pygments
-}:
-
-buildPythonPackage rec {
-  version = "0.14.5";
-  pname = "mwlib.rl";
-
-  src = fetchPypi {
-    inherit pname version;
-    extension = "zip";
-    sha256 = "dddf9603ea0ca5aa87890217709eb5a5b16baeca547db3daad43c3ace73b6bc1";
-  };
-
-  buildInputs = [ mwlib mwlib-ext pygments ];
-
-  meta = with lib; {
-    description = "Generate pdfs from mediawiki markup";
-    homepage = "http://pediapress.com/code/";
-    license = licenses.bsd3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/mwlib/default.nix b/nixpkgs/pkgs/development/python-modules/mwlib/default.nix
deleted file mode 100644
index d9edb2ef3ba5..000000000000
--- a/nixpkgs/pkgs/development/python-modules/mwlib/default.nix
+++ /dev/null
@@ -1,55 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, apipkg
-, bottle
-, gevent
-, lxml
-, odfpy
-, pillow
-, py
-, pyPdf
-, pyparsing
-, qserve
-, roman
-, simplejson
-, sqlite3dbm
-, timelib
-, pytest
-}:
-
-buildPythonPackage rec {
-  version = "0.16.1";
-  pname = "mwlib";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1dnmnkc21zdfaypskbpvkwl0wpkpn0nagj1fc338w64mbxrk8ny7";
-  };
-
-  propagatedBuildInputs = [ apipkg bottle gevent lxml odfpy pillow py pyPdf pyparsing qserve roman simplejson sqlite3dbm timelib ];
-
-  checkInputs = [ pytest ];
-
-  postPatch = ''
-    sed -i "s/odfpy>=0.9, <0.10/odfpy/" setup.py
-    sed -i "s/pyparsing>=1.4.11,<1.6/pyparsing/" setup.py
-  '';
-
-  checkPhase = ''
-    py.test
-  '';
-
-  # Tests are in build directory but we need extension modules that are in $out
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Library for parsing MediaWiki articles and converting them to different output formats";
-    homepage = "http://pediapress.com/code/";
-    license = licenses.bsd3;
-    # broken = true; # Requires different versions of packages
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/myfitnesspal/default.nix b/nixpkgs/pkgs/development/python-modules/myfitnesspal/default.nix
index 35d1c70a23a7..567eeaf69698 100644
--- a/nixpkgs/pkgs/development/python-modules/myfitnesspal/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/myfitnesspal/default.nix
@@ -1,34 +1,67 @@
-{ lib, fetchPypi, buildPythonPackage
-, blessed, keyring, keyrings-alt, lxml, measurement, python-dateutil, requests, six, rich
-, pytestCheckHook, mock, nose }:
+{ lib
+, fetchPypi
+, buildPythonPackage
+, blessed
+, keyring
+, keyrings-alt
+, lxml
+, measurement
+, python-dateutil
+, requests
+, six
+, rich
+, pytestCheckHook
+, mock
+, nose
+}:
 
 # TODO: Define this package in "all-packages.nix" using "toPythonApplication".
 # This currently errors out, complaining about not being able to find "etree" from "lxml" even though "lxml" is defined in "propagatedBuildInputs".
 
 buildPythonPackage rec {
   pname = "myfitnesspal";
-  version = "1.16.4";
+  version = "1.16.6";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "44b31623fd71fedd891c3f66be3bc1caa6f1caf88076a75236ab74f8807f6ae5";
+    sha256 = "ac07369ede3ca4c6d673e02f2b9e0893b17d079f3085e36fdfdbdd1cba9f37db";
   };
 
-  # Remove overly restrictive version constraints
+  propagatedBuildInputs = [
+    blessed
+    keyring
+    keyrings-alt
+    lxml
+    measurement
+    python-dateutil
+    requests
+    six
+    rich
+  ];
+
+  checkInputs = [
+    mock
+    nose
+    pytestCheckHook
+  ];
+
   postPatch = ''
-    sed -i 's/keyring>=.*/keyring/' requirements.txt
-    sed -i 's/keyrings.alt>=.*/keyrings.alt/' requirements.txt
-    sed -i 's/rich>=.*/rich/' requirements.txt
+    # Remove overly restrictive version constraints
+    sed -i -e "s/>=.*//" requirements.txt
   '';
 
-  propagatedBuildInputs = [ blessed keyring keyrings-alt lxml measurement python-dateutil requests six rich ];
+  disabledTests = [
+    # Integration tests require an account to be set
+    "test_integration"
+  ];
 
-  # Integration tests require an account to be set
-  disabledTests = [ "test_integration" ];
-  checkInputs = [ pytestCheckHook mock nose ];
+  pythonImportsCheck = [
+    "myfitnesspal"
+  ];
 
   meta = with lib; {
-    description = "Access your meal tracking data stored in MyFitnessPal programatically";
+    description = "Python module to access meal tracking data stored in MyFitnessPal";
     homepage = "https://github.com/coddingtonbear/python-myfitnesspal";
     license = licenses.mit;
     maintainers = with maintainers; [ bhipple ];
diff --git a/nixpkgs/pkgs/development/python-modules/myhome/default.nix b/nixpkgs/pkgs/development/python-modules/myhome/default.nix
new file mode 100644
index 000000000000..de729243f042
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/myhome/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pytestCheckHook
+, python-dateutil
+, pythonOlder
+, urllib3
+}:
+
+buildPythonPackage rec {
+  pname = "myhome";
+  version = "0.2.1";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "speijnik";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-DJzwvgvSA9Q0kpueUoQV64pdDDNA7WzGu7r+g5aqutk=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    python-dateutil
+    urllib3
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "myhome"
+  ];
+
+  meta = with lib; {
+    description = "Python library for interacting with MyHomeSERVER1";
+    homepage = "https://github.com/speijnik/myhome";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/mypy-boto3-s3/default.nix b/nixpkgs/pkgs/development/python-modules/mypy-boto3-s3/default.nix
index 5bbdb332f87a..b26086f00ae0 100644
--- a/nixpkgs/pkgs/development/python-modules/mypy-boto3-s3/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mypy-boto3-s3/default.nix
@@ -8,23 +8,27 @@
 
 buildPythonPackage rec {
   pname = "mypy-boto3-s3";
-  version = "1.18.64";
+  version = "1.20.17";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c1640be24881b174b318888d6a0bfc7fc25d51ec9b263c60c6c5bac1e3295b70";
+    sha256 = "sha256-7Zw8NxOEXDRmLChxHQXVU/HzR8z6HuLxX8bB3pZuCqc=";
   };
 
   propagatedBuildInputs = [
     boto3
-  ] ++ lib.optionals (pythonOlder "3.8") [
+  ] ++ lib.optionals (pythonOlder "3.9") [
     typing-extensions
   ];
 
   # Project has no tests
   doCheck = false;
-  pythonImportsCheck = [ "mypy_boto3_s3" ];
+
+  pythonImportsCheck = [
+    "mypy_boto3_s3"
+  ];
 
   meta = with lib; {
     description = "Type annotations for boto3";
diff --git a/nixpkgs/pkgs/development/python-modules/mypy-protobuf/default.nix b/nixpkgs/pkgs/development/python-modules/mypy-protobuf/default.nix
index c7194d19b5cb..fdcfed839c78 100644
--- a/nixpkgs/pkgs/development/python-modules/mypy-protobuf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mypy-protobuf/default.nix
@@ -2,13 +2,14 @@
 
 buildPythonApplication rec {
   pname = "mypy-protobuf";
-  version = "2.9";
+  version = "2.10";
+  format = "pyproject";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "278172935d7121c2f8c7c0a05518dd565a2b76d9e9c4a0a3fcd08a21fa685d43";
+    sha256 = "1fed214e16351b09946770794a321a818abb744078b1d863a479da070028684c";
   };
 
   propagatedBuildInputs = [ protobuf types-protobuf grpcio-tools ];
diff --git a/nixpkgs/pkgs/development/python-modules/mypy/default.nix b/nixpkgs/pkgs/development/python-modules/mypy/default.nix
index dbbcb30ffcec..149aefb9a57f 100644
--- a/nixpkgs/pkgs/development/python-modules/mypy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mypy/default.nix
@@ -1,28 +1,58 @@
-{ lib, stdenv, fetchPypi, buildPythonPackage, typed-ast, psutil, isPy3k
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchpatch
+, buildPythonPackage
 , mypy-extensions
+, python
+, pythonOlder
+, typed-ast
 , typing-extensions
+, tomli
+, types-typed-ast
 }:
+
 buildPythonPackage rec {
   pname = "mypy";
-  version = "0.812";
-  disabled = !isPy3k;
+  version = "0.930";
+  disabled = pythonOlder "3.6";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "069i9qnfanp7dn8df1vspnqb0flvsszzn22v00vj08nzlnd061yd";
+  src = fetchFromGitHub {
+    owner = "python";
+    repo = "mypy";
+    rev = "v${version}";
+    sha256 = "sha256-0yo6f9hRYFfwdfukOGNNTgPCIFO2MZdfMvzbci7FWRs=";
   };
 
-  propagatedBuildInputs = [ typed-ast psutil mypy-extensions typing-extensions ];
+  patches = [
+    # FIXME: Remove patch after upstream has decided the proper solution.
+    #        https://github.com/python/mypy/pull/11143
+    (fetchpatch {
+      url = "https://github.com/python/mypy/commit/f1755259d54330cd087cae763cd5bbbff26e3e8a.patch";
+      sha256 = "sha256-5gPahX2X6+/qUaqDQIGJGvh9lQ2EDtks2cpQutgbOHk=";
+    })
+  ];
+
+  buildInputs = [
+    types-typed-ast
+  ];
+
+  propagatedBuildInputs = [
+    mypy-extensions
+    tomli
+    typed-ast
+    typing-extensions
+  ];
 
   # Tests not included in pip package.
   doCheck = false;
 
   pythonImportsCheck = [
     "mypy"
-    "mypy.types"
     "mypy.api"
     "mypy.fastparse"
     "mypy.report"
+    "mypy.types"
     "mypyc"
     "mypyc.analysis"
   ];
@@ -32,10 +62,13 @@ buildPythonPackage rec {
   # is64bit: unfortunately the build would exhaust all possible memory on i686-linux.
   MYPY_USE_MYPYC = stdenv.buildPlatform.is64bit;
 
+  # when testing reduce optimisation level to drastically reduce build time
+  MYPYC_OPT_LEVEL = 1;
+
   meta = with lib; {
     description = "Optional static typing for Python";
-    homepage    = "http://www.mypy-lang.org";
-    license     = licenses.mit;
-    maintainers = with maintainers; [ martingms lnl7 ];
+    homepage = "http://www.mypy-lang.org";
+    license = licenses.mit;
+    maintainers = with maintainers; [ martingms lnl7 SuperSandro2000 ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/mypy/extensions.nix b/nixpkgs/pkgs/development/python-modules/mypy/extensions.nix
index 5992a6815d8e..e62fa4230fff 100644
--- a/nixpkgs/pkgs/development/python-modules/mypy/extensions.nix
+++ b/nixpkgs/pkgs/development/python-modules/mypy/extensions.nix
@@ -13,12 +13,12 @@ buildPythonPackage rec {
     sha256 = "2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8";
   };
 
-  propagatedBuildInputs = if pythonOlder "3.5" then [ typing ] else [ ];
+  propagatedBuildInputs = lib.optional (pythonOlder "3.5") typing;
 
   meta = with lib; {
     description = "Experimental type system extensions for programs checked with the mypy typechecker";
-    homepage    = "http://www.mypy-lang.org";
-    license     = licenses.mit;
-    maintainers = with maintainers; [ martingms lnl7 ];
+    homepage = "http://www.mypy-lang.org";
+    license = licenses.mit;
+    maintainers = with maintainers; [ martingms lnl7 SuperSandro2000 ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/mysqlclient/default.nix b/nixpkgs/pkgs/development/python-modules/mysqlclient/default.nix
index b7a0f39990ea..ad1e321e9f84 100644
--- a/nixpkgs/pkgs/development/python-modules/mysqlclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mysqlclient/default.nix
@@ -2,7 +2,7 @@
 
 buildPythonPackage rec {
   pname = "mysqlclient";
-  version = "2.0.3";
+  version = "2.1.0";
 
   nativeBuildInputs = [
     libmysqlclient
@@ -17,7 +17,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f6ebea7c008f155baeefe16c56cd3ee6239f7a5a9ae42396c2f1860f08a7c432";
+    sha256 = "973235686f1b720536d417bf0a0d39b4ab3d5086b2b6ad5e6752393428c02b12";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/namebench/default.nix b/nixpkgs/pkgs/development/python-modules/namebench/default.nix
deleted file mode 100644
index b7b542b8a7a9..000000000000
--- a/nixpkgs/pkgs/development/python-modules/namebench/default.nix
+++ /dev/null
@@ -1,49 +0,0 @@
-{ lib
-, buildPythonPackage
-, isPy3k
-, isPyPy
-, fetchurl
-, tkinter
-}:
-
-buildPythonPackage rec {
-  pname = "namebench";
-  version = "1.3.1";
-  disabled = isPy3k || isPyPy;
-
-  src = fetchurl {
-    url = "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/{pname}/${pname}-${version}-source.tgz";
-    sha256 = "09clbcd6wxgk4r6qw7hb78h818mvca7lijigy1mlq5y1f3lgkk1h";
-  };
-
-  # error: invalid command 'test'
-  doCheck = false;
-
-  propagatedBuildInputs = [ tkinter ];
-
-  # namebench expects to be run from its own source tree (it uses relative
-  # paths to various resources), make it work.
-  postInstall = ''
-    sed -i "s|import os|import os; os.chdir(\"$out/namebench\")|" "$out/bin/namebench.py"
-  '';
-
-  meta = with lib; {
-    homepage = "https://github.com/google/namebench"; # Formerly https://code.google.com/archive/p/namebench/
-    description = "Find fastest DNS servers available";
-    license = with licenses; [
-      asl20
-      # third-party program licenses (embedded in the sources)
-      lgpl21 # Crystal_Clear
-      isc # dns
-      bsd3 # jinja2
-    ];
-    longDescription = ''
-      It hunts down the fastest DNS servers available for your computer to
-      use. namebench runs a fair and thorough benchmark using your web
-      browser history, tcpdump output, or standardized datasets in order
-      to provide an individualized recommendation. namebench is completely
-      free and does not modify your system in any way.
-    '';
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/napari-console/default.nix b/nixpkgs/pkgs/development/python-modules/napari-console/default.nix
new file mode 100644
index 000000000000..f809587f75f2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/napari-console/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools-scm
+, pytestCheckHook
+, pytest
+, ipython
+, ipykernel
+, qtconsole
+, napari-plugin-engine
+, imageio
+}: buildPythonPackage rec {
+  pname = "napari-console";
+  version = "0.0.4";
+  src = fetchFromGitHub {
+    owner = "napari";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-aVdYOzkZ+dqB680oDjNCg6quXU+QgUZI09E/MSTagyA=";
+  };
+  nativeBuildInputs = [ setuptools-scm ];
+  # setup.py somehow requires pytest
+  propagatedBuildInputs = [ pytest ipython ipykernel napari-plugin-engine imageio qtconsole ];
+  chechInputs = [ pytestCheckHook ];
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  meta = with lib; {
+    description = "A plugin that adds a console to napari";
+    homepage = "https://github.com/napari/napari-console";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ SomeoneSerge ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/napari-plugin-engine/default.nix b/nixpkgs/pkgs/development/python-modules/napari-plugin-engine/default.nix
new file mode 100644
index 000000000000..802b25e8df14
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/napari-plugin-engine/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools-scm
+, pytestCheckHook
+}: buildPythonPackage rec {
+  pname = "napari-plugin-engine";
+  version = "0.2.0";
+  src = fetchFromGitHub {
+    owner = "napari";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-cKpCAEYYRq3UPje7REjzhEe1J9mmrtXs8TBnxWukcNE=";
+  };
+  nativeBuildInputs = [ setuptools-scm ];
+  checkInputs = [ pytestCheckHook ];
+  doCheck = false;
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  meta = with lib; {
+    description = "A fork of pluggy for napari - plugin management package";
+    homepage = "https://github.com/napari/napari-plugin-engine";
+    license = licenses.mit;
+    maintainers = with maintainers; [ SomeoneSerge ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/napari-svg/default.nix b/nixpkgs/pkgs/development/python-modules/napari-svg/default.nix
new file mode 100644
index 000000000000..89101e824445
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/napari-svg/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools-scm
+, pytestCheckHook
+, vispy
+, napari-plugin-engine
+, imageio
+}: buildPythonPackage rec {
+  pname = "napari-svg";
+  version = "0.1.5";
+  src = fetchFromGitHub {
+    owner = "napari";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-20NLi6JTugP+hxqF2AnhSkuvhkGGbeG+tT3M2SZbtRc=";
+  };
+  nativeBuildInputs = [ setuptools-scm ];
+  propagatedBuildInputs = [ vispy napari-plugin-engine imageio ];
+  checkInputs = [ pytestCheckHook ];
+  doCheck = false; # Circular dependency: napari
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  meta = with lib; {
+    description = "A plugin for writing svg files from napari";
+    homepage = "https://github.com/napari/napari-svg";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ SomeoneSerge ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/napari/default.nix b/nixpkgs/pkgs/development/python-modules/napari/default.nix
new file mode 100644
index 000000000000..74936da4f725
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/napari/default.nix
@@ -0,0 +1,75 @@
+{ lib
+, mkDerivationWith
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools-scm
+, superqt
+, typing-extensions
+, tifffile
+, napari-plugin-engine
+, pint
+, pyyaml
+, numpydoc
+, dask
+, magicgui
+, docstring-parser
+, appdirs
+, imageio
+, pyopengl
+, cachey
+, napari-svg
+, psutil
+, napari-console
+, wrapt
+, pydantic
+, tqdm
+, jsonschema
+, scipy
+, wrapQtAppsHook
+}: mkDerivationWith buildPythonPackage rec {
+  pname = "napari";
+  version = "0.4.12";
+  src = fetchFromGitHub {
+    owner = "napari";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-0QSI0mgDjF70/X58fE7uWwlBUCGY5gsvbCm4oJkp2Yk=";
+  };
+  nativeBuildInputs = [ setuptools-scm wrapQtAppsHook ];
+  propagatedBuildInputs = [
+    napari-plugin-engine
+    cachey
+    napari-svg
+    napari-console
+    superqt
+    magicgui
+    typing-extensions
+    tifffile
+    pint
+    pyyaml
+    numpydoc
+    dask
+    docstring-parser
+    appdirs
+    imageio
+    pyopengl
+    psutil
+    wrapt
+    pydantic
+    tqdm
+    jsonschema
+    scipy
+  ];
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+  dontUseSetuptoolsCheck = true;
+  postFixup = ''
+    wrapQtApp $out/bin/napari
+  '';
+
+  meta = with lib; {
+    description = "A fast, interactive, multi-dimensional image viewer for python";
+    homepage = "https://github.com/napari/napari";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ SomeoneSerge ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nassl/default.nix b/nixpkgs/pkgs/development/python-modules/nassl/default.nix
index 97033224c14a..b9e19439251a 100644
--- a/nixpkgs/pkgs/development/python-modules/nassl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nassl/default.nix
@@ -3,7 +3,8 @@
 , fetchurl
 , buildPythonPackage
 , pkgsStatic
-, openssl
+, openssl_1_1
+, openssl_1_0_2
 , invoke
 , tls-parser
 , cacert
@@ -36,7 +37,7 @@ let
     "enable-mdc2"
     "-fPIC"
   ];
-  opensslStatic = (openssl.override nasslOpensslArgs).overrideAttrs (
+  opensslStatic = (openssl_1_1.override nasslOpensslArgs).overrideAttrs (
     oldAttrs: rec {
       name = "openssl-${version}";
       version = "1.1.1h";
@@ -49,10 +50,24 @@ let
         "enable-tls1_3"
         "no-async"
       ];
+      patches = builtins.filter (
+        p: (builtins.baseNameOf (toString p)) != "macos-yosemite-compat.patch"
+      ) oldAttrs.patches;
       buildInputs = oldAttrs.buildInputs ++ [ zlibStatic cacert ];
+      meta = oldAttrs.meta // {
+        knownVulnerabilities = [
+          "CVE-2020-1971"
+          "CVE-2021-23840"
+          "CVE-2021-23841"
+          "CVE-2021-3449"
+          "CVE-2021-3450"
+          "CVE-2021-3711"
+          "CVE-2021-3712"
+        ];
+      };
     }
   );
-  opensslLegacyStatic = (openssl.override nasslOpensslArgs).overrideAttrs (
+  opensslLegacyStatic = (openssl_1_0_2.override nasslOpensslArgs).overrideAttrs (
     oldAttrs: rec {
       name = "openssl-${version}";
       version = "1.0.2e";
@@ -61,7 +76,9 @@ let
         sha256 = "1zqb1rff1wikc62a7vj5qxd1k191m8qif5d05mwdxz2wnzywlg72";
       };
       configureFlags = oldAttrs.configureFlags ++ nasslOpensslFlagsCommon;
-      patches = [ ];
+      patches = builtins.filter (
+        p: (builtins.baseNameOf (toString p)) == "darwin64-arm64.patch"
+      ) oldAttrs.patches;
       buildInputs = oldAttrs.buildInputs ++ [ zlibStatic ];
       # openssl_1_0_2 needs `withDocs = false`
       outputs = lib.remove "doc" oldAttrs.outputs;
@@ -70,14 +87,14 @@ let
 in
 buildPythonPackage rec {
   pname = "nassl";
-  version = "4.0.0";
+  version = "4.0.1";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "nabla-c0d3";
     repo = pname;
     rev = version;
-    hash = "sha256-6lk2YfI9km10YbJAn38fvo9qa4iXcByL+udCsDe+kvU=";
+    hash = "sha256-QzO7ABh2weBO6NVFIj7kZpS8ashbDGompuvdKteJeUc=";
   };
 
   postPatch = let
diff --git a/nixpkgs/pkgs/development/python-modules/natsort/default.nix b/nixpkgs/pkgs/development/python-modules/natsort/default.nix
index e7a2a6808a8a..3c9d625db70f 100644
--- a/nixpkgs/pkgs/development/python-modules/natsort/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/natsort/default.nix
@@ -1,48 +1,47 @@
 { lib
 , buildPythonPackage
-, pythonOlder
+, fastnumbers
 , fetchPypi
-, pytest
-, pytest-cov
-, pytest-mock
-, hypothesis
 , glibcLocales
-, pathlib ? null
-, isPy3k
+, hypothesis
+, PyICU
+, pytest-mock
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "natsort";
-  version = "7.1.1";
+  version = "7.2.0";
+  format = "setuptools";
 
-  checkInputs = [
-    pytest
-    pytest-cov
-    pytest-mock
-    hypothesis
-    glibcLocales
-  ]
-  # pathlib was made part of standard library in 3.5:
-  ++ (lib.optionals (pythonOlder "3.4") [ pathlib ]);
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "00c603a42365830c4722a2eb7663a25919551217ec09a243d3399fa8dd4ac403";
+    sha256 = "e7054b4e1f47365f141602a742685165a552291b643a214652d0dd9d6cea58d1";
   };
 
-  # Does not support Python 2
-  disabled = !isPy3k;
+  propagatedBuildInputs = [
+    fastnumbers
+    PyICU
+  ];
+
+  checkInputs = [
+    glibcLocales
+    hypothesis
+    pytest-mock
+    pytestCheckHook
+  ];
 
-  # testing based on project's tox.ini
-  # natsort_keygen has pytest mock issues
-  checkPhase = ''
-    pytest --doctest-modules natsort
-    pytest --ignore=tests/test_natsort_keygen.py
-  '';
+  pythonImportsCheck = [
+    "natsort"
+  ];
 
-  meta = {
-    description = "Natural sorting for python";
+  meta = with lib; {
+    description = "Natural sorting for Python";
     homepage = "https://github.com/SethMMorton/natsort";
-    license = lib.licenses.mit;
+    license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/nbclient/default.nix b/nixpkgs/pkgs/development/python-modules/nbclient/default.nix
index 3b9986bae048..c10b442bac92 100644
--- a/nixpkgs/pkgs/development/python-modules/nbclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nbclient/default.nix
@@ -1,26 +1,27 @@
 { lib, buildPythonPackage, fetchPypi, pythonOlder,
-  async_generator, traitlets, nbformat, nest-asyncio, jupyter_client,
+  async_generator, traitlets, nbformat, nest-asyncio, jupyter-client,
   pytest, xmltodict, nbconvert, ipywidgets
 , doCheck ? true
 }:
 
 buildPythonPackage rec {
   pname = "nbclient";
-  version = "0.5.4";
+  version = "0.5.9";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6c8ad36a28edad4562580847f9f1636fe5316a51a323ed85a24a4ad37d4aefce";
+    sha256 = "sha256-meRt2vrNC4YSk78kb+2FQKGErfo6p9ZB+JAx7AcHAeA=";
   };
 
   inherit doCheck;
   checkInputs = [ pytest xmltodict nbconvert ipywidgets ];
-  propagatedBuildInputs = [ async_generator traitlets nbformat nest-asyncio jupyter_client ];
+  propagatedBuildInputs = [ async_generator traitlets nbformat nest-asyncio jupyter-client ];
 
   meta = with lib; {
     homepage = "https://github.com/jupyter/nbclient";
     description = "A client library for executing notebooks";
     license = licenses.bsd3;
+    maintainers = [ maintainers.erictapen ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/nbconvert/default.nix b/nixpkgs/pkgs/development/python-modules/nbconvert/default.nix
index 67d08f9e50ff..400d59272ee1 100644
--- a/nixpkgs/pkgs/development/python-modules/nbconvert/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nbconvert/default.nix
@@ -17,17 +17,17 @@
 , ipykernel
 , pandocfilters
 , tornado
-, jupyter_client
+, jupyter-client
 , defusedxml
 }:
 
 buildPythonPackage rec {
   pname = "nbconvert";
-  version = "6.1.0";
+  version = "6.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d22a8ff202644d31db254d24d52c3a96c82156623fcd7c7f987bba2612303ec9";
+    sha256 = "5e77d6203854944520105e38f2563a813a4a3708e8563aa598928a3b5ee1081a";
   };
 
   # Add $out/share/jupyter to the list of paths that are used to search for
@@ -44,7 +44,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     entrypoints bleach mistune jinja2 pygments traitlets testpath
-    jupyter_core nbformat ipykernel pandocfilters tornado jupyter_client
+    jupyter_core nbformat ipykernel pandocfilters tornado jupyter-client
     defusedxml
     (nbclient.override { doCheck = false; }) # avoid infinite recursion
     jupyterlab-pygments
diff --git a/nixpkgs/pkgs/development/python-modules/nbdime/default.nix b/nixpkgs/pkgs/development/python-modules/nbdime/default.nix
index a4cbe11fbe7a..fa72ab748d75 100644
--- a/nixpkgs/pkgs/development/python-modules/nbdime/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nbdime/default.nix
@@ -18,18 +18,19 @@
 , tornado
 , requests
 , GitPython
+, jupyter-server-mathjax
 , notebook
 , jinja2
 }:
 
 buildPythonPackage rec {
   pname = "nbdime";
-  version = "3.1.0";
+  version = "3.1.1";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "12dc4390b355b26d07ac8d11d50efbcb54bae0ad5842b817131babd2f4567963";
+    sha256 = "67767320e971374f701a175aa59abd3a554723039d39fae908e72d16330d648b";
   };
 
   checkInputs = [
@@ -59,6 +60,7 @@ buildPythonPackage rec {
     py
     setuptools
     six
+    jupyter-server-mathjax
     nbformat
     colorama
     pygments
diff --git a/nixpkgs/pkgs/development/python-modules/nbformat/2.nix b/nixpkgs/pkgs/development/python-modules/nbformat/2.nix
deleted file mode 100644
index 06d02520b20d..000000000000
--- a/nixpkgs/pkgs/development/python-modules/nbformat/2.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, glibcLocales
-, ipython_genutils
-, traitlets
-, testpath
-, jsonschema
-, jupyter_core
-}:
-
-buildPythonPackage rec {
-  pname = "nbformat";
-  version = "4.4.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "f7494ef0df60766b7cabe0a3651556345a963b74dbc16bc7c18479041170d402";
-  };
-
-  LC_ALL="en_US.utf8";
-
-  checkInputs = [ pytest glibcLocales ];
-  propagatedBuildInputs = [ ipython_genutils traitlets testpath jsonschema jupyter_core ];
-
-  preCheck = ''
-    mkdir tmp
-    export HOME=tmp
-  '';
-
-  # Some of the tests use localhost networking.
-  __darwinAllowLocalNetworking = true;
-
-  meta = {
-    description = "The Jupyter Notebook format";
-    homepage = "https://jupyter.org/";
-    license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ globin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/nbsmoke/default.nix b/nixpkgs/pkgs/development/python-modules/nbsmoke/default.nix
index 86c5afd8c4a7..a7c5425963aa 100644
--- a/nixpkgs/pkgs/development/python-modules/nbsmoke/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nbsmoke/default.nix
@@ -2,7 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , pytest
-, jupyter_client
+, jupyter-client
 , ipykernel
 , holoviews
 , nbformat
@@ -24,7 +24,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     pytest
     holoviews
-    jupyter_client
+    jupyter-client
     ipykernel
     nbformat
     nbconvert
diff --git a/nixpkgs/pkgs/development/python-modules/nbval/default.nix b/nixpkgs/pkgs/development/python-modules/nbval/default.nix
index 176986492555..3db084665221 100644
--- a/nixpkgs/pkgs/development/python-modules/nbval/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nbval/default.nix
@@ -3,7 +3,7 @@
 , fetchPypi
 , coverage
 , ipykernel
-, jupyter_client
+, jupyter-client
 , nbformat
 , pytestCheckHook
 , pytest
@@ -11,7 +11,6 @@
 , glibcLocales
 , matplotlib
 , sympy
-, pytest-cov
 }:
 
 buildPythonPackage rec {
@@ -23,41 +22,48 @@ buildPythonPackage rec {
     sha256 = "cfefcd2ef66ee2d337d0b252c6bcec4023384eb32e8b9e5fcc3ac80ab8cd7d40";
   };
 
-  checkInputs = [
-    pytestCheckHook
-    matplotlib
-    sympy
-    pytest-cov
+  buildInputs = [
+    glibcLocales
   ];
 
-  buildInputs = [ glibcLocales ];
-
   propagatedBuildInputs = [
     coverage
     ipykernel
-    jupyter_client
+    jupyter-client
     nbformat
     pytest
     six
   ];
 
-  pytestFlagsArray = [
-    "tests"
+  checkInputs = [
+    pytestCheckHook
+    matplotlib
+    sympy
+  ];
+
+  disabledTestPaths = [
+    "tests/test_ignore.py"
     # These are the main tests but they're fragile so skip them. They error
     # whenever matplotlib outputs any unexpected warnings, e.g. deprecation
     # warnings.
-    "--ignore=tests/test_unit_tests_in_notebooks.py"
+    "tests/test_unit_tests_in_notebooks.py"
     # Impure
-    "--ignore=tests/test_timeouts.py"
+    "tests/test_timeouts.py"
+    # No value for us
+    "tests/test_coverage.py"
   ];
 
   # Some of the tests use localhost networking.
   __darwinAllowLocalNetworking = true;
 
+  pythonImportsCheck = [
+    "nbval"
+  ];
+
   meta = with lib; {
     description = "A py.test plugin to validate Jupyter notebooks";
     homepage = "https://github.com/computationalmodelling/nbval";
     license = licenses.bsd3;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/nbxmpp/default.nix b/nixpkgs/pkgs/development/python-modules/nbxmpp/default.nix
index 44460a21d5b9..f230e0c80c65 100644
--- a/nixpkgs/pkgs/development/python-modules/nbxmpp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nbxmpp/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "nbxmpp";
-  version = "2.0.3";
+  version = "2.0.4";
 
   disabled = pythonOlder "3.7";
 
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "gajim";
     repo = "python-nbxmpp";
     rev = "nbxmpp-${version}";
-    sha256 = "0gzyd25sja7n49f1ihyg6gch1b0r409r0p3qpwn8w8xy7jgn6ysc";
+    sha256 = "1c2ncx1k93gxndaw183x0vlqgjnippl3v6sknklj3z2yjcj0l1ks";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/neo4j-driver/default.nix b/nixpkgs/pkgs/development/python-modules/neo4j-driver/default.nix
new file mode 100644
index 000000000000..6b81af0c2940
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/neo4j-driver/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, pytz
+}:
+
+buildPythonPackage rec {
+  pname = "neo4j-driver";
+  version = "4.4.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "neo4j";
+    repo = "neo4j-python-driver";
+    rev = version;
+    sha256 = "sha256-aGOqD6mmd3dulQ/SdaDPDZhkCwXdYCucHw+CrkJf1M0=";
+  };
+
+  propagatedBuildInputs = [
+    pytz
+  ];
+
+  # Missing dependencies
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "neo4j"
+  ];
+
+  meta = with lib; {
+    description = "Neo4j Bolt Driver for Python";
+    homepage = "https://github.com/neo4j/neo4j-python-driver";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nessclient/default.nix b/nixpkgs/pkgs/development/python-modules/nessclient/default.nix
new file mode 100644
index 000000000000..d91a80eb9d0f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nessclient/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, asynctest
+, buildPythonPackage
+, click
+, fetchFromGitHub
+, justbackoff
+, pythonOlder
+, pytest-asyncio
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "nessclient";
+  version = "0.9.16b2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "nickw444";
+    repo = pname;
+    rev = version;
+    sha256 = "1g3q9bv1nn1b8n6bklc05k8pac4cndzfxfr7liky0gnnbri15k81";
+  };
+
+  propagatedBuildInputs = [
+    justbackoff
+    click
+  ];
+
+  checkInputs = [
+    asynctest
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "nessclient"
+  ];
+
+  meta = with lib; {
+    description = "Python implementation/abstraction of the Ness D8x/D16x Serial Interface ASCII protocol";
+    homepage = "https://github.com/nickw444/nessclient";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/netcdf4/default.nix b/nixpkgs/pkgs/development/python-modules/netcdf4/default.nix
index 5285db9e71ae..23f2b88a8591 100644
--- a/nixpkgs/pkgs/development/python-modules/netcdf4/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/netcdf4/default.nix
@@ -3,13 +3,13 @@
 }:
 buildPythonPackage rec {
   pname = "netCDF4";
-  version = "1.5.7";
+  version = "1.5.8";
 
   disabled = isPyPy;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d145f9c12da29da3922d8b8aafea2a2a89501bcb28a219a46b7b828b57191594";
+    sha256 = "ca3d468f4812c0999df86e3f428851fb0c17ac34ce0827115c246b0b690e4e84";
   };
 
   checkInputs = [ pytest ];
diff --git a/nixpkgs/pkgs/development/python-modules/netdata/default.nix b/nixpkgs/pkgs/development/python-modules/netdata/default.nix
index 3b1ccbb73f70..c54719b696b1 100644
--- a/nixpkgs/pkgs/development/python-modules/netdata/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/netdata/default.nix
@@ -1,28 +1,47 @@
 { lib
 , buildPythonPackage
-, fetchPypi
-, aiohttp
-, async-timeout
+, pythonOlder
+, fetchFromGitHub
+, poetry-core
+, httpx
+, pytest-asyncio
+, pytest-httpx
+, pytestCheckHook
+, yarl
 }:
 
 buildPythonPackage rec {
   pname = "netdata";
-  version = "0.2.1";
+  version = "1.0.1";
+  format = "pyproject";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-oGOT4RvftI/2Ri2icM/AtglNZXt10jkFh/rlr6A46YE=";
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "home-assistant-ecosystem";
+    repo = "python-netdata";
+    rev = version;
+    sha256 = "sha256-4+cTIqytHrCPG7lUZv1IhL7Bk5GlTEveQTtuCkFIepo=";
   };
 
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
   propagatedBuildInputs = [
-    aiohttp
-    async-timeout
+    httpx
+    yarl
   ];
 
-  # no tests are present
-  doCheck = false;
+  checkInputs = [
+    pytest-asyncio
+    pytest-httpx
+    pytestCheckHook
+  ];
 
-  pythonImportsCheck = [ "netdata" ];
+  pythonImportsCheck = [
+    "netdata"
+  ];
 
   meta = with lib; {
     description = "Python API for interacting with Netdata";
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 6142972c0c94..ede91e7df913 100644
--- a/nixpkgs/pkgs/development/python-modules/nettigo-air-monitor/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nettigo-air-monitor/default.nix
@@ -12,14 +12,16 @@
 
 buildPythonPackage rec {
   pname = "nettigo-air-monitor";
-  version = "1.1.1";
-  disabled = pythonOlder "3.6";
+  version = "1.2.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "bieniu";
     repo = pname;
     rev = version;
-    sha256 = "sha256-OIB1d6XtstUr5P0q/dmyJS7+UbtkFQIiuSnzwcdP1mE=";
+    sha256 = "sha256-hKEXTzJMSVBRDiqrN90/fETEhirwSWLdgRULRvlQjbY=";
   };
 
   propagatedBuildInputs = [
@@ -41,7 +43,9 @@ buildPythonPackage rec {
       --replace "--cov --cov-report term-missing " ""
   '';
 
-  pythonImportsCheck = [ "nettigo_air_monitor" ];
+  pythonImportsCheck = [
+    "nettigo_air_monitor"
+  ];
 
   meta = with lib; {
     description = "Python module to get air quality data from Nettigo Air Monitor devices";
diff --git a/nixpkgs/pkgs/development/python-modules/networkx/2.2.nix b/nixpkgs/pkgs/development/python-modules/networkx/2.2.nix
deleted file mode 100644
index a4c66048953b..000000000000
--- a/nixpkgs/pkgs/development/python-modules/networkx/2.2.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, decorator
-, setuptools
-}:
-
-buildPythonPackage rec {
-  pname = "networkx";
-  # upgrade may break sage, please test the sage build or ping @timokau on upgrade
-  version = "2.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    extension = "zip";
-    sha256 = "12swxb15299v9vqjsq4z8rgh5sdhvpx497xwnhpnb0gynrx6zra5";
-  };
-
-  checkInputs = [ nose ];
-  propagatedBuildInputs = [ decorator setuptools ];
-
-  meta = {
-    homepage = "https://networkx.github.io/";
-    description = "Library for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks";
-    license = lib.licenses.bsd3;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/networkx/default.nix b/nixpkgs/pkgs/development/python-modules/networkx/default.nix
index 0ed9f3b9cb3c..e8769f9efc7d 100644
--- a/nixpkgs/pkgs/development/python-modules/networkx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/networkx/default.nix
@@ -10,11 +10,11 @@
 buildPythonPackage rec {
   pname = "networkx";
   # upgrade may break sage, please test the sage build or ping @timokau on upgrade
-  version = "2.6.2";
+  version = "2.6.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2306f1950ce772c5a59a57f5486d59bb9cab98497c45fc49cbc45ac0dec119bb";
+    sha256 = "c0946ed31d71f1b732b5aaa6da5a0388a345019af232ce2f49c766e2d6795c51";
   };
 
   propagatedBuildInputs = [ decorator setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/nevow/default.nix b/nixpkgs/pkgs/development/python-modules/nevow/default.nix
index b608ae58fc70..37586ccfcb47 100644
--- a/nixpkgs/pkgs/development/python-modules/nevow/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nevow/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchpatch, fetchPypi, isPy3k, twisted }:
+{ lib, buildPythonPackage, fetchPypi, isPy3k, twisted }:
 
 buildPythonPackage rec {
   pname = "Nevow";
diff --git a/nixpkgs/pkgs/development/python-modules/nexia/default.nix b/nixpkgs/pkgs/development/python-modules/nexia/default.nix
index 22dbea2cd517..5bb8b15f6834 100644
--- a/nixpkgs/pkgs/development/python-modules/nexia/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nexia/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "nexia";
-  version = "0.9.11";
+  version = "0.9.12";
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "bdraco";
     repo = pname;
     rev = version;
-    sha256 = "0ql08nfvh6rjhjdh78gzih7az95m0fc9wxc22yqmlc9grifnp9i5";
+    sha256 = "sha256-YZHAWRTYquUm3Ymi/3mSQqxYZuoxsH5Q/LZOPDftEzU=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/niko-home-control/default.nix b/nixpkgs/pkgs/development/python-modules/niko-home-control/default.nix
new file mode 100644
index 000000000000..a7a696384dfb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/niko-home-control/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, nclib
+, netaddr
+, netifaces
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "niko-home-control";
+  version = "0.2.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "NoUseFreak";
+    repo = pname;
+    rev = version;
+    sha256 = "0ah02dfnnbk98grvd180fp9rak5gpi58xiql1yyzig5pcbjidvk3";
+  };
+
+  propagatedBuildInputs = [
+    nclib
+    netaddr
+    netifaces
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "nikohomecontrol"
+  ];
+
+  meta = with lib; {
+    description = "Python SDK for Niko Home Control";
+    homepage = "https://github.com/NoUseFreak/niko-home-control";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nilearn/default.nix b/nixpkgs/pkgs/development/python-modules/nilearn/default.nix
index 6e3158b27961..c79ea52f558c 100644
--- a/nixpkgs/pkgs/development/python-modules/nilearn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nilearn/default.nix
@@ -3,15 +3,16 @@
 
 buildPythonPackage rec {
   pname = "nilearn";
-  version = "0.8.0";
+  version = "0.8.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f2d3dc81005f829f3a183efa6c90d698ea6818c06264d2e3f03e805c4340febb";
+    sha256 = "a0489940855130f35bbc4cac0750479a6f82025215ea7b1d778faca064219298";
   };
 
   checkInputs = [ pytestCheckHook ];
   disabledTests = [ "test_clean_confounds" ];  # https://github.com/nilearn/nilearn/issues/2608
+  pytestFlagsArray = [ "nilearn" ];
 
   propagatedBuildInputs = [
     joblib
diff --git a/nixpkgs/pkgs/development/python-modules/nipype/default.nix b/nixpkgs/pkgs/development/python-modules/nipype/default.nix
index 8d0c597a1af0..68a544c9ab07 100644
--- a/nixpkgs/pkgs/development/python-modules/nipype/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nipype/default.nix
@@ -49,12 +49,12 @@ in
 
 buildPythonPackage rec {
   pname = "nipype";
-  version = "1.6.1";
+  version = "1.7.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8428cfc633d8e3b8c5650e241e9eedcf637b7969bcd40f3423334d4c6b0992b5";
+    sha256 = "e689fe2e5049598c9cd3708e8df1cac732fa1a88696f283e3bc0a70fecb8ab51";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/nitime/default.nix b/nixpkgs/pkgs/development/python-modules/nitime/default.nix
index ccbf540f75f4..f9c84acef882 100644
--- a/nixpkgs/pkgs/development/python-modules/nitime/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nitime/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, python
 , fetchPypi
 , isPy27
 , pytestCheckHook
diff --git a/nixpkgs/pkgs/development/python-modules/nitransforms/default.nix b/nixpkgs/pkgs/development/python-modules/nitransforms/default.nix
new file mode 100644
index 000000000000..79fd93d32123
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nitransforms/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, h5py
+, nibabel
+, numpy
+, setuptools-scm
+, toml
+}:
+
+buildPythonPackage rec {
+  pname = "nitransforms";
+  version = "21.0.0";
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "njJqHqXVxldyGfmdM8GmgKdgIT4kMYLzcM5+ayR2EDo=";
+  };
+
+  buildInputs = [ setuptools-scm toml ];
+  propagatedBuildInputs = [ h5py nibabel numpy ];
+
+  doCheck = false;
+  # relies on data repo (https://github.com/nipreps-data/nitransforms-tests);
+  # probably too heavy
+  pythonImportsCheck = [
+    "nitransforms"
+    "nitransforms.base"
+    "nitransforms.io"
+    "nitransforms.io.base"
+    "nitransforms.linear"
+    "nitransforms.manip"
+    "nitransforms.nonlinear"
+    "nitransforms.patched"
+  ];
+
+  meta = with lib; {
+    homepage = "https://nitransforms.readthedocs.io";
+    description = "Geometric transformations for images and surfaces";
+    license = licenses.mit;
+    maintainers = with maintainers; [ bcdarwin ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nix-prefetch-github/default.nix b/nixpkgs/pkgs/development/python-modules/nix-prefetch-github/default.nix
index 0821e0b763d0..6df6f15c068b 100644
--- a/nixpkgs/pkgs/development/python-modules/nix-prefetch-github/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nix-prefetch-github/default.nix
@@ -1,18 +1,13 @@
 { fetchFromGitHub
 , lib
 , buildPythonPackage
-, attrs
-, click
-, effect
 , git
-, pytestCheckHook
-, pytest-cov
 , pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "nix-prefetch-github";
-  version = "4.0.4";
+  version = "5.0.1";
 
   disabled = pythonOlder "3.7";
 
@@ -20,19 +15,16 @@ buildPythonPackage rec {
     owner = "seppeljordan";
     repo = "nix-prefetch-github";
     rev = "v${version}";
-    sha256 = "g5G818Gq5EGyRIyg/ZW7guxMS0IyJ4nYaRjG/CtGhuc=";
+    sha256 = "DOmFfUCLJ+rnS4PznQaQrDrqjUU4DXmOrC9BspqKZVM=";
   };
 
-  propagatedBuildInputs = [
-    attrs
-    click
-    effect
-  ];
-
-  checkInputs = [ pytestCheckHook pytest-cov git ];
+  checkInputs = [ git ];
 
+  checkPhase = ''
+    python -m unittest discover
+  '';
   # ignore tests which are impure
-  disabledTests = [ "network" "requires_nix_build" ];
+  DISABLED_TESTS = "network requires_nix_build";
 
   meta = with lib; {
     description = "Prefetch sources from github";
diff --git a/nixpkgs/pkgs/development/python-modules/nltk/default.nix b/nixpkgs/pkgs/development/python-modules/nltk/default.nix
index eb715c91e50d..27e17daa372a 100644
--- a/nixpkgs/pkgs/development/python-modules/nltk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nltk/default.nix
@@ -1,4 +1,4 @@
-{ fetchPypi, buildPythonPackage, lib, six, singledispatch ? null, isPy3k
+{ fetchPypi, buildPythonPackage, lib, isPy3k
 , click
 , joblib
 , regex
@@ -6,13 +6,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "3.6.5";
+  version = "3.6.7";
   pname = "nltk";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "834d1a8e38496369390be699be9bca4f2a0f2175b50327272b2ec7a98ffda2a0";
+    sha256 = "51bf1aef5304740a708be7c8e683f7798f03dc5c7a7e7feb758be9e95f4585e3";
   };
 
   propagatedBuildInputs = [
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     joblib
     regex
     tqdm
-  ] ++ lib.optional (!isPy3k) singledispatch;
+  ];
 
   # Tests require some data, the downloading of which is impure. It would
   # probably make sense to make the data another derivation, but then feeding
diff --git a/nixpkgs/pkgs/development/python-modules/nmapthon2/default.nix b/nixpkgs/pkgs/development/python-modules/nmapthon2/default.nix
new file mode 100644
index 000000000000..2567e70b0d67
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nmapthon2/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, appdirs
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "nmapthon2";
+  version = "0.1.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-6mGMB8nW6CqTPxgc1fveh6fJo/t+jpUS6rJ2VR2gU/g=";
+  };
+
+  # Tests are not part of the PyPI source and source is not tagged
+  # https://github.com/cblopez/nmapthon2/issues/3
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "nmapthon2"
+  ];
+
+  meta = with lib; {
+    description = "Python library to automate nmap";
+    homepage = "https://github.com/cblopez/nmapthon2";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/nmigen/default.nix b/nixpkgs/pkgs/development/python-modules/nmigen/default.nix
index 8bd198713a3f..0228e7b3185c 100644
--- a/nixpkgs/pkgs/development/python-modules/nmigen/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nmigen/default.nix
@@ -55,7 +55,8 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "Jinja2~=2.11" "Jinja2>=2.11"
+      --replace "Jinja2~=2.11" "Jinja2>=2.11" \
+      --replace "pyvcd~=0.2.2" "pyvcd"
   '';
 
   pythonImportsCheck = [ "nmigen" ];
diff --git a/nixpkgs/pkgs/development/python-modules/normality/default.nix b/nixpkgs/pkgs/development/python-modules/normality/default.nix
index ece47afad4e2..a91489f1aded 100644
--- a/nixpkgs/pkgs/development/python-modules/normality/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/normality/default.nix
@@ -9,13 +9,13 @@
 }:
 buildPythonPackage rec {
   pname = "normality";
-  version = "2.1.3";
+  version = "2.2.5";
 
   src = fetchFromGitHub {
     owner = "pudo";
     repo = "normality";
     rev = version;
-    sha256 = "WvpMs02vBGnCSPkxo6r6g4Di2fKkUr2SsBflTBxlhkU=";
+    sha256 = "n8Ycm5DeFItmMJTolazZKGIyN7CTg2ajDCwi/UqzVe8=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/nose-focus/default.nix b/nixpkgs/pkgs/development/python-modules/nose-focus/default.nix
deleted file mode 100644
index 2805dc4545af..000000000000
--- a/nixpkgs/pkgs/development/python-modules/nose-focus/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib, buildPythonPackage, fetchFromGitHub, six, nose, nose-of-yeti
-, nose-pattern-exclude, which }:
-
-buildPythonPackage rec {
-  pname = "nose-focus";
-  version = "0.1.3";
-
-  propagatedBuildInputs = [ six ];
-
-  checkInputs = [ nose nose-of-yeti nose-pattern-exclude which ];
-
-  # PyPI doesn't contain tests so let's use GitHub. See:
-  # https://github.com/delfick/nose-focus/issues/4
-  #
-  # However, the versions aren't tagged on GitHub so need to use a manually
-  # checked revision. See: https://github.com/delfick/nose-focus/issues/5
-  src = fetchFromGitHub {
-    owner = "delfick";
-    repo = pname;
-    rev = "4dac785ba07ed6e1df61b0fe2854685eef3bd115";
-    sha256 = "0gpd4j4433dc5ifh31w08c3bx862md0qm1ix6aam1rz4ayxpq51f";
-  };
-
-  checkPhase = ''
-    patchShebangs test.sh
-    ./test.sh
-  '';
-
-  meta = with lib; {
-    description = "Decorator and plugin to make nose focus on specific tests";
-    homepage = "https://nose-focus.readthedocs.io/en/latest/";
-    license = licenses.wtfpl;
-    maintainers = with maintainers; [ jluttine ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/nose-of-yeti/default.nix b/nixpkgs/pkgs/development/python-modules/nose-of-yeti/default.nix
deleted file mode 100644
index 16fb264b39ae..000000000000
--- a/nixpkgs/pkgs/development/python-modules/nose-of-yeti/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib, buildPythonPackage, fetchFromGitHub, six, nose, fudge, should-dsl }:
-
-buildPythonPackage rec {
-  pname = "nose-of-yeti";
-  version = "1.8";
-
-  propagatedBuildInputs = [ six ];
-
-  checkInputs = [ nose fudge should-dsl ];
-
-  # PyPI doesn't contain tests so let's use GitHub.
-  src = fetchFromGitHub {
-    owner = "delfick";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "1pq9bf47k0csv41vdh2g6n336p3pd11q91hj5ypk0ls3nj756gbx";
-  };
-
-  checkPhase = ''
-    patchShebangs test.sh
-    ./test.sh
-  '';
-
-  meta = with lib; {
-    description = "Nose plugin providing BDD dsl for python";
-    homepage = "https://github.com/delfick/nose-of-yeti";
-    license = licenses.mit;
-    maintainers = with maintainers; [ jluttine ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/notebook/2.nix b/nixpkgs/pkgs/development/python-modules/notebook/2.nix
deleted file mode 100644
index 179fd25beff9..000000000000
--- a/nixpkgs/pkgs/development/python-modules/notebook/2.nix
+++ /dev/null
@@ -1,76 +0,0 @@
-{ stdenv
-, lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, nose_warnings_filters
-, glibcLocales
-, isPy3k
-, mock
-, jinja2
-, tornado
-, ipython_genutils
-, traitlets
-, jupyter_core
-, jupyter_client
-, nbformat
-, nbconvert
-, ipykernel
-, terminado
-, requests
-, send2trash
-, pexpect
-, prometheus-client
-}:
-
-buildPythonPackage rec {
-  pname = "notebook";
-  version = "5.7.10";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b10107e1438e7a564292aa32510e610c88844cae03c882fe5286b891792b5c11";
-  };
-
-  LC_ALL = "en_US.utf8";
-
-  checkInputs = [ nose glibcLocales ]
-    ++ (if isPy3k then [ nose_warnings_filters ] else [ mock ]);
-
-  propagatedBuildInputs = [
-    jinja2 tornado ipython_genutils traitlets jupyter_core send2trash
-    jupyter_client nbformat nbconvert ipykernel terminado requests pexpect
-    prometheus-client
-  ];
-
-  # disable warning_filters
-  preCheck = lib.optionalString (!isPy3k) ''
-    echo "" > setup.cfg
-  '';
-
-  postPatch = ''
-    # Remove selenium tests
-    rm -rf notebook/tests/selenium
-
-  '';
-
-  checkPhase = ''
-    runHook preCheck
-    mkdir tmp
-    HOME=tmp nosetests -v ${if (stdenv.isDarwin) then ''
-      --exclude test_delete \
-      --exclude test_checkpoints_follow_file
-    ''
-    else ""}
-  '';
-
-  # Some of the tests use localhost networking.
-  __darwinAllowLocalNetworking = true;
-
-  meta = {
-    description = "The Jupyter HTML notebook is a web-based notebook environment for interactive computing";
-    homepage = "https://jupyter.org/";
-    license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/notebook/default.nix b/nixpkgs/pkgs/development/python-modules/notebook/default.nix
index bc1296b8a50c..1cb5f1b75708 100644
--- a/nixpkgs/pkgs/development/python-modules/notebook/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/notebook/default.nix
@@ -13,7 +13,7 @@
 , ipython_genutils
 , traitlets
 , jupyter_core
-, jupyter_client
+, jupyter-client
 , nbformat
 , nbconvert
 , ipykernel
@@ -27,12 +27,12 @@
 
 buildPythonPackage rec {
   pname = "notebook";
-  version = "6.4.3";
+  version = "6.4.6";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "03awxl8hr7ibwr6n48gci8jx80f18zll439wyr8gj35h6vnxzdp6";
+    sha256 = "7bcdf79bd1cda534735bd9830d2cbedab4ee34d8fe1df6e7b946b3aab0902ba3";
   };
 
   LC_ALL = "en_US.utf8";
@@ -42,7 +42,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     jinja2 tornado ipython_genutils traitlets jupyter_core send2trash
-    jupyter_client nbformat nbconvert ipykernel terminado requests pexpect
+    jupyter-client nbformat nbconvert ipykernel terminado requests pexpect
     prometheus-client argon2_cffi
   ];
 
@@ -73,6 +73,12 @@ buildPythonPackage rec {
     "test_checkpoints_follow_file"
   ];
 
+  disabledTestPaths = lib.optionals stdenv.isDarwin [
+    # requires local networking
+    "notebook/auth/tests/test_login.py"
+    "notebook/bundler/tests/test_bundler_api.py"
+  ];
+
   # Some of the tests use localhost networking.
   __darwinAllowLocalNetworking = true;
 
diff --git a/nixpkgs/pkgs/development/python-modules/notifications-python-client/default.nix b/nixpkgs/pkgs/development/python-modules/notifications-python-client/default.nix
new file mode 100644
index 000000000000..1f59b808912f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/notifications-python-client/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, buildPythonPackage
+, docopt
+, fetchFromGitHub
+, freezegun
+, mock
+, pyjwt
+, pytest-mock
+, pytestCheckHook
+, pythonOlder
+, requests
+, requests-mock
+}:
+
+buildPythonPackage rec {
+  pname = "notifications-python-client";
+  version = "6.3.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "alphagov";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-pfOTVgsfXJQ9GIGowra3RAwxCri76RgnA9iyWbjomCk=";
+  };
+
+  propagatedBuildInputs = [
+    docopt
+    pyjwt
+    requests
+  ];
+
+  checkInputs = [
+    freezegun
+    mock
+    pytest-mock
+    pytestCheckHook
+    requests-mock
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "'pytest-runner'" ""
+  '';
+
+  pythonImportsCheck = [
+    "notifications_python_client"
+  ];
+
+  meta = with lib; {
+    description = "Python client for the GOV.UK Notify API";
+    homepage = "https://github.com/alphagov/notifications-python-client";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/notify/default.nix b/nixpkgs/pkgs/development/python-modules/notify/default.nix
deleted file mode 100644
index 8aa70b43e665..000000000000
--- a/nixpkgs/pkgs/development/python-modules/notify/default.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ lib, stdenv
-, fetchurl
-, python
-, pygobject2
-, pygtk
-, pkgs
-}:
-
-stdenv.mkDerivation {
-  pname = "python-notify";
-  version = "0.1.1";
-
-  src = fetchurl {
-    url = "http://www.galago-project.org/files/releases/source/notify-python/notify-python-0.1.1.tar.bz2";
-    sha256 = "1kh4spwgqxm534qlzzf2ijchckvs0pwjxl1irhicjmlg7mybnfvx";
-  };
-
-  patches = lib.singleton (fetchurl {
-    name = "libnotify07.patch";
-    url = "https://src.fedoraproject.org/cgit/notify-python.git/plain/"
-        + "libnotify07.patch?id2=289573d50ae4838a1658d573d2c9f4c75e86db0c";
-    sha256 = "1lqdli13mfb59xxbq4rbq1f0znh6xr17ljjhwmzqb79jl3dig12z";
-  });
-
-  postPatch = ''
-    sed -i -e '/^PYGTK_CODEGEN/s|=.*|="${pygtk}/bin/pygtk-codegen-2.0"|' \
-      configure
-  '';
-
-  nativeBuildInputs = [ pkgs.pkg-config ];
-  buildInputs = [ python pygobject2 pygtk pkgs.libnotify pkgs.glib pkgs.gtk2 pkgs.dbus-glib ];
-
-  postInstall = "cd $out/lib/python*/site-packages && ln -s gtk-*/pynotify .";
-
-  meta = with lib; {
-    description = "Python bindings for libnotify";
-    homepage = "http://www.galago-project.org/";
-    license = licenses.lgpl3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/ntc-templates/default.nix b/nixpkgs/pkgs/development/python-modules/ntc-templates/default.nix
index d7b3db1f452a..a188daf6b428 100644
--- a/nixpkgs/pkgs/development/python-modules/ntc-templates/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ntc-templates/default.nix
@@ -1,25 +1,26 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, isPy27
+, pythonOlder
 , poetry-core
 , textfsm
 , pytestCheckHook
-, ruamel_yaml
+, ruamel-yaml
 , yamllint
 }:
 
 buildPythonPackage rec {
   pname = "ntc-templates";
-  version = "2.3.2";
+  version = "3.0.0";
   format = "pyproject";
-  disabled = isPy27;
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "networktocode";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0sga86ajbh3a8wsb7q5mxzxhlg4fds8pr33ybjgi1sda4bvp2dvp";
+    sha256 = "0kijzmmvq2rw7ima19w7lyb2p26a5w52k70fzbkaqqw78qzw8178";
   };
 
   nativeBuildInputs = [
@@ -32,7 +33,7 @@ buildPythonPackage rec {
 
   checkInputs = [
     pytestCheckHook
-    ruamel_yaml
+    ruamel-yaml
     yamllint
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/nuitka/default.nix b/nixpkgs/pkgs/development/python-modules/nuitka/default.nix
index 548565ff1d35..127f1fcbedf6 100644
--- a/nixpkgs/pkgs/development/python-modules/nuitka/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nuitka/default.nix
@@ -28,7 +28,7 @@ buildPythonPackage rec {
   postPatch = ''
     patchShebangs tests/run-tests
   '' + lib.optionalString stdenv.isLinux ''
-    substituteInPlace nuitka/plugins/standard/ImplicitImports.py --replace 'locateDLL("uuid")' '"${pkgs.util-linux.out}/lib/libuuid.so"'
+    substituteInPlace nuitka/plugins/standard/ImplicitImports.py --replace 'locateDLL("uuid")' '"${lib.getLib pkgs.util-linux}/lib/libuuid.so"'
   '';
 
   # We do not want any wrappers here.
diff --git a/nixpkgs/pkgs/development/python-modules/nulltype/default.nix b/nixpkgs/pkgs/development/python-modules/nulltype/default.nix
new file mode 100644
index 000000000000..1f354e422488
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/nulltype/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "nulltype";
+  version = "2.3.1";
+  format = "setuptools";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "0wpjbsmm0c9ifg9y6cnfz49qq9pa5f99nnqp6wdlv42ymfr3rak4";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "nulltype"
+  ];
+
+  meta = with lib; {
+    description = "Python library to handle Null values and sentinels like (but not) None, False and True";
+    homepage = "https://pypi.org/project/nulltype/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/numba/default.nix b/nixpkgs/pkgs/development/python-modules/numba/default.nix
index 287737900b89..c45419c5c88c 100644
--- a/nixpkgs/pkgs/development/python-modules/numba/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/numba/default.nix
@@ -12,13 +12,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "0.54.0";
+  version = "0.54.1";
   pname = "numba";
   disabled = pythonOlder "3.6" || pythonAtLeast "3.10";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bad6bd98ab2e41c34aa9c80b8d9737e07d92a53df4f74d3ada1458b0b516ccff";
+    sha256 = "f9dfc803c864edcc2381219b800abf366793400aea55e26d4d5b7d953e14f43f";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/numexpr/default.nix b/nixpkgs/pkgs/development/python-modules/numexpr/default.nix
index c2630d75eb45..31b529c83dab 100644
--- a/nixpkgs/pkgs/development/python-modules/numexpr/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/numexpr/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "numexpr";
-  version = "2.7.3";
+  version = "2.8.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "43616529f9b7d1afc83386f943dc66c4da5e052f00217ba7e3ad8dd1b5f3a825";
+    sha256 = "9fec076b76c90a5f3929373f548834bb203c6d23a81a895e60d0fe9cca075e99";
   };
 
   # Remove existing site.cfg, use the one we built for numpy.
diff --git a/nixpkgs/pkgs/development/python-modules/numpy/default.nix b/nixpkgs/pkgs/development/python-modules/numpy/default.nix
index 60f3bf1091ec..945828fbc19f 100644
--- a/nixpkgs/pkgs/development/python-modules/numpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/numpy/default.nix
@@ -1,5 +1,6 @@
 { lib
 , fetchPypi
+, fetchpatch
 , python
 , buildPythonPackage
 , gfortran
@@ -8,7 +9,6 @@
 , blas
 , lapack
 , writeTextFile
-, isPyPy
 , cython
 , setuptoolsBuildHook
 , pythonOlder
@@ -40,14 +40,14 @@ let
   };
 in buildPythonPackage rec {
   pname = "numpy";
-  version = "1.21.2";
+  version = "1.21.4";
   format = "pyproject.toml";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "423216d8afc5923b15df86037c6053bf030d15cc9e3224206ef868c2d63dd6dc";
+    sha256 = "e6c76a87633aa3fa16614b61ccedfae45b91df2767cf097aa9c933932a7ed1e0";
   };
 
   patches = lib.optionals python.hasDistutilsCxxPatch [
@@ -73,10 +73,6 @@ in buildPythonPackage rec {
     ln -s ${cfg} site.cfg
   '';
 
-  # Workaround flakey compiler feature detection
-  # https://github.com/numpy/numpy/issues/19624
-  hardeningDisable = [ "strictoverflow" ];
-
   enableParallelBuilding = true;
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/nunavut/default.nix b/nixpkgs/pkgs/development/python-modules/nunavut/default.nix
index 75eb114ac581..8c4c8e1fbc5f 100644
--- a/nixpkgs/pkgs/development/python-modules/nunavut/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nunavut/default.nix
@@ -8,13 +8,13 @@
 
  buildPythonPackage rec {
   pname = "nunavut";
-  version = "1.5.1";
+  version = "1.5.2";
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2c57a9ffe6d462b0ad1ea49ac3ce9ebb3e8d43b2adf653dbe47eaf1b13be3c3b";
+    sha256 = "12703306872404be556648ab2282dc1566f4e77bfb9f14747fb13294c9235081";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/nwdiag/default.nix b/nixpkgs/pkgs/development/python-modules/nwdiag/default.nix
index c8147d9d9a4e..4579be5c3c13 100644
--- a/nixpkgs/pkgs/development/python-modules/nwdiag/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nwdiag/default.nix
@@ -1,22 +1,49 @@
-{ lib, fetchurl, buildPythonPackage, pep8, nose, unittest2, docutils
-, blockdiag, setuptools
+{ lib
+, blockdiag
+, fetchFromGitHub
+, buildPythonPackage
+, nose
+, pytestCheckHook
+, setuptools
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "nwdiag";
-  version = "2.0.0";
+  version = "3.0.0";
+  format = "setuptools";
 
-  src = fetchurl {
-    url = "mirror://pypi/n/nwdiag/${pname}-${version}.tar.gz";
-    sha256 = "1qkl1lq7cblr6fra2rjw3zlcccragp8384hpm4n7dkc5c3yzmmsw";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "blockdiag";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-uKrdkXpL5YBr953sRsHknYg+2/WwrZmyDf8BMA2+0tU=";
   };
 
-  buildInputs = [ pep8 nose unittest2 docutils ];
+  propagatedBuildInputs = [
+    blockdiag
+    setuptools
+  ];
+
+  checkInputs = [
+    nose
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "src/nwdiag/tests/"
+  ];
 
-  propagatedBuildInputs = [ blockdiag setuptools ];
+  disabledTests = [
+    # UnicodeEncodeError: 'latin-1' codec can't encode...
+    "test_setup_inline_svg_is_true_with_multibytes"
+  ];
 
-  # tests fail
-  doCheck = false;
+  pythonImportsCheck = [
+    "nwdiag"
+  ];
 
   meta = with lib; {
     description = "Generate network-diagram image from spec-text file (similar to Graphviz)";
diff --git a/nixpkgs/pkgs/development/python-modules/nxt-python/default.nix b/nixpkgs/pkgs/development/python-modules/nxt-python/default.nix
deleted file mode 100644
index 38920dc55429..000000000000
--- a/nixpkgs/pkgs/development/python-modules/nxt-python/default.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchgit
-, isPy3k
-, pyusb
-, pybluez
-, pyfantom
-, git
-}:
-
-buildPythonPackage {
-  version = "unstable-20160819";
-  pname = "nxt-python";
-  disabled = isPy3k;
-
-  src = fetchgit {
-    url = "https://github.com/Eelviny/nxt-python";
-    rev = "479e20b7491b28567035f4cee294c4a2af629297";
-    sha256 = "0mcsajhgm2wy4iy2lhmyi3xibgmbixbchanzmlhsxk6qyjccn9r9";
-    branchName= "pyusb";
-  };
-
-  propagatedBuildInputs = [ pyusb pybluez pyfantom git ];
-
-  # Tests fail on Mac dependency
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Python driver/interface for Lego Mindstorms NXT robot";
-    homepage = "https://github.com/Eelviny/nxt-python";
-    license = licenses.gpl3;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ leenaars ];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/oath/default.nix b/nixpkgs/pkgs/development/python-modules/oath/default.nix
index fd12a830472b..a8740f685747 100644
--- a/nixpkgs/pkgs/development/python-modules/oath/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/oath/default.nix
@@ -1,16 +1,25 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "oath";
-  version = "1.4.3";
+  version = "1.4.4";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1xqgcqgx6aa0j21hwsdb3aqpqhviwj756bcqjjjcm1h1aij11p6m";
+    sha256 = "sha256-vWsg0g8sTj9TUj7pACEdynWu7KcvT1qf2NyswXX+HAs=";
   };
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "oath"
+  ];
 
   meta = with lib; {
     description = "Python implementation of the three main OATH specifications: HOTP, TOTP and OCRA";
diff --git a/nixpkgs/pkgs/development/python-modules/oauthlib/3.1.nix b/nixpkgs/pkgs/development/python-modules/oauthlib/3.1.nix
deleted file mode 100644
index 10757812037a..000000000000
--- a/nixpkgs/pkgs/development/python-modules/oauthlib/3.1.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, pytest
-, cryptography
-, blinker
-, pyjwt
-}:
-
-buildPythonPackage rec {
-  pname = "oauthlib";
-  version = "3.1.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "bee41cc35fcca6e988463cacc3bcb8a96224f470ca547e697b604cc697b2f889";
-  };
-
-  checkInputs = [ mock pytest ];
-  propagatedBuildInputs = [ cryptography blinker pyjwt ];
-
-  checkPhase = ''
-    py.test tests/
-  '';
-
-  meta = with lib; {
-    homepage = "https://github.com/idan/oauthlib";
-    description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic";
-    maintainers = with maintainers; [ prikhi ];
-    license = licenses.bsd3;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/obfsproxy/default.nix b/nixpkgs/pkgs/development/python-modules/obfsproxy/default.nix
index b5736851fbb6..0c0781bc577b 100644
--- a/nixpkgs/pkgs/development/python-modules/obfsproxy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/obfsproxy/default.nix
@@ -31,7 +31,7 @@ buildPythonPackage rec {
     description = "A pluggable transport proxy";
     homepage = "https://www.torproject.org/projects/obfsproxy";
     repositories.git = "https://git.torproject.org/pluggable-transports/obfsproxy.git";
-    maintainers = with maintainers; [ phreedom thoughtpolice ];
+    maintainers = with maintainers; [ thoughtpolice ];
   };
 
 }
diff --git a/nixpkgs/pkgs/development/python-modules/objax/default.nix b/nixpkgs/pkgs/development/python-modules/objax/default.nix
new file mode 100644
index 000000000000..fb48f9141e2a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/objax/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, jax
+, jaxlib
+, numpy
+, parameterized
+, pillow
+, scipy
+, tensorflow-tensorboard_2 ? null
+}:
+
+buildPythonPackage rec {
+  pname = "objax";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "google";
+    repo = "objax";
+    rev = "v${version}";
+    sha256 = "09gm61ghn5mi92q5mhx22mcv6aa6z78jsrnfar1hd3nwwyn9dq42";
+  };
+
+  propagatedBuildInputs = [
+    jax
+    jaxlib
+    numpy
+    parameterized
+    pillow
+    scipy
+    tensorflow-tensorboard_2
+  ];
+
+  pythonImportsCheck = [
+    "objax"
+  ];
+
+  meta = with lib; {
+    description = "Objax is a machine learning framework that provides an Object Oriented layer for JAX.";
+    homepage = "https://github.com/google/objax";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ndl ];
+    # Darwin doesn't have `tensorflow-tensorboard_2` which is required by wheel deps.
+    platforms = [ "aarch64-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ocrmypdf/default.nix b/nixpkgs/pkgs/development/python-modules/ocrmypdf/default.nix
index 5c6b87b38fed..a6c9b150ead7 100644
--- a/nixpkgs/pkgs/development/python-modules/ocrmypdf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ocrmypdf/default.nix
@@ -1,13 +1,12 @@
 { lib
 , buildPythonPackage
-, cffi
 , coloredlogs
 , fetchFromGitHub
 , ghostscript
 , img2pdf
+, importlib-metadata
 , importlib-resources
 , jbig2enc
-, leptonica
 , pdfminer
 , pikepdf
 , pillow
@@ -15,8 +14,8 @@
 , pngquant
 , pytest-xdist
 , pytestCheckHook
+, pythonOlder
 , reportlab
-, setuptools
 , setuptools-scm
 , setuptools-scm-git-archive
 , stdenv
@@ -28,7 +27,7 @@
 
 buildPythonPackage rec {
   pname = "ocrmypdf";
-  version = "12.6.0";
+  version = "13.2.0";
 
   src = fetchFromGitHub {
     owner = "jbarlow83";
@@ -40,7 +39,7 @@ buildPythonPackage rec {
     extraPostFetch = ''
       rm "$out/.git_archival.txt"
     '';
-    sha256 = "0zw7c6l9fkf128gxsbd7v4abazlxiygqys6627jpsjbmxg5jgp5w";
+    sha256 = "sha256-mVPKcxTKoRgttwJdsY7r0kF7W1+G45iCc+mFctDipSM=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
@@ -50,7 +49,6 @@ buildPythonPackage rec {
       src = ./paths.patch;
       gs = "${lib.getBin ghostscript}/bin/gs";
       jbig2 = "${lib.getBin jbig2enc}/bin/jbig2";
-      liblept = "${lib.getLib leptonica}/lib/liblept${stdenv.hostPlatform.extensions.sharedLibrary}";
       pngquant = "${lib.getBin pngquant}/bin/pngquant";
       tesseract = "${lib.getBin tesseract4}/bin/tesseract";
       unpaper = "${lib.getBin unpaper}/bin/unpaper";
@@ -63,18 +61,19 @@ buildPythonPackage rec {
   ];
 
   propagatedBuildInputs = [
-    cffi
     coloredlogs
     img2pdf
-    importlib-resources
     pdfminer
     pikepdf
     pillow
     pluggy
     reportlab
-    setuptools
     tqdm
-  ];
+  ] ++ (lib.optionals (pythonOlder "3.8") [
+    importlib-metadata
+  ]) ++ (lib.optionals (pythonOlder "3.9") [
+    importlib-resources
+  ]);
 
   checkInputs = [
     pytest-xdist
@@ -89,7 +88,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/jbarlow83/OCRmyPDF";
     description = "Adds an OCR text layer to scanned PDF files, allowing them to be searched";
     license = with licenses; [ mpl20 mit ];
-    platforms = platforms.linux;
     maintainers = with maintainers; [ kiwi dotlambda ];
     changelog = "https://github.com/jbarlow83/OCRmyPDF/blob/v${version}/docs/release_notes.rst";
   };
diff --git a/nixpkgs/pkgs/development/python-modules/ocrmypdf/paths.patch b/nixpkgs/pkgs/development/python-modules/ocrmypdf/paths.patch
index 9bfcc7285541..47521e1033eb 100644
--- a/nixpkgs/pkgs/development/python-modules/ocrmypdf/paths.patch
+++ b/nixpkgs/pkgs/development/python-modules/ocrmypdf/paths.patch
@@ -1,30 +1,17 @@
 diff --git a/src/ocrmypdf/_exec/ghostscript.py b/src/ocrmypdf/_exec/ghostscript.py
-index 5c357f1b..f459763a 100644
+index 1146cc5f..43f3915c 100644
 --- a/src/ocrmypdf/_exec/ghostscript.py
 +++ b/src/ocrmypdf/_exec/ghostscript.py
-@@ -25,28 +25,7 @@ from ocrmypdf.subprocess import get_version, run, run_polling_stderr
+@@ -40,15 +40,7 @@ For details see:
+ # Most reliable what to get the bitness of Python interpreter, according to Python docs
+ _is_64bit = sys.maxsize > 2 ** 32
  
- log = logging.getLogger(__name__)
- 
--missing_gs_error = """
-----------------------------------------------------------------------
--This error normally occurs when ocrmypdf find can't Ghostscript.
--Please ensure Ghostscript is installed and its location is added to
--the system PATH environment variable.
--
--For details see:
--    https://ocrmypdf.readthedocs.io/en/latest/installation.html
-----------------------------------------------------------------------
--"""
--
 -_gswin = None
 -if os.name == 'nt':
--    _gswin = which('gswin64c')
--    if not _gswin:
--        _gswin = which('gswin32c')
--        if not _gswin:
--            raise MissingDependencyError(missing_gs_error)
--    _gswin = Path(_gswin).stem
+-    if _is_64bit:
+-        _gswin = 'gswin64c'
+-    else:
+-        _gswin = 'gswin32c'
 -
 -GS = _gswin if _gswin else 'gs'
 -del _gswin
@@ -86,19 +73,19 @@ index ca8a4542..d0544174 100644
              '--skip-if-larger',
              '--quality',
 diff --git a/src/ocrmypdf/_exec/tesseract.py b/src/ocrmypdf/_exec/tesseract.py
-index 33ead41e..5840f7c1 100644
+index a3688f65..61f54465 100644
 --- a/src/ocrmypdf/_exec/tesseract.py
 +++ b/src/ocrmypdf/_exec/tesseract.py
-@@ -78,7 +78,7 @@ class TesseractVersion(StrictVersion):
+@@ -75,7 +75,7 @@ class TesseractVersion(StrictVersion):
  
  
- def version():
+ def version() -> str:
 -    return get_version('tesseract', regex=r'tesseract\s(.+)')
 +    return get_version('@tesseract@', regex=r'tesseract\s(.+)')
  
  
  def has_user_words():
-@@ -100,7 +100,7 @@ def get_languages():
+@@ -97,7 +97,7 @@ def get_languages():
          msg += output
          return msg
  
@@ -107,7 +94,7 @@ index 33ead41e..5840f7c1 100644
      try:
          proc = run(
              args_tess,
-@@ -122,7 +122,7 @@ def get_languages():
+@@ -119,7 +119,7 @@ def get_languages():
  
  
  def tess_base_args(langs: List[str], engine_mode: Optional[int]) -> List[str]:
@@ -117,7 +104,7 @@ index 33ead41e..5840f7c1 100644
          args.extend(['-l', '+'.join(langs)])
      if engine_mode is not None:
 diff --git a/src/ocrmypdf/_exec/unpaper.py b/src/ocrmypdf/_exec/unpaper.py
-index 3c3ae72c..d269966a 100644
+index aec365c2..cc5cb7e4 100644
 --- a/src/ocrmypdf/_exec/unpaper.py
 +++ b/src/ocrmypdf/_exec/unpaper.py
 @@ -31,7 +31,7 @@ log = logging.getLogger(__name__)
@@ -138,23 +125,3 @@ index 3c3ae72c..d269966a 100644
  
      with TemporaryDirectory() as tmpdir:
          input_pnm, output_pnm = _setup_unpaper_io(Path(tmpdir), input_file)
-diff --git a/src/ocrmypdf/leptonica.py b/src/ocrmypdf/leptonica.py
-index e4814f1a..fdaf7ea4 100644
---- a/src/ocrmypdf/leptonica.py
-+++ b/src/ocrmypdf/leptonica.py
-@@ -33,14 +33,7 @@ from ocrmypdf.lib._leptonica import ffi
- 
- logger = logging.getLogger(__name__)
- 
--if os.name == 'nt':
--    from ocrmypdf.subprocess._windows import shim_env_path
--
--    libname = 'liblept-5'
--    os.environ['PATH'] = shim_env_path()
--else:
--    libname = 'lept'
--_libpath = find_library(libname)
-+_libpath = '@liblept@'
- if not _libpath:
-     raise MissingDependencyError(
-         """
diff --git a/nixpkgs/pkgs/development/python-modules/oemthermostat/default.nix b/nixpkgs/pkgs/development/python-modules/oemthermostat/default.nix
new file mode 100644
index 000000000000..7a2ecfc26c03
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/oemthermostat/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+, requests
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "oemthermostat";
+  version = "1.1.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "Cadair";
+    repo = "openenergymonitor_thermostat";
+    rev = "v${version}";
+    sha256 = "vrMw3/X8MtejO1WyUA1DOlfVCPTCPgcK5p3+OlTWcM4=";
+  };
+
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "oemthermostat"
+  ];
+
+  meta = with lib; {
+    description = "Python module to interact with OpenEnergyMonitor thermostats";
+    homepage = "https://github.com/Cadair/openenergymonitor_thermostat";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/ofxtools/default.nix b/nixpkgs/pkgs/development/python-modules/ofxtools/default.nix
index a32b0b232949..0f0dfb057695 100644
--- a/nixpkgs/pkgs/development/python-modules/ofxtools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ofxtools/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchFromGitHub
 , nose
-, python
 , pythonOlder
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/oletools/default.nix b/nixpkgs/pkgs/development/python-modules/oletools/default.nix
new file mode 100644
index 000000000000..54c5c6c165b2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/oletools/default.nix
@@ -0,0 +1,57 @@
+{ lib
+, buildPythonPackage
+, colorclass
+, easygui
+, fetchFromGitHub
+, msoffcrypto-tool
+, olefile
+, pcodedmp
+, pyparsing
+, pytestCheckHook
+, pythonOlder
+, setuptools
+}:
+
+buildPythonPackage rec {
+  pname = "oletools";
+  version = "0.60";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "decalage2";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-gatUVkf8iT1OGnahX1BzQLDypCqhS1EvkAgUHJ6myA4=";
+  };
+
+  propagatedBuildInputs = [
+    colorclass
+    easygui
+    msoffcrypto-tool
+    olefile
+    pcodedmp
+    pyparsing
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Test fails with AssertionError: Tuples differ: ('MS Word 2007+...
+    "test_all"
+  ];
+
+  pythonImportsCheck = [
+    "oletools"
+  ];
+
+  meta = with lib; {
+    description = "Python tool to analyze MS OLE2 files and MS Office documents";
+    homepage = "https://github.com/decalage2/oletools";
+    license = with licenses; [ bsd2 /* and */ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/omnikinverter/default.nix b/nixpkgs/pkgs/development/python-modules/omnikinverter/default.nix
new file mode 100644
index 000000000000..6f347d9672a0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/omnikinverter/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, aiohttp
+, aresponses
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, yarl
+}:
+
+buildPythonPackage rec {
+  pname = "omnikinverter";
+  version = "0.6.2";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "klaasnicolaas";
+    repo = "python-omnikinverter";
+    rev = "v${version}";
+    sha256 = "sha256-NnwjiaFUi2vzORu8sndtfdVpZEAIMCvT+9VEr2ZOx3k=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    yarl
+  ];
+
+  checkInputs = [
+    aresponses
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    # Upstream doesn't set a version for the pyproject.toml
+    substituteInPlace pyproject.toml \
+      --replace "0.0.0" "${version}" \
+      --replace "--cov" ""
+  '';
+
+  pythonImportsCheck = [
+    "omnikinverter"
+  ];
+
+  meta = with lib; {
+    description = "Python module for the Omnik Inverter";
+    homepage = "https://github.com/klaasnicolaas/python-omnikinverter";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/onnx/default.nix b/nixpkgs/pkgs/development/python-modules/onnx/default.nix
index 3f6a86928bc3..6a682f448104 100644
--- a/nixpkgs/pkgs/development/python-modules/onnx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/onnx/default.nix
@@ -1,30 +1,32 @@
 { lib
 , buildPythonPackage
+, cmake
 , fetchPypi
 , isPy27
-, cmake
-, protobuf
+, nbval
 , numpy
-, six
-, typing-extensions
+, protobuf
 , pytestCheckHook
-, nbval
+, six
 , tabulate
+, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "onnx";
-  version = "1.10.1";
+  version = "1.10.2";
+  format = "setuptools";
 
-  # Python 2 is not supported as of Onnx v1.8
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9d941ba76cab55db8913ecad9dc50cefeb368460f6338a91783a5d7643f3a044";
+    sha256 = "sha256-JNc8p9/X5sczmUT4lVS0AQcZiZM3kk/KFEfY8bXbUNY=";
   };
 
-  nativeBuildInputs = [ cmake ];
+  nativeBuildInputs = [
+    cmake
+  ];
 
   propagatedBuildInputs = [
     protobuf
@@ -34,8 +36,8 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    pytestCheckHook
     nbval
+    pytestCheckHook
     tabulate
   ];
 
@@ -59,10 +61,14 @@ buildPythonPackage rec {
   # The setup.py does all the configuration
   dontUseCmakeConfigure = true;
 
-  meta = {
-    homepage    = "http://onnx.ai";
+  pythonImportsCheck = [
+    "onnx"
+  ];
+
+  meta = with lib; {
     description = "Open Neural Network Exchange";
-    license     = lib.licenses.mit;
-    maintainers = [ lib.maintainers.acairncross ];
+    homepage = "http://onnx.ai";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ acairncross ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/oocsi/default.nix b/nixpkgs/pkgs/development/python-modules/oocsi/default.nix
new file mode 100644
index 000000000000..2f0ae510d018
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/oocsi/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "oocsi";
+  version = "0.4.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "020xfjvcgicj81zl3z9wnb2f9bha75bjw512b0cc38w66bniinjq";
+  };
+
+  # Tests are not shipped
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "oocsi"
+  ];
+
+  meta = with lib; {
+    description = "OOCSI library for Python";
+    homepage = "https://github.com/iddi/oocsi-python";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/open-garage/default.nix b/nixpkgs/pkgs/development/python-modules/open-garage/default.nix
index 87d524845751..0cb71a86fe57 100644
--- a/nixpkgs/pkgs/development/python-modules/open-garage/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/open-garage/default.nix
@@ -8,15 +8,16 @@
 
 buildPythonPackage rec {
   pname = "open-garage";
-  version = "0.1.6";
+  version = "0.2.0";
+  format = "setuptools";
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "Danielhiversen";
     repo = "pyOpenGarage";
     rev = version;
-    sha256 = "sha256-vm51Fjej0OQ7LftisS/tsnxZxa5c/j7eGIROMsEcXNE=";
+    sha256 = "sha256-iJ7HcJhpTceFpHTUdNZOYDuxUWZGWPmZ9lxD3CyGvk8=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/open-meteo/default.nix b/nixpkgs/pkgs/development/python-modules/open-meteo/default.nix
new file mode 100644
index 000000000000..520af3062eac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/open-meteo/default.nix
@@ -0,0 +1,60 @@
+{ lib
+, aiohttp
+, aresponses
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pydantic
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "open-meteo";
+  version = "0.2.1";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "frenck";
+    repo = "python-open-meteo";
+    rev = "v${version}";
+    sha256 = "0i8jmhd29vvkpfxs9l5wy8525ngs79mnc7si2j9b1nc41xrv91f6";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    aresponses
+    pydantic
+  ];
+
+  checkInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    # Upstream doesn't set a version for the pyproject.toml
+    substituteInPlace pyproject.toml \
+      --replace "0.0.0" "${version}" \
+      --replace "--cov" "" \
+      --replace 'aiohttp = "^3.8.1"' 'aiohttp = "^3.8.0"'
+  '';
+
+  pythonImportsCheck = [
+    "open_meteo"
+  ];
+
+  meta = with lib; {
+    description = "Python client for the Open-Meteo API";
+    homepage = "https://github.com/frenck/python-open-meteo";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/openai/default.nix b/nixpkgs/pkgs/development/python-modules/openai/default.nix
new file mode 100644
index 000000000000..542112126b10
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/openai/default.nix
@@ -0,0 +1,55 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+
+# Python dependencies
+, openpyxl
+, pandas
+, pandas-stubs
+, requests
+, tqdm
+
+# Check dependencies
+, pytest-mock
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "openai";
+  version = "0.11.5";
+
+  disabled = pythonOlder "3.7.1";
+
+  # Use GitHub source since PyPi source does not include tests
+  src = fetchFromGitHub {
+    owner = "openai";
+    repo = "openai-python";
+    rev = "v${version}";
+    sha256 = "sha256-6eL3/vDWyIOVjRQo4OO3OgyUG3t8dKPtxzMMTxPCglM=";
+  };
+
+  propagatedBuildInputs = [
+    openpyxl
+    pandas
+    pandas-stubs
+    requests
+    tqdm
+  ];
+
+  pythonImportsCheck = [ "openai" ];
+  checkInputs = [ pytestCheckHook pytest-mock ];
+  pytestFlagsArray = [ "openai/tests" ];
+  OPENAI_API_KEY = "sk-foo";
+  disabledTestPaths = [
+    "openai/tests/test_endpoints.py" # requires a real API key
+    "openai/tests/test_file_cli.py"
+  ];
+
+  meta = with lib; {
+    description = "Python client library for the OpenAI API";
+    homepage = "https://github.com/openai/openai-python";
+    license = licenses.mit;
+    maintainers = [ maintainers.malo ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/openbabel-bindings/default.nix b/nixpkgs/pkgs/development/python-modules/openbabel-bindings/default.nix
index 6488b8fad2fb..fad677987bf4 100644
--- a/nixpkgs/pkgs/development/python-modules/openbabel-bindings/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/openbabel-bindings/default.nix
@@ -13,7 +13,7 @@ buildPythonPackage rec {
   # some functionality to work (inparticular, pybel).
   # see https://openbabel.org/docs/dev/Installation/install.html
   BABEL_LIBDIR = "${openbabel}/lib/openbabel/3.1.0";
-  LD_LIBRARY_PATH = "$LD_LIBRARY_PATH:${openbabel}/lib";
+  LD_LIBRARY_PATH = "${openbabel}/lib";
 
   doCheck = false;
   pythonImportsCheck = [ "openbabel" ];
diff --git a/nixpkgs/pkgs/development/python-modules/openpyxl/2.nix b/nixpkgs/pkgs/development/python-modules/openpyxl/2.nix
deleted file mode 100644
index 73300de645ff..000000000000
--- a/nixpkgs/pkgs/development/python-modules/openpyxl/2.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, jdcal
-, et_xmlfile
-, lxml
-}:
-
-buildPythonPackage rec {
-  pname = "openpyxl";
-  version = "2.6.4";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1d53801678e18d7fe38c116f1ad0c2383a654670c4c8806105b611c92d92f2e3";
-  };
-
-  checkInputs = [ pytest ];
-  propagatedBuildInputs = [ jdcal et_xmlfile lxml ];
-
-  postPatch = ''
-    # LICENSE.rst is missing, and setup.cfg currently doesn't contain anything useful anyway
-    # This should likely be removed in the next update
-    rm setup.cfg
-  '';
-
-  # Tests are not included in archive.
-  # https://bitbucket.org/openpyxl/openpyxl/issues/610
-  doCheck = false;
-
-  meta = {
-    description = "A Python library to read/write Excel 2007 xlsx/xlsm files";
-    homepage = "https://openpyxl.readthedocs.org";
-    license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ lihop sjourdois ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/openpyxl/default.nix b/nixpkgs/pkgs/development/python-modules/openpyxl/default.nix
index 317aba65621a..f8b97b6f2ea3 100644
--- a/nixpkgs/pkgs/development/python-modules/openpyxl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/openpyxl/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "openpyxl";
-  version = "3.0.7";
+  version = "3.0.9";
   disabled = isPy27; # 2.6.4 was final python2 release
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6456a3b472e1ef0facb1129f3c6ef00713cebf62e736cd7a75bcc3247432f251";
+    sha256 = "40f568b9829bf9e446acfffce30250ac1fa39035124d55fc024025c41481c90f";
   };
 
   checkInputs = [ pytest ];
diff --git a/nixpkgs/pkgs/development/python-modules/openrazer/daemon.nix b/nixpkgs/pkgs/development/python-modules/openrazer/daemon.nix
index 8dcb9a9925d1..2e44c3756e32 100644
--- a/nixpkgs/pkgs/development/python-modules/openrazer/daemon.nix
+++ b/nixpkgs/pkgs/development/python-modules/openrazer/daemon.nix
@@ -4,7 +4,6 @@
 , daemonize
 , dbus-python
 , fetchFromGitHub
-, fetchpatch
 , gobject-introspection
 , gtk3
 , makeWrapper
diff --git a/nixpkgs/pkgs/development/python-modules/openrouteservice/default.nix b/nixpkgs/pkgs/development/python-modules/openrouteservice/default.nix
index cae450a9af33..f5e1ab81fbf7 100644
--- a/nixpkgs/pkgs/development/python-modules/openrouteservice/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/openrouteservice/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, requests, responses, pytestCheckHook }:
+{ lib, buildPythonPackage, fetchFromGitHub, responses, pytestCheckHook }:
 
 buildPythonPackage rec {
   pname = "openrouteservice";
diff --git a/nixpkgs/pkgs/development/python-modules/opensensemap-api/default.nix b/nixpkgs/pkgs/development/python-modules/opensensemap-api/default.nix
index 8311cb6c57e1..56edc136c44f 100644
--- a/nixpkgs/pkgs/development/python-modules/opensensemap-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/opensensemap-api/default.nix
@@ -1,17 +1,21 @@
 { lib
-, buildPythonPackage
-, fetchPypi
 , aiohttp
 , async-timeout
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "opensensemap-api";
-  version = "0.1.6";
+  version = "0.2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-e60aVIoKFqo++WJHUYGutugkjB8YgyNQgJbILgAyOOY=";
+    sha256 = "sha256-KSukSPpSbfbEEqTq4zqqo8OT7ptdPrGy2QyQYjErQWI=";
   };
 
   propagatedBuildInputs = [
@@ -22,7 +26,9 @@ buildPythonPackage rec {
   # no tests are present
   doCheck = false;
 
-  pythonImportsCheck = [ "opensensemap_api" ];
+  pythonImportsCheck = [
+    "opensensemap_api"
+  ];
 
   meta = with lib; {
     description = "OpenSenseMap API Python client";
diff --git a/nixpkgs/pkgs/development/python-modules/openstacksdk/default.nix b/nixpkgs/pkgs/development/python-modules/openstacksdk/default.nix
index ec45fd8d09b8..9bb807784ca7 100644
--- a/nixpkgs/pkgs/development/python-modules/openstacksdk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/openstacksdk/default.nix
@@ -4,7 +4,7 @@
 , fetchPypi
 , appdirs
 , cryptography
-, dogpile_cache
+, dogpile-cache
 , jmespath
 , jsonpatch
 , keystoneauth1
@@ -14,22 +14,21 @@
 , pbr
 , pyyaml
 , requestsexceptions
-, stdenv
 }:
 
 buildPythonPackage rec {
   pname = "openstacksdk";
-  version = "0.59.0";
+  version = "0.60.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-PfdgzScjmKv6yM6+Yu64LLxJe7JdTdcHV290qM6avw0=";
+    sha256 = "aa6efead2ac116482f29aecc2c14ba3b4c76a6f8dede93bf296a2b65492ef420";
   };
 
   propagatedBuildInputs = [
     appdirs
     cryptography
-    dogpile_cache
+    dogpile-cache
     jmespath
     jsonpatch
     keystoneauth1
diff --git a/nixpkgs/pkgs/development/python-modules/opt-einsum/2.nix b/nixpkgs/pkgs/development/python-modules/opt-einsum/2.nix
deleted file mode 100644
index 41c4df89f4fc..000000000000
--- a/nixpkgs/pkgs/development/python-modules/opt-einsum/2.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ buildPythonPackage, fetchPypi, lib, numpy, pytest_4 }:
-
-buildPythonPackage rec {
-  version = "2.3.2";
-  pname = "opt_einsum";
-
-  src = fetchPypi {
-    inherit version pname;
-    sha256 = "0ny3v8x83mzpwmqjdzqhzy2pzwyy4wx01r1h9i29xw3yvas69m6k";
-  };
-
-  checkInputs = [
-    pytest_4
-  ];
-
-  checkPhase = ''
-    pytest
-  '';
-
-  propagatedBuildInputs = [
-    numpy
-  ];
-
-  meta = {
-    description = "Optimizing NumPy's einsum function with order optimization and GPU support.";
-    homepage = "https://optimized-einsum.readthedocs.io";
-    license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ teh ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/optuna/default.nix b/nixpkgs/pkgs/development/python-modules/optuna/default.nix
index 457d796d0b78..6dde9ededb50 100644
--- a/nixpkgs/pkgs/development/python-modules/optuna/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/optuna/default.nix
@@ -9,7 +9,7 @@
 , xgboost
 , mpi4py
 , lightgbm
-, Keras
+, keras
 , mxnet
 , scikit-optimize
 , tensorflow
@@ -30,14 +30,14 @@
 
 buildPythonPackage rec {
   pname = "optuna";
-  version = "2.9.1";
+  version = "2.10.0";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "optuna";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1fx80qjrkmnvn2mg9fx26qn3sjlwnwqlmkaf6sqhdw79pn6khlpi";
+    sha256 = "0fha0pwxq6n3mbpvpz3vk8hh61zqncj5cnq063kzfl5d8rd48vcd";
   };
 
   checkInputs = [
@@ -49,7 +49,7 @@ buildPythonPackage rec {
     xgboost
     mpi4py
     lightgbm
-    Keras
+    keras
     mxnet
     scikit-optimize
     tensorflow
diff --git a/nixpkgs/pkgs/development/python-modules/ormar/default.nix b/nixpkgs/pkgs/development/python-modules/ormar/default.nix
new file mode 100644
index 000000000000..fee9af147154
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ormar/default.nix
@@ -0,0 +1,80 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, poetry-core
+, databases
+, pydantic
+, sqlalchemy
+, asyncpg
+, psycopg2
+, aiomysql
+, aiosqlite
+, cryptography
+, orjson
+, typing-extensions
+, importlib-metadata
+, aiopg
+, mysqlclient
+, pymysql
+, pytestCheckHook
+, pytest-asyncio
+, fastapi
+}:
+
+buildPythonPackage rec {
+  pname = "ormar";
+  version = "0.10.23";
+  format = "pyproject";
+  disabled = pythonOlder "3.7";
+  src = fetchFromGitHub {
+    owner = "collerek";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-ILJvJyd56lqlKq7+mUz26LvusYb5AOOfoA7OgNq2fT0=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    databases
+    pydantic
+    sqlalchemy
+    asyncpg
+    psycopg2
+    aiomysql
+    aiosqlite
+    cryptography
+
+    orjson
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    typing-extensions
+    importlib-metadata
+  ];
+
+  checkInputs = [
+    aiomysql
+    aiosqlite
+    aiopg
+    asyncpg
+
+    psycopg2
+    mysqlclient
+    pymysql
+
+    pytestCheckHook
+    pytest-asyncio
+    fastapi
+  ];
+
+  pythonImportsCheck = [ "ormar" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/collerek/ormar";
+    description = "A simple async ORM with fastapi in mind and pydantic validation.";
+    license = licenses.mit;
+    maintainers = with maintainers; [ andreasfelix ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/orvibo/default.nix b/nixpkgs/pkgs/development/python-modules/orvibo/default.nix
index 17a3a7691112..8de932a82f0e 100644
--- a/nixpkgs/pkgs/development/python-modules/orvibo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/orvibo/default.nix
@@ -1,12 +1,6 @@
 { lib
 , buildPythonPackage
-, click
 , fetchFromGitHub
-, mock
-, pytest-runner
-, pytestCheckHook
-, requests
-, websocket-client
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/os-service-types/tests.nix b/nixpkgs/pkgs/development/python-modules/os-service-types/tests.nix
index 33f641d14c58..4cb93d797476 100644
--- a/nixpkgs/pkgs/development/python-modules/os-service-types/tests.nix
+++ b/nixpkgs/pkgs/development/python-modules/os-service-types/tests.nix
@@ -1,5 +1,4 @@
-{ stdenv
-, buildPythonPackage
+{ buildPythonPackage
 , keystoneauth1
 , os-service-types
 , oslotest
diff --git a/nixpkgs/pkgs/development/python-modules/oslo-concurrency/default.nix b/nixpkgs/pkgs/development/python-modules/oslo-concurrency/default.nix
index d3d90bfb2235..71c9bf4260db 100644
--- a/nixpkgs/pkgs/development/python-modules/oslo-concurrency/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/oslo-concurrency/default.nix
@@ -17,12 +17,12 @@
 
 buildPythonPackage rec {
   pname = "oslo-concurrency";
-  version = "4.4.1";
+  version = "4.5.0";
 
   src = fetchPypi {
     pname = "oslo.concurrency";
     inherit version;
-    sha256 = "6449cfbd15dbab20cf9907bbb2f057e0e5267f97161223d2b516cc8226b17ec3";
+    sha256 = "1h76pq9p1bpwcs6jl9m2w4280wcp2w3is88qlaqknqkd3pdaixwr";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/oslo-config/tests.nix b/nixpkgs/pkgs/development/python-modules/oslo-config/tests.nix
index 82400e67ea58..c94eb2941b77 100644
--- a/nixpkgs/pkgs/development/python-modules/oslo-config/tests.nix
+++ b/nixpkgs/pkgs/development/python-modules/oslo-config/tests.nix
@@ -1,5 +1,4 @@
-{ stdenv
-, buildPythonPackage
+{ buildPythonPackage
 , oslo-config
 , docutils
 , oslo-log
diff --git a/nixpkgs/pkgs/development/python-modules/oslo-context/default.nix b/nixpkgs/pkgs/development/python-modules/oslo-context/default.nix
index b4e52abd4237..f38b9bb09b39 100644
--- a/nixpkgs/pkgs/development/python-modules/oslo-context/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/oslo-context/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "oslo.context";
-  version = "3.3.1";
+  version = "3.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f578ea38569cf0a677e2167178196b21a54175471358c4320ddfd5c97c52f4d1";
+    sha256 = "970f96361c5de9a5dc86d48a648289d77118180ca13ba5eeb307137736ffa953";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/oslo-db/default.nix b/nixpkgs/pkgs/development/python-modules/oslo-db/default.nix
index c0c9dff04334..5070b43515e8 100644
--- a/nixpkgs/pkgs/development/python-modules/oslo-db/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/oslo-db/default.nix
@@ -8,7 +8,7 @@
 , oslotest
 , pbr
 , sqlalchemy
-, sqlalchemy_migrate
+, sqlalchemy-migrate
 , stestr
 , testresources
 , testscenarios
@@ -16,12 +16,12 @@
 
 buildPythonPackage rec {
   pname = "oslo-db";
-  version = "11.0.0";
+  version = "11.1.0";
 
   src = fetchPypi {
     pname = "oslo.db";
     inherit version;
-    sha256 = "0cd5679868c0a0d194c916cc855348890820c3183b34a039af1e8698dac7afbf";
+    sha256 = "8469c54544f1c0d7ac0a998477033eab13733b186d159554311c6132b43862e9";
   };
 
   nativeBuildInputs = [ pbr ];
@@ -32,7 +32,7 @@ buildPythonPackage rec {
     oslo-context
     oslo-utils
     sqlalchemy
-    sqlalchemy_migrate
+    sqlalchemy-migrate
     testresources
     testscenarios
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/oslo-log/default.nix b/nixpkgs/pkgs/development/python-modules/oslo-log/default.nix
index 1e4598ead653..dd2d69a0c23d 100644
--- a/nixpkgs/pkgs/development/python-modules/oslo-log/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/oslo-log/default.nix
@@ -15,12 +15,12 @@
 
 buildPythonPackage rec {
   pname = "oslo-log";
-  version = "4.6.0";
+  version = "4.6.1";
 
   src = fetchPypi {
     pname = "oslo.log";
     inherit version;
-    sha256 = "dad5d7ff1290f01132b356d36a1bb79f98a3929d5005cce73e849ed31b385ba7";
+    sha256 = "0dlnxjci9mpwhgfv19fy1z7xrdp8m95skrj5dr60all3pr7n22f6";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/oslo-utils/default.nix b/nixpkgs/pkgs/development/python-modules/oslo-utils/default.nix
index 3707a196d03e..4f1a4d9df2d4 100644
--- a/nixpkgs/pkgs/development/python-modules/oslo-utils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/oslo-utils/default.nix
@@ -23,12 +23,12 @@
 
 buildPythonPackage rec {
   pname = "oslo-utils";
-  version = "4.10.0";
+  version = "4.11.0";
 
   src = fetchPypi {
     pname = "oslo.utils";
     inherit version;
-    sha256 = "9646e6570ed08a79f21b03acfb60d32a3ac453d76304f8759b1211a59ce372cb";
+    sha256 = "1wl3r4jayzjgzf36iwn05xcjfh227s97qymjxji9hz4ibhy3v83f";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/oslotest/tests.nix b/nixpkgs/pkgs/development/python-modules/oslotest/tests.nix
index 3c07a35c17d8..542e9467d16f 100644
--- a/nixpkgs/pkgs/development/python-modules/oslotest/tests.nix
+++ b/nixpkgs/pkgs/development/python-modules/oslotest/tests.nix
@@ -1,5 +1,4 @@
-{ stdenv
-, buildPythonPackage
+{ buildPythonPackage
 , oslo-config
 , oslotest
 , stestr
diff --git a/nixpkgs/pkgs/development/python-modules/osmpythontools/default.nix b/nixpkgs/pkgs/development/python-modules/osmpythontools/default.nix
index 3821ecb132af..23755583470a 100644
--- a/nixpkgs/pkgs/development/python-modules/osmpythontools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/osmpythontools/default.nix
@@ -13,19 +13,15 @@
 
 buildPythonPackage rec {
   pname = "osmpythontools";
-  version = "0.3.2";
+  version = "0.3.3";
 
   src = fetchFromGitHub {
     owner = "mocnik-science";
     repo = "osm-python-tools";
-    rev = "v${version}";
-    sha256 = "1m5ai9h1zbp79x0vb138fmyh2hg8lqp859s7j33lra9hds6wb40a";
+    rev = "v.${version}";
+    sha256 = "sha256-335zo/kOX4OpUwHas2aaPibY6zNmDaaHJpolbTQWqKk=";
   };
 
-  # Upstream setup.py has test dependencies in `install_requires` argument.
-  # Remove them, as we don't run the tests.
-  patches = [ ./remove-test-only-dependencies.patch ];
-
   propagatedBuildInputs = [
     beautifulsoup4
     geojson
diff --git a/nixpkgs/pkgs/development/python-modules/osmpythontools/remove-test-only-dependencies.patch b/nixpkgs/pkgs/development/python-modules/osmpythontools/remove-test-only-dependencies.patch
deleted file mode 100644
index c12a96622ebd..000000000000
--- a/nixpkgs/pkgs/development/python-modules/osmpythontools/remove-test-only-dependencies.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/setup.py b/setup.py
-index 801d081..6d93128 100644
---- a/setup.py
-+++ b/setup.py
-@@ -19,8 +19,6 @@ setup(
-         'matplotlib',
-         'numpy',
-         'pandas',
--        'pytest',
--        'pytest-sugar',
-         'ujson',
-         'xarray',
-     ],
diff --git a/nixpkgs/pkgs/development/python-modules/p1monitor/default.nix b/nixpkgs/pkgs/development/python-modules/p1monitor/default.nix
index 4a7ce2aec3f2..d1530c797198 100644
--- a/nixpkgs/pkgs/development/python-modules/p1monitor/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/p1monitor/default.nix
@@ -1,6 +1,5 @@
 { lib
 , aiohttp
-, aresponses
 , buildPythonPackage
 , fetchFromGitHub
 , poetry-core
@@ -10,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "p1monitor";
-  version = "1.0.0";
+  version = "1.1.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -19,7 +18,7 @@ buildPythonPackage rec {
     owner = "klaasnicolaas";
     repo = "python-p1monitor";
     rev = "v${version}";
-    sha256 = "1xfr097hmjppp6cfdvfjypxmr1sb9dasq1s3np2vd5d93w0p5123";
+    sha256 = "1ciaclgq4aknldjqlqa08jcab28sbqrjxy5nqqwlnb2wlprg5ijz";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/packaging/2.nix b/nixpkgs/pkgs/development/python-modules/packaging/2.nix
index a9b4e159469d..0f9e61859a16 100644
--- a/nixpkgs/pkgs/development/python-modules/packaging/2.nix
+++ b/nixpkgs/pkgs/development/python-modules/packaging/2.nix
@@ -5,7 +5,6 @@
 , six
 , pytestCheckHook
 , pretend
-, flit-core
 }:
 
 # We keep 20.4 because it uses setuptools instead of flit-core
diff --git a/nixpkgs/pkgs/development/python-modules/packbits/default.nix b/nixpkgs/pkgs/development/python-modules/packbits/default.nix
new file mode 100644
index 000000000000..561903e8f5fd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/packbits/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pyparsing
+, six
+, pytest
+, pretend
+, lib
+}:
+
+buildPythonPackage rec {
+  pname = "packbits";
+  version = "0.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "bc6b370bb34e04ac8cfa835e06c0484380affc6d593adb8009dd6c0f7bfff034";
+  };
+
+  meta = with lib; {
+    description = "PackBits encoder/decoder for Python";
+    homepage = "https://github.com/psd-tools/packbits";
+    license = [ licenses.mit ];
+    maintainers = with maintainers; [ grahamc ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/packet-python/default.nix b/nixpkgs/pkgs/development/python-modules/packet-python/default.nix
index 6c7935c39b9a..b63baa80b397 100644
--- a/nixpkgs/pkgs/development/python-modules/packet-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/packet-python/default.nix
@@ -12,10 +12,10 @@
 
 buildPythonPackage rec {
   pname = "packet-python";
-  version = "1.44.1";
+  version = "1.44.2";
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ec0f40465fad5260a1b2c1ad39dc12c5df65828e171bf2aafb13c1c3883628ba";
+    sha256 = "4ce0827bc41d5bf5558284c18048344343f7c4c6e280b64bbe53fb51ab454892";
   };
   nativeBuildInputs = [ pytest-runner ];
   propagatedBuildInputs = [ requests ];
diff --git a/nixpkgs/pkgs/development/python-modules/pagerduty/default.nix b/nixpkgs/pkgs/development/python-modules/pagerduty/default.nix
deleted file mode 100644
index 8390cceb2fcf..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pagerduty/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "pagerduty";
-  version = "0.2.1";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "e8c237239d3ffb061069aa04fc5b3d8ae4fb0af16a9713fe0977f02261d323e9";
-  };
-
-  meta = with lib; {
-    homepage = "https://github.com/samuel/python-pagerduty";
-    description = "Library for the PagerDuty service API";
-    license = licenses.bsd0;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/paho-mqtt/default.nix b/nixpkgs/pkgs/development/python-modules/paho-mqtt/default.nix
index e8344e88f110..341ef8321835 100644
--- a/nixpkgs/pkgs/development/python-modules/paho-mqtt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/paho-mqtt/default.nix
@@ -1,30 +1,46 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy3k
-, stdenv, pytest-runner, pytest, mock }:
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, isPy3k
+, pytestCheckHook
+, mock
+}:
 
 buildPythonPackage rec {
   pname = "paho-mqtt";
-  version = "1.5.1";
+  version = "1.6.1";
 
-  # No tests in PyPI tarball
   src = fetchFromGitHub {
     owner = "eclipse";
     repo = "paho.mqtt.python";
     rev = "v${version}";
-    sha256 = "1y537i6zxkjkmi80w5rvd18npz1jm5246i2x8p3q7ycx94i8ixs0";
+    sha256 = "sha256-9nH6xROVpmI+iTKXfwv2Ar1PAmWbEunI3HO0pZyK6Rg=";
   };
 
   postPatch = ''
-    substituteInPlace setup.py --replace "pylama" ""
-    substituteInPlace setup.cfg --replace "--pylama" ""
+    substituteInPlace setup.py \
+      --replace "pylama" "" \
+      --replace "'pytest-runner'" ""
+    substituteInPlace setup.cfg \
+      --replace "--pylama" ""
   '';
 
-  checkInputs = [ pytest-runner pytest ] ++ lib.optional (!isPy3k) mock;
+  checkInputs = [
+    pytestCheckHook
+  ] ++ lib.optional (!isPy3k) [
+    mock
+  ];
 
   doCheck = !stdenv.isDarwin;
 
+  pythonImportsCheck = [
+    "paho.mqtt"
+  ];
+
   meta = with lib; {
-    homepage = "https://eclipse.org/paho";
     description = "MQTT version 3.1.1 client class";
+    homepage = "https://eclipse.org/paho";
     license = licenses.epl10;
     maintainers = with maintainers; [ mog dotlambda ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/panacotta/default.nix b/nixpkgs/pkgs/development/python-modules/panacotta/default.nix
new file mode 100644
index 000000000000..efaee8a42168
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/panacotta/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "panacotta";
+  version = "0.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "u1f35c";
+    repo = "python-panacotta";
+    rev = "panacotta-${version}";
+    sha256 = "0v2fa18n50iy18n22klkgjral728iplj6yk3b6hjkzas5dk9wd9c";
+  };
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "panacotta"
+  ];
+
+  meta = with lib; {
+    description = "Python API for controlling Panasonic Blu-Ray players";
+    homepage = "https://github.com/u1f35c/python-panacotta";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pandas-stubs/default.nix b/nixpkgs/pkgs/development/python-modules/pandas-stubs/default.nix
new file mode 100644
index 000000000000..c56847697769
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pandas-stubs/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, isPy27
+, fetchFromGitHub
+, typing-extensions
+, mypy
+}:
+
+buildPythonPackage rec {
+  pname = "pandas-stubs";
+  version = "1.2.0.39";
+
+  disabled = isPy27;
+
+  # Use GitHub source since PyPi source does not include tests
+  src = fetchFromGitHub {
+    owner = "VirtusLab";
+    repo = pname;
+    rev = "2bd932777d1050ea8f86c527266a4cd205aa15b1";
+    sha256 = "m2McU53NNvRwnWKN9GL8dW1eCGKbTi0471szRQwZu1Q=";
+  };
+
+  propagatedBuildInputs = [
+    typing-extensions
+  ];
+
+  pythonImportsCheck = [ "pandas" ];
+  checkInputs = [ mypy ];
+  checkPhase = ''
+    mypy --config-file mypy.ini third_party/3/pandas tests/snippets
+  '';
+
+  meta = with lib; {
+    description = "Type annotations for Pandas";
+    homepage = "https://github.com/VirtusLab/pandas-stubs";
+    license = licenses.mit;
+    maintainers = [ maintainers.malo ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pandas/2.nix b/nixpkgs/pkgs/development/python-modules/pandas/2.nix
deleted file mode 100644
index 9b29a8442696..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pandas/2.nix
+++ /dev/null
@@ -1,119 +0,0 @@
-# Python 2 expression
-
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python
-, stdenv
-, pytest
-, glibcLocales
-, cython
-, python-dateutil
-, scipy
-, moto
-, numexpr
-, pytz
-, xlrd
-, bottleneck
-, sqlalchemy
-, lxml
-, html5lib
-, beautifulsoup4
-, hypothesis
-, openpyxl
-, tables
-, xlwt
-, runtimeShell
-, libcxx ? null
-}:
-
-buildPythonPackage rec {
-  pname = "pandas";
-  version = "0.24.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "18imlm8xbhcbwy4wa957a1fkamrcb0z988z006jpfda3ki09z4ag";
-  };
-
-  checkInputs = [ pytest glibcLocales moto hypothesis ];
-
-  nativeBuildInputs = [ cython ];
-  buildInputs = lib.optional stdenv.isDarwin libcxx;
-  propagatedBuildInputs = [
-    python-dateutil
-    scipy
-    numexpr
-    pytz
-    xlrd
-    bottleneck
-    sqlalchemy
-    lxml
-    html5lib
-    beautifulsoup4
-    openpyxl
-    tables
-    xlwt
-  ];
-
-  # For OSX, we need to add a dependency on libcxx, which provides
-  # `complex.h` and other libraries that pandas depends on to build.
-  postPatch = lib.optionalString stdenv.isDarwin ''
-    cpp_sdk="${lib.getDev libcxx}/include/c++/v1";
-    echo "Adding $cpp_sdk to the setup.py common_include variable"
-    substituteInPlace setup.py \
-      --replace "['pandas/src/klib', 'pandas/src']" \
-                "['pandas/src/klib', 'pandas/src', '$cpp_sdk']"
-  '';
-
-
-  disabledTests = lib.concatMapStringsSep " and " (s: "not " + s) ([
-    # since python-dateutil 0.6.0 the following fails: test_fallback_plural, test_ambiguous_flags, test_ambiguous_compat
-    # was supposed to be solved by https://github.com/dateutil/dateutil/issues/321, but is not the case
-    "test_fallback_plural"
-    "test_ambiguous_flags"
-    "test_ambiguous_compat"
-    # Locale-related
-    "test_names"
-    "test_dt_accessor_datetime_name_accessors"
-    "test_datetime_name_accessors"
-    # Can't import from test folder
-    "test_oo_optimizable"
-    # Disable IO related tests because IO data is no longer distributed
-    "io"
-    # KeyError Timestamp
-    "test_to_excel"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_locale"
-    "test_clipboard"
-  ]);
-
-  doCheck = !stdenv.isAarch64; # upstream doesn't test this architecture
-
-  checkPhase = ''
-    runHook preCheck
-  ''
-  # TODO: Get locale and clipboard support working on darwin.
-  #       Until then we disable the tests.
-  + lib.optionalString stdenv.isDarwin ''
-    # Fake the impure dependencies pbpaste and pbcopy
-    echo "#!${runtimeShell}" > pbcopy
-    echo "#!${runtimeShell}" > pbpaste
-    chmod a+x pbcopy pbpaste
-    export PATH=$(pwd):$PATH
-  '' + ''
-    LC_ALL="en_US.UTF-8" py.test $out/${python.sitePackages}/pandas --skip-slow --skip-network -k "$disabledTests"
-    runHook postCheck
-  '';
-
-  meta = with lib; {
-    # https://github.com/pandas-dev/pandas/issues/14866
-    # pandas devs are no longer testing i686 so safer to assume it's broken
-    broken = stdenv.isi686;
-    homepage = "https://pandas.pydata.org/";
-    description = "Python Data Analysis Library";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ raskin knedlsepp ];
-    platforms = platforms.unix;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pandas/default.nix b/nixpkgs/pkgs/development/python-modules/pandas/default.nix
index 52a77826f2d6..880a5afdce63 100644
--- a/nixpkgs/pkgs/development/python-modules/pandas/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pandas/default.nix
@@ -3,16 +3,9 @@
 , buildPythonPackage
 , fetchPypi
 , python
-, isPy38
-, beautifulsoup4
-, bottleneck
 , cython
+, numpy
 , python-dateutil
-, html5lib
-, jinja2
-, lxml
-, numexpr
-, openpyxl
 , pytz
 , scipy
 , sqlalchemy
@@ -22,6 +15,7 @@
 # Test inputs
 , glibcLocales
 , hypothesis
+, jinja2
 , pytestCheckHook
 , pytest-xdist
 , pytest-asyncio
@@ -33,11 +27,12 @@
 
 buildPythonPackage rec {
   pname = "pandas";
-  version = "1.3.2";
+  version = "1.3.4";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "cbcb84d63867af3411fa063af3de64902665bb5b3d40b25b2059e40603594e87";
+    sha256 = "a2aa18d3f0b7d538e21932f637fbfe8518d085238b429e4790a35e1e44a96ffc";
   };
 
   nativeBuildInputs = [ cython ];
@@ -45,19 +40,9 @@ buildPythonPackage rec {
   buildInputs = lib.optional stdenv.isDarwin libcxx;
 
   propagatedBuildInputs = [
-    beautifulsoup4
-    bottleneck
+    numpy
     python-dateutil
-    html5lib
-    numexpr
-    lxml
-    openpyxl
     pytz
-    scipy
-    sqlalchemy
-    tables
-    xlrd
-    xlwt
   ];
 
   checkInputs = [
@@ -84,7 +69,7 @@ buildPythonPackage rec {
                 "['pandas/src/klib', 'pandas/src', '$cpp_sdk']"
   '';
 
-  doCheck = !stdenv.isAarch64; # upstream doesn't test this architecture
+  doCheck = !stdenv.isAarch32 && !stdenv.isAarch64; # upstream doesn't test this architecture
 
   pytestFlagsArray = [
     "--skip-slow"
@@ -107,6 +92,8 @@ buildPythonPackage rec {
     "test_from_coo"
     # AssertionError: No common DType exists for the given inputs
     "test_comparison_invalid"
+    # AssertionError: Regex pattern '"quotechar" must be string, not int'
+    "python-kwargs2"
   ] ++ lib.optionals stdenv.isDarwin [
     "test_locale"
     "test_clipboard"
diff --git a/nixpkgs/pkgs/development/python-modules/pandocfilters/default.nix b/nixpkgs/pkgs/development/python-modules/pandocfilters/default.nix
index 8ca57440b3f7..9dac79bea743 100644
--- a/nixpkgs/pkgs/development/python-modules/pandocfilters/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pandocfilters/default.nix
@@ -4,12 +4,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.4.3";
+  version = "1.5.0";
   pname = "pandocfilters";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bc63fbb50534b4b1f8ebe1860889289e8af94a23bff7445259592df25a3906eb";
+    sha256 = "0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38";
   };
 
   # No tests available
diff --git a/nixpkgs/pkgs/development/python-modules/panel/default.nix b/nixpkgs/pkgs/development/python-modules/panel/default.nix
index 3f6875f4986f..8673c637eda6 100644
--- a/nixpkgs/pkgs/development/python-modules/panel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/panel/default.nix
@@ -17,7 +17,7 @@ let
 in
 buildPythonPackage rec {
   pname = "panel";
-  version = "0.12.1";
+  version = "0.12.6";
 
   # Don't forget to also update the node packages
   # 1. retrieve the package.json file
@@ -25,7 +25,7 @@ buildPythonPackage rec {
   # 3. node2nix
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e4898d60abdb82f8a429df7f59dbf8bcaf7e19b3e633555512ceb4ce06678458";
+    sha256 = "97e158e8eb941f88d71929407f9455c903b5e18d89969db8ce8af66036f46b53";
   };
 
   # Since 0.10.0 panel attempts to fetch from the web.
diff --git a/nixpkgs/pkgs/development/python-modules/papermill/default.nix b/nixpkgs/pkgs/development/python-modules/papermill/default.nix
index 5b9a6d8e968b..83e4a9f6f731 100644
--- a/nixpkgs/pkgs/development/python-modules/papermill/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/papermill/default.nix
@@ -10,7 +10,7 @@
 , nbclient
 , six
 , tqdm
-, jupyter_client
+, jupyter-client
 , requests
 , entrypoints
 , tenacity
@@ -42,7 +42,7 @@ buildPythonPackage rec {
     nbclient
     six
     tqdm
-    jupyter_client
+    jupyter-client
     requests
     entrypoints
     tenacity
diff --git a/nixpkgs/pkgs/development/python-modules/papis-python-rofi/default.nix b/nixpkgs/pkgs/development/python-modules/papis-python-rofi/default.nix
index 8750b96f5c90..3d3ce9a002b6 100644
--- a/nixpkgs/pkgs/development/python-modules/papis-python-rofi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/papis-python-rofi/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "papis-python-rofi";
-  version = "1.0.2";
+  version = "1.0.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "13k6mw2nq923zazs77hpmh2s96v6zv13g7p89510qqkvp6fiml1v";
+    sha256 = "358e24f5fb0a86de6f15d5168753ad4cbb97e52b36b1bd7abbad4053aeb6f621";
   };
 
   # No tests existing
diff --git a/nixpkgs/pkgs/development/python-modules/param/default.nix b/nixpkgs/pkgs/development/python-modules/param/default.nix
index 0ae362dd28ac..23c9bc9c3933 100644
--- a/nixpkgs/pkgs/development/python-modules/param/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/param/default.nix
@@ -1,28 +1,38 @@
 { lib
 , buildPythonPackage
-, fetchPypi
-, flake8
-, nose
+, fetchFromGitHub
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "param";
-  version = "1.11.1";
+  version = "1.12.0";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b9857df01495bd55ddafb214fd1ed017d20699ce42ec2a0fd190d99caa03099f";
+  src = fetchFromGitHub {
+    owner = "holoviz";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "02zmd4bwyn8b4q1l9jgddc70ii1i7bmynacanl1cvbr6la4v9b2c";
   };
 
-  checkInputs = [ flake8 nose ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  # tests not included with pypi release
-  doCheck = false;
+  postPatch = ''
+    # Version is not set properly
+    substituteInPlace setup.py \
+      --replace 'version=get_setup_version("param"),' 'version="${version}",'
+  '';
+
+  pythonImportsCheck = [
+    "param"
+  ];
 
   meta = with lib; {
     description = "Declarative Python programming using Parameters";
     homepage = "https://github.com/pyviz/param";
     license = licenses.bsd3;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/paramiko/default.nix b/nixpkgs/pkgs/development/python-modules/paramiko/default.nix
index 88d63f0de93f..86cdb73b2607 100644
--- a/nixpkgs/pkgs/development/python-modules/paramiko/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/paramiko/default.nix
@@ -13,15 +13,18 @@
 
 buildPythonPackage rec {
   pname = "paramiko";
-  version = "2.7.2";
+  version = "2.8.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7f36f4ba2c0d81d219f4595e35f70d56cc94f9ac40a6acdf51d6ca210ce65035";
+    sha256 = "e673b10ee0f1c80d46182d3af7751d033d9b573dd7054d2d0aa46be186c3c1d2";
   };
 
   propagatedBuildInputs = [ bcrypt cryptography pynacl pyasn1 ];
 
+  # with python 3.9.6+, the deprecation warnings will fail the test suite
+  # see: https://github.com/pyinvoke/invoke/issues/829
+  doCheck = false;
   checkInputs = [ invoke pytestCheckHook pytest-relaxed mock ];
 
   disabledTestPaths = [
diff --git a/nixpkgs/pkgs/development/python-modules/parfive/default.nix b/nixpkgs/pkgs/development/python-modules/parfive/default.nix
index b525c39de220..822ae2113b2a 100644
--- a/nixpkgs/pkgs/development/python-modules/parfive/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/parfive/default.nix
@@ -1,23 +1,28 @@
 { lib
+, aiofiles
+, aioftp
+, aiohttp
 , buildPythonPackage
 , fetchPypi
-, tqdm
-, aiohttp
-, pytest
-, setuptools-scm
+, pytest-asyncio
 , pytest-localserver
 , pytest-socket
-, pytest-asyncio
-, aioftp
+, pytestCheckHook
+, pythonOlder
+, setuptools-scm
+, tqdm
 }:
 
 buildPythonPackage rec {
   pname = "parfive";
-  version = "1.3.0";
+  version = "1.5.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c3067e6ca9d6fb88a10958338360bd9c47edfd8ab11098d4c601f7f2887edadd";
+    sha256 = "f36128e8a93f3494ce3de8af883eeba4bd651ab228682810a46ec4b7897a84b3";
   };
 
   buildInputs = [
@@ -25,27 +30,34 @@ buildPythonPackage rec {
   ];
 
   propagatedBuildInputs = [
-    tqdm
-    aiohttp
     aioftp
+    aiohttp
+    tqdm
   ];
 
   checkInputs = [
-    pytest
+    aiofiles
+    pytest-asyncio
     pytest-localserver
     pytest-socket
-    pytest-asyncio
+    pytestCheckHook
   ];
 
-  checkPhase = ''
-    # these two tests require network connection
-    pytest parfive -k "not test_ftp and not test_ftp_http"
-  '';
+  disabledTests = [
+    # Requires network access
+    "test_ftp"
+    "test_ftp_pasv_command"
+    "test_ftp_http"
+  ];
+
+  pythonImportsCheck = [
+    "parfive"
+  ];
 
   meta = with lib; {
     description = "A HTTP and FTP parallel file downloader";
     homepage = "https://parfive.readthedocs.io/";
     license = licenses.mit;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/parquet/default.nix b/nixpkgs/pkgs/development/python-modules/parquet/default.nix
index ceaba917e832..3be0cce9fa4e 100644
--- a/nixpkgs/pkgs/development/python-modules/parquet/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/parquet/default.nix
@@ -3,7 +3,6 @@
 , fetchFromGitHub
 , pytestCheckHook
 , python-snappy
-, pythonOlder
 , thriftpy2
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/parse-type/default.nix b/nixpkgs/pkgs/development/python-modules/parse-type/default.nix
index 8faff81880cf..5cfb4b610ce7 100644
--- a/nixpkgs/pkgs/development/python-modules/parse-type/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/parse-type/default.nix
@@ -3,7 +3,6 @@
 , fetchFromGitHub
 , parse
 , pytestCheckHook
-, pythonOlder
 , six
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/parsedmarc/default.nix b/nixpkgs/pkgs/development/python-modules/parsedmarc/default.nix
index b9fb35016c3b..7cba1c227a85 100644
--- a/nixpkgs/pkgs/development/python-modules/parsedmarc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/parsedmarc/default.nix
@@ -14,7 +14,7 @@
 , publicsuffix2
 , xmltodict
 , geoip2
-, IMAPClient
+, imapclient
 , dateparser
 , elasticsearch-dsl
 , kafka-python
@@ -49,7 +49,7 @@ buildPythonPackage rec {
     publicsuffix2
     xmltodict
     geoip2
-    IMAPClient
+    imapclient
     dateparser
     elasticsearch-dsl
     kafka-python
diff --git a/nixpkgs/pkgs/development/python-modules/parsy/default.nix b/nixpkgs/pkgs/development/python-modules/parsy/default.nix
index ab4aeba84b69..53743052f4e4 100644
--- a/nixpkgs/pkgs/development/python-modules/parsy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/parsy/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "parsy";
-  version = "1.3.0";
+  version = "1.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bfc941ea5a69e6ac16bd4f7d9f807bbc17e35edd8b95bcd2499a25b059359012";
+    sha256 = "7c411373e520e97431f0b390db9d2cfc5089bc1d33f4f1584d2cdc9e6368f302";
   };
 
   checkInputs = [ pytest ];
diff --git a/nixpkgs/pkgs/development/python-modules/parts/default.nix b/nixpkgs/pkgs/development/python-modules/parts/default.nix
index c615fe5a0307..4c798f43c25c 100644
--- a/nixpkgs/pkgs/development/python-modules/parts/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/parts/default.nix
@@ -5,16 +5,20 @@
 
 buildPythonPackage rec {
   pname = "parts";
-  version = "1.1.2";
+  version = "1.2.2";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2212129476f6d285c3aaab309b80b83664d13dca5a42c5ca3500bd32130af7ec";
+    sha256 = "6463d5c49142d14029196a6a781b57bc98ba5b3d93244f4ed637f534d08129c1";
   };
 
   # Project has no tests
   doCheck = false;
-  pythonImportsCheck = [ "parts" ];
+
+  pythonImportsCheck = [
+    "parts"
+  ];
 
   meta = with lib; {
     description = "Python library for common list functions related to partitioning lists";
diff --git a/nixpkgs/pkgs/development/python-modules/passlib/default.nix b/nixpkgs/pkgs/development/python-modules/passlib/default.nix
index 316abb2ac32c..c4bcfaf85932 100644
--- a/nixpkgs/pkgs/development/python-modules/passlib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/passlib/default.nix
@@ -16,6 +16,7 @@ buildPythonPackage rec {
 
   checkInputs = [ nose ];
   propagatedBuildInputs = [ bcrypt argon2_cffi ];
+  propagatedNativeBuildInputs = [ argon2_cffi ];
 
   meta = {
     description = "A password hashing library for Python";
diff --git a/nixpkgs/pkgs/development/python-modules/paste/default.nix b/nixpkgs/pkgs/development/python-modules/paste/default.nix
index c3a082c6c230..9186cef3efc6 100644
--- a/nixpkgs/pkgs/development/python-modules/paste/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/paste/default.nix
@@ -1,8 +1,8 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, six
 , pytestCheckHook
+, six
 }:
 
 buildPythonPackage rec {
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     patchShebangs tests/cgiapp_data/
   '';
 
-  # propagatedBuildInputs = [ six ];
+  propagatedBuildInputs = [ six ];
 
   checkInputs = [ pytestCheckHook ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/pastel/default.nix b/nixpkgs/pkgs/development/python-modules/pastel/default.nix
index a8eb5396fa2c..39953306fbb1 100644
--- a/nixpkgs/pkgs/development/python-modules/pastel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pastel/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, poetry, pytest }:
+{ lib, buildPythonPackage, fetchPypi, pytest }:
 
 buildPythonPackage rec {
   pname = "pastel";
diff --git a/nixpkgs/pkgs/development/python-modules/pastescript/default.nix b/nixpkgs/pkgs/development/python-modules/pastescript/default.nix
index bc15e5e9f2a6..244b51f3f844 100644
--- a/nixpkgs/pkgs/development/python-modules/pastescript/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pastescript/default.nix
@@ -2,6 +2,8 @@
 , buildPythonPackage
 , fetchPypi
 , nose
+, python
+, pytestCheckHook
 , six
 , paste
 , pastedeploy
@@ -23,10 +25,22 @@ buildPythonPackage rec {
     six
   ];
 
-  checkInputs = [ nose ];
+  # test suite seems to unset PYTHONPATH
+  doCheck = false;
+  checkInputs = [ nose pytestCheckHook ];
 
   pythonNamespaces = [ "paste" ];
 
+  disabledTestPaths = [
+    "appsetup/testfiles"
+  ];
+
+  pythonImportsCheck = [
+    "paste.script"
+    "paste.deploy"
+    "paste.util"
+  ];
+
   meta = with lib; {
     description = "A pluggable command-line frontend, including commands to setup package file layouts";
     homepage = "https://github.com/cdent/pastescript/";
diff --git a/nixpkgs/pkgs/development/python-modules/path.py/2.nix b/nixpkgs/pkgs/development/python-modules/path.py/2.nix
deleted file mode 100644
index d7c635c2fe4a..000000000000
--- a/nixpkgs/pkgs/development/python-modules/path.py/2.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, pytest
-, pytest-flake8
-, glibcLocales
-, packaging
-, isPy27
-, backports_os
-, importlib-metadata
-}:
-
-buildPythonPackage rec {
-  pname = "path.py";
-  version = "11.5.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "de7cd643affbc23e56533a6e8d551ecdee4983501a08c24e4e71565202d8cdaa";
-  };
-
-  checkInputs = [ pytest pytest-flake8 glibcLocales packaging ];
-  buildInputs = [ setuptools-scm ];
-  propagatedBuildInputs = [
-    importlib-metadata
-  ] ++ lib.optional isPy27 backports_os
-  ;
-
-  LC_ALL = "en_US.UTF-8";
-
-  meta = {
-    description = "A module wrapper for os.path";
-    homepage = "https://github.com/jaraco/path.py";
-    license = lib.licenses.mit;
-  };
-
-  checkPhase = ''
-    # ignore performance test which may fail when the system is under load
-    py.test -v -k 'not TestPerformance'
-  '';
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pathy/default.nix b/nixpkgs/pkgs/development/python-modules/pathy/default.nix
index 9108c3656dbd..aba6fdccb327 100644
--- a/nixpkgs/pkgs/development/python-modules/pathy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pathy/default.nix
@@ -3,20 +3,18 @@
 , fetchPypi
 , pytestCheckHook
 , typer
-, dataclasses
 , smart-open
-, pytest
 , mock
 , google-cloud-storage
 }:
 
 buildPythonPackage rec {
   pname = "pathy";
-  version = "0.6.0";
+  version = "0.6.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f83f1eddf77dd86e824143eef8d9adbe0785c3cdd5ec0ed6c0edea3227385048";
+    sha256 = "838624441f799a06b446a657e4ecc9ebc3fdd05234397e044a7c87e8f6e76b1c";
   };
 
   propagatedBuildInputs = [ smart-open typer google-cloud-storage ];
diff --git a/nixpkgs/pkgs/development/python-modules/patsy/default.nix b/nixpkgs/pkgs/development/python-modules/patsy/default.nix
index bd3c103b9a74..71bf10bb3c00 100644
--- a/nixpkgs/pkgs/development/python-modules/patsy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/patsy/default.nix
@@ -1,31 +1,35 @@
 { lib
 , fetchPypi
 , buildPythonPackage
-, nose
 , six
 , numpy
 , scipy # optional, allows spline-related features (see patsy's docs)
-, parameterized
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "patsy";
-  version = "0.5.1";
+  version = "0.5.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "149rbrdzwns0ay88caf1zsm1r53v1q5np1mrb36na50y432cw5gi";
+    sha256 = "5053de7804676aba62783dbb0f23a2b3d74e35e5bfa238b88b7cbf148a38b69d";
   };
 
-  checkInputs = [ nose parameterized ];
-  checkPhase = "nosetests -v";
-
   propagatedBuildInputs = [
     six
     numpy
     scipy
   ];
 
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "patsy"
+  ];
+
   meta = {
     description = "A Python package for describing statistical models";
     homepage = "https://github.com/pydata/patsy";
diff --git a/nixpkgs/pkgs/development/python-modules/pbr/default.nix b/nixpkgs/pkgs/development/python-modules/pbr/default.nix
index 77e8d5c210a2..8775faa53c24 100644
--- a/nixpkgs/pkgs/development/python-modules/pbr/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pbr/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "pbr";
-  version = "5.6.0";
+  version = "5.8.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "42df03e7797b796625b1029c0400279c7c34fd7df24a7d7818a1abb5b38710dd";
+    sha256 = "672d8ebee84921862110f23fcec2acea191ef58543d34dfe9ef3d9f13c31cddf";
   };
 
   propagatedBuildInputs = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/pbr/tests.nix b/nixpkgs/pkgs/development/python-modules/pbr/tests.nix
index a1c57684ce46..b31334589f5d 100644
--- a/nixpkgs/pkgs/development/python-modules/pbr/tests.nix
+++ b/nixpkgs/pkgs/development/python-modules/pbr/tests.nix
@@ -1,5 +1,4 @@
-{ stdenv
-, buildPythonPackage
+{ buildPythonPackage
 , git
 , gnupg
 , pbr
diff --git a/nixpkgs/pkgs/development/python-modules/pc-ble-driver-py/default.nix b/nixpkgs/pkgs/development/python-modules/pc-ble-driver-py/default.nix
index 058fb8638830..093e3e67ab23 100644
--- a/nixpkgs/pkgs/development/python-modules/pc-ble-driver-py/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pc-ble-driver-py/default.nix
@@ -1,27 +1,59 @@
-{ lib, fetchFromGitHub, cmake, git, swig, boost, udev, pc-ble-driver, pythonOlder
-, buildPythonPackage, enum34, wrapt, future, setuptools, scikit-build, pythonAtLeast }:
+{ lib
+, boost
+, buildPythonPackage
+, cmake
+, cryptography
+, fetchFromGitHub
+, git
+, pc-ble-driver
+, pythonAtLeast
+, pythonOlder
+, scikit-build
+, setuptools
+, swig
+, wrapt
+}:
 
 buildPythonPackage rec {
   pname = "pc-ble-driver-py";
-  version = "0.15.0";
-  disabled = pythonOlder "3.6" || pythonAtLeast "3.9";
+  version = "0.16.2";
+
+  disabled = pythonOlder "3.7" || pythonAtLeast "3.10";
 
   src = fetchFromGitHub {
     owner = "NordicSemiconductor";
     repo = "pc-ble-driver-py";
-    rev = version;
-    sha256 = "1ckbsq9dwca8hpx9frf9xd80b4z4kn9j7jx94hza9bwzrh26x5ji";
+    rev = "v${version}";
+    sha256 = "013kpj2df5grkrzxak22k01mskpmwf7g3aa1fmxdwi90bb1sabs5";
   };
 
-  # doCheck tries to write to the global python directory to install things
-  doCheck = false;
+  nativeBuildInputs = [
+    cmake
+    swig
+    git
+    setuptools
+    scikit-build
+  ];
+
+  buildInputs = [
+    boost
+    pc-ble-driver
+  ];
 
-  nativeBuildInputs = [ cmake swig git setuptools scikit-build ];
-  buildInputs = [ boost pc-ble-driver ];
-  propagatedBuildInputs = [ enum34 wrapt future ];
+  propagatedBuildInputs = [
+    cryptography
+    wrapt
+  ];
 
   dontUseCmakeConfigure = true;
 
+  # doCheck tries to write to the global python directory to install things
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pc_ble_driver_py"
+  ];
+
   meta = with lib; {
     description = "Bluetooth Low Energy nRF5 SoftDevice serialization";
     homepage = "https://github.com/NordicSemiconductor/pc-ble-driver-py";
diff --git a/nixpkgs/pkgs/development/python-modules/pcodedmp/default.nix b/nixpkgs/pkgs/development/python-modules/pcodedmp/default.nix
new file mode 100644
index 000000000000..84f230f5852f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pcodedmp/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pcodedmp";
+  version = "1.2.6";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "bontchev";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-SYOFGMvrzxDPMACaCvqwU28Mh9LEuvFBGvAph4X+geo=";
+  };
+
+  postPatch = ''
+    # Circular dependency
+    substituteInPlace setup.py \
+      --replace "'oletools>=0.54'," ""
+  '';
+
+  # Module doesn't have tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pcodedmp"
+  ];
+
+  meta = with lib; {
+    description = "Python VBA p-code disassembler";
+    homepage = "https://github.com/bontchev/pcodedmp";
+    license = with licenses; [ gpl3Only ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pdfkit/default.nix b/nixpkgs/pkgs/development/python-modules/pdfkit/default.nix
index 431f7f09796b..73d09c755ac5 100644
--- a/nixpkgs/pkgs/development/python-modules/pdfkit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pdfkit/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "pdfkit";
-  version = "0.6.1";
+  version = "1.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1lcc1njpjd2zadbljqsnkrvamschl6j099p4giz1jd6mg1ds67gg";
+    sha256 = "992f821e1e18fc8a0e701ecae24b51a2d598296a180caee0a24c0af181da02a9";
   };
 
   # tests are not distributed
diff --git a/nixpkgs/pkgs/development/python-modules/pdfminer_six/default.nix b/nixpkgs/pkgs/development/python-modules/pdfminer_six/default.nix
index 96ba66869055..725fb9ab9f93 100644
--- a/nixpkgs/pkgs/development/python-modules/pdfminer_six/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pdfminer_six/default.nix
@@ -6,7 +6,6 @@ buildPythonPackage rec {
 
   disabled = !isPy3k;
 
-  # No tests in PyPi Tarball
   src = fetchFromGitHub {
     owner = "pdfminer";
     repo = "pdfminer.six";
@@ -16,6 +15,12 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ chardet cryptography sortedcontainers ];
 
+  postInstall = ''
+    for file in $out/bin/*.py; do
+      ln $file ''${file//.py/}
+    done
+  '';
+
   checkInputs = [ nose ];
   checkPhase = ''
     nosetests
diff --git a/nixpkgs/pkgs/development/python-modules/pdftotext/default.nix b/nixpkgs/pkgs/development/python-modules/pdftotext/default.nix
index dd22bc5be65b..4e1ea3622e8c 100644
--- a/nixpkgs/pkgs/development/python-modules/pdftotext/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pdftotext/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pdftotext";
-  version = "2.2.1";
+  version = "2.2.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a067c121654917ecbe07fbd71c807c34bbdb1ea029e269ddd11925ee7e191d3f";
+    sha256 = "2a9aa89bc62022408781b39d188fabf5a3ad1103b6630f32c4e27e395f7966ee";
   };
 
   buildInputs = [ poppler ];
diff --git a/nixpkgs/pkgs/development/python-modules/pdoc3/default.nix b/nixpkgs/pkgs/development/python-modules/pdoc3/default.nix
index 1a3996311570..9edd16289918 100644
--- a/nixpkgs/pkgs/development/python-modules/pdoc3/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pdoc3/default.nix
@@ -1,4 +1,7 @@
-{ lib, buildPythonPackage, fetchPypi
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
 , pythonOlder
 , Mako
 , markdown
@@ -16,8 +19,24 @@ buildPythonPackage rec {
     sha256 = "5f22e7bcb969006738e1aa4219c75a32f34c2d62d46dc9d2fb2d3e0b0287e4b7";
   };
 
-  nativeBuildInputs = [ setuptools-git setuptools-scm ];
-  propagatedBuildInputs = [ Mako markdown ];
+  patches = [
+    (fetchpatch {
+      # test_Class_params fails in 0.10.0
+      # https://github.com/pdoc3/pdoc/issues/355
+      url = "https://github.com/pdoc3/pdoc/commit/4aa70de2221a34a3003a7e5f52a9b91965f0e359.patch";
+      sha256 = "07sbf7bh09vgd5z1lbay604rz7rhg88414whs6iy60wwbvkz5c2v";
+    })
+  ];
+
+  nativeBuildInputs = [
+    setuptools-git
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    Mako
+    markdown
+  ];
 
   meta = with lib; {
     description = "Auto-generate API documentation for Python projects.";
diff --git a/nixpkgs/pkgs/development/python-modules/pebble/default.nix b/nixpkgs/pkgs/development/python-modules/pebble/default.nix
index 68aa1ba97075..daf4a0458670 100644
--- a/nixpkgs/pkgs/development/python-modules/pebble/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pebble/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, isPy27, fetchPypi, pytestCheckHook }:
+{ lib, stdenv, buildPythonPackage, isPy27, fetchPypi, pytestCheckHook }:
 
 buildPythonPackage rec {
   pname = "pebble";
@@ -11,6 +11,8 @@ buildPythonPackage rec {
     sha256 = "0a595f7mrf89xlck9b2x83bqybc9zd9jxkl0sa5cf19vax18rg8h";
   };
 
+  doCheck = !stdenv.isDarwin;
+
   checkInputs = [
     pytestCheckHook
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/pecan/default.nix b/nixpkgs/pkgs/development/python-modules/pecan/default.nix
index d610561b3e6f..a488f15fbed8 100644
--- a/nixpkgs/pkgs/development/python-modules/pecan/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pecan/default.nix
@@ -6,7 +6,6 @@
 # Python deps
 , logutils
 , Mako
-, singledispatch ? null
 , six
 , webtest
 # Test Inputs
@@ -40,7 +39,6 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     logutils
     Mako
-    singledispatch
     six
     webtest
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/peewee/default.nix b/nixpkgs/pkgs/development/python-modules/peewee/default.nix
index fd057d24d31e..852ba5ffbcb7 100644
--- a/nixpkgs/pkgs/development/python-modules/peewee/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/peewee/default.nix
@@ -1,50 +1,58 @@
 { lib
+, apsw
 , buildPythonPackage
-, fetchFromGitHub
-, sqlite
 , cython
-, apsw
+, fetchFromGitHub
 , flask
-, withPostgres ? false, psycopg2
-, withMysql ? false, mysql-connector
+, python
+, sqlite
+, withMysql ? false
+, mysql-connector
+, withPostgres ? false
+, psycopg2
 }:
 
 buildPythonPackage rec {
-
   pname = "peewee";
-  version = "3.14.4";
+  version = "3.14.8";
+  format = "setuptools";
 
-  # pypi release does not provide tests
   src = fetchFromGitHub {
     owner = "coleifer";
     repo = pname;
     rev = version;
-    sha256 = "0x85swpaffysc05kka0mab87cnilzw1lpacfhcx5ayabh0i2qsh6";
+    sha256 = "sha256-BJSM+7+VdW6SxN4/AXsX8NhQPdIFoYrVRVwR9OsJ3QE=";
   };
 
-
-  checkInputs = [ flask ];
-
-  checkPhase = ''
-    rm -r playhouse # avoid using the folder in the cwd
-    python runtests.py
-  '';
-
   buildInputs = [
     sqlite
-    cython # compile speedups
+    cython
   ];
 
   propagatedBuildInputs = [
-    apsw # sqlite performance improvement
-  ] ++ (lib.optional withPostgres psycopg2)
-    ++ (lib.optional withMysql mysql-connector);
+    apsw
+  ] ++ lib.optional withPostgres psycopg2
+  ++ lib.optional withMysql mysql-connector;
+
+  checkInputs = [
+    flask
+  ];
 
   doCheck = withPostgres;
 
+  checkPhase = ''
+    rm -r playhouse # avoid using the folder in the cwd
+    ${python.interpreter} runtests.py
+  '';
+
+  pythonImportsCheck = [
+    "peewee"
+  ];
+
   meta = with lib; {
-    description = "a small, expressive orm";
-    homepage    = "http://peewee-orm.com";
-    license     = licenses.mit;
+    description = "Python ORM with support for various database implementation";
+    homepage = "http://peewee-orm.com";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pelican/default.nix b/nixpkgs/pkgs/development/python-modules/pelican/default.nix
index 3f9d2e0ceb0a..e39993194a8c 100644
--- a/nixpkgs/pkgs/development/python-modules/pelican/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pelican/default.nix
@@ -7,7 +7,6 @@
 , fetchFromGitHub
 , git
 , glibcLocales
-, isPy27
 , jinja2
 , lxml
 , markdown
diff --git a/nixpkgs/pkgs/development/python-modules/pendulum/default.nix b/nixpkgs/pkgs/development/python-modules/pendulum/default.nix
index d432ca271dd7..cdc7ab035ed3 100644
--- a/nixpkgs/pkgs/development/python-modules/pendulum/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pendulum/default.nix
@@ -1,7 +1,6 @@
 { lib, fetchPypi, buildPythonPackage, pythonOlder
 , python-dateutil
 , importlib-metadata
-, poetry
 , poetry-core
 , pytzdata
 , typing
diff --git a/nixpkgs/pkgs/development/python-modules/pep257/default.nix b/nixpkgs/pkgs/development/python-modules/pep257/default.nix
index e9cba70e6317..c168e087fc5c 100644
--- a/nixpkgs/pkgs/development/python-modules/pep257/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pep257/default.nix
@@ -1,23 +1,23 @@
-{ lib, buildPythonPackage, fetchurl, pytest, mock }:
+{ lib, buildPythonPackage, fetchFromGitHub, pytestCheckHook, mock }:
+
 buildPythonPackage rec {
   pname = "pep257";
   version = "0.7.0";
 
-  src = fetchurl {
-    url = "https://github.com/GreenSteam/pep257/archive/${version}.tar.gz";
-    sha256 = "1ldpgil0kaf6wz5gvl9xdx35a62vc6bmgi3wbh9320dj5v2qk4wh";
+  src = fetchFromGitHub {
+    owner = "GreenSteam";
+    repo = "pep257";
+    rev = version;
+    sha256 = "sha256-RkE9kkNkRTmZ8zJVwQzMsxU1hcjlxX6UA+ehnareynQ=";
   };
 
-  checkInputs = [ pytest mock ];
-
-  checkPhase = ''
-    py.test
-  '';
+  checkInputs = [ pytestCheckHook mock ];
 
   meta = with lib; {
     homepage = "https://github.com/GreenSteam/pep257/";
     description = "Python docstring style checker";
     longDescription = "Static analysis tool for checking compliance with Python PEP 257.";
     license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pep440/default.nix b/nixpkgs/pkgs/development/python-modules/pep440/default.nix
new file mode 100644
index 000000000000..83187327af17
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pep440/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pep440";
+  version = "0.1.0";
+  format = "setuptools";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "m1H/yqqDiFrj6tmD9jo8nDakCBZxkBPq/HtSOXMH4ZQ=";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "pep440"
+  ];
+
+  meta = with lib; {
+    description = "Python module to check whether versions number match PEP 440";
+    homepage = "https://github.com/Carreau/pep440";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pep8-naming/default.nix b/nixpkgs/pkgs/development/python-modules/pep8-naming/default.nix
index 9bfdbe89aab6..ee8535d089aa 100644
--- a/nixpkgs/pkgs/development/python-modules/pep8-naming/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pep8-naming/default.nix
@@ -1,5 +1,6 @@
 { lib
 , fetchPypi
+, fetchpatch
 , buildPythonPackage
 , flake8
 , flake8-polyfill
@@ -20,6 +21,15 @@ buildPythonPackage rec {
     flake8-polyfill
   ];
 
+  patches = [
+    # Add missing option to get passing tests, https://github.com/PyCQA/pep8-naming/pull/181
+    (fetchpatch {
+      name = "add-missing-option.patch";
+      url = "https://github.com/PyCQA/pep8-naming/commit/03b8f36f6a8bb8bc79dfa5a71ad9be2a0bf8bbf5.patch";
+      sha256 = "1YTh84Yoj0MqFZoifM362563r1GuzaF+mMmdT/ckC7I=";
+    })
+  ];
+
   checkPhase = ''
     runHook preCheck
     ${python.interpreter} run_tests.py
diff --git a/nixpkgs/pkgs/development/python-modules/pescea/default.nix b/nixpkgs/pkgs/development/python-modules/pescea/default.nix
new file mode 100644
index 000000000000..c4a6feb6896c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pescea/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, async-timeout
+, buildPythonPackage
+, fetchFromGitHub
+, pytest-asyncio
+, pytest-mock
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pescea";
+  version = "1.0.10";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "lazdavila";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "Q38mLGjrRdXEvT+PCNsil1e2p0mmM0Xy8TUx9QOnFRA=";
+  };
+
+  propagatedBuildInputs = [
+    async-timeout
+  ];
+
+  checkInputs = [
+    pytest-asyncio
+    pytest-mock
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    # https://github.com/lazdavila/pescea/pull/1
+    substituteInPlace setup.py \
+      --replace '"asyncio",' ""
+  '';
+
+  disabledTests = [
+    # AssertionError: assert <State.BUSY: 'BusyWaiting'>...
+    "test_updates_while_busy"
+    # Test requires network access
+    "test_flow_control"
+  ];
+
+  pythonImportsCheck = [
+    "pescea"
+  ];
+
+  meta = with lib; {
+    description = "Python interface to Escea fireplaces";
+    homepage = "https://github.com/lazdavila/pescea";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pex/default.nix b/nixpkgs/pkgs/development/python-modules/pex/default.nix
index 82831acca030..438360260822 100644
--- a/nixpkgs/pkgs/development/python-modules/pex/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pex/default.nix
@@ -1,28 +1,34 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, setuptools
+, flit-core
 }:
 
 buildPythonPackage rec {
   pname = "pex";
-  version = "2.1.52";
+  version = "2.1.56";
+  format = "flit";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6ab60a316892e6e7c6a39cdcbd324d2c3d763b2fe60f381a6fe34b671f24b6e0";
+    sha256 = "8dfb7ef551cc9d3d03a6e2dc1b1ba6183cd94f3cde7431836f017d60cc992d53";
   };
 
-  nativeBuildInputs = [ setuptools ];
+  nativeBuildInputs = [
+    flit-core
+  ];
 
   # A few more dependencies I don't want to handle right now...
   doCheck = false;
 
+  pythonImportsCheck = [
+    "pex"
+  ];
+
   meta = with lib; {
-    description = "A library and tool for generating .pex (Python EXecutable) files";
+    description = "Python library and tool for generating .pex (Python EXecutable) files";
     homepage = "https://github.com/pantsbuild/pex";
     license = licenses.asl20;
     maintainers = with maintainers; [ copumpkin ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pexpect/default.nix b/nixpkgs/pkgs/development/python-modules/pexpect/default.nix
index 60655708beae..40d61aec5c52 100644
--- a/nixpkgs/pkgs/development/python-modules/pexpect/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pexpect/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , ptyprocess
-, isPy3k
 }:
 
 buildPythonPackage (rec {
diff --git a/nixpkgs/pkgs/development/python-modules/pg8000/1_12.nix b/nixpkgs/pkgs/development/python-modules/pg8000/1_12.nix
deleted file mode 100644
index e53817b3911b..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pg8000/1_12.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytz
-, six
-}:
-
-buildPythonPackage rec {
-  pname = "pg8000";
-  version = "1.12.5";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1yc3knh28cx3rjb2ifg5kmqqa78yyyw2gzzslbm9fj0mzh5aq1sx";
-  };
-
-  propagatedBuildInputs = [ pytz six ];
-
-  meta = with lib; {
-    homepage = "https://github.com/tlocke/pg8000";
-    description = "PostgreSQL interface library, for asyncio";
-    maintainers = with maintainers; [ domenkozar ];
-    platforms = platforms.unix;
-  };
-
-}
-
diff --git a/nixpkgs/pkgs/development/python-modules/pg8000/default.nix b/nixpkgs/pkgs/development/python-modules/pg8000/default.nix
index 8b8d2ed488b9..f61a0c593275 100644
--- a/nixpkgs/pkgs/development/python-modules/pg8000/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pg8000/default.nix
@@ -8,12 +8,14 @@
 
 buildPythonPackage rec {
   pname = "pg8000";
-  version = "1.22.0";
+  version = "1.23.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c5172252fc92142ec104cd5e7231be4580a1a0a814403707bafbf7bb8383a29a";
+    sha256 = "sha256-pBPgAUE0KBOiykfot7BUn/M4zKAryBkHa21w8S11XHk=";
   };
 
   propagatedBuildInputs = [
@@ -23,7 +25,10 @@ buildPythonPackage rec {
 
   # Tests require a running PostgreSQL instance
   doCheck = false;
-  pythonImportsCheck = [ "pg8000" ];
+
+  pythonImportsCheck = [
+    "pg8000"
+  ];
 
   meta = with lib; {
     description = "Python driver for PostgreSQL";
diff --git a/nixpkgs/pkgs/development/python-modules/pglast/default.nix b/nixpkgs/pkgs/development/python-modules/pglast/default.nix
index c3b34b1fc199..673b3c8ffe8d 100644
--- a/nixpkgs/pkgs/development/python-modules/pglast/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pglast/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "pglast";
-  version = "3.7";
+  version = "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3f0f36cebdb68d5b3aaacb11cbf09db44250194845fbf3b49b0aef93c30991bf";
+    sha256 = "31ad29b6a27048b1a26c072992fc5213d2eaf366854679e6c97111e300e0ef01";
   };
 
   disabled = !isPy3k;
diff --git a/nixpkgs/pkgs/development/python-modules/pgpy/default.nix b/nixpkgs/pkgs/development/python-modules/pgpy/default.nix
index a79c65f4059a..3c2e2c22a88b 100644
--- a/nixpkgs/pkgs/development/python-modules/pgpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pgpy/default.nix
@@ -1,5 +1,5 @@
 { lib, pythonOlder, fetchFromGitHub, buildPythonPackage
-, six, enum34, pyasn1, cryptography, singledispatch ? null
+, six, enum34, pyasn1, cryptography
 , pytestCheckHook }:
 
 buildPythonPackage rec {
@@ -18,7 +18,6 @@ buildPythonPackage rec {
     pyasn1
     cryptography
   ] ++ lib.optionals (pythonOlder "3.4") [
-    singledispatch
     enum34
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/phik/default.nix b/nixpkgs/pkgs/development/python-modules/phik/default.nix
index e4e427dfe7c2..a7cb6e7e838e 100644
--- a/nixpkgs/pkgs/development/python-modules/phik/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/phik/default.nix
@@ -7,7 +7,7 @@
 , pytest-pylint
 , nbconvert
 , joblib
-, jupyter_client
+, jupyter-client
 , numpy
 , scipy
 , pandas
@@ -31,7 +31,7 @@ buildPythonPackage rec {
     pytest
     pytest-pylint
     nbconvert
-    jupyter_client
+    jupyter-client
   ];
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/phonenumbers/default.nix b/nixpkgs/pkgs/development/python-modules/phonenumbers/default.nix
index 4235f6eeb934..5a8cb430ae6f 100644
--- a/nixpkgs/pkgs/development/python-modules/phonenumbers/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/phonenumbers/default.nix
@@ -6,20 +6,25 @@
 
 buildPythonPackage rec {
   pname = "phonenumbers";
-  version = "8.12.35";
+  version = "8.12.40";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f426d419aabf6366c27ef1193918cc55217ef0e8be8f09cbf0667131037ca229";
+    sha256 = "00f2955a456b458f9b6ab0d24329049c3e7358c44dfc1979fe4908ced40f1eb8";
   };
 
   checkInputs = [
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [ "tests/*.py" ];
+  pytestFlagsArray = [
+    "tests/*.py"
+  ];
 
-  pythonImportsCheck = [ "phonenumbers" ];
+  pythonImportsCheck = [
+    "phonenumbers"
+  ];
 
   meta = with lib; {
     description = "Python module for handling international phone numbers";
diff --git a/nixpkgs/pkgs/development/python-modules/phonopy/default.nix b/nixpkgs/pkgs/development/python-modules/phonopy/default.nix
index 86bece5254ac..dec86d166112 100644
--- a/nixpkgs/pkgs/development/python-modules/phonopy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/phonopy/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "phonopy";
-  version = "2.11.0";
+  version = "2.12.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2ab47d3eb53a5265f3567974d29760b510b3312217358b76efc27ade9bd1a9f0";
+    sha256 = "ff65065f418ccbff9fbc1186b9a65581e83b42789aa4a656f45badfff9bd3f61";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/piccata/default.nix b/nixpkgs/pkgs/development/python-modules/piccata/default.nix
index bbb4fcf19934..d041ecc3ec70 100644
--- a/nixpkgs/pkgs/development/python-modules/piccata/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/piccata/default.nix
@@ -1,8 +1,14 @@
-{ buildPythonPackage, isPy27, fetchFromGitHub, lib, ipaddress }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, isPy27
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "piccata";
   version = "2.0.0";
+
   disabled = isPy27;
 
   src = fetchFromGitHub {
@@ -12,15 +18,23 @@ buildPythonPackage rec {
     sha256 = "0pn842jcf2czjks5dphivgp1s7wiifqiv93s0a89h0wxafd6pbsr";
   };
 
-  propagatedBuildInputs = [
-    ipaddress
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # No communication possible in the sandbox
+    "test_client_server_communication"
   ];
 
-  pythonImportsCheck = [ "piccata" ];
+  pythonImportsCheck = [
+    "piccata"
+  ];
 
-  meta = {
+  meta = with lib; {
     description = "Simple CoAP (RFC7252) toolkit";
     homepage = "https://github.com/NordicSemiconductor/piccata";
-    maintainers = with lib.maintainers; [ gebner ];
+    license = licenses.mit;
+    maintainers = with maintainers; [ gebner ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pikepdf/default.nix b/nixpkgs/pkgs/development/python-modules/pikepdf/default.nix
index 2b0b9bc4999a..6f0f733c4723 100644
--- a/nixpkgs/pkgs/development/python-modules/pikepdf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pikepdf/default.nix
@@ -2,12 +2,13 @@
 , attrs
 , buildPythonPackage
 , defusedxml
-, fetchPypi
+, fetchFromGitHub
 , hypothesis
 , isPy3k
 , jbig2dec
 , lxml
 , mupdf
+, packaging
 , pillow
 , psutil
 , pybind11
@@ -24,12 +25,20 @@
 
 buildPythonPackage rec {
   pname = "pikepdf";
-  version = "3.2.0";
+  version = "4.3.0";
   disabled = ! isPy3k;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "a0582f00440668c07edb8403e82724961c7812c8e6c30655e34825b2645f15cd";
+  src = fetchFromGitHub {
+    owner = "pikepdf";
+    repo = "pikepdf";
+    rev = "v${version}";
+    # The content of .git_archival.txt is substituted upon tarball creation,
+    # which creates indeterminism if master no longer points to the tag.
+    # See https://github.com/jbarlow83/OCRmyPDF/issues/841
+    extraPostFetch = ''
+      rm "$out/.git_archival.txt"
+    '';
+    hash = "sha256-9dSJ6+rZd49rFSQExYnFBGQGZ8MnFM+z/0Iz/nYkW4E=";
   };
 
   patches = [
@@ -40,6 +49,8 @@ buildPythonPackage rec {
     })
   ];
 
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
   buildInputs = [
     pybind11
     qpdf
@@ -63,6 +74,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     defusedxml
     lxml
+    packaging
     pillow
     setuptools
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/pikepdf/paths.patch b/nixpkgs/pkgs/development/python-modules/pikepdf/paths.patch
index 807041696ad6..17349f7ac209 100644
--- a/nixpkgs/pkgs/development/python-modules/pikepdf/paths.patch
+++ b/nixpkgs/pkgs/development/python-modules/pikepdf/paths.patch
@@ -1,16 +1,16 @@
 diff --git a/src/pikepdf/_methods.py b/src/pikepdf/_methods.py
-index 70cdc9e..c3a14d0 100644
+index 9db6b49..4020bcf 100644
 --- a/src/pikepdf/_methods.py
 +++ b/src/pikepdf/_methods.py
-@@ -190,7 +190,7 @@ def _mudraw(buffer, fmt) -> bytes:
+@@ -204,7 +204,7 @@ def _mudraw(buffer, fmt) -> bytes:
          tmp_in.flush()
  
          proc = run(
 -            ['mudraw', '-F', fmt, '-o', '-', tmp_in.name],
 +            ['@mudraw@', '-F', fmt, '-o', '-', tmp_in.name],
-             stdout=PIPE,
-             stderr=PIPE,
+             capture_output=True,
              check=True,
+         )
 diff --git a/src/pikepdf/jbig2.py b/src/pikepdf/jbig2.py
 index 80cc910..64f6d31 100644
 --- a/src/pikepdf/jbig2.py
diff --git a/nixpkgs/pkgs/development/python-modules/pillow/default.nix b/nixpkgs/pkgs/development/python-modules/pillow/default.nix
index c6bb944c232b..e0f29d366e10 100644
--- a/nixpkgs/pkgs/development/python-modules/pillow/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pillow/default.nix
@@ -5,13 +5,13 @@
 
 import ./generic.nix (rec {
   pname = "Pillow";
-  version = "8.3.2";
+  version = "8.4.0";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1361y215ydmdh4il1vay5831aqivmpwgzjqrphqjdiq0ipnz7qyx";
+    sha256 = "b8e2f83c56e141920c39464b852de3719dfbfb6e3c99a2d8da0edf4fb33176ed";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/pint/default.nix b/nixpkgs/pkgs/development/python-modules/pint/default.nix
index f39caef6e59d..c5a9148f0e54 100644
--- a/nixpkgs/pkgs/development/python-modules/pint/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pint/default.nix
@@ -7,6 +7,7 @@
 , packaging
 # Check Inputs
 , pytestCheckHook
+, pytest-subtests
 , numpy
 , matplotlib
 , uncertainties
@@ -14,12 +15,12 @@
 
 buildPythonPackage rec {
   pname = "pint";
-  version = "0.14";
+  version = "0.18";
 
   src = fetchPypi {
     inherit version;
     pname = "Pint";
-    sha256 = "0wkzb7g20wzpqr3xaqpq96dlfv6irw202icsz81ys8npp7mm194s";
+    sha256 = "sha256-jEvOiEwmkFH+t6vGnb/RhAPAx2SryD2hMuinIi+LqAE=";
   };
 
   disabled = pythonOlder "3.6";
@@ -32,6 +33,7 @@ buildPythonPackage rec {
   # Test suite explicitly requires pytest
   checkInputs = [
     pytestCheckHook
+    pytest-subtests
     numpy
     matplotlib
     uncertainties
@@ -42,7 +44,7 @@ buildPythonPackage rec {
     description = "Physical quantities module";
     license = licenses.bsd3;
     homepage = "https://github.com/hgrecco/pint/";
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc doronbehar ];
   };
 
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pip-tools/default.nix b/nixpkgs/pkgs/development/python-modules/pip-tools/default.nix
index 9ac877be8848..9d54eef4d706 100644
--- a/nixpkgs/pkgs/development/python-modules/pip-tools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pip-tools/default.nix
@@ -3,35 +3,44 @@
 , pythonOlder
 , buildPythonPackage
 , pip
-, pytest
+, pytestCheckHook
 , pytest-xdist
 , click
 , setuptools-scm
-, git
-, glibcLocales
-, mock
 , pep517
 }:
 
 buildPythonPackage rec {
   pname = "pip-tools";
-  version = "6.2.0";
+  version = "6.4.0";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9ed38c73da4993e531694ea151f77048b4dbf2ba7b94c4a569daa39568cc6564";
+    sha256 = "65553a15b1ba34be5e43889345062e38fb9b219ffa23b084ca0d4c4039b6f53b";
   };
 
-  LC_ALL = "en_US.UTF-8";
-  checkInputs = [ pytest git glibcLocales mock pytest-xdist ];
-  propagatedBuildInputs = [ pip click setuptools-scm pep517 ];
+  checkInputs = [
+    pytestCheckHook
+    pytest-xdist
+  ];
 
-  checkPhase = ''
-    export HOME=$(mktemp -d) VIRTUAL_ENV=1
-    py.test -m "not network"
-  '';
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    click
+    pep517
+    pip
+  ];
+
+  disabledTests = [
+    # these want internet access
+    "network"
+    "test_direct_reference_with_extras"
+  ];
 
   meta = with lib; {
     description = "Keeps your pinned dependencies fresh";
diff --git a/nixpkgs/pkgs/development/python-modules/pip/20.nix b/nixpkgs/pkgs/development/python-modules/pip/20.nix
index 6f859d365c59..e3666d6a7961 100644
--- a/nixpkgs/pkgs/development/python-modules/pip/20.nix
+++ b/nixpkgs/pkgs/development/python-modules/pip/20.nix
@@ -1,5 +1,4 @@
 { lib
-, python
 , buildPythonPackage
 , bootstrapped-pip
 , fetchFromGitHub
@@ -8,8 +7,6 @@
 , virtualenv
 , pretend
 , pytest
-, setuptools
-, wheel
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/pip/default.nix b/nixpkgs/pkgs/development/python-modules/pip/default.nix
index 50783f4eeb62..fc447bfb98a0 100644
--- a/nixpkgs/pkgs/development/python-modules/pip/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pip/default.nix
@@ -1,5 +1,4 @@
 { lib
-, python
 , buildPythonPackage
 , bootstrapped-pip
 , fetchFromGitHub
@@ -8,8 +7,6 @@
 , virtualenv
 , pretend
 , pytest
-, setuptools
-, wheel
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/pipx/default.nix b/nixpkgs/pkgs/development/python-modules/pipx/default.nix
index 86091820a1dc..2f80806c431a 100644
--- a/nixpkgs/pkgs/development/python-modules/pipx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pipx/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "pipx";
-  version = "0.16.5";
+  version = "0.17.0";
 
   disabled = pythonOlder "3.6";
 
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "pipxproject";
     repo = pname;
     rev = version;
-    sha256 = "sha256-gBeaHEig47XWKoPx3jzvgk/jJPJXtr5R5qUL0LgvbDg=";
+    sha256 = "sha256-vR/tKV+ZB0nZaxEcB83dwoSI7kBC1rA+6fo30rizroM=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pkginfo/default.nix b/nixpkgs/pkgs/development/python-modules/pkginfo/default.nix
index 6bfed6305a8a..21659f638a74 100644
--- a/nixpkgs/pkgs/development/python-modules/pkginfo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pkginfo/default.nix
@@ -1,21 +1,30 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "pkginfo";
-  version = "1.7.1";
+  version = "1.8.2";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e7432f81d08adec7297633191bbf0bd47faf13cd8724c3a13250e51d542635bd";
+    sha256 = "sha256-VC4NC2dQ4uIcIBeYA+QKtQWY2AZtUQl6Djgsup6wK/8=";
   };
 
-  doCheck = false; # I don't know why, but with doCheck = true it fails.
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  meta = with lib; {
-    homepage = "https://pypi.python.org/pypi/pkginfo";
-    license = licenses.mit;
-    description = "Query metadatdata from sdists / bdists / installed packages";
+  pythonImportsCheck = [
+    "pkginfo"
+  ];
 
+  meta = with lib; {
+    description = "Query metadatdata from sdists, bdists or installed packages";
+    homepage = "https://pythonhosted.org/pkginfo/";
     longDescription = ''
       This package provides an API for querying the distutils metadata
       written in the PKG-INFO file inside a source distriubtion (an sdist)
@@ -24,5 +33,7 @@ buildPythonPackage rec {
       *.egg-info stored in a “development checkout” (e.g, created by running
       setup.py develop).
     '';
+    license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pkutils/default.nix b/nixpkgs/pkgs/development/python-modules/pkutils/default.nix
index c383f5ff86c4..48afe57ef34a 100644
--- a/nixpkgs/pkgs/development/python-modules/pkutils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pkutils/default.nix
@@ -1,35 +1,48 @@
 { lib
 , buildPythonPackage
-, isPy3k
 , fetchFromGitHub
-, semver
-  # Check Inputs
 , nose
+, pythonOlder
+, semver
 }:
 
 buildPythonPackage rec {
   pname = "pkutils";
-  version = "1.1.1";
-  disabled = !isPy3k; # some tests using semver fail due to unicode errors on Py2.7
+  version = "2.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "reubano";
     repo = "pkutils";
     rev = "v${version}";
-    sha256 = "01yaq9sz6vyxk8yiss6hsmy70qj642cr2ifk0sx1mlh488flcm62";
+    sha256 = "sha256-jvRUjuxlcfmJOX50bnZR/pP2Axe1KDy9/KGXTL4yPxA=";
   };
 
-  propagatedBuildInputs = [ semver ];
+  propagatedBuildInputs = [
+    semver
+  ];
+
+  checkInputs = [
+    nose
+  ];
 
-  # Remove when https://github.com/reubano/pkutils/pull/4 merged
   postPatch = ''
-    substituteInPlace requirements.txt --replace "semver>=2.2.1,<2.7.3" "semver"
+    # Remove when https://github.com/reubano/pkutils/pull/4 merged
+    substituteInPlace requirements.txt \
+      --replace "semver>=2.2.1,<2.7.3" "semver"
   '';
 
-  checkInputs = [ nose ];
-  pythonImportsCheck = [ "pkutils" ];
+  checkPhase = ''
+    runHook preCheck
+    nosetests
+    runHook postCheck
+  '';
 
-  checkPhase = "nosetests";
+  pythonImportsCheck = [
+    "pkutils"
+  ];
 
   meta = with lib; {
     description = "A Python packaging utility library";
diff --git a/nixpkgs/pkgs/development/python-modules/plac/default.nix b/nixpkgs/pkgs/development/python-modules/plac/default.nix
index 2bd50d87dc0b..3d2094263b6f 100644
--- a/nixpkgs/pkgs/development/python-modules/plac/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/plac/default.nix
@@ -5,11 +5,11 @@
 }:
 buildPythonPackage rec {
   pname = "plac";
-  version = "1.3.3";
+  version = "1.3.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "51e332dabc2aed2cd1f038be637d557d116175101535f53eaa7ae854a00f2a74";
+    sha256 = "c91a4c9f9cc67c7e7213b6823b0ea15cd0afe5eaf8f8dda1fe5cb10192b137f5";
   };
 
   checkPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/plaid-python/default.nix b/nixpkgs/pkgs/development/python-modules/plaid-python/default.nix
index b864dedecfe7..31a62c109646 100644
--- a/nixpkgs/pkgs/development/python-modules/plaid-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/plaid-python/default.nix
@@ -1,26 +1,38 @@
-{ lib, buildPythonPackage, fetchPypi, requests, pytest }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nulltype
+, python-dateutil
+, urllib3
+}:
 
 buildPythonPackage rec {
-  version = "8.1.0";
   pname = "plaid-python";
+  version = "8.8.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b1f7b5b58ba3c171bb795352119d54797c8c50877bc376d26cd756de2453e9fd";
+    sha256 = "8689b5c4d69e93026aea252314fb3133359fa70df5819ad6995c4e44a2f84858";
   };
 
-  checkInputs = [ pytest ];
+  propagatedBuildInputs = [
+    nulltype
+    python-dateutil
+    urllib3
+  ];
 
-  # Integration tests require API keys and internet access
-  checkPhase = "py.test -rxs ./tests/unit";
+  # Tests require a Client IP
+  doCheck = false;
 
-  propagatedBuildInputs = [ requests ];
+  pythonImportsCheck = [
+    "plaid"
+  ];
 
-  meta = {
+  meta = with lib; {
     description = "Python client library for the Plaid API and Link";
     homepage = "https://github.com/plaid/plaid-python";
     changelog = "https://github.com/plaid/plaid-python/blob/master/CHANGELOG.md";
-    license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ bhipple ];
+    license = licenses.mit;
+    maintainers = with maintainers; [ bhipple ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/platformdirs/default.nix b/nixpkgs/pkgs/development/python-modules/platformdirs/default.nix
index f49b8716211e..062295a4eada 100644
--- a/nixpkgs/pkgs/development/python-modules/platformdirs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/platformdirs/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "platformdirs";
-  version = "2.3.0";
+  version = "2.4.0";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "sha256-g2DPNN7VxK3EjOXOpSWA4a+PghZ7v2jmjw9+VQyCTBI=";
+    sha256 = "sha256-Ox1CVq2M2eddZtpuZx0IfvuOm6RPsAs27WkMdZSeh0E=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
diff --git a/nixpkgs/pkgs/development/python-modules/plexapi/default.nix b/nixpkgs/pkgs/development/python-modules/plexapi/default.nix
index 66e16d7e8762..8c0bd2d07e80 100644
--- a/nixpkgs/pkgs/development/python-modules/plexapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/plexapi/default.nix
@@ -9,7 +9,8 @@
 
 buildPythonPackage rec {
   pname = "plexapi";
-  version = "4.7.2";
+  version = "4.8.0";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
@@ -17,7 +18,7 @@ buildPythonPackage rec {
     owner = "pkkid";
     repo = "python-plexapi";
     rev = version;
-    sha256 = "sha256-v12CL2VR9QAoj44F8V1qw/qflzQ1WRi1cvWn/U/wW/E=";
+    sha256 = "sha256-e+nZi84mF9Z/gbFyhmE9TlntkTyrfoNr3U/fwH55fjw=";
   };
 
   propagatedBuildInputs = [
@@ -29,7 +30,9 @@ 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 4b849dd016b8..c4811044ae2b 100644
--- a/nixpkgs/pkgs/development/python-modules/plotly/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/plotly/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "plotly";
-  version = "5.3.0";
+  version = "5.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b6dc306c56e7d5fa7d017718894099b27290b427abf4acad8e5b77fdc3bd32ec";
+    sha256 = "735d50738c760ecbf3a38e2336b8c1b119bff2d857096e4f68af31089b798161";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pluggy/default.nix b/nixpkgs/pkgs/development/python-modules/pluggy/default.nix
index 1a1c23f22d0a..8d1fcbed3a7f 100644
--- a/nixpkgs/pkgs/development/python-modules/pluggy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pluggy/default.nix
@@ -2,6 +2,7 @@
 , lib
 , fetchPypi
 , setuptools-scm
+, pythonOlder
 , importlib-metadata
 }:
 
@@ -23,12 +24,14 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [ importlib-metadata ];
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
+    importlib-metadata
+  ];
 
   meta = {
     description = "Plugin and hook calling mechanisms for Python";
     homepage = "https://github.com/pytest-dev/pluggy";
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = with lib.maintainers; [ dotlambda ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/plugwise/default.nix b/nixpkgs/pkgs/development/python-modules/plugwise/default.nix
index ca8af15b53ee..28a67f1da82e 100644
--- a/nixpkgs/pkgs/development/python-modules/plugwise/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/plugwise/default.nix
@@ -19,15 +19,21 @@
 
 buildPythonPackage rec {
   pname = "plugwise";
-  version = "0.14.5";
+  version = "0.15.3";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = "python-plugwise";
     rev = "v${version}";
-    sha256 = "1kwks87raxs04dvnpmpn8l1cbzg5yb5nyinaqzxdsc6al83isbik";
+    sha256 = "sha256-HaH0LcH6L3R9vLT0vlM1absMTbfqgEeVi/aP2FqdnQY=";
   };
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "aiohttp==3.8.0" "aiohttp>=3.8.0"
+  '';
+
   propagatedBuildInputs = [
     aiohttp
     async-timeout
diff --git a/nixpkgs/pkgs/development/python-modules/plumbum/default.nix b/nixpkgs/pkgs/development/python-modules/plumbum/default.nix
index 278caa44b143..e571f276f28f 100644
--- a/nixpkgs/pkgs/development/python-modules/plumbum/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/plumbum/default.nix
@@ -5,7 +5,7 @@
 
 buildPythonPackage rec {
   pname = "plumbum";
-  version = "1.7.0";
+  version = "1.7.2";
 
   checkInputs = [ pytest ];
 
@@ -14,6 +14,6 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "317744342c755319907c773cc87c3a30adaa3a41b0d34c0ce02d9d1904922dce";
+    sha256 = "0d1bf908076bbd0484d16412479cb97d6843069ee19f99e267e11dd980040523";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/plyer/default.nix b/nixpkgs/pkgs/development/python-modules/plyer/default.nix
index 88dfd9a4a2bf..aed8b9395f06 100644
--- a/nixpkgs/pkgs/development/python-modules/plyer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/plyer/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch, keyring, mock, pytestCheckHook, stdenv }:
+{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch, keyring, mock, pytestCheckHook }:
 
 buildPythonPackage rec {
   pname = "plyer";
diff --git a/nixpkgs/pkgs/development/python-modules/plyvel/default.nix b/nixpkgs/pkgs/development/python-modules/plyvel/default.nix
index aa247c8e4261..d47805bb643f 100644
--- a/nixpkgs/pkgs/development/python-modules/plyvel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/plyvel/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "plyvel";
-  version = "1.3.0";
+  version = "1.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a7a09033a0fd33ca47094e8bbe01714abfcf644f4b7a337d3970e91a2599e2c4";
+    sha256 = "4ea98bea04ebf0f44747bacdfafefc8827787106fbb787f0aedc46482b2dfd53";
   };
 
   buildInputs = [ pkgs.leveldb ] ++ lib.optional isPy3k pytest;
diff --git a/nixpkgs/pkgs/development/python-modules/poetry-core/default.nix b/nixpkgs/pkgs/development/python-modules/poetry-core/default.nix
index 7eef9e740d31..e8632d0ed078 100644
--- a/nixpkgs/pkgs/development/python-modules/poetry-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/poetry-core/default.nix
@@ -1,4 +1,5 @@
 { lib, buildPythonPackage, fetchFromGitHub, pythonOlder, isPy27
+, git
 , importlib-metadata
 , intreehooks
 , pathlib2
@@ -12,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "poetry-core";
-  version = "1.0.4";
+  version = "1.0.7";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "python-poetry";
     repo = pname;
     rev = version;
-    sha256 = "0jgd4d7m5y8ly8n0l9lcq7cjab2y3hifk90f343ksmjzssfd5lg3";
+    sha256 = "0v86x8f8pcbviv2cdn7jjbgj3c994qasx0bqk1kr0mj8m6pjwy9z";
   };
 
   postPatch = lib.optionalString (pythonOlder "3.8") ''
@@ -41,6 +42,7 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
+    git
     pep517
     pytest-mock
     pytestCheckHook
diff --git a/nixpkgs/pkgs/development/python-modules/poetry/default.nix b/nixpkgs/pkgs/development/python-modules/poetry/default.nix
index 29477474c845..1957982bd8fe 100644
--- a/nixpkgs/pkgs/development/python-modules/poetry/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/poetry/default.nix
@@ -24,7 +24,7 @@
 
 buildPythonPackage rec {
   pname = "poetry";
-  version = "1.1.8";
+  version = "1.1.12";
   format = "pyproject";
   disabled = isPy27;
 
@@ -32,7 +32,7 @@ buildPythonPackage rec {
     owner = "python-poetry";
     repo = pname;
     rev = version;
-    sha256 = "0qcgjb78nj69sppd8146519q9422xxg1bi34gyxy51sjkvd5lxhz";
+    sha256 = "1fm4yj6wxr24v7b77gmf63j7xsgszhbhzw2i9fvlfi0p9l0q34pm";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/polarizationsolver/default.nix b/nixpkgs/pkgs/development/python-modules/polarizationsolver/default.nix
new file mode 100644
index 000000000000..c4710f6901ed
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/polarizationsolver/default.nix
@@ -0,0 +1,38 @@
+{ buildPythonPackage
+, lib
+, fetchFromGitLab
+, python
+, numpy
+, scipy
+, periodictable
+, fields
+}:
+
+buildPythonPackage rec {
+  pname = "polarizationsolver";
+  version = "unstable-2021-11-02";
+
+  src = fetchFromGitLab {
+    owner = "reinholdt";
+    repo = pname;
+    rev = "00424ac4d1862257a55e4b16543f63ace3fe8c22";
+    sha256 = "sha256-LACf8Xw+o/uJ3+PD/DE/o7nwKY7fv3NyYbpjCrTTnBU=";
+  };
+
+  propagatedBuildInputs = [
+    numpy
+    periodictable
+    scipy
+  ];
+
+  checkInputs = [ fields ];
+
+  pythonImportsCheck = [ "polarizationsolver" ];
+
+  meta = with lib; {
+    description = "Multipole moment solver for quantum chemistry and polarisable embedding";
+    homepage = "https://gitlab.com/reinholdt/polarizationsolver";
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.sheepforce ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/policy-sentry/default.nix b/nixpkgs/pkgs/development/python-modules/policy-sentry/default.nix
index a9e3930f67f4..86bbd847aa28 100644
--- a/nixpkgs/pkgs/development/python-modules/policy-sentry/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/policy-sentry/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "policy-sentry";
-  version = "0.11.18";
+  version = "0.11.19";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "salesforce";
     repo = "policy_sentry";
     rev = version;
-    sha256 = "sha256-1wpy4WofqrPusOI2BHRqSHfXlRpbuLOx97egzSAbB8E=";
+    sha256 = "sha256-zYX2MMFIgts5brFb/hsgLHZbY5mncqnCmk7nGdxj/BM=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/policyuniverse/default.nix b/nixpkgs/pkgs/development/python-modules/policyuniverse/default.nix
index d8e102957b1b..ca66c777f5b0 100644
--- a/nixpkgs/pkgs/development/python-modules/policyuniverse/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/policyuniverse/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pytestCheckHook
 , pythonOlder
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/pontos/default.nix b/nixpkgs/pkgs/development/python-modules/pontos/default.nix
index 427c5088675a..955b384ed727 100644
--- a/nixpkgs/pkgs/development/python-modules/pontos/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pontos/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "pontos";
-  version = "21.10.2";
+  version = "21.11.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "greenbone";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-RSv0s8Qk5E1CJsmeT7ESIMQ4llsFER8N0AOyEjGpdsQ=";
+    sha256 = "sha256-uP4M1ShhKsvqnUixc3JUJVpNQOwYn8Gm2uWVcXhFKLg=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/poppler-qt5/default.nix b/nixpkgs/pkgs/development/python-modules/poppler-qt5/default.nix
index 857f97162517..a2dfaf8e4837 100644
--- a/nixpkgs/pkgs/development/python-modules/poppler-qt5/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/poppler-qt5/default.nix
@@ -54,6 +54,6 @@ buildPythonPackage rec {
   meta = with lib; {
     homepage = "https://github.com/frescobaldi/python-poppler-qt5";
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ eduardosm ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/portend/default.nix b/nixpkgs/pkgs/development/python-modules/portend/default.nix
index d48f387400e4..52e46cec75a0 100644
--- a/nixpkgs/pkgs/development/python-modules/portend/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/portend/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "portend";
-  version = "2.7.1";
+  version = "2.7.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "986ed9a278e64a87b5b5f4c21e61c25bebdce9919a92238d9c14c37a7416482b";
+    sha256 = "3fbc0df9e4970b661e4d7386a91fc7bcf34ebeaf0333ce15d819d515a71ba8b2";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/potentials/default.nix b/nixpkgs/pkgs/development/python-modules/potentials/default.nix
new file mode 100644
index 000000000000..f3542c13972e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/potentials/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, bibtexparser
+, buildPythonPackage
+, cdcs
+, datamodeldict
+, fetchPypi
+, habanero
+, ipywidgets
+, lxml
+, matplotlib
+, numpy
+, pandas
+, pytestCheckHook
+, pythonOlder
+, requests
+, scipy
+, unidecode
+, xmltodict
+}:
+
+buildPythonPackage rec {
+  version = "0.3.2";
+  pname = "potentials";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-u++ClAAc96u7k8w756sFR4oCtIOgERQ7foklxWWPprY=";
+  };
+
+  propagatedBuildInputs = [
+    bibtexparser
+    cdcs
+    datamodeldict
+    habanero
+    ipywidgets
+    lxml
+    matplotlib
+    numpy
+    pandas
+    requests
+    scipy
+    unidecode
+    xmltodict
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "potentials"
+  ];
+
+  meta = with lib; {
+    description = "Python API database tools for accessing the NIST Interatomic Potentials Repository";
+    homepage = "https://github.com/usnistgov/potentials";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/prance/default.nix b/nixpkgs/pkgs/development/python-modules/prance/default.nix
index 105fa9e180b7..cbc931d5c59e 100644
--- a/nixpkgs/pkgs/development/python-modules/prance/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/prance/default.nix
@@ -3,7 +3,7 @@
 , fetchFromGitHub
 , chardet
 , requests
-, ruamel_yaml
+, ruamel-yaml
 , six
 , semver
 , pytestCheckHook
@@ -25,7 +25,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     chardet
     requests
-    ruamel_yaml
+    ruamel-yaml
     six
     semver
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/praw/6.3.nix b/nixpkgs/pkgs/development/python-modules/praw/6.3.nix
deleted file mode 100644
index 13ecab806c45..000000000000
--- a/nixpkgs/pkgs/development/python-modules/praw/6.3.nix
+++ /dev/null
@@ -1,53 +0,0 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, betamax
-, betamax-serializers
-, betamax-matchers
-, mock
-, six
-, pytest-runner
-, prawcore
-, pytest
-, requests-toolbelt
-, update_checker
-, websocket-client
-}:
-
-buildPythonPackage rec {
-  pname = "praw";
-  version = "6.3.1";
-
-  src = fetchFromGitHub {
-    owner = "praw-dev";
-    repo = "praw";
-    rev = "v${version}";
-    sha256 = "0by89aw7m803dvjcc33m9390msjm6v5v8g3k8ink9gfm421lw8ky";
-  };
-
-  nativeBuildInputs = [
-    pytest-runner
-  ];
-
-  propagatedBuildInputs = [
-    mock
-    prawcore
-    update_checker
-    websocket-client
-  ];
-
-  checkInputs = [
-    betamax
-    betamax-serializers
-    betamax-matchers
-    mock
-    pytest
-    requests-toolbelt
-    six
-  ];
-
-  meta = with lib; {
-    description = "Python Reddit API wrapper";
-    homepage = "https://praw.readthedocs.org/";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/praw/default.nix b/nixpkgs/pkgs/development/python-modules/praw/default.nix
index 1196a6575da8..ddef2dcc1c1e 100644
--- a/nixpkgs/pkgs/development/python-modules/praw/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/praw/default.nix
@@ -1,12 +1,13 @@
 { lib
-, buildPythonPackage
-, fetchFromGitHub
 , betamax
-, betamax-serializers
 , betamax-matchers
+, betamax-serializers
+, buildPythonPackage
+, fetchFromGitHub
 , mock
 , prawcore
 , pytestCheckHook
+, pythonOlder
 , requests-toolbelt
 , update_checker
 , websocket-client
@@ -14,13 +15,16 @@
 
 buildPythonPackage rec {
   pname = "praw";
-  version = "7.4.0";
+  version = "7.5.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "praw-dev";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1wcr59k1bncwfza5k8mllaxz8fwfyqbwgm5xp908w2449i71wl7r";
+    sha256 = "sha256-xcITJ349ek9Y0HvJwzKJ7xDUV74w2v3yTBaj5n8YJ58=";
   };
 
   propagatedBuildInputs = [
@@ -38,7 +42,9 @@ buildPythonPackage rec {
     requests-toolbelt
   ];
 
-  pythonImportsCheck = [ "praw" ];
+  pythonImportsCheck = [
+    "praw"
+  ];
 
   meta = with lib; {
     description = "Python Reddit API wrapper";
diff --git a/nixpkgs/pkgs/development/python-modules/pre-commit-hooks/default.nix b/nixpkgs/pkgs/development/python-modules/pre-commit-hooks/default.nix
index 212fdf6a721a..eae35b5bac6d 100644
--- a/nixpkgs/pkgs/development/python-modules/pre-commit-hooks/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pre-commit-hooks/default.nix
@@ -1,27 +1,30 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fetchFromGitHub
 , git
-, pythonOlder
 , pytestCheckHook
-, ruamel_yaml
+, pythonOlder
+, ruamel-yaml
 , toml
 }:
 
 buildPythonPackage rec {
   pname = "pre-commit-hooks";
-  version = "4.0.1";
+  version = "4.1.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "pre-commit";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-Rg2I79r0Pp3AUgT6mD+kEdm+5CEGgdmFn6G3xcU6fnk=";
+    sha256 = "sha256-nxJp7LkCUkJj77RCeWedBusue3x0lZYatSidbueZqfo=";
   };
 
   propagatedBuildInputs = [
-    ruamel_yaml
+    ruamel-yaml
     toml
   ];
 
@@ -30,6 +33,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  # Note: this is not likely to ever work on Darwin
+  # https://github.com/pre-commit/pre-commit-hooks/pull/655
+  doCheck = !stdenv.isDarwin;
+
   # the tests require a functional git installation which requires a valid HOME
   # directory.
   preCheck = ''
@@ -37,9 +44,12 @@ buildPythonPackage rec {
 
     git config --global user.name "Nix Builder"
     git config --global user.email "nix-builder@nixos.org"
+    git init .
   '';
 
-  pythonImportsCheck = [ "pre_commit_hooks" ];
+  pythonImportsCheck = [
+    "pre_commit_hooks"
+  ];
 
   meta = with lib; {
     description = "Some out-of-the-box hooks for pre-commit";
diff --git a/nixpkgs/pkgs/development/python-modules/pre-commit/default.nix b/nixpkgs/pkgs/development/python-modules/pre-commit/default.nix
deleted file mode 100644
index 7739c33f7ca2..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pre-commit/default.nix
+++ /dev/null
@@ -1,66 +0,0 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, aspy-yaml
-, cached-property
-, cfgv
-, identify
-, importlib-metadata
-, importlib-resources
-, nodeenv
-, python
-, six
-, toml
-, virtualenv
-}:
-
-buildPythonPackage rec {
-  pname = "pre-commit";
-  version = "2.15.0";
-  disabled = pythonOlder "3.6";
-
-  src = fetchPypi {
-    inherit version;
-    pname = "pre_commit";
-    sha256 = "sha256-PCWt1429+2ooplF4DVwxGsQN0X8WDrOVSgxZ2kClBac=";
-  };
-
-  patches = [
-    ./hook-tmpl-use-the-hardcoded-path-to-pre-commit.patch
-    ./languages-use-the-hardcoded-path-to-python-binaries.patch
-  ];
-
-  propagatedBuildInputs = [
-    aspy-yaml
-    cached-property
-    cfgv
-    identify
-    nodeenv
-    six
-    toml
-    virtualenv
-  ] ++ lib.optional (pythonOlder "3.8") importlib-metadata
-    ++ lib.optional (pythonOlder "3.7") importlib-resources;
-
-  # slow and impure
-  doCheck = false;
-
-  preFixup = ''
-    substituteInPlace $out/${python.sitePackages}/pre_commit/resources/hook-tmpl \
-      --subst-var-by pre-commit $out
-    substituteInPlace $out/${python.sitePackages}/pre_commit/languages/python.py \
-      --subst-var-by virtualenv ${virtualenv}
-    substituteInPlace $out/${python.sitePackages}/pre_commit/languages/node.py \
-      --subst-var-by nodeenv ${nodeenv}
-  '';
-
-  pythonImportsCheck = [ "pre_commit" ];
-
-  meta = with lib; {
-    description = "A framework for managing and maintaining multi-language pre-commit hooks";
-    homepage = "https://pre-commit.com/";
-    license = licenses.mit;
-    maintainers = with maintainers; [ borisbabic ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pre-commit/hook-tmpl-use-the-hardcoded-path-to-pre-commit.patch b/nixpkgs/pkgs/development/python-modules/pre-commit/hook-tmpl-use-the-hardcoded-path-to-pre-commit.patch
deleted file mode 100644
index 4c1b6421e090..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pre-commit/hook-tmpl-use-the-hardcoded-path-to-pre-commit.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/pre_commit/resources/hook-tmpl b/pre_commit/resources/hook-tmpl
-index 299144e..6d12543 100755
---- a/pre_commit/resources/hook-tmpl
-+++ b/pre_commit/resources/hook-tmpl
-@@ -25,8 +25,8 @@ ARGS.append('--')
- ARGS.extend(sys.argv[1:])
-
- DNE = '`pre-commit` not found.  Did you forget to activate your virtualenv?'
--if os.access(INSTALL_PYTHON, os.X_OK):
--    CMD = [INSTALL_PYTHON, '-mpre_commit']
-+if os.access('@pre-commit@/bin/pre-commit', os.X_OK):
-+    CMD = ['@pre-commit@/bin/pre-commit']
- elif which('pre-commit'):
-     CMD = ['pre-commit']
- else:
diff --git a/nixpkgs/pkgs/development/python-modules/pre-commit/languages-use-the-hardcoded-path-to-python-binaries.patch b/nixpkgs/pkgs/development/python-modules/pre-commit/languages-use-the-hardcoded-path-to-python-binaries.patch
deleted file mode 100644
index 6d274aae3c07..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pre-commit/languages-use-the-hardcoded-path-to-python-binaries.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff --git a/pre_commit/languages/node.py b/pre_commit/languages/node.py
-index 26f4919..4885ec1 100644
---- a/pre_commit/languages/node.py
-+++ b/pre_commit/languages/node.py
-@@ -82,7 +82,7 @@ def install_environment(
-         envdir = fr'\\?\{os.path.normpath(envdir)}'
-     with clean_path_on_failure(envdir):
-         cmd = [
--            sys.executable, '-mnodeenv', '--prebuilt', '--clean-src', envdir,
-+            '@nodeenv@/bin/nodeenv', '--prebuilt', '--clean-src', envdir,
-         ]
-         if version != C.DEFAULT:
-             cmd.extend(['-n', version])
-diff --git a/pre_commit/languages/python.py b/pre_commit/languages/python.py
-index 43b7280..f0f2338 100644
---- a/pre_commit/languages/python.py
-+++ b/pre_commit/languages/python.py
-@@ -192,7 +192,7 @@ def install_environment(
-         additional_dependencies: Sequence[str],
- ) -> None:
-     envdir = prefix.path(helpers.environment_dir(ENVIRONMENT_DIR, version))
--    venv_cmd = [sys.executable, '-mvirtualenv', envdir]
-+    venv_cmd = ['@virtualenv@/bin/virtualenv', envdir]
-     python = norm_version(version)
-     if python is not None:
-         venv_cmd.extend(('-p', python))
diff --git a/nixpkgs/pkgs/development/python-modules/precis-i18n/default.nix b/nixpkgs/pkgs/development/python-modules/precis-i18n/default.nix
index 3773a724e938..807e81df1a39 100644
--- a/nixpkgs/pkgs/development/python-modules/precis-i18n/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/precis-i18n/default.nix
@@ -2,7 +2,7 @@
 
 buildPythonPackage rec {
   pname = "precis-i18n";
-  version = "1.0.2";
+  version = "1.0.3";
 
   disabled = !isPy3k;
 
@@ -10,7 +10,7 @@ buildPythonPackage rec {
     owner = "byllyfish";
     repo = "precis_i18n";
     rev = "v${version}";
-    hash = "sha256:1r9pah1kgik6valf15ac7ybw0szr92cq84kwjvm6mq3z46j1pmkr";
+    hash = "sha256-pBmllX1RVdFnZsDSW7Hh5uVqK2d++kcp1NQLN/phXdU=";
   };
 
   meta = {
diff --git a/nixpkgs/pkgs/development/python-modules/preshed/default.nix b/nixpkgs/pkgs/development/python-modules/preshed/default.nix
index a945dcf8f4e7..e0188ff1a676 100644
--- a/nixpkgs/pkgs/development/python-modules/preshed/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/preshed/default.nix
@@ -9,11 +9,11 @@
 }:
 buildPythonPackage rec {
   pname = "preshed";
-  version = "3.0.5";
+  version = "3.0.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c6d3dba39ed5059aaf99767017b9568c75b2d0780c3481e204b1daecde00360e";
+    sha256 = "fb3b7588a3a0f2f2f1bf3fe403361b2b031212b73a37025aea1df7215af3772a";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/prettytable/default.nix b/nixpkgs/pkgs/development/python-modules/prettytable/default.nix
index 5b3253b31b39..85aaa1e656d8 100644
--- a/nixpkgs/pkgs/development/python-modules/prettytable/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/prettytable/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "prettytable";
-  version = "2.2.0";
+  version = "2.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bd81678c108e6c73d4f1e47cd4283de301faaa6ff6220bcd1d4022038c56b416";
+    sha256 = "18e56447f636b447096977d468849c1e2d3cfa0af8e7b5acfcf83a64790c0aca";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/nixpkgs/pkgs/development/python-modules/progressbar231/default.nix b/nixpkgs/pkgs/development/python-modules/progressbar231/default.nix
deleted file mode 100644
index d421efde8aa1..000000000000
--- a/nixpkgs/pkgs/development/python-modules/progressbar231/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k }:
-
-buildPythonPackage rec {
-  pname = "progressbar231";
-  version = "2.3.1";
-
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0j0ifxk87xz3wkyacxaiqygghn27wwz6y5pj9k8j2yq7n33fbdam";
-  };
-
-  # no tests implemented
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://pypi.python.org/pypi/progressbar231";
-    description = "Text progressbar library for python";
-    license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ twey ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/prometheus-client/default.nix b/nixpkgs/pkgs/development/python-modules/prometheus-client/default.nix
index 9a01769695ac..7af4e2b02faa 100644
--- a/nixpkgs/pkgs/development/python-modules/prometheus-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/prometheus-client/default.nix
@@ -2,28 +2,35 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "prometheus-client";
-  version = "0.11.0";
+  version = "0.12.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "prometheus";
     repo = "client_python";
     rev = "v${version}";
-    sha256 = "14swmy4dgpk6cyjsm2advgc2c8api7xaca1sl7swznblh5fyzgzg";
+    sha256 = "1a0kllal5vkkdv325k0mx1mha2l9808mcz4dqx6qrgfskz8c2xjl";
   };
 
   checkInputs = [
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "prometheus_client" ];
+  pythonImportsCheck = [
+    "prometheus_client"
+  ];
 
   meta = with lib; {
     description = "Prometheus instrumentation library for Python applications";
     homepage = "https://github.com/prometheus/client_python";
     license = licenses.asl20;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/prompt-toolkit/default.nix b/nixpkgs/pkgs/development/python-modules/prompt-toolkit/default.nix
index 9aed0211a956..ae67d3d556dc 100644
--- a/nixpkgs/pkgs/development/python-modules/prompt-toolkit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/prompt-toolkit/default.nix
@@ -2,28 +2,39 @@
 , buildPythonPackage
 , fetchPypi
 , pytestCheckHook
-, six
+, pythonOlder
 , wcwidth
 }:
 
 buildPythonPackage rec {
   pname = "prompt-toolkit";
-  version = "3.0.19";
+  version = "3.0.22";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     pname = "prompt_toolkit";
     inherit version;
-    sha256 = "08360ee3a3148bdb5163621709ee322ec34fc4375099afa4bbf751e9b7b7fa4f";
+    sha256 = "sha256-RJ8zPdEgvQH10paozhRSEUujpx+ucojS8K4skYdk+nI=";
   };
 
-  propagatedBuildInputs = [ six wcwidth ];
+  propagatedBuildInputs = [
+    wcwidth
+  ];
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
   disabledTests = [
     "test_pathcompleter_can_expanduser"
   ];
 
+  pythonImportsCheck = [
+    "prompt_toolkit"
+  ];
+
   meta = with lib; {
     description = "Python library for building powerful interactive command lines";
     longDescription = ''
@@ -33,7 +44,7 @@ buildPythonPackage rec {
       with a nice interactive Python shell (called ptpython) built on top.
     '';
     homepage = "https://github.com/jonathanslenders/python-prompt-toolkit";
-    maintainers = with maintainers; [ ];
     license = licenses.bsd3;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/proto-plus/default.nix b/nixpkgs/pkgs/development/python-modules/proto-plus/default.nix
index e623840f1c65..dd2494729efd 100644
--- a/nixpkgs/pkgs/development/python-modules/proto-plus/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/proto-plus/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "proto-plus";
-  version = "1.19.2";
+  version = "1.19.8";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-ylMLBxjGJbpj8VGrP83INrWTQ9FJt9/RXsLc6zhEwi0=";
+    sha256 = "bdf45f0e0be71510eb2ec9db4da78afde7b5fb8b0a507a36340a9b6ce8e48e58";
   };
 
   propagatedBuildInputs = [ protobuf ];
diff --git a/nixpkgs/pkgs/development/python-modules/protobuf/default.nix b/nixpkgs/pkgs/development/python-modules/protobuf/default.nix
index e3e66294a8f5..30e9fbf9ea75 100644
--- a/nixpkgs/pkgs/development/python-modules/protobuf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/protobuf/default.nix
@@ -8,7 +8,6 @@
 , google-apputils ? null
 , six
 , pyext
-, libcxx
 , isPy27
 , disabled
 , doCheck ? true
@@ -19,8 +18,6 @@ buildPythonPackage {
   inherit disabled;
   doCheck = doCheck && !isPy27; # setuptools>=41.4 no longer collects correctly on python2
 
-  outputs = [ "out" "dev" ];
-
   propagatedBuildInputs = [ six ] ++ lib.optionals isPy27 [ google-apputils ];
   propagatedNativeBuildInputs = [ buildPackages.protobuf ]; # For protoc.
   nativeBuildInputs = [ pyext ] ++ lib.optionals isPy27 [ google-apputils ];
@@ -42,32 +39,20 @@ buildPythonPackage {
     cd python
   '';
 
-  preConfigure = lib.optionalString (lib.versionAtLeast protobuf.version "2.6.0") ''
-    export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp
-    export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION_VERSION=2
-  '';
-
-  preBuild = ''
-    # Workaround for https://github.com/google/protobuf/issues/2895
-    ${python.pythonForBuild.interpreter} setup.py build
-  '' + lib.optionalString (lib.versionAtLeast protobuf.version "2.6.0") ''
-    ${python.pythonForBuild.interpreter} setup.py build_ext --cpp_implementation
-  '';
-
-  installFlags = lib.optional (lib.versionAtLeast protobuf.version "2.6.0")
-    "--install-option='--cpp_implementation'";
+  setupPyGlobalFlags = lib.optional (lib.versionAtLeast protobuf.version "2.6.0")
+    "--cpp_implementation";
 
-  # the _message.so isn't installed, so we'll do that manually.
-  # if someone can figure out a less hacky way to get the _message.so to
-  # install, please do replace this.
-  postInstall = lib.optionalString (lib.versionAtLeast protobuf.version "2.6.0") ''
-    cp -v $(find build -name "_message*") $out/${python.sitePackages}/google/protobuf/pyext
-  '';
+  pythonImportsCheck = [
+    "google.protobuf"
+  ] ++ lib.optionals (lib.versionAtLeast protobuf.version "2.6.0") [
+    "google.protobuf.internal._api_implementation" # Verify that --cpp_implementation worked
+  ];
 
   meta = with lib; {
     description = "Protocol Buffers are Google's data interchange format";
     homepage = "https://developers.google.com/protocol-buffers/";
     license = licenses.bsd3;
+    maintainers = with maintainers; [ knedlsepp ];
   };
 
   passthru.protobuf = protobuf;
diff --git a/nixpkgs/pkgs/development/python-modules/proton-client/default.nix b/nixpkgs/pkgs/development/python-modules/proton-client/default.nix
new file mode 100644
index 000000000000..c5560b3ef97c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/proton-client/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, bcrypt
+, pyopenssl
+, python-gnupg
+, requests
+, openssl
+}:
+
+buildPythonPackage rec {
+  pname = "proton-client";
+  version = "0.7.0";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "ProtonMail";
+    repo = "proton-python-client";
+    rev = version;
+    sha256 = "sha256-98tEL3DUYtx27JcI6pPFS2iDJXS8K3yyvCU9UVrg1EM=";
+  };
+
+  propagatedBuildInputs = [
+    bcrypt
+    pyopenssl
+    python-gnupg
+    requests
+  ];
+
+  buildInputs = [ openssl ];
+
+  # This patch is supposed to indicate where to load OpenSSL library,
+  # but it is not working as intended.
+  #patchPhase = ''
+  #  substituteInPlace proton/srp/_ctsrp.py --replace \
+  #    "ctypes.cdll.LoadLibrary('libssl.so.10')" "'${openssl.out}/lib/libssl.so'"
+  #'';
+  # Regarding the issue above, I'm disabling tests for now
+  doCheck = false;
+
+  pythonImportsCheck = [ "proton" ];
+
+  meta = with lib; {
+    description = "Python Proton client module";
+    homepage = "https://github.com/ProtonMail/proton-python-client";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ wolfangaukang ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/protonvpn-nm-lib/default.nix b/nixpkgs/pkgs/development/python-modules/protonvpn-nm-lib/default.nix
new file mode 100644
index 000000000000..3a5a7695c8e6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/protonvpn-nm-lib/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, distro
+, jinja2
+, keyring
+, proton-client
+, pygobject3
+, pyxdg
+, systemd
+}:
+
+buildPythonPackage rec {
+  pname = "protonvpn-nm-lib";
+  version = "3.5.0";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "ProtonVPN";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-E75toza++l5UFdOLGgolH8pL5xvoUkLE7u+8L5RDFbI=";
+  };
+
+  propagatedBuildInputs = [
+    distro
+    jinja2
+    keyring
+    proton-client
+    pygobject3
+    pyxdg
+    systemd
+  ];
+
+  # Project has a dummy test.
+  doCheck = false;
+
+  pythonImportsCheck = [ "protonvpn_nm_lib" ];
+
+  meta = with lib; {
+    description = "ProtonVPN NetworkManager Library intended for every ProtonVPN service user";
+    homepage = "https://github.com/ProtonVPN/protonvpn-nm-lib";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ wolfangaukang ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/prov/default.nix b/nixpkgs/pkgs/development/python-modules/prov/default.nix
index 9844b018518b..101ea7e2e939 100644
--- a/nixpkgs/pkgs/development/python-modules/prov/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/prov/default.nix
@@ -28,8 +28,15 @@ buildPythonPackage rec {
     pydot
   ];
 
+  # Multiple tests are out-dated and failing
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "prov"
+  ];
+
   meta = with lib; {
-    description = "A Python library for W3C Provenance Data Model (PROV)";
+    description = "Python library for W3C Provenance Data Model (PROV)";
     homepage = "https://github.com/trungdong/prov";
     license = licenses.mit;
     maintainers = with maintainers; [ ashgillman ];
diff --git a/nixpkgs/pkgs/development/python-modules/prox-tv/default.nix b/nixpkgs/pkgs/development/python-modules/prox-tv/default.nix
index 1cc2ab89360f..1af942b92675 100644
--- a/nixpkgs/pkgs/development/python-modules/prox-tv/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/prox-tv/default.nix
@@ -28,6 +28,8 @@ buildPythonPackage {
     cffi
   ];
 
+  propagatedNativeBuildInputs = [ cffi ];
+
   buildInputs = [ blas lapack ];
 
   enableParallelBuilding = true;
diff --git a/nixpkgs/pkgs/development/python-modules/proxy-py/default.nix b/nixpkgs/pkgs/development/python-modules/proxy-py/default.nix
new file mode 100644
index 000000000000..4bf07b1375eb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/proxy-py/default.nix
@@ -0,0 +1,63 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, openssl
+, paramiko
+, pytest-asyncio
+, pytest-mock
+, pytestCheckHook
+, pythonOlder
+, setuptools-scm
+, typing-extensions
+}:
+
+buildPythonPackage rec {
+  pname = "proxy-py";
+  version = "2.3.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "abhinavsingh";
+    repo = "proxy.py";
+    rev = "v${version}";
+    sha256 = "sha256-qqwb3t8/xicDGfO6l843qRwh0yUfthnOIhgNeKIbEO4=";
+  };
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    paramiko
+    typing-extensions
+  ];
+
+  checkInputs = [
+    openssl
+    pytest-asyncio
+    pytest-mock
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    export HOME=$(mktemp -d);
+  '';
+
+  postPatch = ''
+    substituteInPlace requirements.txt \
+      --replace "typing-extensions==3.7.4.3" "typing-extensions"
+  '';
+
+  pythonImportsCheck = [
+    "proxy"
+  ];
+
+  meta = with lib; {
+    description = "Python proxy framework";
+    homepage = "https://github.com/abhinavsingh/proxy.py";
+    license = with licenses; [ bsd3 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/proxy_tools/default.nix b/nixpkgs/pkgs/development/python-modules/proxy_tools/default.nix
new file mode 100644
index 000000000000..e4596956dda8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/proxy_tools/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "proxy_tools";
+  version = "0.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-zLN1H1KcBH4tilhEDYayBTA88P6BRveE0cvNlPCigBA=";
+  };
+
+  # no tests in pypi
+  doCheck = false;
+  pythonImportsCheck = [ "proxy_tools" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/jtushman/proxy_tools";
+    description = "Simple (hopefuly useful) Proxy (as in the GoF design pattern) implementation for Python";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ jojosch ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/psautohint/default.nix b/nixpkgs/pkgs/development/python-modules/psautohint/default.nix
index ff312cbff891..3004d5f7a9b9 100644
--- a/nixpkgs/pkgs/development/python-modules/psautohint/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/psautohint/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "psautohint";
-  version = "2.3.0";
+  version = "2.3.1";
 
   disabled = pythonOlder "3.6";
 
@@ -15,7 +15,7 @@ buildPythonPackage rec {
     owner = "adobe-type-tools";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1y7mqc2myn1gfzg4h018f8xza0q535shnqg6snnaqynz20i8jcfh";
+    sha256 = "1knh428af0lvzijvd72i30jcvx9n6ga0hai69kxg8386jdpmmvkg";
     fetchSubmodules = true; # data dir for tests
   };
 
diff --git a/nixpkgs/pkgs/development/python-modules/psycopg2/default.nix b/nixpkgs/pkgs/development/python-modules/psycopg2/default.nix
index 1af8fd38bad8..34660a84cd60 100644
--- a/nixpkgs/pkgs/development/python-modules/psycopg2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/psycopg2/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "psycopg2";
-  version = "2.9.1";
+  version = "2.9.2";
 
   # Extension modules don't work well with PyPy. Use psycopg2cffi instead.
   # c.f. https://github.com/NixOS/nixpkgs/pull/104151#issuecomment-729750892
@@ -18,7 +18,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0z0v2d5gpgy0wf2ypqxv955c9k44yszd7r20km5s79yhy6k06lyy";
+    sha256 = "a84da9fa891848e0270e8e04dcca073bc9046441eeb47069f5c0e36783debbea";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/psygnal/default.nix b/nixpkgs/pkgs/development/python-modules/psygnal/default.nix
new file mode 100644
index 000000000000..6ac20798e0c0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/psygnal/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, wheel
+, setuptools
+, setuptools-scm
+, pytestCheckHook
+, pytest-mypy-plugins
+, pytest-cov
+, pytest
+, mypy
+, typing-extensions
+}: buildPythonPackage rec
+{
+  pname = "psygnal";
+  version = "0.2.0";
+  src = fetchFromGitHub {
+    owner = "tlambert03";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-SiG2ywNEw3aNrRXyEMFTnvHKtKowO8yqoCaNI8PT4/Y=";
+  };
+  buildInputs = [ setuptools-scm ];
+  propagatedBuildInputs = [ typing-extensions ];
+  checkInputs = [ pytestCheckHook pytest-cov pytest-mypy-plugins ];
+  doCheck = false;  # mypy checks are failing
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  meta = with lib; {
+    description = "Pure python implementation of Qt Signals";
+    homepage = "https://github.com/tlambert03/psygnal";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ SomeoneSerge ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/publicsuffix/default.nix b/nixpkgs/pkgs/development/python-modules/publicsuffix/default.nix
index 997bc31c8656..3f86abf0ea14 100644
--- a/nixpkgs/pkgs/development/python-modules/publicsuffix/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/publicsuffix/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k }:
+{ lib, buildPythonPackage, fetchPypi }:
 
 buildPythonPackage rec {
   pname = "publicsuffix";
diff --git a/nixpkgs/pkgs/development/python-modules/pubnub/default.nix b/nixpkgs/pkgs/development/python-modules/pubnub/default.nix
index 24ac0e37ca7e..40a4bf497f46 100644
--- a/nixpkgs/pkgs/development/python-modules/pubnub/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pubnub/default.nix
@@ -13,13 +13,13 @@
 
 buildPythonPackage rec {
   pname = "pubnub";
-  version = "5.4.0";
+  version = "5.5.0";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = "python";
     rev = "v${version}";
-    sha256 = "sha256-FyDsTqDQTI/Xxu4Sl4eHqwmgwN+ip+8WKGJs/h/kl2Y=";
+    sha256 = "133sis24jd40yq4sgp8lmg2kac5wiiccisjpkhm50rb9wdbpn6kh";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pudb/default.nix b/nixpkgs/pkgs/development/python-modules/pudb/default.nix
index 6df85ca5f089..81e1627324ad 100644
--- a/nixpkgs/pkgs/development/python-modules/pudb/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pudb/default.nix
@@ -1,29 +1,55 @@
 { lib
 , buildPythonPackage
+, dataclasses
+, isPy3k
 , fetchPypi
+, jedi
 , pygments
 , urwid
-, isPy3k
+, urwid-readline
+, pytest-mock
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pudb";
-  version = "2021.1";
+  version = "2021.2.2";
+  format = "setuptools";
+
+  disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "309ee82b45a0ffca0bc4c7f521fd3e357589c764f339bdf9dcabb7ad40692d6e";
+    sha256 = "82a524ab4b89d2c701b089071ccc6afa9c8a838504e3d68eb33faa8a8abbe4cb";
   };
 
-  propagatedBuildInputs = [ pygments urwid ];
+  propagatedBuildInputs = [
+    jedi
+    pygments
+    urwid
+    urwid-readline
+  ] ++ lib.optionals (pythonOlder "3.7") [
+    dataclasses
+  ];
 
-  # Tests fail on python 3 due to writes to the read-only home directory
-  doCheck = !isPy3k;
+  checkInputs = [
+    pytest-mock
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    export HOME=$TMPDIR
+  '';
+
+  pythonImportsCheck = [
+    "pudb"
+  ];
 
   meta = with lib; {
     description = "A full-screen, console-based Python debugger";
+    homepage = "https://github.com/inducer/pudb";
     license = licenses.mit;
-    platforms = platforms.all;
+    maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pulp/default.nix b/nixpkgs/pkgs/development/python-modules/pulp/default.nix
index 34cea0a22237..65a179f59d6a 100644
--- a/nixpkgs/pkgs/development/python-modules/pulp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pulp/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "PuLP";
-  version = "2.5.1";
+  version = "2.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "27c2a87a98ea0e9a08c7c46e6df47d6d4e753ad9991fea2901892425d89c99a6";
+    sha256 = "4b4f7e1e954453e1b233720be23aea2f10ff068a835ac10c090a93d8e2eb2e8d";
   };
 
   propagatedBuildInputs = [ pyparsing amply ];
diff --git a/nixpkgs/pkgs/development/python-modules/pur/default.nix b/nixpkgs/pkgs/development/python-modules/pur/default.nix
deleted file mode 100644
index d2bc7d5824dc..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pur/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, pytestCheckHook
-}:
-
-buildPythonPackage rec {
-  pname = "pur";
-  version = "5.4.1";
-
-  src = fetchFromGitHub {
-    owner = "alanhamlett";
-    repo = "pip-update-requirements";
-    rev = version;
-    sha256 = "sha256-a2wViLJW+UXgHcURxr4irFVkH8STH84AVcwQIkvH+Fg=";
-  };
-
-  propagatedBuildInputs = [
-    click
-  ];
-
-  checkInputs = [
-    pytestCheckHook
-  ];
-
-  pythonImportsCheck = [ "pur" ];
-
-  meta = with lib; {
-    description = "Python library for update and track the requirements";
-    homepage = "https://github.com/alanhamlett/pip-update-requirements";
-    license = with licenses; [ bsd2 ];
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pvo/default.nix b/nixpkgs/pkgs/development/python-modules/pvo/default.nix
new file mode 100644
index 000000000000..55802290c15a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pvo/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, aiohttp
+, aresponses
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pydantic
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, yarl
+}:
+
+buildPythonPackage rec {
+  pname = "pvo";
+  version = "0.2.0";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "frenck";
+    repo = "python-pvoutput";
+    rev = "v${version}";
+    sha256 = "sha256-liV5Ae3Bz6MZT3KQ/1aNt6P4Wsg4SOfAMQKI0Qpxvao=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    pydantic
+    yarl
+  ];
+
+  checkInputs = [
+    aresponses
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    # Upstream doesn't set a version for the pyproject.toml
+    substituteInPlace pyproject.toml \
+      --replace "0.0.0" "${version}" \
+      --replace "--cov" ""
+  '';
+
+  pythonImportsCheck = [
+    "pvo"
+  ];
+
+  meta = with lib; {
+    description = "Python module to interact with the PVOutput API";
+    homepage = "https://github.com/frenck/python-pvoutput";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pwntools/default.nix b/nixpkgs/pkgs/development/python-modules/pwntools/default.nix
index d0ea1b198490..cfcbf14703b0 100644
--- a/nixpkgs/pkgs/development/python-modules/pwntools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pwntools/default.nix
@@ -6,7 +6,7 @@
 , packaging
 , pysocks
 , pygments
-, ROPGadget
+, ropgadget
 , capstone
 , colored-traceback
 , paramiko
@@ -27,12 +27,12 @@ let
   debuggerName = lib.strings.getName debugger;
 in
 buildPythonPackage rec {
-  version = "4.6.0";
+  version = "4.7.0";
   pname = "pwntools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-FWnmE+XgbtRztgo/xxN2xK1bz1YhbqdywlrQIANHAww=";
+    sha256 = "sha256-dDiOKGdeehkp92PfWhzsaj1YlkEEm2z0drscVuxQqI4=";
   };
 
   postPatch = ''
@@ -55,7 +55,7 @@ buildPythonPackage rec {
     packaging
     pysocks
     pygments
-    ROPGadget
+    ropgadget
     capstone
     colored-traceback
     paramiko
diff --git a/nixpkgs/pkgs/development/python-modules/pxml/default.nix b/nixpkgs/pkgs/development/python-modules/pxml/default.nix
index 21dc2f4abc4d..efa9e81b8de9 100644
--- a/nixpkgs/pkgs/development/python-modules/pxml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pxml/default.nix
@@ -1,6 +1,5 @@
 { lib
 , pythonAtLeast
-, isPy27
 , buildPythonPackage
 , fetchPypi
 , blessings
diff --git a/nixpkgs/pkgs/development/python-modules/py-nightscout/default.nix b/nixpkgs/pkgs/development/python-modules/py-nightscout/default.nix
new file mode 100644
index 000000000000..e633e6ce81bf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/py-nightscout/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, aiohttp
+, aioresponses
+, buildPythonPackage
+, fetchFromGitHub
+, pytest-asyncio
+, pytestCheckHook
+, python-dateutil
+, pythonOlder
+, pytz
+}:
+
+buildPythonPackage rec {
+  pname = "py-nightscout";
+  version = "1.3.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "marciogranzotto";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "06i8vc7ykk5112y66cjixbrks46mdx3r0ygkmyah6gfgq1ddc39j";
+  };
+
+  propagatedBuildInputs = [
+    python-dateutil
+    pytz
+    aiohttp
+  ];
+
+  checkInputs = [
+    aioresponses
+    pytestCheckHook
+    pytest-asyncio
+  ];
+
+
+  pythonImportsCheck = [
+    "py_nightscout"
+  ];
+
+  meta = with lib; {
+    description = "Python library that provides an interface to Nightscout";
+    homepage = "https://github.com/marciogranzotto/py-nightscout";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/py-synologydsm-api/default.nix b/nixpkgs/pkgs/development/python-modules/py-synologydsm-api/default.nix
new file mode 100644
index 000000000000..e363cd412d66
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/py-synologydsm-api/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pytestCheckHook
+, requests
+, urllib3
+}:
+
+buildPythonPackage rec {
+  pname = "py-synologydsm-api";
+  version = "1.0.5";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "mib1185";
+    repo = "synologydsm-api";
+    rev = "v${version}";
+    sha256 = "sha256-mm5N2RKn2KP2dV7+dw0sNWlCDT5X/fRmH8POQqJIoZY=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    requests
+    urllib3
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "synology_dsm"
+  ];
+
+  meta = with lib; {
+    description = "Python API for Synology DSM";
+    homepage = "https://github.com/hacf-fr/synologydsm-api";
+    license = licenses.mit;
+    maintainers = with maintainers; [ uvnikita ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/py-zabbix/default.nix b/nixpkgs/pkgs/development/python-modules/py-zabbix/default.nix
new file mode 100644
index 000000000000..410068f45237
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/py-zabbix/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "py-zabbix";
+  version = "1.1.7";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "adubkov";
+    repo = "py-zabbix";
+    rev = version;
+    sha256 = "aPQc188pszfDQvNtsGYlRLHS5CG5VyqptSoe4/GJVvE=";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "pyzabbix"
+  ];
+
+  meta = with lib; {
+    description = "Python module to interact with Zabbix";
+    homepage = "https://github.com/adubkov/py-zabbix";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/py/default.nix b/nixpkgs/pkgs/development/python-modules/py/default.nix
index ce7abe4dc273..c1cf60ca4d77 100644
--- a/nixpkgs/pkgs/development/python-modules/py/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/py/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "py";
-  version = "1.10.0";
+  version = "1.11.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3";
+    sha256 = "51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719";
   };
 
   # Circular dependency on pytest
diff --git a/nixpkgs/pkgs/development/python-modules/py17track/default.nix b/nixpkgs/pkgs/development/python-modules/py17track/default.nix
index 2c7dc8e52eaf..b39d50dbfc7a 100644
--- a/nixpkgs/pkgs/development/python-modules/py17track/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/py17track/default.nix
@@ -14,15 +14,16 @@
 
 buildPythonPackage rec {
   pname = "py17track";
-  version = "3.3.0";
+  version = "2021.12.2";
   format = "pyproject";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "1rnq9ybzj2l3699mjyplc29mxla8fayh52x52cnsz21ixlfd9fky";
+    sha256 = "sha256-T0Jjdu6QC8rTqZwe4cdsBbs0hQXUY6CkrImCgYwWL9o=";
   };
 
   nativeBuildInputs = [
@@ -44,13 +45,18 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace ">=19.3,<21.0" ">=19.3,<22.0"
+      --replace 'attrs = ">=19.3,<21.0"' 'attrs = ">=19.3,<22.0"' \
+      --replace 'async-timeout = "^3.0.1"' 'async-timeout = ">=3.0.1,<5.0.0"'
   '';
 
-  # Ignore the examples directory as the files are prefixed with test_
-  disabledTestPaths = [ "examples/" ];
+  disabledTestPaths = [
+    # Ignore the examples directory as the files are prefixed with test_
+    "examples/"
+  ];
 
-  pythonImportsCheck = [ "py17track" ];
+  pythonImportsCheck = [
+    "py17track"
+  ];
 
   meta = with lib; {
     description = "Python library to track package info from 17track.com";
diff --git a/nixpkgs/pkgs/development/python-modules/py3exiv2/default.nix b/nixpkgs/pkgs/development/python-modules/py3exiv2/default.nix
index 59d0cdb7299f..ef056d296b2e 100644
--- a/nixpkgs/pkgs/development/python-modules/py3exiv2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/py3exiv2/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, isPy3k, fetchPypi, stdenv, exiv2, boost, libcxx, substituteAll, python }:
+{ lib, buildPythonPackage, isPy3k, fetchPypi, stdenv, exiv2, boost, libcxx }:
 
 buildPythonPackage rec {
   pname = "py3exiv2";
diff --git a/nixpkgs/pkgs/development/python-modules/py3status/default.nix b/nixpkgs/pkgs/development/python-modules/py3status/default.nix
index e027aaeb294b..160c5763995e 100644
--- a/nixpkgs/pkgs/development/python-modules/py3status/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/py3status/default.nix
@@ -24,11 +24,11 @@
 
 buildPythonPackage rec {
   pname = "py3status";
-  version = "3.39";
+  version = "3.40";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d2a11dde0cc82d0eb5e938fe624f223d852ed848c57299ff562827bc4557375f";
+    sha256 = "9eb6f721f94f28a17a8599ca2743a2bedd58c16cfe74e9817ffa948c13dbb79c";
   };
 
   doCheck = false;
diff --git a/nixpkgs/pkgs/development/python-modules/py4j/default.nix b/nixpkgs/pkgs/development/python-modules/py4j/default.nix
index 6ad9673b9755..cf24d21e17f5 100644
--- a/nixpkgs/pkgs/development/python-modules/py4j/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/py4j/default.nix
@@ -3,11 +3,11 @@
 buildPythonPackage rec {
   pname = "py4j";
 
-  version = "0.10.9.2";
+  version = "0.10.9.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "624f97c363b8dd84822bc666b12fa7f7d97824632b2ff3d852cc491359ce7615";
+    sha256 = "0d92844da4cb747155b9563c44fc322c9a1562b3ef0979ae692dbde732d784dd";
   };
 
   # No tests in archive
diff --git a/nixpkgs/pkgs/development/python-modules/pyTelegramBotAPI/default.nix b/nixpkgs/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
index 6d1dca6b699f..4c1723edd8ef 100644
--- a/nixpkgs/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pyTelegramBotAPI";
-  version = "4.1.1";
+  version = "4.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "cc8011ca05301653f2e5c2d02eadff0e882b611841a76f9e5b911994899df49e";
+    sha256 = "05f85dacbcf0bdf2459698bab4325f3a699d1c04bc61581627d76d075c3d5488";
   };
 
   propagatedBuildInputs = [ requests ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyads/default.nix b/nixpkgs/pkgs/development/python-modules/pyads/default.nix
index 232221365fa4..a22e85154261 100644
--- a/nixpkgs/pkgs/development/python-modules/pyads/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyads/default.nix
@@ -8,14 +8,16 @@
 
 buildPythonPackage rec {
   pname = "pyads";
-  version = "3.3.8";
-  disabled = pythonOlder "3.6";
+  version = "3.3.9";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "stlehmann";
     repo = pname;
     rev = version;
-    sha256 = "sha256-jhEVBndUOKM8rBX0LEqPTMLqbpizCiD7T+OCzbVgLM8=";
+    sha256 = "sha256-eNouFJQDgp56fgkA7wZKfosKWOKU6OvXRjFwjCMvZqI=";
   };
 
   buildInputs = [
@@ -31,7 +33,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "pyads" ];
+  pythonImportsCheck = [
+    "pyads"
+  ];
 
   meta = with lib; {
     description = "Python wrapper for TwinCAT ADS library";
diff --git a/nixpkgs/pkgs/development/python-modules/pyaftership/default.nix b/nixpkgs/pkgs/development/python-modules/pyaftership/default.nix
index 6253d9511183..c0b941e849d1 100644
--- a/nixpkgs/pkgs/development/python-modules/pyaftership/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyaftership/default.nix
@@ -1,9 +1,8 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, isPy3k
+, pythonOlder
 , aiohttp
-, async-timeout
 , aresponses
 , pytest-asyncio
 , pytestCheckHook
@@ -11,21 +10,38 @@
 
 buildPythonPackage rec {
   pname = "pyaftership";
-  version = "21.1.0";
+  version = "21.11.0";
+  format = "setuptools";
 
-  disabled = !isPy3k;
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "ludeeus";
     repo = pname;
     rev = version;
-    sha256 = "0jyzgwaijkp80whi58a0hgjzmnlczmd9vwn11z2m0j01kbdwznn5";
+    sha256 = "sha256-SN7fvI/+VHYn2eYQe5wp6lEZ73YeZbsiPjDiq/Ibk3Q=";
   };
 
-  propagatedBuildInputs = [ aiohttp async-timeout ];
+  propagatedBuildInputs = [
+    aiohttp
+  ];
 
-  checkInputs = [ pytestCheckHook aresponses pytest-asyncio ];
-  pythonImportsCheck = [ "pyaftership" ];
+  checkInputs = [
+    aresponses
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    # Upstream is releasing with the help of a CI to PyPI, GitHub releases
+    # are not in their focus
+    substituteInPlace setup.py \
+      --replace 'version="main",' 'version="${version}",'
+  '';
+
+  pythonImportsCheck = [
+    "pyaftership"
+  ];
 
   meta = with lib; {
     description = "Python wrapper package for the AfterShip API";
diff --git a/nixpkgs/pkgs/development/python-modules/pyahocorasick/default.nix b/nixpkgs/pkgs/development/python-modules/pyahocorasick/default.nix
index 87d1d0c9fc01..56e5636622b8 100644
--- a/nixpkgs/pkgs/development/python-modules/pyahocorasick/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyahocorasick/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, fetchpatch
 , pytestCheckHook
 }:
 
@@ -15,6 +16,14 @@ buildPythonPackage rec {
     sha256 = "13x3718if28l50474xrz1b9709kvnvdg3nzm6y8bh7mc9a4zyss5";
   };
 
+  patches = [
+    # Use proper temporary directory on Hydra
+    (fetchpatch {
+      url = "https://github.com/WojciechMula/pyahocorasick/commit/b6549e06f3cced7ffdf4d1b587cd7de12041f495.patch";
+      sha256 = "sha256-v3J/0aIPOnBhLlJ18r/l7O0MckqLOCtcmqIS9ZegaSI=";
+    })
+  ];
+
   checkInputs = [ pytestCheckHook ];
 
   pytestFlagsArray = [ "unittests.py" ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyairvisual/default.nix b/nixpkgs/pkgs/development/python-modules/pyairvisual/default.nix
index fadb3f58d509..c4db96bca759 100644
--- a/nixpkgs/pkgs/development/python-modules/pyairvisual/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyairvisual/default.nix
@@ -15,19 +15,21 @@
 
 buildPythonPackage rec {
   pname = "pyairvisual";
-  version = "5.0.9";
+  version = "2021.10.0";
   format = "pyproject";
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "1jfbwnipklpgxjgsgsx4j53anbqyrbgvj0wb84fvsm32jq9m8avf";
+    sha256 = "sha256-Wj+ReRTYsP/XMrr74XPHrkHYT0sXfqcW/shbG3zNuH0=";
   };
 
-  nativeBuildInputs = [ poetry-core ];
+  nativeBuildInputs = [
+    poetry-core
+  ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -43,9 +45,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTestPaths = [ "examples/" ];
+  disabledTestPaths = [
+    # Ignore the examples directory as the files are prefixed with test_.
+    "examples/"
+  ];
 
-  pythonImportsCheck = [ "pyairvisual" ];
+  pythonImportsCheck = [
+    "pyairvisual"
+  ];
 
   meta = with lib; {
     description = "Python library for interacting with AirVisual";
diff --git a/nixpkgs/pkgs/development/python-modules/pyamf/default.nix b/nixpkgs/pkgs/development/python-modules/pyamf/default.nix
deleted file mode 100644
index cebb1cc3f0ba..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pyamf/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ lib, fetchPypi, buildPythonPackage, isPy3k, defusedxml }:
-
-buildPythonPackage rec {
-  pname = "PyAMF";
-  version = "0.8.0";
-
-  # according to setup.py
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1r3lp9gkph48g9lijby5rs5daa3lhxs204r14zw4kvp3hf4xcm84";
-  };
-
-  propagatedBuildInputs = [ defusedxml ];
-
-  meta = with lib; {
-    description = "AMF (Action Message Format) support for Python";
-    homepage = "https://pypi.python.org/pypi/PyAMF";
-    license = licenses.mit;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pyaml/default.nix b/nixpkgs/pkgs/development/python-modules/pyaml/default.nix
index 8642c9affbdc..cbab9bacfb81 100644
--- a/nixpkgs/pkgs/development/python-modules/pyaml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyaml/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "pyaml";
-  version = "21.8.3";
+  version = "21.10.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-oWNtY8R2MooHIT0LcRG7Y1cPGrij7d9gUiYwJQwj2XU=";
+    sha256 = "c6519fee13bf06e3bb3f20cacdea8eba9140385a7c2546df5dbae4887f768383";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pyarrow/default.nix b/nixpkgs/pkgs/development/python-modules/pyarrow/default.nix
index e9510d9552ce..c47cdaa02b70 100644
--- a/nixpkgs/pkgs/development/python-modules/pyarrow/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyarrow/default.nix
@@ -1,6 +1,8 @@
-{ lib, buildPythonPackage, python, isPy3k, arrow-cpp, cmake, cython, hypothesis, numpy, pandas, pytestCheckHook, pytest-lazy-fixture, pkg-config, setuptools-scm, six }:
+{ lib, stdenv, buildPythonPackage, python, isPy3k, arrow-cpp, cmake, cython, hypothesis, numpy, pandas, pytestCheckHook, pytest-lazy-fixture, pkg-config, setuptools-scm, six }:
 
 let
+  zero_or_one = cond: if cond then 1 else 0;
+
   _arrow-cpp = arrow-cpp.override { python3 = python; };
 in
 
@@ -17,7 +19,11 @@ buildPythonPackage rec {
   checkInputs = [ hypothesis pandas pytestCheckHook pytest-lazy-fixture ];
 
   PYARROW_BUILD_TYPE = "release";
-  PYARROW_WITH_PARQUET = true;
+
+  PYARROW_WITH_DATASET = zero_or_one true;
+  PYARROW_WITH_FLIGHT = zero_or_one _arrow-cpp.enableFlight;
+  PYARROW_WITH_PARQUET = zero_or_one true;
+
   PYARROW_CMAKE_OPTIONS = [
     "-DCMAKE_INSTALL_RPATH=${ARROW_HOME}/lib"
 
@@ -25,9 +31,13 @@ buildPythonPackage rec {
     # ourselves
     "-DCMAKE_POLICY_DEFAULT_CMP0025=NEW"
   ];
+
   ARROW_HOME = _arrow-cpp;
   PARQUET_HOME = _arrow-cpp;
 
+  ARROW_TEST_DATA = lib.optionalString doCheck _arrow-cpp.ARROW_TEST_DATA;
+
+  doCheck = true;
   dontUseCmakeConfigure = true;
 
   preBuild = ''
@@ -44,6 +54,9 @@ buildPythonPackage rec {
     # Deselect a parquet dataset test because it erroneously fails to find the
     # pyarrow._dataset module.
     "--deselect=pyarrow/tests/parquet/test_dataset.py::test_parquet_dataset_deprecated_properties"
+  ] ++ lib.optionals stdenv.isDarwin [
+    # Requires loopback networking
+    "--deselect=pyarrow/tests/test_ipc.py::test_socket_"
   ];
 
   dontUseSetuptoolsCheck = true;
@@ -59,6 +72,6 @@ buildPythonPackage rec {
     homepage = "https://arrow.apache.org/";
     license = licenses.asl20;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ veprbl ];
+    maintainers = with maintainers; [ veprbl cpcloud ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pyathena/default.nix b/nixpkgs/pkgs/development/python-modules/pyathena/default.nix
index c7a8599a048a..a16e77308602 100644
--- a/nixpkgs/pkgs/development/python-modules/pyathena/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyathena/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, sqlalchemy
 , boto3
 , botocore
 , pandas
@@ -10,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "pyathena";
-  version = "2.3.0";
+  version = "2.3.2";
 
   src = fetchPypi {
     pname = "PyAthena";
     inherit version;
-    sha256 = "08fl653yayvqi991zvcai5ifcxwy9ip6xh0cr3lbimggjnjgwsl5";
+    sha256 = "20a473c52e76a211c427d2f711af0a04804a70fc036ab884780e42e0dc2025f7";
   };
 
   # Nearly all tests depend on a working AWS Athena instance,
diff --git a/nixpkgs/pkgs/development/python-modules/pyatmo/default.nix b/nixpkgs/pkgs/development/python-modules/pyatmo/default.nix
index bff5a9b6d14c..c039ff16b80e 100644
--- a/nixpkgs/pkgs/development/python-modules/pyatmo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyatmo/default.nix
@@ -16,7 +16,8 @@
 
 buildPythonPackage rec {
   pname = "pyatmo";
-  version = "6.1.0";
+  version = "6.2.0";
+  format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "jabesq";
     repo = "pyatmo";
     rev = "v${version}";
-    sha256 = "sha256-Iscnv3hfYa8QFiXMUN334Muo0oGqnnK11RPNxQJggG0=";
+    sha256 = "sha256-VBc2avJiIFQW1LYXQEvIZ/wZKMFJsCF9DDrxwL8dDnk=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
@@ -54,7 +55,9 @@ buildPythonPackage rec {
       --replace "requests~=2.24" "requests"
   '';
 
-  pythonImportsCheck = [ "pyatmo" ];
+  pythonImportsCheck = [
+    "pyatmo"
+  ];
 
   meta = with lib; {
     description = "Simple API to access Netatmo weather station data";
diff --git a/nixpkgs/pkgs/development/python-modules/pyatome/default.nix b/nixpkgs/pkgs/development/python-modules/pyatome/default.nix
new file mode 100644
index 000000000000..7db5b4fb15eb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyatome/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, requests
+, simplejson
+, fake-useragent
+}:
+
+buildPythonPackage rec {
+  pname = "pyatome";
+  version = "0.1.1";
+
+  src = fetchPypi {
+    pname = "pyAtome";
+    inherit version;
+    sha256 = "7282e7ec258c69d4ddf2a5754ff07680a1ac92f9bfb478d601fd9e944fccd834";
+  };
+
+  propagatedBuildInputs = [ requests simplejson fake-useragent ];
+
+  # no tests  in PyPI tarballs
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pyatome"
+  ];
+
+  meta = with lib; {
+    description = "Python module to get energy consumption data from Atome";
+    homepage = "https://github.com/baqs/pyAtome";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ uvnikita ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyatspi/default.nix b/nixpkgs/pkgs/development/python-modules/pyatspi/default.nix
index b566edef64d1..f839dc4df312 100644
--- a/nixpkgs/pkgs/development/python-modules/pyatspi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyatspi/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "pyatspi";
-  version = "2.38.1";
+  version = "2.38.2";
   format = "other";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0lc1p6p296c9q3lffi03v902jlsj34i7yyl3rcyaq94wwbljg7z4";
+    sha256 = "DnCJwLYwlhS1NiCDazRi1/kShOQ2/kkpuhYZqEHPEYU=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyatv/default.nix b/nixpkgs/pkgs/development/python-modules/pyatv/default.nix
index eaeda0ed3417..6a883bbff33f 100644
--- a/nixpkgs/pkgs/development/python-modules/pyatv/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyatv/default.nix
@@ -1,11 +1,11 @@
 { lib
 , buildPythonPackage
 , aiohttp
-, audio-metadata
 , bitarray
 , cryptography
 , deepdiff
 , fetchFromGitHub
+, mediafile
 , miniaudio
 , netifaces
 , protobuf
@@ -13,31 +13,30 @@
 , pytest-asyncio
 , pytest-timeout
 , pytestCheckHook
+, pythonOlder
 , srptools
 , zeroconf
 }:
 
 buildPythonPackage rec {
   pname = "pyatv";
-  version = "0.8.2";
+  version = "0.9.6";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "postlund";
     repo = pname;
     rev = "v${version}";
-    sha256 = "035cjm78xakvfi7k8zahjk0xr23p9my67d8jvq5bqrd506awrl0f";
+    sha256 = "0navm7a0k1679kj7nbkbyl7s2q0wq0xmcnizmnvp0arkd5xqmqv1";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "pytest-runner" ""
-  '';
-
   propagatedBuildInputs = [
     aiohttp
-    audio-metadata
     bitarray
     cryptography
+    mediafile
     miniaudio
     netifaces
     protobuf
@@ -53,9 +52,23 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "pytest-runner" ""
+    # Remove all version pinning
+    sed -i -e "s/==[0-9.]*//" requirements/requirements.txt
+  '';
+
+  disabledTestPaths = [
+    # Test doesn't work in the sandbox
+    "tests/protocols/companion/test_companion_auth.py"
+  ];
+
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [ "pyatv" ];
+  pythonImportsCheck = [
+    "pyatv"
+  ];
 
   meta = with lib; {
     description = "Python client library for the Apple TV";
diff --git a/nixpkgs/pkgs/development/python-modules/pyautogui/default.nix b/nixpkgs/pkgs/development/python-modules/pyautogui/default.nix
new file mode 100644
index 000000000000..08ab81ba93d3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyautogui/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, python3Packages
+, pkgs
+, fetchzip
+, mouseinfo
+, pygetwindow
+, pymsgbox
+, pyperclip
+, pyrect
+, pyscreeze
+, pytweening
+, tkinter
+, xlib
+, xvfb-run
+, scrot
+}:
+buildPythonPackage rec {
+  pname = "pyautogui";
+  version = "0.9.53";
+
+  src = fetchFromGitHub {
+    owner = "asweigart";
+    repo = "pyautogui";
+    rev = "5e4acb870f2e7ce0ea1927cc5188bc2f5ab7bbbc";
+    sha256 = "sha256-R9tcTqxUaqw63FLOGFRaO/Oz6kD7V6MPHdQ8A29NdXw=";
+  };
+
+  checkInputs = [ xvfb-run scrot ];
+  checkPhase = ''
+    xvfb-run python -c 'import pyautogui'
+    # The tests depend on some specific things that xvfb cant provide, like keyboard and mouse
+    # xvfb-run python -m unittest tests.test_pyautogui
+  '';
+
+  patches = [
+    # https://github.com/asweigart/pyautogui/issues/598
+    ./fix-locateOnWindow-and-xlib.patch
+  ];
+
+  propagatedBuildInputs = [
+    mouseinfo
+    pygetwindow
+    pymsgbox
+    xlib
+    tkinter
+    pyperclip
+    pyscreeze
+    pytweening
+  ];
+
+  meta = with lib; {
+    description = "PyAutoGUI lets Python control the mouse and keyboard, and other GUI automation tasks.";
+    homepage = "https://github.com/asweigart/pyautogui";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ lucasew ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyautogui/fix-locateOnWindow-and-xlib.patch b/nixpkgs/pkgs/development/python-modules/pyautogui/fix-locateOnWindow-and-xlib.patch
new file mode 100644
index 000000000000..ef0c02892238
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyautogui/fix-locateOnWindow-and-xlib.patch
@@ -0,0 +1,30 @@
+diff --git a/pyautogui/__init__.py b/pyautogui/__init__.py
+index ec7d097..443b146 100644
+--- a/pyautogui/__init__.py
++++ b/pyautogui/__init__.py
+@@ -216,9 +216,9 @@ try:
+ 
+     @raisePyAutoGUIImageNotFoundException
+     def locateOnWindow(*args, **kwargs):
+-        return pyscreeze.locateOnWindow(*args, **kwargs)
++        return pyscreeze.locateOnScreen(*args, **kwargs)
+ 
+-    locateOnWindow.__doc__ = pyscreeze.locateOnWindow.__doc__
++    locateOnWindow.__doc__ = pyscreeze.locateOnScreen.__doc__
+ 
+ 
+ except ImportError:
+diff --git a/setup.py b/setup.py
+index 196394d..6d90a88 100644
+--- a/setup.py
++++ b/setup.py
+@@ -29,8 +29,7 @@ setup(
+     test_suite='tests',
+     install_requires=['pyobjc-core;platform_system=="Darwin"',
+                       'pyobjc;platform_system=="Darwin"',
+-                      'python3-Xlib;platform_system=="Linux" and python_version>="3.0"',
+-                      'python-xlib;platform_system=="Linux" and python_version<"3.0"',
++                      'python-xlib;platform_system=="Linux"',
+                       'pymsgbox',
+                       'PyTweening>=1.0.1',
+                       'pyscreeze>=0.1.21',
diff --git a/nixpkgs/pkgs/development/python-modules/pybalboa/default.nix b/nixpkgs/pkgs/development/python-modules/pybalboa/default.nix
new file mode 100644
index 000000000000..3c290b843941
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pybalboa/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pybalboa";
+  version = "0.13";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "garbled1";
+    repo = pname;
+    rev = version;
+    sha256 = "0aw5jxpsvzyx05y1mg8d63lxx1i607yb6x19n9jil5wfis95m8pd";
+  };
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pybalboa"
+  ];
+
+  meta = with lib; {
+    description = " Python module to interface with a Balboa Spa";
+    homepage = "https://github.com/garbled1/pybalboa";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pybase64/default.nix b/nixpkgs/pkgs/development/python-modules/pybase64/default.nix
index 852f783337db..ea7458f13b66 100644
--- a/nixpkgs/pkgs/development/python-modules/pybase64/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pybase64/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "pybase64";
-  version = "1.2.0";
+  version = "1.2.1";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9e310fcf5cfa2cbf7d1d7eb503b6066bec785216bcd1d8c0a736f59d5ec21b0b";
+    sha256 = "d2016a3a487d3d4501d8281f61ee54c25efd65e37a4c7dce8011e0de7183c956";
   };
 
   checkInputs = [ pytestCheckHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/pybids/default.nix b/nixpkgs/pkgs/development/python-modules/pybids/default.nix
index daa879a58a0d..3ad29916575a 100644
--- a/nixpkgs/pkgs/development/python-modules/pybids/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pybids/default.nix
@@ -14,12 +14,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "0.13.2";
+  version = "0.14.0";
   pname = "pybids";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9692013af3b86b096b5423b88179c6c9b604baff5a6b6f89ba5f40429feb7a3e";
+    sha256 = "73c4d03aad333f2a7cb4405abe96f55a33cffa4b5a2d23fad6ac5767c45562ef";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pybind11/default.nix b/nixpkgs/pkgs/development/python-modules/pybind11/default.nix
index e6be3f063fef..d33d9ffc575d 100644
--- a/nixpkgs/pkgs/development/python-modules/pybind11/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pybind11/default.nix
@@ -3,6 +3,7 @@
 , buildPythonPackage
 , fetchFromGitHub
 , cmake
+, boost
 , eigen
 , python
 , catch
@@ -12,13 +13,13 @@
 
 buildPythonPackage rec {
   pname = "pybind11";
-  version = "2.7.1";
+  version = "2.8.1";
 
   src = fetchFromGitHub {
     owner = "pybind";
     repo = pname;
     rev = "v${version}";
-    sha256 = "13nq16pxz4vck7jn936ymhm0y0q82hd7kkw0ip7k85cx7wywzbql";
+    sha256 = "sha256-Gk4ZN/g6SRWFm0ALCvyald/9zq3wBd48mGdqdGCeGYI=";
   };
 
   nativeBuildInputs = [ cmake ];
@@ -26,7 +27,8 @@ buildPythonPackage rec {
   dontUseCmakeBuildDir = true;
 
   cmakeFlags = [
-    "-DEIGEN3_INCLUDE_DIR=${eigen}/include/eigen3"
+    "-DBoost_INCLUDE_DIR=${lib.getDev boost}/include"
+    "-DEIGEN3_INCLUDE_DIR=${lib.getDev eigen}/include/eigen3"
     "-DBUILD_TESTING=on"
   ] ++ lib.optionals (python.isPy3k && !stdenv.cc.isClang) [
     "-DPYBIND11_CXX_STANDARD=-std=c++17"
diff --git a/nixpkgs/pkgs/development/python-modules/pyblosxom/default.nix b/nixpkgs/pkgs/development/python-modules/pyblosxom/default.nix
deleted file mode 100644
index 77e47eb98364..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pyblosxom/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, pygments
-, markdown
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "pyblosxom";
-  version = "1.5.3";
-  disabled = isPy3k;
-
-  src = fetchurl {
-    url = "https://github.com/pyblosxom/pyblosxom/archive/v${version}.tar.gz";
-    sha256 = "0de9a7418f4e6d1c45acecf1e77f61c8f96f036ce034493ac67124626fd0d885";
-  };
-
-  propagatedBuildInputs = [ pygments markdown ];
-
-  # FAIL:test_generate_entry and test_time
-  # both tests fail due to time issue that doesn't seem to matter in practice
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "http://pyblosxom.github.io";
-    description = "File-based blogging engine";
-    license = licenses.mit;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pycairo/1.18.nix b/nixpkgs/pkgs/development/python-modules/pycairo/1.18.nix
index 0a51c78c584d..9da4da1479c0 100644
--- a/nixpkgs/pkgs/development/python-modules/pycairo/1.18.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycairo/1.18.nix
@@ -37,7 +37,10 @@ buildPythonPackage rec {
   ];
 
   mesonFlags = [
-    "-Dpython=${python.interpreter}"
+    # This is only used for figuring out what version of Python is in
+    # use, and related stuff like figuring out what the install prefix
+    # should be, but it does need to be able to execute Python code.
+    "-Dpython=${python.pythonForBuild.interpreter}"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/pycairo/default.nix b/nixpkgs/pkgs/development/python-modules/pycairo/default.nix
index 587013e30f8c..85edbdb29b44 100644
--- a/nixpkgs/pkgs/development/python-modules/pycairo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycairo/default.nix
@@ -40,7 +40,10 @@ buildPythonPackage rec {
   ];
 
   mesonFlags = [
-    "-Dpython=${python.interpreter}"
+    # This is only used for figuring out what version of Python is in
+    # use, and related stuff like figuring out what the install prefix
+    # should be, but it does need to be able to execute Python code.
+    "-Dpython=${python.pythonForBuild.interpreter}"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/pycangjie/default.nix b/nixpkgs/pkgs/development/python-modules/pycangjie/default.nix
index 1f7ccde2576b..24c73a152d76 100644
--- a/nixpkgs/pkgs/development/python-modules/pycangjie/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycangjie/default.nix
@@ -1,17 +1,26 @@
-{ lib, fetchurl, bash, autoconf, automake, libtool, pkg-config, libcangjie
-, sqlite, buildPythonPackage, cython
+{ lib
+, fetchFromGitHub
+, bash
+, autoconf
+, automake
+, libtool
+, pkg-config
+, libcangjie
+, sqlite
+, buildPythonPackage
+, cython
 }:
 
-let
-  rev = "361bb413203fd43bab624d98edf6f7d20ce6bfd3";
-in buildPythonPackage {
+buildPythonPackage {
   pname = "pycangjie";
-  version = "1.3_rev_${rev}";
+  version = "unstable-2015-05-03";
   format = "other";
 
-  src = fetchurl {
-    url = "https://github.com/Cangjians/pycangjie/archive/${rev}.tar.gz";
-    sha256 = "12yi09nyffmn4va7lzk4irw349qzlbxgsnb89dh15cnw0xmrin05";
+  src = fetchFromGitHub {
+    owner = "Cangjians";
+    repo = "pycangjie";
+    rev = "361bb413203fd43bab624d98edf6f7d20ce6bfd3";
+    sha256 = "sha256-sS0Demzm89WtEIN4Efz0OTsUQ/c3gIX+/koekQGOca4=";
   };
 
   nativeBuildInputs = [ pkg-config libtool autoconf automake cython ];
diff --git a/nixpkgs/pkgs/development/python-modules/pycapnp/default.nix b/nixpkgs/pkgs/development/python-modules/pycapnp/default.nix
index 7e8954e04d0c..8c63a1186223 100644
--- a/nixpkgs/pkgs/development/python-modules/pycapnp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycapnp/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "pycapnp";
-  version = "1.0.0";
+  version = "1.1.0";
   disabled = isPyPy || isPy27;
 
   src = fetchFromGitHub {
     owner = "capnproto";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1n6dq2fbagi3wvrpkyb7wx4y15nkm2grln4y75hrqgmnli8ggi9v";
+    sha256 = "1xi6df93ggkpmwckwbi356v7m32zv5qry8s45hvsps66dz438kmi";
   };
 
   buildInputs = [ capnproto cython pkgconfig ];
diff --git a/nixpkgs/pkgs/development/python-modules/pycarddav/default.nix b/nixpkgs/pkgs/development/python-modules/pycarddav/default.nix
deleted file mode 100644
index b3479695a890..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pycarddav/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, isPyPy
-, vobject
-, lxml
-, requests
-, urwid
-, pyxdg
-}:
-
-buildPythonPackage rec {
-  version = "0.7.0";
-  pname = "pycarddav";
-  disabled = isPy3k || isPyPy;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0avkrcpisfvhz103v7vmq2jd83hvmpqrb4mlbx6ikkk1wcvclsx8";
-  };
-
-  propagatedBuildInputs = [ vobject lxml requests urwid pyxdg ];
-
-  meta = with lib; {
-    description = "Command-line interface carddav client";
-    homepage = "http://lostpackets.de/pycarddav";
-    license = licenses.mit;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pycares/default.nix b/nixpkgs/pkgs/development/python-modules/pycares/default.nix
index b01b82eb9673..868dbeca6c6c 100644
--- a/nixpkgs/pkgs/development/python-modules/pycares/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycares/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "pycares";
-  version = "4.0.0";
+  version = "4.1.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-0BVPxXU7CIdY++ybwTfhsku4T8DGoJclyLrCWjQjEc0=";
+    sha256 = "sha256-A0kL4Oe1GgyAc/h3vsNH7/MQA/ZPV9lRjUGdk2lFKDc=";
   };
 
   buildInputs = [
@@ -24,6 +24,10 @@ buildPythonPackage rec {
     idna
   ];
 
+  propagatedNativeBuildInputs = [
+    cffi
+  ];
+
   # Requires network access
   doCheck = false;
 
diff --git a/nixpkgs/pkgs/development/python-modules/pycarwings2/default.nix b/nixpkgs/pkgs/development/python-modules/pycarwings2/default.nix
index 164a5b3f562f..e404475e93ba 100644
--- a/nixpkgs/pkgs/development/python-modules/pycarwings2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycarwings2/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "pycarwings2";
-  version = "2.12";
+  version = "2.13";
   format = "setuptools";
 
   disabled = pythonOlder "3.5";
@@ -19,9 +19,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "filcole";
     repo = pname;
-    # release not tagged: https://github.com/filcole/pycarwings2/issues/33
-    rev = "0dc9e7e74cb119614c72c7f955801a366f303c56";
-    sha256 = "sha256-3lyAgLuaNrCDvRT2yYkgaDiLPKW9Hbg05cQlMIBUs6o=";
+    rev = "v${version}";
+    sha256 = "04k1la7wix6sp668nqpwdhd3057b2bzcz7h2b9a57cxlifl8pjxf";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pycassa/default.nix b/nixpkgs/pkgs/development/python-modules/pycassa/default.nix
deleted file mode 100644
index 0e07d8d436f7..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pycassa/default.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, thrift, isPy3k }:
-
-let
-
-  thrift' = thrift.overridePythonAttrs (old: rec {
-    version = "0.9.3";
-    src= fetchPypi {
-      inherit (old) pname;
-      inherit version;
-      sha256 = "0zl7cgckqy9j5vq8wyfzw82q1blkdpsblnmhv8c6ffcxs4xkvg6z";
-    };
-  });
-
-in
-
-buildPythonPackage rec {
-  pname = "pycassa";
-  version = "1.11.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1nsqjzgn6v0rya60dihvbnrnq1zwaxl2qwf0sr08q9qlkr334hr6";
-  };
-
-  disabled = isPy3k;
-
-  # Tests are not executed since they require a cassandra up and
-  # running
-  doCheck = false;
-
-  propagatedBuildInputs = [ thrift' ];
-
-  meta = with lib; {
-    description = "A python client library for Apache Cassandra";
-    homepage = "https://github.com/pycassa/pycassa";
-    license = licenses.mit;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pycfdns/default.nix b/nixpkgs/pkgs/development/python-modules/pycfdns/default.nix
index ca0b0fe5ecf0..7a4ae1cf7fa4 100644
--- a/nixpkgs/pkgs/development/python-modules/pycfdns/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycfdns/default.nix
@@ -7,13 +7,14 @@
 
 buildPythonPackage rec {
   pname = "pycfdns";
-  version = "1.2.1";
+  version = "1.2.2";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "ludeeus";
     repo = pname;
     rev = version;
-    sha256 = "0df4695cb0h6f2lnn6dx4h5al2ra93zp1hzfaz07nj2gvirswp83";
+    sha256 = "sha256-bsalfZEkZrBG0/SyEXCWOZyrhOYU/3YJR/78FQTpXYk=";
   };
 
   propagatedBuildInputs = [
@@ -23,7 +24,10 @@ buildPythonPackage rec {
 
   # Project has no tests
   doCheck = false;
-  pythonImportsCheck = [ "pycfdns" ];
+
+  pythonImportsCheck = [
+    "pycfdns"
+  ];
 
   meta = with lib; {
     description = "Python module for updating Cloudflare DNS A records";
diff --git a/nixpkgs/pkgs/development/python-modules/pychromecast/default.nix b/nixpkgs/pkgs/development/python-modules/pychromecast/default.nix
index c9a2103ccf7f..f9a4b24ffcd6 100644
--- a/nixpkgs/pkgs/development/python-modules/pychromecast/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pychromecast/default.nix
@@ -1,27 +1,45 @@
-{ lib, fetchPypi, buildPythonPackage, requests, zeroconf, protobuf, casttube, isPy3k }:
+{ lib
+, buildPythonPackage
+, casttube
+, fetchPypi
+, isPy3k
+, protobuf
+, requests
+, zeroconf
+}:
 
 buildPythonPackage rec {
-  pname = "PyChromecast";
-  version = "9.3.0";
+  pname = "pychromecast";
+  version = "10.2.2";
+  format = "setuptools";
+
+  disabled = !isPy3k;
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-VN3TWbfk0Bm+LJ05/Cx1zRbiFYKafqca99GEobAxlhw=";
+    pname = "PyChromecast";
+    inherit version;
+    sha256 = "bd1dbb9383ed549d42d12f337a6c664a9088b4910ebb3f11de6fe15f397e7efd";
   };
 
-  disabled = !isPy3k;
-
-  propagatedBuildInputs = [ requests zeroconf protobuf casttube ];
+  propagatedBuildInputs = [
+    casttube
+    protobuf
+    requests
+    zeroconf
+  ];
 
   # no tests available
   doCheck = false;
-  pythonImportsCheck = [ "pychromecast" ];
+
+  pythonImportsCheck = [
+    "pychromecast"
+  ];
 
   meta = with lib; {
     description = "Library for Python to communicate with the Google Chromecast";
-    homepage    = "https://github.com/home-assistant-libs/pychromecast";
-    license     = licenses.mit;
+    homepage = "https://github.com/home-assistant-libs/pychromecast";
+    license = licenses.mit;
     maintainers = with maintainers; [ abbradar ];
-    platforms   = platforms.unix;
+    platforms = platforms.unix;
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pyclip/default.nix b/nixpkgs/pkgs/development/python-modules/pyclip/default.nix
new file mode 100644
index 000000000000..ac79eb8293f4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyclip/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, buildPythonPackage
+, pytest
+, xclip
+, xvfb-run
+}:
+
+buildPythonPackage rec {
+  pname = "pyclip";
+  version = "0.5.4";
+
+  src = fetchFromGitHub {
+    owner = "spyoungtech";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "19ff9cgnfx03mbmy5zpbdi986ppx38a5jf97vkqnic4g5sd1qyrn";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace docs/README.md README.md
+  '';
+
+  checkInputs = [ pytest ] ++ lib.optionals stdenv.isLinux [ xclip xvfb-run ];
+
+  checkPhase = ''
+    runHook preCheck
+    ${lib.optionalString stdenv.isLinux "xvfb-run -s '-screen 0 800x600x24'"} pytest tests
+    runHook postCheck
+  '';
+
+  meta = with lib; {
+    description = "Cross-platform clipboard utilities supporting both binary and text data";
+    homepage = "https://github.com/spyoungtech/pyclip";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ mcaju ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pycm/default.nix b/nixpkgs/pkgs/development/python-modules/pycm/default.nix
index c8cc7c964243..9e3b711718c3 100644
--- a/nixpkgs/pkgs/development/python-modules/pycm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycm/default.nix
@@ -2,7 +2,7 @@
 
 buildPythonPackage rec {
   pname = "pycm";
-  version = "3.2";
+  version = "3.3";
 
   disabled = !isPy3k;
 
@@ -10,7 +10,7 @@ buildPythonPackage rec {
     owner  = "sepandhaghighi";
     repo   = pname;
     rev    = "v${version}";
-    sha256 = "1p2scgb4aghjlxak4zvm3s9ydkpg42mdxy6vjxlnqw0wpnsskfni";
+    sha256 = "0i3qpb20mnc22qny1ar3yvxb1dac7njwi8bvi5sy5kywz10c5dkw";
   };
 
   # remove a trivial dependency on the author's `art` Python ASCII art library
diff --git a/nixpkgs/pkgs/development/python-modules/pycmarkgfm/default.nix b/nixpkgs/pkgs/development/python-modules/pycmarkgfm/default.nix
index 36b171c22b12..348bca8d49e7 100644
--- a/nixpkgs/pkgs/development/python-modules/pycmarkgfm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycmarkgfm/default.nix
@@ -10,6 +10,8 @@ buildPythonPackage rec {
     sha256 = "694cb242f4961437c30b5b015dfbce9d1a1fa48305c2e39f902ce7c65b4cbe0e";
   };
 
+  propagatedNativeBuildInputs = [ cffi ];
+
   propagatedBuildInputs = [ cffi ];
 
   # I would gladly use pytestCheckHook, but pycmarkgfm relies on a native
diff --git a/nixpkgs/pkgs/development/python-modules/pycocotools/default.nix b/nixpkgs/pkgs/development/python-modules/pycocotools/default.nix
index a6cdf877a07b..fa75d02c6101 100644
--- a/nixpkgs/pkgs/development/python-modules/pycocotools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycocotools/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "pycocotools";
-  version = "2.0.2";
+  version = "2.0.3";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "06hz0iz4kqxhqby4j7bah8l41kg68bb118jawp172i4vg497lw94";
+    sha256 = "sha256-OCkCSTABN3EVZSGkuNtLOu9ZBVbPo6jdP6sCfTmyFeE=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pycodestyle/default.nix b/nixpkgs/pkgs/development/python-modules/pycodestyle/default.nix
index 0e92196f7453..865c1febddcf 100644
--- a/nixpkgs/pkgs/development/python-modules/pycodestyle/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycodestyle/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "pycodestyle";
-  version = "2.7.0";
+  version = "2.8.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef";
+    sha256 = "0zxyrg8029lzjhima6l5nk6y0z6lm5wfp9qchz3s33j3xx3mipgd";
   };
 
   dontUseSetuptoolsCheck = true;
diff --git a/nixpkgs/pkgs/development/python-modules/pycollada/default.nix b/nixpkgs/pkgs/development/python-modules/pycollada/default.nix
index 49dfbf030966..06daa9194610 100644
--- a/nixpkgs/pkgs/development/python-modules/pycollada/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycollada/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pycollada";
-  version = "0.7.1";
+  version = "0.7.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1rp4wlvfywgk3v6l3hnhjx61x9yqawvvivpq4dig2jj71k3mpsyj";
+    sha256 = "70a2630ed499bdab718c0e61a3e6ae3698130d7e4654e89cdecde51bfdaea56f";
   };
 
   propagatedBuildInputs = [ numpy python-dateutil ];
diff --git a/nixpkgs/pkgs/development/python-modules/pycountry/default.nix b/nixpkgs/pkgs/development/python-modules/pycountry/default.nix
index 525a56107118..868504e39949 100644
--- a/nixpkgs/pkgs/development/python-modules/pycountry/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycountry/default.nix
@@ -1,7 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-,
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
@@ -13,10 +13,19 @@ buildPythonPackage rec {
     sha256 = "0hnbabsmqimx5hqh0jbd2f64i8fhzhhbrvid57048hs5sd9ll241";
   };
 
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "pycountry"
+  ];
+
   meta = with lib; {
-    homepage = "https://bitbucket.org/flyingcircus/pycountry";
+    homepage = "https://github.com/flyingcircusio/pycountry";
     description = "ISO country, subdivision, language, currency and script definitions and their translations";
     license = licenses.lgpl2;
+    maintainers = with maintainers; [ ];
   };
 
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pycparser/default.nix b/nixpkgs/pkgs/development/python-modules/pycparser/default.nix
index 5fe7cab1cdb2..c8283f93c512 100644
--- a/nixpkgs/pkgs/development/python-modules/pycparser/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycparser/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pycparser";
-  version = "2.20";
+  version = "2.21";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0";
+    sha256 = "e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206";
   };
 
   checkPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pycryptodome/default.nix b/nixpkgs/pkgs/development/python-modules/pycryptodome/default.nix
index 0c57ad9c96f2..19b2447acb11 100644
--- a/nixpkgs/pkgs/development/python-modules/pycryptodome/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycryptodome/default.nix
@@ -1,12 +1,12 @@
 { lib, fetchPypi, buildPythonPackage }:
 
 buildPythonPackage rec {
-  version = "3.10.1";
+  version = "3.11.0";
   pname = "pycryptodome";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3e2e3a06580c5f190df843cdb90ea28d61099cf4924334d5297a995de68e4673";
+    sha256 = "428096bbf7a77e207f418dfd4d7c284df8ade81d2dc80f010e92753a3e406ad0";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/pycryptodomex/default.nix b/nixpkgs/pkgs/development/python-modules/pycryptodomex/default.nix
index fae49e7be0a7..eab3a6b0bbd5 100644
--- a/nixpkgs/pkgs/development/python-modules/pycryptodomex/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pycryptodomex/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "pycryptodomex";
-  version = "3.10.1";
+  version = "3.11.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-VBzT4+JS+xmntI9CC3mLU0gzArf+TZlUyUdgXQomPWI=";
+    sha256 = "0398366656bb55ebdb1d1d493a7175fc48ade449283086db254ac44c7d318d6d";
   };
 
   pythonImportsCheck = [ "Cryptodome" ];
diff --git a/nixpkgs/pkgs/development/python-modules/pycryptopp/default.nix b/nixpkgs/pkgs/development/python-modules/pycryptopp/default.nix
deleted file mode 100644
index 7079cde0d597..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pycryptopp/default.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, isPy3k
-, setuptoolsDarcs
-, darcsver
-, pkgs
-}:
-
-buildPythonPackage rec {
-  pname = "pycryptopp";
-  version = "0.7.1.869544967005693312591928092448767568728501330214";
-  disabled = isPy3k;  # see https://bitbucket.org/pypy/pypy/issue/1190/
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "17v98bhh3nd6rkw0kk1xmnc9vm5ql0fji4in2wyd4zlvlfhmgb88";
-  };
-
-  patches = [
-    (fetchpatch {
-      name = "pycryptopp-cryptopp_6.patch";
-      url = "https://aur.archlinux.org/cgit/aur.git/plain/api_change.patch?h=pycryptopp&id=55f2973d6ca5e9e70438f2eadb7fb575b1a5048d";
-      sha256 = "0lvl2d32d2vkb0v6d39p9whda5bdrmlsjd41zy0x0znqm53a9i99";
-      stripLen = 1;
-      extraPrefix = "src/";
-    })
-  ];
-
-  # Prefer crypto++ library from the Nix store over the one that's included
-  # in the pycryptopp distribution.
-  preConfigure = "export PYCRYPTOPP_DISABLE_EMBEDDED_CRYPTOPP=1";
-
-  buildInputs = [ setuptoolsDarcs darcsver pkgs.cryptopp ];
-
-  meta = with lib; {
-    homepage = "https://tahoe-lafs.org/trac/pycryptopp";
-    description = "Python wrappers for the Crypto++ library";
-    license = licenses.gpl2Plus;
-    platforms = platforms.linux;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pyct/default.nix b/nixpkgs/pkgs/development/python-modules/pyct/default.nix
index b2314e6edfeb..4538410c3623 100644
--- a/nixpkgs/pkgs/development/python-modules/pyct/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyct/default.nix
@@ -3,9 +3,9 @@
 , fetchPypi
 , isPy27
 , param
+, pytestCheckHook
 , pyyaml
 , requests
-, pytest
 }:
 
 buildPythonPackage rec {
@@ -17,22 +17,26 @@ buildPythonPackage rec {
     sha256 = "23d7525b5a1567535c093aea4b9c33809415aa5f018dd77f6eb738b1226df6f7";
   };
 
-  doCheck = !isPy27;
-  checkInputs = [ pytest ];
   propagatedBuildInputs = [
     param
     pyyaml
     requests
   ];
 
-  checkPhase = ''
-    pytest
-  '';
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  doCheck = !isPy27;
+
+  pythonImportsCheck = [
+    "pyct"
+  ];
 
   meta = with lib; {
-    description = "Cli for python common tasks for users";
+    description = "ClI for Python common tasks for users";
     homepage = "https://github.com/pyviz/pyct";
     license = licenses.bsd3;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pycurl2/default.nix b/nixpkgs/pkgs/development/python-modules/pycurl2/default.nix
deleted file mode 100644
index 1cdfb6c4413f..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pycurl2/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, isPy3k
-, simplejson
-, unittest2
-, nose
-, pkgs
-}:
-
-buildPythonPackage {
-  pname = "pycurl2";
-  version = "7.20.0";
-  disabled = isPy3k;
-
-  src = fetchFromGitHub {
-    owner = "Lispython";
-    repo = "pycurl";
-    rev = "0f00109950b883d680bd85dc6e8a9c731a7d0d13";
-    sha256 = "1qmw3cm93kxj94s71a8db9lwv2cxmr2wjv7kp1r8zildwdzhaw7j";
-  };
-
-  # error: (6, "Couldn't resolve host 'h.wrttn.me'")
-  doCheck = false;
-
-  nativeBuildInputs = [ pkgs.curl.dev ];
-  buildInputs = [ simplejson unittest2 nose ];
-
-  meta = with lib; {
-    homepage = "https://pypi.python.org/pypi/pycurl2";
-    description = "A fork from original PycURL library that no maintained from 7.19.0";
-    license = licenses.mit;
-    platforms = platforms.linux;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pydal/default.nix b/nixpkgs/pkgs/development/python-modules/pydal/default.nix
new file mode 100644
index 000000000000..6f2f887967e4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pydal/default.nix
@@ -0,0 +1,42 @@
+{ buildPythonPackage
+, fetchPypi
+, python
+, lib
+}:
+
+buildPythonPackage rec {
+  pname = "pydal";
+  version = "20210626.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "043s52b7srqwwmj7rh783arqryilmv3m8dmmg9bn5sjgfi004jn4";
+  };
+
+  postPatch = ''
+    # this test has issues with an import statement
+    # rm tests/tags.py
+    sed -i '/from .tags import/d' tests/__init__.py
+
+    # this assertion errors without obvious reason
+    sed -i '/self.assertEqual(csv0, str(r4))/d' tests/caching.py
+
+    # some sql tests fail against sqlite engine
+    sed -i '/from .sql import/d' tests/__init__.py
+  '';
+
+  pythonImportsCheck = [ "pydal" ];
+
+  checkPhase = ''
+    runHook preCheck
+    ${python.interpreter} -m unittest tests
+    runHook postCheck
+  '';
+
+  meta = {
+    description = "A pure Python Database Abstraction Layer";
+    homepage = "https://github.com/web2py/pydal";
+    license = with lib.licenses; [ bsd3 ] ;
+    maintainers = with lib.maintainers; [ wamserma ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pydeck/default.nix b/nixpkgs/pkgs/development/python-modules/pydeck/default.nix
new file mode 100644
index 000000000000..6626ee19d920
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pydeck/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildPythonPackage, fetchPypi, ipykernel, ipywidgets, pythonOlder, pytestCheckHook, pandas }:
+
+buildPythonPackage rec {
+  pname = "pydeck";
+  version = "0.7.1";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "907601c99f7510e16d27d7cb62bfa145216d166a2b5c9c50cfe2b65b032ebd2e";
+  };
+
+  pythonImportsCheck = [ "pydeck" ];
+
+  checkInputs = [ pytestCheckHook pandas ];
+  # tries to start a jupyter server
+  disabledTests = [ "test_nbconvert" ];
+
+  propagatedBuildInputs = [
+    ipykernel
+    ipywidgets
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/visgl/deck.gl/tree/master/bindings/pydeck";
+    description = "Large-scale interactive data visualization in Python";
+    maintainers = with maintainers; [ creator54 ];
+    license = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pydeconz/default.nix b/nixpkgs/pkgs/development/python-modules/pydeconz/default.nix
index 54219e75735b..44c33a2d2e2e 100644
--- a/nixpkgs/pkgs/development/python-modules/pydeconz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pydeconz/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "pydeconz";
-  version = "84";
+  version = "85";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "Kane610";
     repo = "deconz";
     rev = "v${version}";
-    sha256 = "sha256-SVWz6r5UiAS7gCpkgN2Swy8dAon26XY9JZucV/eE0t8=";
+    sha256 = "sha256-6GTMG3BfHcfLMoyabFbhsJFVDHmEICuzf32603+jyZ4=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pydelijn/default.nix b/nixpkgs/pkgs/development/python-modules/pydelijn/default.nix
index 08a3bf823611..f8a5d2ed4ae9 100644
--- a/nixpkgs/pkgs/development/python-modules/pydelijn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pydelijn/default.nix
@@ -10,6 +10,8 @@
 buildPythonPackage rec {
   pname = "pydelijn";
   version = "0.6.1";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
@@ -23,10 +25,21 @@ buildPythonPackage rec {
     pytz
   ];
 
+  postPatch = ''
+    # Remove with next release
+    substituteInPlace setup.py \
+      --replace "async_timeout>=3.0.1,<4.0" "async_timeout>=3.0.1"
+    # https://github.com/bollewolle/pydelijn/pull/11
+    substituteInPlace pydelijn/common.py \
+      --replace ", loop=self.loop" ""
+  '';
+
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "pydelijn" ];
+  pythonImportsCheck = [
+    "pydelijn"
+  ];
 
   meta = with lib; {
     description = "Python package to retrieve realtime data of passages at stops of De Lijn";
diff --git a/nixpkgs/pkgs/development/python-modules/pydexcom/default.nix b/nixpkgs/pkgs/development/python-modules/pydexcom/default.nix
index f83d3cbf1102..c2f8953bbced 100644
--- a/nixpkgs/pkgs/development/python-modules/pydexcom/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pydexcom/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "pydexcom";
-  version = "0.2.0";
+  version = "0.2.2";
 
   src = fetchFromGitHub {
     owner = "gagebenne";
     repo = pname;
     rev = version;
-    sha256 = "19h7r0qbsqd6k6g4nz6z3k9kdmk0sx5zpsrgxwnhsff5fqi0y2ls";
+    sha256 = "sha256-8PE+MFQkuwYey82jNSRjMaK8kAhYSBbjqnsbGJHGW9I=";
   };
 
   propagatedBuildInputs = [ requests ];
diff --git a/nixpkgs/pkgs/development/python-modules/pydicom/default.nix b/nixpkgs/pkgs/development/python-modules/pydicom/default.nix
index 539fb9b929d7..5c7d5ab92ab4 100644
--- a/nixpkgs/pkgs/development/python-modules/pydicom/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pydicom/default.nix
@@ -2,25 +2,25 @@
 , stdenv
 , buildPythonPackage
 , fetchFromGitHub
-, isPy27
-, pytest-runner
+, pythonOlder
 , pytestCheckHook
 , numpy
 , pillow
+, setuptools
 }:
 
 let
   pname = "pydicom";
-  version = "2.1.2";
+  version = "2.2.2";
 
   src = fetchFromGitHub {
     owner = "${pname}";
     repo = "${pname}";
     rev = "v${version}";
-    sha256 = "sha256-iExy+mUs1uqs/u9N6btlqyP6/TvoPVsuOuzs56zZAS8=";
+    sha256 = "sha256-p5hJAUsactv6UEvbVaF+zk4iapx98eYkC9Zo+lzFATA=";
   };
 
-  # Pydicom needs pydicom-data to run some tests. If these files are downloaded
+  # Pydicom needs pydicom-data to run some tests. If these files aren't downloaded
   # before the package creation, it'll try to download during the checkPhase.
   test_data = fetchFromGitHub {
     owner = "${pname}";
@@ -32,11 +32,17 @@ let
 in
 buildPythonPackage {
   inherit pname version src;
-  disabled = isPy27;
+  disabled = pythonOlder "3.6";
 
-  propagatedBuildInputs = [ numpy pillow ];
+  propagatedBuildInputs = [
+    numpy
+    pillow
+    setuptools
+  ];
 
-  checkInputs = [ pytest-runner pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
   # Setting $HOME to prevent pytest to try to create a folder inside
   # /homeless-shelter which is read-only.
@@ -58,9 +64,13 @@ buildPythonPackage {
     "test_time_check"
   ];
 
+  pythonImportsCheck = [
+    "pydicom"
+  ];
+
   meta = with lib; {
+    description = "Python package for working with DICOM files";
     homepage = "https://pydicom.github.io";
-    description = "Pure-Python package for working with DICOM files";
     license = licenses.mit;
     maintainers = with maintainers; [ bcdarwin ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/pydmd/default.nix b/nixpkgs/pkgs/development/python-modules/pydmd/default.nix
index 32f0dde17af8..dd166b78f862 100644
--- a/nixpkgs/pkgs/development/python-modules/pydmd/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pydmd/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "pydmd";
-  version = "0.3.3";
+  version = "0.4";
 
   src = fetchFromGitHub {
     owner = "mathLab";
     repo = "PyDMD";
     rev = "v${version}";
-    sha256 = "1516dhmpwi12v9ly9jj18wpz9k696q5k6aamlrbby8wp8smajgrv";
+    sha256 = "1qwa3dyrrm20x0pzr7rklcw7433fd822n4m8bbbdd7z83xh6xm8g";
   };
 
   propagatedBuildInputs = [ future numpy scipy matplotlib ];
diff --git a/nixpkgs/pkgs/development/python-modules/pydns/default.nix b/nixpkgs/pkgs/development/python-modules/pydns/default.nix
deleted file mode 100644
index a6fb07c15206..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pydns/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-}:
-
-buildPythonPackage rec {
-  pname = "pydns";
-  version = "2.3.6";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0qnv7i9824nb5h9psj0rwzjyprwgfiwh5s5raa9avbqazy5hv5pi";
-  };
-
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Python DNS library";
-    homepage = "http://pydns.sourceforge.net/";
-    license = licenses.psfl;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pydocstyle/2.nix b/nixpkgs/pkgs/development/python-modules/pydocstyle/2.nix
deleted file mode 100644
index 9ce4ffc0f816..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pydocstyle/2.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy3k, pythonOlder
-, snowballstemmer, six, configparser
-, pytest, mock, pathlib }:
-
-buildPythonPackage rec {
-  pname = "pydocstyle";
-  version = "2.1.1";
-
-  # no tests on PyPI
-  # https://github.com/PyCQA/pydocstyle/issues/302
-  src = fetchFromGitHub {
-    owner = "PyCQA";
-    repo = pname;
-    rev = version;
-    sha256 = "1h0k8lpx14svc8dini62j0kqiam10pck5sdzvxa4xhsx7y689g5l";
-  };
-
-  propagatedBuildInputs = [ snowballstemmer six ] ++ lib.optional (!isPy3k) configparser;
-
-  checkInputs = [ pytest mock ] ++ lib.optional (pythonOlder "3.4") pathlib;
-
-  checkPhase = ''
-    # test_integration.py installs packages via pip
-    py.test --cache-clear -vv src/tests -k "not test_integration"
-  '';
-
-  meta = with lib; {
-    description = "Python docstring style checker";
-    homepage = "https://github.com/PyCQA/pydocstyle/";
-    license = licenses.mit;
-    maintainers = with maintainers; [ dzabraev ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pydocstyle/default.nix b/nixpkgs/pkgs/development/python-modules/pydocstyle/default.nix
index 36c61ace8563..0658e1857174 100644
--- a/nixpkgs/pkgs/development/python-modules/pydocstyle/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pydocstyle/default.nix
@@ -1,33 +1,40 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy3k
-, mock
-, pytest
+{ lib
+, buildPythonPackage
+, isPy3k
+, fetchFromGitHub
 , snowballstemmer
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "pydocstyle";
-  version = "5.0.2";
+  version = "6.1.1";
   disabled = !isPy3k;
 
+  format = "setuptools";
+
   src = fetchFromGitHub {
     owner = "PyCQA";
     repo = pname;
     rev = version;
-    sha256 = "03z8miyppm2xncrc9yjilwl7z5c5cpv51zha580v64p8sb2l0j7j";
+    sha256 = "sha256-j0WMD2qKDdMaKG2FxrrM/O7zX4waJ1afaRPRv70djkE=";
   };
 
-  propagatedBuildInputs = [ snowballstemmer ];
+  propagatedBuildInputs = [
+    snowballstemmer
+  ];
 
-  checkInputs = [ pytest mock ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  checkPhase = ''
-    # test_integration.py installs packages via pip
-    py.test --cache-clear -vv src/tests -k "not test_integration"
-  '';
+  disabledTestPaths = [
+    "src/tests/test_integration.py" # runs pip install
+  ];
 
   meta = with lib; {
     description = "Python docstring style checker";
-    homepage = "https://github.com/PyCQA/pydocstyle/";
+    homepage = "https://github.com/PyCQA/pydocstyle";
     license = licenses.mit;
     maintainers = with maintainers; [ dzabraev ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/pyduke-energy/default.nix b/nixpkgs/pkgs/development/python-modules/pyduke-energy/default.nix
new file mode 100644
index 000000000000..aba25f551f22
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyduke-energy/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, jsonpickle
+, paho-mqtt
+, pytest-asyncio
+, pytest-timeout
+, pytestCheckHook
+, python-dateutil
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pyduke-energy";
+  version = "1.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "mjmeli";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-bthEWsitnZwK4eyhLXv5RxlOaWyJG1fK0cC4wMEqCbI=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    jsonpickle
+    paho-mqtt
+    python-dateutil
+  ];
+
+  checkInputs = [
+    pytest-asyncio
+    pytest-timeout
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "pyduke_energy"
+  ];
+
+  meta = with lib; {
+    description = "Python module for the Duke Energy API";
+    homepage = "https://github.com/mjmeli/pyduke-energy";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pydyf/default.nix b/nixpkgs/pkgs/development/python-modules/pydyf/default.nix
new file mode 100644
index 000000000000..346a6f6e39b5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pydyf/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, pytestCheckHook
+, coverage
+, ghostscript
+, pillow
+}:
+
+buildPythonPackage rec {
+  pname = "pydyf";
+  version = "0.1.2";
+  disabled = !isPy3k;
+
+  src = fetchPypi {
+    inherit version;
+    pname = "pydyf";
+    sha256 = "sha256-Hi9d5IF09QXeAlp9HnzwG73ZQiyoq5RReCvwDuF4YCw=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "--isort --flake8 --cov --no-cov-on-fail" ""
+  '';
+
+  checkInputs = [
+    pytestCheckHook
+    coverage
+    ghostscript
+    pillow
+  ];
+
+  meta = with lib; {
+    homepage = "https://doc.courtbouillon.org/pydyf/stable/";
+    description = "Low-level PDF generator written in Python and based on PDF specification 1.7";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ rprecenth ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyebus/default.nix b/nixpkgs/pkgs/development/python-modules/pyebus/default.nix
new file mode 100644
index 000000000000..d4c8658673a0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyebus/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, anytree
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, poetry-core
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pyebus";
+  version = "1.2.4";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "i+p40s9SXey1lfXWW+PiXsA1kUF4o6Rk7QLmQ2ljN6g=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    anytree
+  ];
+
+  # https://github.com/c0fec0de/pyebus/issues/3
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pyebus"
+  ];
+
+  meta = with lib; {
+    description = "Pythonic Interface to EBUS Daemon (ebusd)";
+    homepage = "https://github.com/c0fec0de/pyebus";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyeclib/default.nix b/nixpkgs/pkgs/development/python-modules/pyeclib/default.nix
index 2c4169ea73ca..d55fb416a79e 100644
--- a/nixpkgs/pkgs/development/python-modules/pyeclib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyeclib/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, liberasurecode, six }:
+{ lib, stdenv, buildPythonPackage, fetchPypi, liberasurecode, six }:
 
 buildPythonPackage rec {
   pname = "pyeclib";
@@ -13,11 +13,16 @@ buildPythonPackage rec {
     # patch dlopen call
     substituteInPlace src/c/pyeclib_c/pyeclib_c.c \
       --replace "liberasurecode.so" "${liberasurecode}/lib/liberasurecode.so"
+    # python's platform.platform() doesn't return "Darwin" (anymore?)
+    substituteInPlace setup.py \
+      --replace '"Darwin"' '"macOS"'
   '';
 
-  preBuild = ''
-    # required for the custom find_library function in setup.py
-    export LD_LIBRARY_PATH="${lib.makeLibraryPath [ liberasurecode ]}"
+  preBuild = let
+    ldLibraryPathEnvName = if stdenv.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH";
+  in ''
+    # required for the custom _find_library function in setup.py
+    export ${ldLibraryPathEnvName}="${lib.makeLibraryPath [ liberasurecode ]}"
   '';
 
   buildInputs = [ liberasurecode ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyecowitt/default.nix b/nixpkgs/pkgs/development/python-modules/pyecowitt/default.nix
new file mode 100644
index 000000000000..b5f4a5fadbac
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyecowitt/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pyecowitt";
+  version = "0.21";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "garbled1";
+    repo = pname;
+    rev = version;
+    sha256 = "5VdVo6j2HZXSCWU4NvfWzyS/KJfVb7N1KSMeu8TvWaQ=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  # Project thas no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pyecowitt"
+  ];
+
+  meta = with lib; {
+    description = "Python module for the EcoWitt Protocol";
+    homepage = "https://github.com/garbled1/pyecowitt";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyefergy/default.nix b/nixpkgs/pkgs/development/python-modules/pyefergy/default.nix
index 042b6a858fa4..20f3fb9f417b 100644
--- a/nixpkgs/pkgs/development/python-modules/pyefergy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyefergy/default.nix
@@ -3,14 +3,13 @@
 , buildPythonPackage
 , fetchFromGitHub
 , iso4217
-, pytestCheckHook
 , pythonOlder
 , pytz
 }:
 
 buildPythonPackage rec {
   pname = "pyefergy";
-  version = "0.1.0";
+  version = "0.1.5";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -19,7 +18,7 @@ buildPythonPackage rec {
     owner = "tkdrob";
     repo = pname;
     rev = version;
-    sha256 = "0nm7dc5q4wvdpqxpirlc4nwm68lf3n2df6j5yy4m8wr294yb7a1k";
+    sha256 = "sha256-8xcKgsZ6buaQdrKD8Qn7jB5IlQ0NkR0nZGuFk+Dd8Q8=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pyemby/default.nix b/nixpkgs/pkgs/development/python-modules/pyemby/default.nix
index 81c015df35cb..d197b62b21e9 100644
--- a/nixpkgs/pkgs/development/python-modules/pyemby/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyemby/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "pyemby";
-  version = "1.7";
+  version = "1.8";
 
   src = fetchFromGitHub {
     owner = "mezz64";
     repo = pname;
     rev = version;
-    sha256 = "04fvpv3fz4q160s4ikldwxflxl1zbxgfgy9qs6grgpnd23p0ylk8";
+    sha256 = "sha256-EpmXdyKtfb/M8rTv6YrfNCpDmKei2AD5DBcdVvqCVWw=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pyenvisalink/default.nix b/nixpkgs/pkgs/development/python-modules/pyenvisalink/default.nix
index 54a552f88fe7..cfef4ee879aa 100644
--- a/nixpkgs/pkgs/development/python-modules/pyenvisalink/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyenvisalink/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "pyenvisalink";
-  version = "4.1";
+  version = "4.2";
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1h30gmmynihmjkd107skk2gpi210b6gfdahwqmydyj5isxrvzmq2";
+    sha256 = "64f128212ba0257ae8e47612891a2dae7de2c155c81326257582d565f53778ad";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pyephember/default.nix b/nixpkgs/pkgs/development/python-modules/pyephember/default.nix
new file mode 100644
index 000000000000..a6f8d405f617
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyephember/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "pyephember";
+  version = "0.3.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "3eMdkP7u3TTg1AUK4OR7AGZkD0FxUUPp/etvZ2Rw74E=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pyephember"
+  ];
+
+  meta = with lib; {
+    description = "Python client to the EPH Control Systems Ember API";
+    homepage = "https://github.com/ttroy50/pyephember";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyerfa/default.nix b/nixpkgs/pkgs/development/python-modules/pyerfa/default.nix
index 26a61ddca540..b59aa56c48e9 100644
--- a/nixpkgs/pkgs/development/python-modules/pyerfa/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyerfa/default.nix
@@ -1,7 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, isPy3k
+, setuptools-scm
 , liberfa
 , packaging
 , numpy
@@ -10,17 +10,25 @@
 buildPythonPackage rec {
   pname = "pyerfa";
   format = "pyproject";
-  version = "1.7.1.1";
+  version = "2.0.0";
 
   doCheck = false;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "09i2qcsvxd3q04a5yaf6fwzg79paaslpksinan9d8smj7viql15i";
+    sha256 = "sha256-+QQjHhpXD5REDgYUB5lZCJUQf5QoR7UqdTzoHJYJFi0=";
   };
 
-  nativeBuildInputs = [ packaging ];
-  propagatedBuildInputs = [ liberfa numpy ];
+  nativeBuildInputs = [
+    packaging
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    liberfa
+    numpy
+  ];
+
   preBuild = ''
     export PYERFA_USE_SYSTEM_LIBERFA=1
   '';
diff --git a/nixpkgs/pkgs/development/python-modules/pyevilgenius/default.nix b/nixpkgs/pkgs/development/python-modules/pyevilgenius/default.nix
new file mode 100644
index 000000000000..28bb1a2c4c0a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyevilgenius/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, async-timeout
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pyevilgenius";
+  version = "1.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "home-assistant-libs";
+    repo = pname;
+    rev = version;
+    sha256 = "06xnl93sqklg7gx0z50vm79xwww0yyw05c1yynajc9aijfi8cmi3";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    async-timeout
+  ];
+
+  # Project has no test
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pyevilgenius"
+  ];
+
+  meta = with lib; {
+    description = "Python SDK to interact with Evil Genius Labs devices";
+    homepage = "https://github.com/home-assistant-libs/pyevilgenius";
+    changelog = "https://github.com/home-assistant-libs/pyevilgenius/releases/tag/${version}";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyexcel/default.nix b/nixpkgs/pkgs/development/python-modules/pyexcel/default.nix
index ca562ca5586b..c6bc3cf0777f 100644
--- a/nixpkgs/pkgs/development/python-modules/pyexcel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyexcel/default.nix
@@ -2,41 +2,38 @@
 , buildPythonPackage
 , fetchPypi
 , isPy3k
+, chardet
 , lml
 , pyexcel-io
 , texttable
-, nose
 }:
 
 buildPythonPackage rec {
   pname = "pyexcel";
-  version = "0.6.6";
+  version = "0.6.7";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "39b0bb8f033d9b5523b126cf5a5259d1990ea82b8a23c8eab7aa5e23116803df";
+    sha256 = "cbbd9875729767564b3b64b6ed6a9870b14631184943d13646833d94157dd10f";
   };
 
   propagatedBuildInputs = [
+    chardet
     lml
     pyexcel-io
     texttable
   ];
 
-  checkInputs = [
-    nose
+  pythonImportsCheck = [
+    "pyexcel"
   ];
 
   # Tests depend on pyexcel-xls & co. causing circular dependency.
   # https://github.com/pyexcel/pyexcel/blob/dev/tests/requirements.txt
   doCheck = false;
 
-  pythonImportsCheck = [ "pyexcel" ];
-
-  checkPhase = "nosetests";
-
   meta = {
     description = "Single API for reading, manipulating and writing data in csv, ods, xls, xlsx and xlsm files";
     homepage = "http://docs.pyexcel.org/";
diff --git a/nixpkgs/pkgs/development/python-modules/pyexcelerator/default.nix b/nixpkgs/pkgs/development/python-modules/pyexcelerator/default.nix
deleted file mode 100644
index b3a376616d3b..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pyexcelerator/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "pyexcelerator";
-  version = "0.6.4.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "18rcnc9f71lj06h8nppnv6idzb7xfmh2rp1zfqayskcg686lilrb";
-  };
-
-  disabled = isPy3k;
-
-  # No tests are included in archive
-  doCheck = false;
-
-  meta = with lib; {
-    description = "library for generating Excel 97/2000/XP/2003 and OpenOffice Calc compatible spreadsheets.";
-    homepage = "https://sourceforge.net/projects/pyexcelerator";
-    license = licenses.bsdOriginal;
-    maintainers = with maintainers; [ womfoo ];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pyexiv2/default.nix b/nixpkgs/pkgs/development/python-modules/pyexiv2/default.nix
deleted file mode 100644
index bf7afdf79e2c..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pyexiv2/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib, buildPythonPackage, fetchurl, python, exiv2, scons, boost }:
-
-buildPythonPackage rec {
-  pname = "pyexiv2";
-  version = "0.3.2";
-  format = "other";
-
-  src = fetchurl {
-    url = "https://launchpad.net/pyexiv2/0.3.x/0.3.2/+download/${pname}-${version}.tar.bz2";
-    sha256 = "09r1ga6kj5cnmrldpkqzvdhh7xi7aad9g4fbcr1gawgsd9y13g0a";
-  };
-
-  preBuild = ''
-    sed -i -e "s@env = Environment()@env = Environment( ENV = os.environ )@" src/SConscript
-  '';
-
-  preInstall = ''
-    sed -i -e "s@    python_lib_path = get_python_lib(plat_specific=True)@    python_lib_path = \'/lib/python2.7/site-packages\'@" src/SConscript
-  '';
-
-  buildInputs = [ python exiv2 scons boost ];
-
-  meta = with lib; {
-    platforms = platforms.linux;
-    # Likely needs an older boost which does not have `boost_pythonXY` but `boost_python`.
-    broken = true; # 2018-06-23
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pyezviz/default.nix b/nixpkgs/pkgs/development/python-modules/pyezviz/default.nix
index fc6c92ae388e..f7d564e7e54d 100644
--- a/nixpkgs/pkgs/development/python-modules/pyezviz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyezviz/default.nix
@@ -11,14 +11,16 @@
 
 buildPythonPackage rec {
   pname = "pyezviz";
-  version = "0.1.9.4";
+  version = "0.2.0.5";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "baqs";
     repo = "pyEzviz";
     rev = version;
-    sha256 = "sha256-MS4icrTjjcPx3Pb8fpcKAd/JXWqknqp9wb4lQmRwFls=";
+    sha256 = "sha256-a+u8zS69qLHABPSvWEzhM/gdzlLh2RJLTDJjaX4DtpI=";
   };
 
   propagatedBuildInputs = [
@@ -32,7 +34,9 @@ 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";
diff --git a/nixpkgs/pkgs/development/python-modules/pyfaidx/default.nix b/nixpkgs/pkgs/development/python-modules/pyfaidx/default.nix
index 317691066f47..a2815c3e1e2d 100644
--- a/nixpkgs/pkgs/development/python-modules/pyfaidx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyfaidx/default.nix
@@ -1,24 +1,52 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, nose
+, numpy
+, setuptools-scm
 , six
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "pyfaidx";
-  version = "0.6.2";
+  version = "0.6.3.1";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d1258f8d053cba0c90fe329254e8ec59eb28b535b48d9d06e8c7f1d74b8e4531";
+    sha256 = "93adf036a75e08dc9b1dcd59de6a4db2f65a48c603edabe2e499764b6535ed50";
   };
 
-  propagatedBuildInputs = [ six ];
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    six
+  ];
+
+  checkInputs = [
+    nose
+    numpy
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # PyPI releases don't ship all the needed files for the tests
+    "test_index_zero_length"
+    "test_fetch_zero_length"
+    "test_read_back_index"
+  ];
+
+  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";
     license = licenses.bsd3;
-    maintainers = [ maintainers.jbedo ];
+    maintainers = with maintainers; [ jbedo ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pyfakefs/default.nix b/nixpkgs/pkgs/development/python-modules/pyfakefs/default.nix
index 217e552aa0e1..eb5eb993ef48 100644
--- a/nixpkgs/pkgs/development/python-modules/pyfakefs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyfakefs/default.nix
@@ -7,13 +7,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "4.5.1";
+  version = "4.5.3";
   pname = "pyfakefs";
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "002a065dcbf59c2caa039e4fc4ba01d1d636aa63ee9c794d4c9fc01f0e2d6dc0";
+    sha256 = "f49db689c1d5db6172131479ca77bd474ba2cb886c869b9867fb89cdab2df397";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pyflakes/default.nix b/nixpkgs/pkgs/development/python-modules/pyflakes/default.nix
index 1f098ed781c8..f8e00b20e726 100644
--- a/nixpkgs/pkgs/development/python-modules/pyflakes/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyflakes/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pyflakes";
-  version = "2.3.1";
+  version = "2.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db";
+    sha256 = "05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c";
   };
 
   checkInputs = [ unittest2 ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyflunearyou/default.nix b/nixpkgs/pkgs/development/python-modules/pyflunearyou/default.nix
index 953f381ff498..99506de1026a 100644
--- a/nixpkgs/pkgs/development/python-modules/pyflunearyou/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyflunearyou/default.nix
@@ -15,15 +15,16 @@
 
 buildPythonPackage rec {
   pname = "pyflunearyou";
-  version = "2.0.2";
+  version = "2021.10.0";
   format = "pyproject";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "07n2dvnfpfglpdlnwzj4dy41x2zc07ia2krvxdarnv8wzap30y23";
+    sha256 = "sha256-Q65OSE4qckpvaIvZULBR434i7hwuVM97eSq1Blb1oIU=";
   };
 
   nativeBuildInputs = [
@@ -44,11 +45,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  # Ignore the examples directory as the files are prefixed with test_.
-  # disabledTestFiles doesn't seem to work here
-  disabledTestPaths = [ "examples/" ];
+  disabledTestPaths = [
+    # Ignore the examples directory as the files are prefixed with test_.
+    "examples/"
+  ];
 
-  pythonImportsCheck = [ "pyflunearyou" ];
+  pythonImportsCheck = [
+    "pyflunearyou"
+  ];
 
   meta = with lib; {
     description = "Python library for retrieving UV-related information from Flu Near You";
diff --git a/nixpkgs/pkgs/development/python-modules/pyfronius/default.nix b/nixpkgs/pkgs/development/python-modules/pyfronius/default.nix
index c6a68401342d..b78aeb19545e 100644
--- a/nixpkgs/pkgs/development/python-modules/pyfronius/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyfronius/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "pyfronius";
-  version = "0.7.0";
+  version = "0.7.1";
 
   disabled = pythonOlder "3.6";
 
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "nielstron";
     repo = pname;
     rev = "release-${version}";
-    sha256 = "1jp9vsllvzfnrkzmln2sp1ggr4pwaj47744n2ijz1wsf8v38nw2j";
+    sha256 = "1xwx0c1dp2374bwigzwhvcj4577vrxyhn6i5zv73k9ydc7w1xgyz";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pygame/default.nix b/nixpkgs/pkgs/development/python-modules/pygame/default.nix
index 7ae4c96702ad..60a1fece63ac 100644
--- a/nixpkgs/pkgs/development/python-modules/pygame/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pygame/default.nix
@@ -1,15 +1,21 @@
-{ stdenv, lib, substituteAll, fetchPypi, buildPythonPackage, python, pkg-config, libX11
+{ stdenv, lib, substituteAll, fetchFromGitHub, buildPythonPackage, python, pkg-config, libX11
 , SDL2, SDL2_image, SDL2_mixer, SDL2_ttf, libpng, libjpeg, portmidi, freetype, fontconfig
-, AppKit, CoreMIDI
+, AppKit
 }:
 
 buildPythonPackage rec {
   pname = "pygame";
-  version = "2.0.1";
+  version = "2.1.0";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "8b1e7b63f47aafcdd8849933b206778747ef1802bd3d526aca45ed77141e4001";
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = version;
+    # Unicode file names lead to different checksums on HFS+ vs. other
+    # filesystems because of unicode normalisation. The documentation
+    # has such files and will be removed.
+    sha256 = "sha256-Pe7BJ+8rXw+hhRv64fI+79gJcU1npQFFAXxECx2+Trw=";
+    extraPostFetch = "rm -rf $out/docs/reST";
   };
 
   patches = [
@@ -41,11 +47,11 @@ buildPythonPackage rec {
     SDL2 SDL2_image SDL2_mixer SDL2_ttf libpng libjpeg
     portmidi libX11 freetype
   ] ++ lib.optionals stdenv.isDarwin [
-    AppKit CoreMIDI
+    AppKit
   ];
 
   preConfigure = ''
-    LOCALBASE=/ ${python.interpreter} buildconfig/config.py
+    ${python.interpreter} buildconfig/config.py
   '';
 
   checkPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pygame/fix-dependency-finding.patch b/nixpkgs/pkgs/development/python-modules/pygame/fix-dependency-finding.patch
index 11b705f1b1ad..a756cb8e5d6b 100644
--- a/nixpkgs/pkgs/development/python-modules/pygame/fix-dependency-finding.patch
+++ b/nixpkgs/pkgs/development/python-modules/pygame/fix-dependency-finding.patch
@@ -1,29 +1,13 @@
 diff --git a/buildconfig/config_darwin.py b/buildconfig/config_darwin.py
-index 8d84683f..70df8f9c 100644
+index c785e183..37d5cea4 100644
 --- a/buildconfig/config_darwin.py
 +++ b/buildconfig/config_darwin.py
-@@ -56,10 +56,10 @@ class Dependency:
- class FrameworkDependency(Dependency):
-     def configure(self, incdirs, libdirs):
-         BASE_DIRS = '/', os.path.expanduser('~/'), '/System/'
--        for n in BASE_DIRS:
-+        for n in incdirs + libdirs:
-             n += 'Library/Frameworks/'
-             fmwk = n + self.libs + '.framework/Versions/Current/'
--            if os.path.isfile(fmwk + self.libs):
-+            if os.path.isfile(fmwk + self.libs + '.tbd'):
-                 print ('Framework ' + self.libs + ' found')
-                 self.found = 1
-                 self.inc_dir = fmwk + 'Headers'
-@@ -158,19 +158,8 @@ def main(sdl2=False):
+@@ -146,16 +146,8 @@ def main():
      ])
  
      print ('Hunting dependencies...')
--    incdirs = ['/usr/local/include']
--    if sdl2:
--        incdirs.append('/usr/local/include/SDL2')
--    else:
--        incdirs.append('/usr/local/include/SDL')
+-    incdirs = ['/usr/local/include', '/opt/homebrew/include']
+-    incdirs.extend(['/usr/local/include/SDL2', '/opt/homebrew/include/SDL2', '/opt/local/include/SDL2'])
 -
 -    incdirs.extend([
 -       #'/usr/X11/include',
@@ -31,17 +15,17 @@ index 8d84683f..70df8f9c 100644
 -       '/opt/local/include/freetype2/freetype']
 -    )
 -    #libdirs = ['/usr/local/lib', '/usr/X11/lib', '/opt/local/lib']
--    libdirs = ['/usr/local/lib', '/opt/local/lib']
+-    libdirs = ['/usr/local/lib', '/opt/local/lib', '/opt/homebrew/lib']
 +    incdirs = @buildinputs_include@
 +    libdirs = @buildinputs_lib@
  
      for d in DEPS:
          if isinstance(d, (list, tuple)):
 diff --git a/buildconfig/config_unix.py b/buildconfig/config_unix.py
-index f6a4ea4b..f7f5be76 100644
+index 5c50bcdc..2fd69e2d 100644
 --- a/buildconfig/config_unix.py
 +++ b/buildconfig/config_unix.py
-@@ -224,18 +224,8 @@ def main(sdl2=False):
+@@ -210,18 +210,8 @@ def main():
      if not DEPS[0].found:
          raise RuntimeError('Unable to run "sdl-config". Please make sure a development version of SDL is installed.')
  
diff --git a/nixpkgs/pkgs/development/python-modules/pygetwindow/default.nix b/nixpkgs/pkgs/development/python-modules/pygetwindow/default.nix
new file mode 100644
index 000000000000..3ca462115768
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pygetwindow/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pyrect
+}:
+buildPythonPackage rec {
+  pname = "PyGetWindow";
+  version = "0.0.9";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-F4lDVefSswXNgy1xdwg4QBfBaYqQziT29/vwJC3Qpog=";
+  };
+
+  doCheck = false;
+  # This lib officially only works completely on Windows and partially on MacOS but pyautogui requires it
+  # pythonImportsCheck = [ "pygetwindow" ];
+
+  propagatedBuildInputs = [
+    pyrect
+  ];
+
+  meta = with lib; {
+    description = "A simple, cross-platform module for obtaining GUI information on applications' windows.";
+    homepage = "https://github.com/asweigart/PyGetWindow";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ lucasew ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygit2/default.nix b/nixpkgs/pkgs/development/python-modules/pygit2/default.nix
index 1ec0c6a97b39..ab4ca1efdc15 100644
--- a/nixpkgs/pkgs/development/python-modules/pygit2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pygit2/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pygit2";
-  version = "1.6.1";
+  version = "1.7.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c3303776f774d3e0115c1c4f6e1fc35470d15f113a7ae9401a0b90acfa1661ac";
+    sha256 = "d7faa29558436decc2e78110f38d6677eb366b683ba5cdc2803d47195711165d";
   };
 
   preConfigure = lib.optionalString stdenv.isDarwin ''
@@ -21,6 +21,8 @@ buildPythonPackage rec {
     cached-property
   ] ++ lib.optional (!isPyPy) cffi;
 
+  propagatedNativeBuildInputs = lib.optional (!isPyPy) cffi;
+
   checkInputs = [ pytestCheckHook ];
 
   preCheck = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pygls/default.nix b/nixpkgs/pkgs/development/python-modules/pygls/default.nix
index 7e424f21dee8..1ce36111ff78 100644
--- a/nixpkgs/pkgs/development/python-modules/pygls/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pygls/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "pygls";
-  version = "0.11.2";
+  version = "0.11.3";
   disabled = !isPy3k;
 
   src = fetchFromGitHub {
     owner = "openlawlibrary";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-zgQ5m198HMyFFrASSYCzn0EDLLeVy2j4LD0rEyEgahQ=";
+    sha256 = "sha256-/nmDaA67XzrrmfwlBm5syTS4hn25m30Zb3gvOdL+bR8=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
@@ -36,6 +36,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  # Fixes hanging tests on Darwin
+  __darwinAllowLocalNetworking = true;
+
   pythonImportsCheck = [ "pygls" ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/pygmt/default.nix b/nixpkgs/pkgs/development/python-modules/pygmt/default.nix
index ccd5b93c5ef0..6f06065457ed 100644
--- a/nixpkgs/pkgs/development/python-modules/pygmt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pygmt/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "pygmt";
-  version = "0.4.1";
+  version = "0.5.0";
 
   disabled = pythonOlder "3.6";
 
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "GenericMappingTools";
     repo = "pygmt";
     rev = "v${version}";
-    sha256 = "1jjqijp0dhmc953brlj2pqgswdliz71fi7dzrv6clq2kqzqfjv8c";
+    sha256 = "1mazljxwh162df971cvv7cwnqr300r17qfs7k09s6yd6hajyhz49";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pygobject/3.nix b/nixpkgs/pkgs/development/python-modules/pygobject/3.nix
index fda11ef89e83..dec84b4eccff 100644
--- a/nixpkgs/pkgs/development/python-modules/pygobject/3.nix
+++ b/nixpkgs/pkgs/development/python-modules/pygobject/3.nix
@@ -7,7 +7,6 @@
 , gobject-introspection
 , pycairo
 , cairo
-, which
 , ncurses
 , meson
 , ninja
diff --git a/nixpkgs/pkgs/development/python-modules/pygogo/default.nix b/nixpkgs/pkgs/development/python-modules/pygogo/default.nix
index 89031c9610aa..8cee037bb106 100644
--- a/nixpkgs/pkgs/development/python-modules/pygogo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pygogo/default.nix
@@ -4,13 +4,13 @@
 , fetchFromGitHub
 , pkutils
   # Check Inputs
-, pytestCheckHook
 , nose
 }:
 
 buildPythonPackage rec {
   pname = "pygogo";
   version = "0.13.2";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
@@ -21,14 +21,31 @@ buildPythonPackage rec {
     sha256 = "19rdf4sjrm5lp1vq1bki21a9lrkzz8sgrfwgjdkq4sgy90hn1jn9";
   };
 
-  nativeBuildInputs = [ pkutils ];
+  nativeBuildInputs = [
+    pkutils
+  ];
 
-  checkInputs = [ nose ];
-  checkPhase = "nosetests";
-  pythonImportsCheck = [ "pygogo" ];
+  checkInputs = [
+    nose
+  ];
+
+  postPatch = ''
+    substituteInPlace dev-requirements.txt \
+      --replace "pkutils>=1.0.0,<2.0.0" "pkutils>=1.0.0"
+  '';
+
+  checkPhase = ''
+    runHook preCheck
+    nosetests
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [
+    "pygogo"
+  ];
 
   meta = with lib; {
-    description = "A Python logging library with super powers";
+    description = "Python logging library";
     homepage = "https://github.com/reubano/pygogo/";
     license = licenses.mit;
     maintainers = with maintainers; [ drewrisinger ];
diff --git a/nixpkgs/pkgs/development/python-modules/pygtksourceview/codegendir.patch b/nixpkgs/pkgs/development/python-modules/pygtksourceview/codegendir.patch
deleted file mode 100644
index 783c5e2d4671..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pygtksourceview/codegendir.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -Nur pygtksourceview-2.10.1-orig/configure pygtksourceview-2.10.1/configure
---- pygtksourceview-2.10.1-orig/configure	2010-04-18 15:29:55.000000000 +0200
-+++ pygtksourceview-2.10.1/configure	2015-01-30 20:36:31.784541887 +0100
-@@ -12950,7 +12950,7 @@
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pygtk codegen" >&5
- $as_echo_n "checking for pygtk codegen... " >&6; }
--CODEGENDIR=`$PKG_CONFIG --variable=codegendir pygtk-2.0`
-+CODEGENDIR=`$PKG_CONFIG --variable=codegendir pygobject-2.0`
- echo $CODEGENDIR
- if test -f $CODEGENDIR/codegen.py; then
- 	CODEGEN=$CODEGENDIR/codegen.py
-diff -Nur pygtksourceview-2.10.1-orig/configure.ac pygtksourceview-2.10.1/configure.ac
---- pygtksourceview-2.10.1-orig/configure.ac	2010-04-18 15:28:39.000000000 +0200
-+++ pygtksourceview-2.10.1/configure.ac	2015-01-30 20:36:42.781648830 +0100
-@@ -116,7 +116,7 @@
- 
- dnl codegen
- AC_MSG_CHECKING(for pygtk codegen)
--CODEGENDIR=`$PKG_CONFIG --variable=codegendir pygtk-2.0`
-+CODEGENDIR=`$PKG_CONFIG --variable=codegendir pygobject-2.0`
- echo $CODEGENDIR
- if test -f $CODEGENDIR/codegen.py; then
- 	CODEGEN=$CODEGENDIR/codegen.py
-
diff --git a/nixpkgs/pkgs/development/python-modules/pygtksourceview/default.nix b/nixpkgs/pkgs/development/python-modules/pygtksourceview/default.nix
deleted file mode 100644
index 57a21f1e1784..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pygtksourceview/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ lib, fetchurl, python, buildPythonPackage, pkg-config, pygobject2, glib, pygtk, gnome2 }:
-
-buildPythonPackage rec {
-  pname = "pygtksourceview";
-  format = "other";
-  version = "2.10.1";
-
-  src = fetchurl {
-    url = "http://ftp.gnome.org/pub/gnome/sources/pygtksourceview/2.10/pygtksourceview-${version}.tar.bz2";
-    sha256 = "0x2r9k547ad68sfddr5am341ap6zvy8k0rh3rd0n38k7xdd7rd5l";
-  };
-
-  patches = [ ./codegendir.patch ];
-
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ python pygobject2 glib pygtk gnome2.gtksourceview ];
-
-  meta = {
-    platforms = lib.platforms.unix;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pyhamcrest/1.nix b/nixpkgs/pkgs/development/python-modules/pyhamcrest/1.nix
deleted file mode 100644
index 4c2ec4df6810..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pyhamcrest/1.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi
-, mock, pytest
-, six
-}:
-buildPythonPackage rec {
-  pname = "PyHamcrest";
-  version = "1.10.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0x08lfcnsak7pkym32xrdn0sn3wcf26n1jff3d11mwbizpfikbpp";
-  };
-
-  checkInputs = [ mock pytest ];
-  propagatedBuildInputs = [ six ];
-
-  doCheck = false;  # pypi tarball does not include tests
-
-  meta = with lib; {
-    homepage = "https://github.com/hamcrest/PyHamcrest";
-    description = "Hamcrest framework for matcher objects";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [
-      alunduil
-    ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pyhaversion/default.nix b/nixpkgs/pkgs/development/python-modules/pyhaversion/default.nix
index 36f4f434469e..6fe9df519652 100644
--- a/nixpkgs/pkgs/development/python-modules/pyhaversion/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyhaversion/default.nix
@@ -1,7 +1,6 @@
 { lib
 , aiohttp
 , aresponses
-, async-timeout
 , awesomeversion
 , buildPythonPackage
 , fetchFromGitHub
@@ -12,21 +11,20 @@
 
 buildPythonPackage rec {
   pname = "pyhaversion";
-  version = "21.10.0";
+  version = "21.11.1";
+  format = "setuptools";
 
-  # Only 3.8.0 and beyond are supported
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "ludeeus";
     repo = pname;
     rev = version;
-    sha256 = "sha256-EvVkewFgkfYL6BjmJ/IWeuCyR+0R0ZxI35i9sxKcqxo=";
+    sha256 = "sha256-wh6NJRDgOrEHYEN3QlC4lOZHPnPeiPCJFF1xLoixQ14=";
   };
 
   propagatedBuildInputs = [
     aiohttp
-    async-timeout
     awesomeversion
   ];
 
@@ -36,7 +34,16 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "pyhaversion" ];
+  postPatch = ''
+    # Upstream doesn't set a version for the tagged releases
+    substituteInPlace setup.py \
+      --replace "main" ${version}
+  '';
+
+
+  pythonImportsCheck = [
+    "pyhaversion"
+  ];
 
   meta = with lib; {
     description = "Python module to the newest version number of Home Assistant";
diff --git a/nixpkgs/pkgs/development/python-modules/pyhomematic/default.nix b/nixpkgs/pkgs/development/python-modules/pyhomematic/default.nix
index be947f4c2ac0..636ea1658fff 100644
--- a/nixpkgs/pkgs/development/python-modules/pyhomematic/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyhomematic/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "pyhomematic";
-  version = "0.1.75";
+  version = "0.1.76";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "36b76d7269273888f61db085f3fb47e5516c4d1bd15b2b39a54305cdb6a9a8b8";
+    sha256 = "ea2496c920451ded4561e3758c8f77157fc00c40d1f75d8163e399fd3e0d795a";
   };
 
   checkPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pyhomeworks/default.nix b/nixpkgs/pkgs/development/python-modules/pyhomeworks/default.nix
new file mode 100644
index 000000000000..085107c4ad26
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyhomeworks/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "pyhomeworks";
+  version = "0.0.6";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "Eqbm8274B2hBuF+mREe8lqGhpzZExPJ29jzvwB5RNR8=";
+  };
+
+  # Project has no real tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pyhomeworks"
+  ];
+
+  meta = with lib; {
+    description = "Python interface to Lutron Homeworks Series 4/8";
+    homepage = "https://github.com/dubnom/pyhomeworks";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyicu/default.nix b/nixpkgs/pkgs/development/python-modules/pyicu/default.nix
index 45a24851150e..3281a7ceb873 100644
--- a/nixpkgs/pkgs/development/python-modules/pyicu/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyicu/default.nix
@@ -3,27 +3,28 @@
 , fetchPypi
 , pytestCheckHook
 , six
-, icu68
+, icu
 }:
 
 buildPythonPackage rec {
   pname = "PyICU";
-  version = "2.7.4";
+  version = "2.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c0655302e2aea16f9acefe04152f74e5d7d70542e9e15c89ee8d763c8e097f56";
+    sha256 = "3d80de47045a8163db5aebc947c42b4d429eeea4f0c32af4f40b33981fa872b9";
   };
 
-  nativeBuildInputs = [ icu68 ]; # for icu-config, but should be replaced with pkg-config
-  buildInputs = [ icu68 ];
+  nativeBuildInputs = [ icu ]; # for icu-config, but should be replaced with pkg-config
+  buildInputs = [ icu ];
   checkInputs = [ pytestCheckHook six ];
 
+  pythonImportsCheck = [ "icu" ];
+
   meta = with lib; {
-    homepage = "https://github.com/ovalhub/pyicu/";
+    homepage = "https://gitlab.pyicu.org/main/pyicu";
     description = "Python extension wrapping the ICU C++ API";
+    changelog = "https://gitlab.pyicu.org/main/pyicu/-/raw/v${version}/CHANGES";
     license = licenses.mit;
-    platforms = platforms.unix;
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pyinsteon/default.nix b/nixpkgs/pkgs/development/python-modules/pyinsteon/default.nix
index 4a0e04943b89..04dbd8142ff6 100644
--- a/nixpkgs/pkgs/development/python-modules/pyinsteon/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyinsteon/default.nix
@@ -17,14 +17,14 @@
 
 buildPythonPackage rec {
   pname = "pyinsteon";
-  version = "1.0.12";
+  version = "1.0.13";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "sha256-IlRCUogs78kbKY8gp22YzIkNrXhSCLJDDDtFAucrQxE=";
+    sha256 = "sha256-KVwAF+yoU26ktNRKWQ+nrhS1i90xQxAhRAr4VJ+xtl0=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pyiqvia/default.nix b/nixpkgs/pkgs/development/python-modules/pyiqvia/default.nix
index 89df38b80c50..b88bc006bcc1 100644
--- a/nixpkgs/pkgs/development/python-modules/pyiqvia/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyiqvia/default.nix
@@ -13,16 +13,16 @@
 
 buildPythonPackage rec {
   pname = "pyiqvia";
-  version = "1.1.0";
+  version = "2021.11.0";
   format = "pyproject";
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "sha256-uDcBpPHh+wQHI2vGjnumwVGt5ZOreVq+L3kOam97uW4=";
+    sha256 = "sha256-Cqc3zRJ2VpKKCGF4y+4IYfvfANblCEmh0sJ3tXH1AAA=";
   };
 
   nativeBuildInputs = [
@@ -41,10 +41,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  # Ignore the examples as they are prefixed with test_
-  disabledTestPaths = [ "examples/" ];
+  disabledTestPaths = [
+    # Ignore the examples as they are prefixed with test_
+    "examples/"
+  ];
 
-  pythonImportsCheck = [ "pyiqvia" ];
+  pythonImportsCheck = [
+    "pyiqvia"
+  ];
 
   meta = with lib; {
     description = "Python3 API for IQVIA data";
diff --git a/nixpkgs/pkgs/development/python-modules/pyisy/default.nix b/nixpkgs/pkgs/development/python-modules/pyisy/default.nix
index 046cfdae9af1..48274e6b4e82 100644
--- a/nixpkgs/pkgs/development/python-modules/pyisy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyisy/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "pyisy";
-  version = "3.0.0";
+  version = "3.0.1";
 
   src = fetchFromGitHub {
     owner = "automicus";
     repo = "PyISY";
     rev = "v${version}";
-    sha256 = "1bxp13m83qm1n1ddyw6mdz0ijfksjg4ki85w4n8i597f3xazm8q4";
+    sha256 = "1mj9na64nq0ls8d9x3304ai7lixaglpr646p3m2a4s5qlmm4il3m";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pyjet/default.nix b/nixpkgs/pkgs/development/python-modules/pyjet/default.nix
index abf4beaada0d..608bacf06765 100644
--- a/nixpkgs/pkgs/development/python-modules/pyjet/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyjet/default.nix
@@ -1,27 +1,24 @@
-{ lib, buildPythonPackage, fetchFromGitHub, cython, pytest, numpy }:
+{ lib, buildPythonPackage, pythonOlder, fetchFromGitHub, cython, pytest, importlib-resources, numpy }:
 
 buildPythonPackage rec {
   pname = "pyjet";
-  version = "1.6.0";
+  version = "1.8.2";
 
   # tests not included in pypi tarball
   src = fetchFromGitHub {
     owner = "scikit-hep";
     repo = pname;
     rev = version;
-    sha256 = "0b68jnbfk2rw9i1nnwsrbrbgkj7r0w1nw0i9f8fah1wmn78k9csv";
+    sha256 = "sha256-0EI/dbanVDvILawnnK/Ce/5n/cD4Fv7VQEZfF9yPQio=";
   };
 
-  # fix for python37
-  # https://github.com/scikit-hep/pyjet/issues/8
   nativeBuildInputs = [ cython ];
-  preBuild = ''
-    for f in pyjet/src/*.{pyx,pxd}; do
-      cython --cplus "$f"
-    done
-  '';
+  propagatedBuildInputs = [
+    numpy
+  ] ++ lib.optionals (pythonOlder "3.9") [
+    importlib-resources
+  ];
 
-  propagatedBuildInputs = [ numpy ];
   checkInputs = [ pytest ];
   checkPhase = ''
     mv pyjet _pyjet
@@ -31,7 +28,7 @@ buildPythonPackage rec {
   meta = with lib; {
     homepage = "https://github.com/scikit-hep/pyjet";
     description = "The interface between FastJet and NumPy";
-    license = licenses.gpl3;
+    license = licenses.gpl2Plus;
     maintainers = with maintainers; [ veprbl ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pyjwt/1.nix b/nixpkgs/pkgs/development/python-modules/pyjwt/1.nix
index 285e5e2e7600..9978302d1cc4 100644
--- a/nixpkgs/pkgs/development/python-modules/pyjwt/1.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyjwt/1.nix
@@ -2,34 +2,40 @@
 , buildPythonPackage
 , fetchPypi
 , cryptography
+, ecdsa
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
-  pname = "PyJWT";
+  pname = "pyjwt";
   version = "1.7.1";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "15hflax5qkw1v6nssk1r0wkj83jgghskcmn875m3wgvpzdvajncd";
+    pname = "PyJWT";
+    inherit version;
+    sha256 = "8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96";
   };
 
   postPatch = ''
-    substituteInPlace setup.py --replace "pytest>=4.0.1,<5.0.0" "pytest"
-
-    # drop coverage
-    sed -i '/pytest-cov/d' setup.py
-    sed -i '/--cov/d' setup.cfg
+    sed -i '/^addopts/d' setup.cfg
   '';
 
   propagatedBuildInputs = [
     cryptography
+    ecdsa
   ];
 
   checkInputs = [
     pytestCheckHook
   ];
 
+  disabledTests = [
+    "test_ec_verify_should_return_false_if_signature_invalid"
+  ];
+
+  pythonImportsCheck = [ "jwt" ];
+
   meta = with lib; {
     description = "JSON Web Token implementation in Python";
     homepage = "https://github.com/jpadilla/pyjwt";
diff --git a/nixpkgs/pkgs/development/python-modules/pykakasi/default.nix b/nixpkgs/pkgs/development/python-modules/pykakasi/default.nix
new file mode 100644
index 000000000000..13f5466b8a10
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pykakasi/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, buildPythonPackage
+, deprecated
+, fetchFromGitHub
+, importlib-metadata
+, jaconv
+, pytest-benchmark
+, pytestCheckHook
+, pythonOlder
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "pykakasi";
+  version = "2.2.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "miurahr";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "ivlenHPD00bxc0c9G368tfTEckOC3vqDB5kMQzHXbVM=";
+  };
+
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    jaconv
+    deprecated
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    importlib-metadata
+  ];
+
+  checkInputs = [
+    pytest-benchmark
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # We don't care about benchmarks
+    "test_benchmark"
+    "pytest_benchmark_update_machine_info"
+    "pytest_benchmark_update_json"
+  ];
+
+  pythonImportsCheck = [
+    "pykakasi"
+  ];
+
+  meta = with lib; {
+    description = "Python converter for Japanese Kana-kanji sentences into Kana-Roman";
+    homepage = "https://github.com/miurahr/pykakasi";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pykeepass/default.nix b/nixpkgs/pkgs/development/python-modules/pykeepass/default.nix
index 5d23949eba62..cb893c98ac92 100644
--- a/nixpkgs/pkgs/development/python-modules/pykeepass/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pykeepass/default.nix
@@ -24,6 +24,8 @@ buildPythonPackage rec {
     argon2_cffi python-dateutil future
   ];
 
+  propagatedNativeBuildInputs = [ argon2_cffi ];
+
   checkPhase = ''
     ${python.interpreter} -m unittest tests.tests
   '';
diff --git a/nixpkgs/pkgs/development/python-modules/pykeyatome/default.nix b/nixpkgs/pkgs/development/python-modules/pykeyatome/default.nix
new file mode 100644
index 000000000000..b27ee6b2ecec
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pykeyatome/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, buildPythonPackage
+, fake-useragent
+, fetchFromGitHub
+, pytest-aiohttp
+, pytestCheckHook
+, pythonOlder
+, requests
+, requests-mock
+, responses
+, simplejson
+}:
+
+buildPythonPackage rec {
+  pname = "pykeyatome";
+  version = "1.3.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "jugla";
+    repo = "pyKeyAtome";
+    rev = "V${version}";
+    sha256 = "1brcfgqj0bana6yii4083kppz822fgk9xf4mg141b0zfvx2gyjw9";
+  };
+
+  propagatedBuildInputs = [
+    fake-useragent
+    requests
+    simplejson
+  ];
+
+  checkInputs = [
+    pytest-aiohttp
+    pytestCheckHook
+    requests-mock
+    responses
+  ];
+
+  disabledTests = [
+    # Tests require network access
+    "test_consumption"
+    "test_get_live"
+    "test_login"
+    "test_relog_after_session_down"
+  ];
+
+  pythonImportsCheck = [
+    "pykeyatome"
+  ];
+
+  meta = with lib; {
+    description = "Python module to get data from Atome Key";
+    homepage = "hhttps://github.com/jugla/pyKeyAtome";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pykickstart/default.nix b/nixpkgs/pkgs/development/python-modules/pykickstart/default.nix
deleted file mode 100644
index 8b1eefdafedc..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pykickstart/default.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, urlgrabber
-, python
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "pykickstart";
-  version = "1.99.39";
-  md5_path = "d249f60aa89b1b4facd63f776925116d";
-  disabled = isPy3k;
-
-  src = fetchurl {
-    url = "https://src.fedoraproject.org/repo/pkgs/pykickstart/"
-    + "${pname}-${version}.tar.gz/${md5_path}/${pname}-${version}.tar.gz";
-    sha256 = "e0d0f98ac4c5607e6a48d5c1fba2d50cc804de1081043f9da68cbfc69cad957a";
-  };
-
-  postPatch = ''
-    sed -i -e "s/for tst in tstList/for tst in sorted(tstList, \
-               key=lambda m: m.__name__)/" tests/baseclass.py
-  '';
-
-  propagatedBuildInputs = [ urlgrabber ];
-
-  checkPhase = ''
-    ${python.interpreter} tests/baseclass.py -vv
-  '';
-
-  meta = with lib; {
-    homepage = "http://fedoraproject.org/wiki/Pykickstart";
-    description = "Read and write Fedora kickstart files";
-    license = licenses.gpl2Plus;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pykodi/default.nix b/nixpkgs/pkgs/development/python-modules/pykodi/default.nix
index d754a44ffd38..73508e3479cd 100644
--- a/nixpkgs/pkgs/development/python-modules/pykodi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pykodi/default.nix
@@ -8,11 +8,12 @@
 
 buildPythonPackage rec {
   pname = "pykodi";
-  version = "0.2.6";
+  version = "0.2.7";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-SDp2S9HeqejRM3cf4x+5RLUQMPhjieQaXoubwf9Q/d4=";
+    sha256 = "sha256-2fFkbZZ3RXMolaaGpkvvVfSYtNNB1bTsoRCin3GnVKM=";
   };
 
   propagatedBuildInputs = [
@@ -24,7 +25,9 @@ buildPythonPackage rec {
   # has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "pykodi" ];
+  pythonImportsCheck = [
+    "pykodi"
+  ];
 
   meta = with lib; {
     description = "An async python interface for Kodi over JSON-RPC";
diff --git a/nixpkgs/pkgs/development/python-modules/pykrakenapi/default.nix b/nixpkgs/pkgs/development/python-modules/pykrakenapi/default.nix
index e3620e7de6ad..6c91b0c95dc0 100644
--- a/nixpkgs/pkgs/development/python-modules/pykrakenapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pykrakenapi/default.nix
@@ -3,18 +3,17 @@
 , fetchFromGitHub
 , krakenex
 , pandas
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "pykrakenapi";
-  version = "0.2.1";
+  version = "0.2.3";
 
   src = fetchFromGitHub {
     owner = "dominiktraxl";
     repo = "pykrakenapi";
     rev = "v${version}";
-    sha256 = "0byqa4qk6a8ww1y822izpcfscv4frcfjysw6lx1pqyqjr23bfnbh";
+    sha256 = "0yvhgk5wyklwqd67hfajnd7ims79h4h89pp65xb3x5mcmdcfz4ss";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pykulersky/default.nix b/nixpkgs/pkgs/development/python-modules/pykulersky/default.nix
index 1afa50c9be3f..520f1fea2698 100644
--- a/nixpkgs/pkgs/development/python-modules/pykulersky/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pykulersky/default.nix
@@ -11,14 +11,16 @@
 
 buildPythonPackage rec {
   pname = "pykulersky";
-  version = "0.5.2";
+  version = "0.5.3";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "emlove";
     repo = pname;
     rev = version;
-    sha256 = "1fzfixnl28rny7c3wr6gcdpqhyrz7z2aqq6qfwkxnkq2kqdbpmmg";
+    sha256 = "sha256-l3obfs5zo5DqArsDml8EZ+/uzab35Jjsuzw6U1XFJ3k=";
   };
 
   propagatedBuildInputs = [
@@ -32,7 +34,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "pykulersky" ];
+  pythonImportsCheck = [
+    "pykulersky"
+  ];
 
   meta = with lib; {
     description = "Python module to control Brightech Kuler Sky Bluetooth LED devices";
diff --git a/nixpkgs/pkgs/development/python-modules/pylama/default.nix b/nixpkgs/pkgs/development/python-modules/pylama/default.nix
index 1aa96dfe464d..3f93aef0a3f7 100644
--- a/nixpkgs/pkgs/development/python-modules/pylama/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pylama/default.nix
@@ -1,34 +1,68 @@
-{ lib, buildPythonPackage, fetchPypi
-, eradicate, mccabe, pycodestyle, pydocstyle, pyflakes
-, pytest, ipdb }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, substituteAll
+, git
+, eradicate
+, mccabe
+, mypy
+, pycodestyle
+, pydocstyle
+, pyflakes
+, vulture
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "pylama";
-  version = "7.7.1";
+  version = "8.3.6";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "9bae53ef9c1a431371d6a8dca406816a60d547147b60a4934721898f553b7d8f";
+  format = "setuptools";
+
+  src = fetchFromGitHub {
+    name = "${pname}-${version}-source";
+    owner = "klen";
+    repo = "pylama";
+    rev = version;
+    hash = "sha256-KU/G+2Fm4G/dUuNhhk8xM0Y8+7YOUUgREONM8CQGugw=";
   };
 
+  patches = [
+    (substituteAll {
+      src = ./paths.patch;
+      git = "${lib.getBin git}/bin/git";
+    })
+  ];
+
   propagatedBuildInputs = [
     eradicate
     mccabe
+    mypy
     pycodestyle
     pydocstyle
     pyflakes
+    vulture
   ];
 
-  checkInputs = [ pytest ipdb ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  # tries to mess with the file system
-  doCheck = false;
+  disabledTests = [
+    "test_pylint" # infinite recursion
+    "test_quotes" # FIXME package pylama-quotes
+    "test_radon" # FIXME package radon
+    "test_sort"
+  ];
+
+  pythonImportsCheck = [
+    "pylama.main"
+  ];
 
   meta = with lib; {
     description = "Code audit tool for python";
     homepage = "https://github.com/klen/pylama";
-    # ambiguous license declarations: https://github.com/klen/pylama/issues/64
-    license = [ licenses.lgpl3 ];
+    license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pylama/paths.patch b/nixpkgs/pkgs/development/python-modules/pylama/paths.patch
new file mode 100644
index 000000000000..ab6a4719f354
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pylama/paths.patch
@@ -0,0 +1,13 @@
+diff --git a/pylama/hook.py b/pylama/hook.py
+index 029c9dc..9f1a9b9 100644
+--- a/pylama/hook.py
++++ b/pylama/hook.py
+@@ -26,7 +26,7 @@ def run(command: str) -> Tuple[int, List[bytes], List[bytes]]:
+ 
+ def git_hook(error=True):
+     """Run pylama after git commit."""
+-    _, files_modified, _ = run("git diff-index --cached --name-only HEAD")
++    _, files_modified, _ = run("@git@ diff-index --cached --name-only HEAD")
+ 
+     options = parse_options()
+     setup_logger(options)
diff --git a/nixpkgs/pkgs/development/python-modules/pylast/default.nix b/nixpkgs/pkgs/development/python-modules/pylast/default.nix
index 0306008aa785..098cdd33bfca 100644
--- a/nixpkgs/pkgs/development/python-modules/pylast/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pylast/default.nix
@@ -3,27 +3,32 @@
 , certifi
 , fetchPypi
 , flaky
+, importlib-metadata
 , pytestCheckHook
 , pythonOlder
 , setuptools-scm
-, six
 }:
 
 buildPythonPackage rec {
   pname = "pylast";
-  version = "4.3.0";
+  version = "4.4.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "71fd876e3753009bd10ea55b3f8f7c5d68591ee18a4127d257fc4a418010aa5c";
+    sha256 = "sha256-2m6+pQYBmvVxlBw1yLSAKr3kZ5WS1S0TZ1ZQ3ER+bCk=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
 
   propagatedBuildInputs = [
     certifi
-    six
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    importlib-metadata
   ];
 
   checkInputs = [
@@ -31,7 +36,9 @@ buildPythonPackage rec {
     flaky
   ];
 
-  pythonImportsCheck = [ "pylast" ];
+  pythonImportsCheck = [
+    "pylast"
+  ];
 
   meta = with lib; {
     description = "Python interface to last.fm (and compatibles)";
diff --git a/nixpkgs/pkgs/development/python-modules/pylaunches/default.nix b/nixpkgs/pkgs/development/python-modules/pylaunches/default.nix
new file mode 100644
index 000000000000..d6ad5480ddd3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pylaunches/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, aiohttp
+, aresponses
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pytest-asyncio
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pylaunches";
+  version = "1.2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "ludeeus";
+    repo = pname;
+    rev = version;
+    sha256 = "0mczxkwczyh9kva4xzpmnawy0hjha1fdrwj6igip9w5z1q48zs49";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  checkInputs = [
+    aresponses
+    pytestCheckHook
+    pytest-asyncio
+  ];
+
+  postPatch = ''
+    # Upstream doesn't set version in the repo
+    substituteInPlace setup.py \
+      --replace 'version="main",' 'version="${version}",' \
+      --replace ', "pytest-runner"' ""
+  '';
+
+  pythonImportsCheck = [
+    "pylaunches"
+  ];
+
+  meta = with lib; {
+    description = "Python module to get information about upcoming space launches";
+    homepage = "https://github.com/ludeeus/pylaunches";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pylgnetcast/default.nix b/nixpkgs/pkgs/development/python-modules/pylgnetcast/default.nix
new file mode 100644
index 000000000000..cadb4bb83839
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pylgnetcast/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, requests
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pylgnetcast";
+  version = "0.3.5";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "Drafteed";
+    repo = "python-lgnetcast";
+    rev = "v${version}";
+    sha256 = "11g7ya4ppqxjiv3fkz9mi6h1afw9icy6xyn4jzm63kjvxqhrwnw4";
+  };
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pylgnetcast"
+  ];
+
+  meta = with lib; {
+    description = "Python API client for the LG Smart TV running NetCast 3 or 4";
+    homepage = "https://github.com/Drafteed/python-lgnetcast";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pylibacl/0.5.nix b/nixpkgs/pkgs/development/python-modules/pylibacl/0.5.nix
deleted file mode 100644
index 284a795b4c22..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pylibacl/0.5.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pkgs
-}:
-
-buildPythonPackage rec {
-  pname = "pylibacl";
-  version = "0.5.4";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0drvxb21y7p0aikcv3jx90vdcjk96kibf9x8qgxic2prxxd3f3q6";
-  };
-
-  # ERROR: testExtended (tests.test_acls.AclExtensions)
-  # IOError: [Errno 0] Error
-  doCheck = false;
-
-  buildInputs = with pkgs; [ acl ];
-
-  meta = {
-    description = "A Python extension module for POSIX ACLs, it can be used to query, list, add, and remove ACLs from files and directories under operating systems that support them";
-    license = lib.licenses.lgpl21Plus;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pylint-django/default.nix b/nixpkgs/pkgs/development/python-modules/pylint-django/default.nix
index 701163bb3d0c..c93c8d4207fe 100644
--- a/nixpkgs/pkgs/development/python-modules/pylint-django/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pylint-django/default.nix
@@ -1,16 +1,12 @@
-{ buildPythonPackage
+{ lib
+, buildPythonPackage
+, coverage
+, django
+, factory_boy
 , fetchFromGitHub
 , isPy3k
-, lib
-
-# pythonPackages
-, django
 , pylint-plugin-utils
-
-# pythonPackages for checkInputs
-, coverage
-, factory_boy
-, pytest
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
@@ -30,17 +26,26 @@ buildPythonPackage rec {
     pylint-plugin-utils
   ];
 
-  checkInputs = [ coverage factory_boy pytest ];
+  checkInputs = [
+    coverage
+    factory_boy
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Skip outdated tests and the one with a missing dependency (django_tables2)
+    "external_django_tables2_noerror_meta_class"
+    "external_factory_boy_noerror"
+    "func_noerror_foreign_key_attributes"
+    "func_noerror_foreign_key_key_cls_unbound"
+  ];
 
-  # Check command taken from scripts/test.sh
-  # Skip test external_django_tables2_noerror_meta_class:
-  # requires an unpackaged django_tables2
-  checkPhase = ''
-      python pylint_django/tests/test_func.py -v -k "not tables2"
-  '';
+  pythonImportsCheck = [
+    "pylint_django"
+  ];
 
   meta = with lib; {
-    description = "A Pylint plugin to analyze Django applications";
+    description = "Pylint plugin to analyze Django applications";
     homepage = "https://github.com/PyCQA/pylint-django";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ kamadorueda ];
diff --git a/nixpkgs/pkgs/development/python-modules/pylint/1.9.nix b/nixpkgs/pkgs/development/python-modules/pylint/1.9.nix
deleted file mode 100644
index 5dbb3d6750f8..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pylint/1.9.nix
+++ /dev/null
@@ -1,51 +0,0 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi, astroid, six, isort,
-  mccabe, configparser, backports_functools_lru_cache, singledispatch,
-  pytest, pytest-runner, setuptools }:
-
-buildPythonPackage rec {
-  pname = "pylint";
-  version = "1.9.5";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "004kfapkqxqy2s85pmddqv0fabxdxywxrlbi549p0v237pr2v94p";
-  };
-
-  checkInputs = [ pytest pytest-runner ];
-
-  propagatedBuildInputs = [ astroid six isort mccabe configparser backports_functools_lru_cache singledispatch setuptools ];
-
-  postPatch = lib.optionalString stdenv.isDarwin ''
-    # Remove broken darwin test
-    rm -vf pylint/test/test_functional.py
-  '';
-
-  checkPhase = ''
-    pytest pylint/test -k "not ${lib.concatStringsSep " and not " (
-      [ # Broken test
-        "test_good_comprehension_checks"
-        # requires setuptools
-        "test_pkginfo"
-        # See PyCQA/pylint#2535
-        "test_libmodule" ] ++
-      # Disable broken darwin tests
-      lib.optionals stdenv.isDarwin [
-        "test_parallel_execution"
-        "test_py3k_jobs_option"
-      ]
-    )}"
-  '';
-
-  postInstall = ''
-    mkdir -p $out/share/emacs/site-lisp
-    cp "elisp/"*.el $out/share/emacs/site-lisp/
-  '';
-
-  meta = with lib; {
-    homepage = "https://github.com/PyCQA/pylint";
-    description = "A bug and style checker for Python";
-    platforms = platforms.all;
-    license = licenses.gpl1Plus;
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pylint/default.nix b/nixpkgs/pkgs/development/python-modules/pylint/default.nix
index 2e4953ec7b9b..b52cb3e2f95c 100644
--- a/nixpkgs/pkgs/development/python-modules/pylint/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pylint/default.nix
@@ -6,6 +6,7 @@
 , installShellFiles
 , astroid
 , isort
+, GitPython
 , mccabe
 , platformdirs
 , toml
@@ -16,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "pylint";
-  version = "2.10.2";
+  version = "2.12.2";
 
   disabled = pythonOlder "3.6";
 
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "PyCQA";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-hkrkgUdC5LO1oSPFL6gvIk0zFpMw45gCmnoRbdPZuRs=";
+    sha256 = "sha256-seBYBTB+8PLIovqxVohkoQEfDAZI1fehLgXuHeTx9Wo=";
   };
 
   nativeBuildInputs = [
@@ -46,6 +47,7 @@ buildPythonPackage rec {
   '';
 
   checkInputs = [
+    GitPython
     pytest-benchmark
     pytest-xdist
     pytestCheckHook
@@ -56,6 +58,7 @@ buildPythonPackage rec {
   # calls executable in one of the tests
   preCheck = ''
     export PATH=$PATH:$out/bin
+    export HOME=$TEMPDIR
   '';
 
   pytestFlagsArray = [
diff --git a/nixpkgs/pkgs/development/python-modules/pylitterbot/default.nix b/nixpkgs/pkgs/development/python-modules/pylitterbot/default.nix
index ac4531328fcf..be6d71aed5d3 100644
--- a/nixpkgs/pkgs/development/python-modules/pylitterbot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pylitterbot/default.nix
@@ -11,14 +11,16 @@
 
 buildPythonPackage rec {
   pname = "pylitterbot";
-  version = "2021.9.0";
+  version = "2021.11.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "natekspencer";
     repo = pname;
     rev = version;
-    sha256 = "sha256-S25x9k6vBwnmJq15y5PVUWaTujT9UNHvgIX9uH+N8dY=";
+    sha256 = "sha256-HdIxi6RfdXBYEYFEcv/f9wAqKZg/MsEZd6mDYwE45to=";
   };
 
   propagatedBuildInputs = [
@@ -32,7 +34,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "pylitterbot" ];
+  pythonImportsCheck = [
+    "pylitterbot"
+  ];
 
   meta = with lib; {
     description = "Python package for controlling a Litter-Robot";
diff --git a/nixpkgs/pkgs/development/python-modules/pylsp-mypy/default.nix b/nixpkgs/pkgs/development/python-modules/pylsp-mypy/default.nix
index a7d13bb32a2f..e1d7ddff298d 100644
--- a/nixpkgs/pkgs/development/python-modules/pylsp-mypy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pylsp-mypy/default.nix
@@ -20,10 +20,16 @@ buildPythonPackage rec {
     sha256 = "1d119csj1k5m9j0f7wdvpvnd02h548css6ybxqah92nk2v0rjscr";
   };
 
+  disabledTests = [
+    "test_multiple_workspaces"
+  ];
+
   checkInputs = [ pytestCheckHook mock ];
 
   propagatedBuildInputs = [ mypy python-lsp-server ];
 
+  pythonImportsCheck = [ "pylsp_mypy" ];
+
   meta = with lib; {
     homepage = "https://github.com/Richardk2n/pylsp-mypy";
     description = "Mypy plugin for the Python LSP Server";
diff --git a/nixpkgs/pkgs/development/python-modules/pylutron-caseta/default.nix b/nixpkgs/pkgs/development/python-modules/pylutron-caseta/default.nix
index f71f2f4d52ae..c9cc9246746f 100644
--- a/nixpkgs/pkgs/development/python-modules/pylutron-caseta/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pylutron-caseta/default.nix
@@ -11,14 +11,16 @@
 
 buildPythonPackage rec {
   pname = "pylutron-caseta";
-  version = "0.11.0";
-  disabled = pythonOlder "3.5";
+  version = "0.13.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "gurumitts";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-2w8kRSZK9Bq3O6r6i0CJgxEXGo8KsWah9bMLlDNzMGk=";
+    sha256 = "sha256-pVBFlGguVN6b3YY2lFF8KG83tBuotLmWLq/dKjRKAUQ=";
   };
 
   propagatedBuildInputs = [
@@ -32,7 +34,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "pylutron_caseta" ];
+  pythonImportsCheck = [
+    "pylutron_caseta"
+  ];
 
   meta = with lib; {
     description = "Python module o control Lutron Caseta devices";
diff --git a/nixpkgs/pkgs/development/python-modules/pymarshal/default.nix b/nixpkgs/pkgs/development/python-modules/pymarshal/default.nix
new file mode 100644
index 000000000000..0da93a6d8a43
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymarshal/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, bson
+, pytest
+, pytest-cov
+, pytest-runner
+, pytestCheckHook
+, pyyaml
+, setuptools
+}:
+
+buildPythonPackage rec {
+  pname = "pymarshal";
+  version = "2.2.0";
+  disabled = pythonOlder "3.0";
+
+  src = fetchFromGitHub {
+    owner = "stargateaudio";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-Ds8JV2mtLRcKXBvPs84Hdj3MxxqpeV5muKCSlAFCj1A=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+    pytest-runner
+  ];
+
+  propagatedBuildInputs = [
+    bson
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    bson
+    pytest
+    pytest-cov
+    pyyaml
+  ];
+
+  pytestFlagsArray = [ "test" ];
+
+  meta = {
+    description = "Python data serialization library";
+    homepage = "https://github.com/stargateaudio/pymarshal";
+    maintainers = with lib.maintainers; [ yuu ];
+    license = lib.licenses.bsd2;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymatgen/default.nix b/nixpkgs/pkgs/development/python-modules/pymatgen/default.nix
index 56e436e96d2c..5354efacb4dc 100644
--- a/nixpkgs/pkgs/development/python-modules/pymatgen/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymatgen/default.nix
@@ -10,7 +10,7 @@
 , plotly
 , pydispatcher
 , requests
-, ruamel_yaml
+, ruamel-yaml
 , scipy
 , six
 , spglib
@@ -21,11 +21,11 @@
 
 buildPythonPackage rec {
   pname = "pymatgen";
-  version = "2022.0.12";
+  version = "2022.0.17";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bad712c883a12d774a8a58c35abc5d582c5e5eafdbb5351dc06ebe98c28bd135";
+    sha256 = "7103b89b889bb940709eea53226d3c9298584ad9ab42ab8c8f9de3872d7d969b";
   };
 
   nativeBuildInputs = [ glibcLocales ];
@@ -41,7 +41,7 @@ buildPythonPackage rec {
     plotly
     pydispatcher
     requests
-    ruamel_yaml
+    ruamel-yaml
     scipy
     six
     spglib
diff --git a/nixpkgs/pkgs/development/python-modules/pymavlink/default.nix b/nixpkgs/pkgs/development/python-modules/pymavlink/default.nix
index 50dc87a926f2..8e7439a80d48 100644
--- a/nixpkgs/pkgs/development/python-modules/pymavlink/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymavlink/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pymavlink";
-  version = "2.4.17";
+  version = "2.4.19";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "84e2af4d8099afd37c5d887261a168e7bde4ec2354f12f65c72dad1a4cd8f21d";
+    sha256 = "08ppwlsnrvzkpi4fn14d4d4grzx2bmsd0m9369q3f9hw48fgf645";
   };
 
   propagatedBuildInputs = [ future lxml ];
diff --git a/nixpkgs/pkgs/development/python-modules/pymazda/default.nix b/nixpkgs/pkgs/development/python-modules/pymazda/default.nix
index 3065fbc14587..f6fdd60a3872 100644
--- a/nixpkgs/pkgs/development/python-modules/pymazda/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymazda/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "pymazda";
-  version = "0.2.1";
+  version = "0.3.0";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-Dg7oVNEjKZB6zksm1We2JGBW+cGkOOQOP3bS4CNL4q8=";
+    sha256 = "sha256-D0odz4GkKvjuafhEGlHtRnO8lk4rV9y3imaHl7jXqJw=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pymelcloud/default.nix b/nixpkgs/pkgs/development/python-modules/pymelcloud/default.nix
new file mode 100644
index 000000000000..d747af697bcc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pymelcloud/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, aiohttp
+, asynctest
+, buildPythonPackage
+, fetchFromGitHub
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pymelcloud";
+  version = "2.5.6";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "vilppuvuorinen";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-QXOL3MftNibo1wUjz/KTQLNDk7pWL9VH/wd7LpEJOmE=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  checkInputs = [
+    asynctest
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "pymelcloud"
+  ];
+
+  meta = with lib; {
+    description = "Python module for interacting with MELCloud";
+    homepage = "https://github.com/vilppuvuorinen/pymelcloud";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pymetno/default.nix b/nixpkgs/pkgs/development/python-modules/pymetno/default.nix
index 0115893700ac..f3dcdf6c45a7 100644
--- a/nixpkgs/pkgs/development/python-modules/pymetno/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymetno/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "pymetno";
-  version = "0.8.3";
+  version = "0.9.0";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "Danielhiversen";
     repo = "PyMetno";
     rev = version;
-    sha256 = "sha256-dvZz+wv9B07yKM4E4fQ9VQOgeil9KxZxcGk6D0kWY4g=";
+    sha256 = "sha256-2LNDFQObGqxrzswnqbmvCGLxEI0j+cIdv8o+RZM/7sM=";
   };
 
   propagatedBuildInputs = [
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     "metno"
   ];
 
-  # no tests
+  # Project has no tests
   doCheck = false;
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/pymongo/default.nix b/nixpkgs/pkgs/development/python-modules/pymongo/default.nix
index 0d18175d7e6d..6b627ca672ff 100644
--- a/nixpkgs/pkgs/development/python-modules/pymongo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymongo/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "pymongo";
-  version = "3.12.0";
+  version = "3.12.1";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-uI0XQhWbyToHhzP5eJ9WPO8m9eNw66gQR2pxqpjl+8I=";
+    sha256 = "704879b6a54c45ad76cea7c6789c1ae7185050acea7afd15b58318fa1932ed45";
   };
 
   # Tests call a running mongodb instance
diff --git a/nixpkgs/pkgs/development/python-modules/pympler/default.nix b/nixpkgs/pkgs/development/python-modules/pympler/default.nix
index 856458bf043f..4f132ad2c827 100644
--- a/nixpkgs/pkgs/development/python-modules/pympler/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pympler/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "Pympler";
-  version = "0.9";
+  version = "1.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f2cbe7df622117af890249f2dea884eb702108a12d729d264b7c5983a6e06e47";
+    sha256 = "993f1a3599ca3f4fcd7160c7545ad06310c9e12f70174ae7ae8d4e25f6c5d3fa";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pymsgbox/default.nix b/nixpkgs/pkgs/development/python-modules/pymsgbox/default.nix
index 84ab3dcab1bf..760a339b90af 100644
--- a/nixpkgs/pkgs/development/python-modules/pymsgbox/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymsgbox/default.nix
@@ -2,18 +2,18 @@
 
 buildPythonPackage rec {
   pname = "PyMsgBox";
-  version = "1.0.6";
+  version = "1.0.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0kmd00w7p6maiyqpqqb2j8m6v2gh9c0h5i198pa02bc1c1m1321q";
-    extension = "zip";
+    sha256 = "sha256-IZQifei/96PW2lQYSHBaFV3LsqBu4SDZ8oCh1/USY/8=";
   };
 
   propagatedBuildInputs = [ tkinter ];
 
   # Finding tests fails
   doCheck = false;
+  pythonImportsCheck = [ "pymsgbox" ];
 
   meta = with lib; {
     description = "A simple, cross-platform, pure Python module for JavaScript-like message boxes";
diff --git a/nixpkgs/pkgs/development/python-modules/pymumble/default.nix b/nixpkgs/pkgs/development/python-modules/pymumble/default.nix
index d708f5f229b5..35cbbc31bb02 100644
--- a/nixpkgs/pkgs/development/python-modules/pymumble/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymumble/default.nix
@@ -1,6 +1,5 @@
 { buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , isPy27
 , lib
 , opuslib
diff --git a/nixpkgs/pkgs/development/python-modules/pymunk/default.nix b/nixpkgs/pkgs/development/python-modules/pymunk/default.nix
index 4d8dbee2c2e7..c98fb6dddcf8 100644
--- a/nixpkgs/pkgs/development/python-modules/pymunk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymunk/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "pymunk";
-  version = "6.2.0";
+  version = "6.2.1";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "1r3jfjg4cpdilrmlyml514hqmjgabyrrs4cvmdr56rylg1sp4gf3";
+    sha256 = "18ae0f83ec2dc20892b98c84127ce9149ab40fa3c3120097377e1506884b27b8";
   };
 
   propagatedBuildInputs = [ cffi ];
diff --git a/nixpkgs/pkgs/development/python-modules/pymysensors/default.nix b/nixpkgs/pkgs/development/python-modules/pymysensors/default.nix
index 24d7d4c28266..9506e1504836 100644
--- a/nixpkgs/pkgs/development/python-modules/pymysensors/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymysensors/default.nix
@@ -17,14 +17,16 @@
 
 buildPythonPackage rec {
   pname = "pymysensors";
-  version = "0.21.0";
+  version = "0.22.1";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "theolind";
     repo = pname;
     rev = version;
-    sha256 = "1k75gwvyzslyjr3cdx8b74fb302k2i7bda4q92rb75rhgp4gch55";
+    sha256 = "sha256-n4khOQspJBeq0w+epdXYZh6I1lI1drB1JewZ6GfzVHs=";
   };
 
   propagatedBuildInputs = [
@@ -44,7 +46,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "mysensors" ];
+  pythonImportsCheck = [
+    "mysensors"
+  ];
 
   meta = with lib; {
     description = "Python API for talking to a MySensors gateway";
diff --git a/nixpkgs/pkgs/development/python-modules/pynacl/default.nix b/nixpkgs/pkgs/development/python-modules/pynacl/default.nix
index 8c5c239aeb41..91a197e7cf66 100644
--- a/nixpkgs/pkgs/development/python-modules/pynacl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pynacl/default.nix
@@ -6,6 +6,7 @@
 , libsodium
 , cffi
 , hypothesis
+, stdenv
 , six
 }:
 
@@ -29,6 +30,7 @@ buildPythonPackage rec {
   ];
 
   propagatedBuildInputs = [
+    cffi
     six
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/pynest2d/default.nix b/nixpkgs/pkgs/development/python-modules/pynest2d/default.nix
index 5d6a006634e2..9be7072a89fb 100644
--- a/nixpkgs/pkgs/development/python-modules/pynest2d/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pynest2d/default.nix
@@ -1,8 +1,8 @@
 { lib, buildPythonPackage, fetchFromGitHub, python3, cmake
-, pythonOlder, libnest2d, sip_4, clipper }:
+, libnest2d, sip_4, clipper }:
 
 buildPythonPackage rec {
-  version = "4.10.0";
+  version = "4.12.0";
   pname = "pynest2d";
   format = "other";
 
@@ -10,7 +10,7 @@ buildPythonPackage rec {
     owner = "Ultimaker";
     repo = "pynest2d";
     rev = version;
-    sha256 = "03aj0whxj9rs9nz3idld7w4vpmnr6vr40vpwmzcf5w2pi2n4z4lk";
+    sha256 = "sha256-QQdTDhO4i9NVhegGTmdEQSNv3gooaZzTX/Rv86h3GEo=";
   };
 
   propagatedBuildInputs = [ libnest2d sip_4 clipper ];
diff --git a/nixpkgs/pkgs/development/python-modules/pynetbox/default.nix b/nixpkgs/pkgs/development/python-modules/pynetbox/default.nix
index e6759e736a94..eeb6ad017984 100644
--- a/nixpkgs/pkgs/development/python-modules/pynetbox/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pynetbox/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "pynetbox";
-  version = "6.1.3";
+  version = "6.4.1";
 
   src = fetchFromGitHub {
     owner = "netbox-community";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-ALDNnKgnOjYladDRVothjm3/2Jv1eNxR2wSS+ZL/Fqk=";
+    sha256 = "08k2zxfz23gzbk49r3hmh6r3m5rgx1gk7w83qxi1v4gbm4wr0v9m";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
diff --git a/nixpkgs/pkgs/development/python-modules/pynetdicom/default.nix b/nixpkgs/pkgs/development/python-modules/pynetdicom/default.nix
index bd27ff7fde6c..3afa8fcf8651 100644
--- a/nixpkgs/pkgs/development/python-modules/pynetdicom/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pynetdicom/default.nix
@@ -6,17 +6,21 @@
 , pyfakefs
 , pytestCheckHook
 , sqlalchemy
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pynetdicom";
-  version = "1.5.7";
+  version = "2.0.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "pydicom";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0wr6nh0xrhzwf05gnf3dwg5r3lhn9nfwch3l16zkbj6fli871brc";
+    sha256 = "sha256-28SoOdS6sAj3KrfJT8PR2k8XLEY2zh0k9w1eq1y7V8M=";
   };
 
   propagatedBuildInputs = [
@@ -33,6 +37,7 @@ buildPythonPackage rec {
     # Some tests needs network capabilities
     "test_str_types_empty"
     "test_associate_reject"
+    "TestAEGoodAssociation"
     "TestEchoSCP"
     "TestEchoSCPCLI"
     "TestFindSCP"
@@ -50,7 +55,9 @@ buildPythonPackage rec {
     "TestState"
   ];
 
-  pythonImportsCheck = [ "pynetdicom" ];
+  pythonImportsCheck = [
+    "pynetdicom"
+  ];
 
   meta = with lib; {
     description = "Python implementation of the DICOM networking protocol";
diff --git a/nixpkgs/pkgs/development/python-modules/pynina/default.nix b/nixpkgs/pkgs/development/python-modules/pynina/default.nix
new file mode 100644
index 000000000000..b9e026886c86
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pynina/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitLab
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pynina";
+  version = "unstable-2021-11-11";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitLab {
+    owner = "DeerMaximum";
+    repo = pname;
+    rev = "0ac42b28d48af7bcd9c83f5d425b5b23c4c19f02";
+    sha256 = "FSrFCs/4tfYcSPz9cgR+LFsRbWIHE1X+ZUl8BWSEaWQ=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pynina"
+  ];
+
+  meta = with lib; {
+    description = "Python API wrapper to retrieve warnings from the german NINA app";
+    homepage = "https://gitlab.com/DeerMaximum/pynina";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pynput/default.nix b/nixpkgs/pkgs/development/python-modules/pynput/default.nix
index a700a7d1fd6d..87e769a9f922 100644
--- a/nixpkgs/pkgs/development/python-modules/pynput/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pynput/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pynput";
-  version = "1.7.4";
+  version = "1.7.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "16fecc4d1e53a28fb7c669c79e189c3f2cde14a08d6b457c3da07075c82f3b4c";
+    sha256 = "3a5726546da54116b687785d38b1db56997ce1d28e53e8d22fc656d8b92e533c";
   };
 
   nativeBuildInputs = [ sphinx ];
diff --git a/nixpkgs/pkgs/development/python-modules/pynrrd/default.nix b/nixpkgs/pkgs/development/python-modules/pynrrd/default.nix
index 7a136176cf64..641cd6bd1280 100644
--- a/nixpkgs/pkgs/development/python-modules/pynrrd/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pynrrd/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchFromGitHub
 , numpy
-, pytest
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/pynvim/default.nix b/nixpkgs/pkgs/development/python-modules/pynvim/default.nix
index 67079a8c1d26..6ae98eff28d3 100644
--- a/nixpkgs/pkgs/development/python-modules/pynvim/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pynvim/default.nix
@@ -1,7 +1,6 @@
 { buildPythonPackage
 , fetchPypi
 , lib
-, nose
 , msgpack
 , greenlet
 , pythonOlder
diff --git a/nixpkgs/pkgs/development/python-modules/pynvml/default.nix b/nixpkgs/pkgs/development/python-modules/pynvml/default.nix
index 59698fa18767..63d445e0923f 100644
--- a/nixpkgs/pkgs/development/python-modules/pynvml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pynvml/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "pynvml";
-  version = "11.0.0";
+  version = "11.4.1";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-1fxKItNVtAw0HWugqoiKLU0iUxd9JDkA+EAbfmyssbs=";
+    sha256 = "b2e4a33b80569d093b513f5804db0c7f40cfc86f15a013ae7a8e99c5e175d5dd";
   };
 
   propagatedBuildInputs = [ cudatoolkit ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyobjc/default.nix b/nixpkgs/pkgs/development/python-modules/pyobjc/default.nix
deleted file mode 100644
index 6aa0d733049d..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pyobjc/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ lib, fetchPypi, isPy3k, buildPythonPackage }:
-
-buildPythonPackage rec {
-  pname = "pyobjc";
-  version = "7.3";
-
-  # Gives "No matching distribution found for
-  # pyobjc-framework-Collaboration==4.0b1 (from pyobjc==4.0b1)"
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "322b07420f91b2dd7f624823e53046b922cab4aad28baab01a62463728b7e0c5";
-  };
-
-  meta = with lib; {
-    description = "A bridge between the Python and Objective-C programming languages";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
-    homepage = "https://pythonhosted.org/pyobjc/";
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pyocr/default.nix b/nixpkgs/pkgs/development/python-modules/pyocr/default.nix
index df20d3bb6c47..b8f9564a4ffe 100644
--- a/nixpkgs/pkgs/development/python-modules/pyocr/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyocr/default.nix
@@ -9,7 +9,6 @@
 , isPy3k
 , substituteAll
 , pytestCheckHook
-, tox
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/pyoctoprintapi/default.nix b/nixpkgs/pkgs/development/python-modules/pyoctoprintapi/default.nix
new file mode 100644
index 000000000000..323d2c092f8d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyoctoprintapi/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+
+# propagated
+, aiohttp
+
+# tests
+, pytest-asyncio
+, pytestCheckHook
+}:
+
+let
+  pname = "pyoctoprintapi";
+  version = "0.1.7";
+in
+buildPythonPackage {
+  inherit pname version;
+  format = "setuptools";
+
+  src = fetchFromGitHub {
+    owner = "rfleming71";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-XAMHQ7n03e10hFcPIUqyCDlRk2uO8dX8Iq0mdY7wRGE=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  pythonImportsCheck = [
+    "pyoctoprintapi"
+  ];
+
+  checkInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    description = "Simple async wrapper around the Octoprint API";
+    homepage = "https://github.com/rfleming71/pyoctoprintapi";
+    license = licenses.mit;
+    maintainers= with maintainers; [ hexa ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyopencl/default.nix b/nixpkgs/pkgs/development/python-modules/pyopencl/default.nix
index c19e571a9cc8..d657efd707f8 100644
--- a/nixpkgs/pkgs/development/python-modules/pyopencl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyopencl/default.nix
@@ -21,7 +21,7 @@ let
     if stdenv.isDarwin then [ mesa_drivers.dev ] else [ ocl-icd ];
 in buildPythonPackage rec {
   pname = "pyopencl";
-  version = "2021.2.8";
+  version = "2021.2.10";
 
   checkInputs = [ pytest ];
   buildInputs = [ opencl-headers pybind11 ] ++ os-specific-buildInputs;
@@ -30,7 +30,7 @@ in buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "15809b5d2b9a86ad01e31d176c00415436805ac884c4d197d9263bfe98280d76";
+    sha256 = "75a1f202741bace9606a8680bbbfac69bf8a73d4e7511fb1a6ce3e48185996ae";
   };
 
   # py.test is not needed during runtime, so remove it from `install_requires`
diff --git a/nixpkgs/pkgs/development/python-modules/pyopenssl/default.nix b/nixpkgs/pkgs/development/python-modules/pyopenssl/default.nix
index 6bc8c04ec30c..688731033a98 100644
--- a/nixpkgs/pkgs/development/python-modules/pyopenssl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyopenssl/default.nix
@@ -11,7 +11,6 @@
 , flaky
 , glibcLocales
 , six
-, fetchpatch
 }:
 
 let
diff --git a/nixpkgs/pkgs/development/python-modules/pyopenuv/default.nix b/nixpkgs/pkgs/development/python-modules/pyopenuv/default.nix
index f30f3758f31b..e5d7f8d0b940 100644
--- a/nixpkgs/pkgs/development/python-modules/pyopenuv/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyopenuv/default.nix
@@ -8,23 +8,27 @@
 , poetry-core
 , pytest-aiohttp
 , pytest-asyncio
-, pytest-cov
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pyopenuv";
-  version = "2.2.1";
+  version = "2021.11.0";
   format = "pyproject";
 
+  disabled = pythonOlder "3.6";
+
   src = fetchFromGitHub {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "sha256-9hpXVKCpVbUAoTxd5mHP9NK1dZxbrQUxrQrOEVHpaPo=";
+    sha256 = "sha256-J0YIq00/GcWEL23UHmN98Jp/imOAz8NLzhMdk8WFozk=";
   };
 
-  nativeBuildInputs = [ poetry-core ];
+  nativeBuildInputs = [
+    poetry-core
+  ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -36,13 +40,17 @@ buildPythonPackage rec {
     asynctest
     pytest-asyncio
     pytest-aiohttp
-    pytest-cov
     pytestCheckHook
   ];
 
-  # Ignore the examples as they are prefixed with test_
-  pytestFlagsArray = [ "--ignore examples/" ];
-  pythonImportsCheck = [ "pyopenuv" ];
+  disabledTestPaths = [
+    # Ignore the examples as they are prefixed with test_
+    "examples/"
+  ];
+
+  pythonImportsCheck = [
+    "pyopenuv"
+  ];
 
   meta = with lib; {
     description = "Python API to retrieve data from openuv.io";
diff --git a/nixpkgs/pkgs/development/python-modules/pyp/default.nix b/nixpkgs/pkgs/development/python-modules/pyp/default.nix
index 4ef79bc90716..1eeeb83a9dce 100644
--- a/nixpkgs/pkgs/development/python-modules/pyp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyp/default.nix
@@ -11,13 +11,16 @@
 
 buildPythonPackage rec {
   pname = "pyp";
-  version = "0.3.4";
+  version = "1.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "hauntsaninja";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-K9dGmvy4siurmhqwNfg1dT0TWc6tCSaxfPyaJkYM2Vw=";
+    sha256 = "09k7y77h7g4dg0x6lg9pn2ga9z7xiy4vlj15fj0991ffsi4ydqgm";
   };
 
   propagatedBuildInputs = lib.optionals (pythonOlder "3.9") [
@@ -27,6 +30,7 @@ buildPythonPackage rec {
   preCheck = ''
     export PATH=$out/bin:$PATH
   '';
+
   checkInputs = [
     pytestCheckHook
     coreutils
@@ -34,8 +38,12 @@ buildPythonPackage rec {
     bc
   ];
 
+  pythonImportsCheck = [
+    "pyp"
+  ];
+
   meta = with lib; {
-    description = "Easily run Python at the shell! Magical, but never mysterious.";
+    description = "Easily run Python at the shell! Magical, but never mysterious";
     homepage = "https://github.com/hauntsaninja/pyp";
     license = licenses.mit;
     maintainers = with maintainers; [ rmcgibbo ];
diff --git a/nixpkgs/pkgs/development/python-modules/pypandoc/default.nix b/nixpkgs/pkgs/development/python-modules/pypandoc/default.nix
index ecb87d951b31..cd7a322a2aef 100644
--- a/nixpkgs/pkgs/development/python-modules/pypandoc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pypandoc/default.nix
@@ -1,16 +1,14 @@
-{ lib, substituteAll, buildPythonPackage, fetchFromGitHub
+{ lib, substituteAll, buildPythonPackage, fetchPypi
 , pandoc, texlive
 }:
 
 buildPythonPackage rec {
   pname = "pypandoc";
-  version = "1.6.4";
+  version = "1.7.2";
 
-  src = fetchFromGitHub {
-    owner = "NicklasTegner";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "0rssjig3nwdi4qvsjq7v7k8jyv6l9szfl5dp1a8s54c4j4dw37nh";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1wk8jxnysb7sa55zhxx5brylv00ivamqbk1b4lbzi58ziij08p03";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/pypdf/default.nix b/nixpkgs/pkgs/development/python-modules/pypdf/default.nix
deleted file mode 100644
index 1244f374b44c..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pypdf/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "pyPdf";
-  version = "1.13";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "3aede4c3c9c6ad07c98f059f90db0b09ed383f7c791c46100f649e1cabda0e3b";
-  };
-
-  # Not supported. Package is no longer maintained.
-  disabled = isPy3k;
-
-  meta = with lib; {
-    description = "Pure-Python PDF toolkit";
-    homepage = "http://pybrary.net/pyPdf/";
-    license = licenses.bsd3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pyperclip/default.nix b/nixpkgs/pkgs/development/python-modules/pyperclip/default.nix
index c04cc9eec346..127301752d65 100644
--- a/nixpkgs/pkgs/development/python-modules/pyperclip/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyperclip/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, stdenv
+, python
+}:
 
 buildPythonPackage rec {
   version = "1.8.2";
@@ -9,11 +14,19 @@ buildPythonPackage rec {
     sha256 = "105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57";
   };
 
-  doCheck = false;
+  # No such file or directory: 'pbcopy'
+  doCheck = !stdenv.isDarwin;
+
+  checkPhase = ''
+    ${python.interpreter} tests/test_pyperclip.py
+  '';
+
+  pythonImportsCheck = [ "pyperclip" ];
 
   meta = with lib; {
     homepage = "https://github.com/asweigart/pyperclip";
-    license = licenses.bsdOriginal;
+    license = licenses.bsd3;
     description = "Cross-platform clipboard module";
+    maintainers = with maintainers; [ dotlambda ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pyperf/default.nix b/nixpkgs/pkgs/development/python-modules/pyperf/default.nix
index f4239fb92252..40a77fc0c7bd 100644
--- a/nixpkgs/pkgs/development/python-modules/pyperf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyperf/default.nix
@@ -15,11 +15,11 @@
 
 buildPythonPackage rec {
   pname = "pyperf";
-  version = "2.2.0";
+  version = "2.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "498bb4d1fe21350c2b7c1aa8bb3eae9c9979358d0b66327954bc66839fcba8b6";
+    sha256 = "8a85dd42e067131d5b26b71472336da7f7f4b87ff9c97350d89f5ff0de9adedc";
   };
 
   checkInputs = [ nose psutil ] ++
diff --git a/nixpkgs/pkgs/development/python-modules/pypinyin/default.nix b/nixpkgs/pkgs/development/python-modules/pypinyin/default.nix
index 47e41434c469..4cac927341de 100644
--- a/nixpkgs/pkgs/development/python-modules/pypinyin/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pypinyin/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "pypinyin";
-  version = "0.43.0";
+  version = "0.44.0";
 
   src = fetchFromGitHub {
     owner = "mozillazg";
     repo = "python-pinyin";
     rev = "v${version}";
-    sha256 = "0h3lpb8bw9zp8is5sx2zg931wz12x0zfan1kksnbhx16vwv1kgw3";
+    sha256 = "sha256-LYiiZvpM/V3QRyTUXGWGnSnR0AnqWfTW0xJB4Vnw7lI=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pypoint/default.nix b/nixpkgs/pkgs/development/python-modules/pypoint/default.nix
index b3b9107c6e0b..9980d2384f9a 100644
--- a/nixpkgs/pkgs/development/python-modules/pypoint/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pypoint/default.nix
@@ -7,13 +7,14 @@
 
 buildPythonPackage rec {
   pname = "pypoint";
-  version = "2.2.0";
+  version = "2.2.1";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "fredrike";
     repo = "pypoint";
     rev = "v${version}";
-    sha256 = "sha256-2PKZtn+l93de4/gPPM2Wdt04Zw+ekDadwNgL6ZKTqhY=";
+    sha256 = "sha256-Or7A/Br6BgiCF6OHRtN5TAt++Tu1RLS9mYRgD7Aljts=";
   };
 
   propagatedBuildInputs = [
@@ -24,10 +25,12 @@ buildPythonPackage rec {
   # upstream has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "pypoint" ];
+  pythonImportsCheck = [
+    "pypoint"
+  ];
 
   meta = with lib; {
-    description = "API for Minut Point";
+    description = "Python module for communicating with Minut Point";
     homepage = "https://github.com/fredrike/pypoint";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/nixpkgs/pkgs/development/python-modules/pypoolstation/default.nix b/nixpkgs/pkgs/development/python-modules/pypoolstation/default.nix
index b49599cfda10..f1fc1e94e51c 100644
--- a/nixpkgs/pkgs/development/python-modules/pypoolstation/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pypoolstation/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "pypoolstation";
-  version = "0.4.0";
+  version = "0.4.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -16,7 +16,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "PyPoolstation";
     inherit version;
-    sha256 = "0qacrjv3qybgx052i8jqs4il3k2g0cdhjcn2lqapv87iqyp287k0";
+    sha256 = "sha256-GsEYlaoitHS2cOBHtgwhlREcps4q2ObnWywvCSak0NY=";
   };
 
   nativeBuildInputs = [
@@ -30,7 +30,9 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "pypoolstation" ];
+  pythonImportsCheck = [
+    "pypoolstation"
+  ];
 
   meta = with lib; {
     description = "Python library to interact the the Poolstation platform";
diff --git a/nixpkgs/pkgs/development/python-modules/pypoppler/default.nix b/nixpkgs/pkgs/development/python-modules/pypoppler/default.nix
deleted file mode 100644
index d325c170dc64..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pypoppler/default.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, pycairo
-, pygobject2
-, pkgs
-}:
-
-buildPythonPackage rec {
-  pname = "pypoppler";
-  version = "0.12.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "47e6ac99e5b114b9abf2d1dd1bca06f22c028d025432512989f659142470810f";
-  };
-
-  NIX_CFLAGS_COMPILE="-I${pkgs.poppler.dev}/include/poppler/";
-  nativeBuildInputs = [ pkgs.pkg-config ];
-  buildInputs = [ pkgs.poppler.dev ];
-  propagatedBuildInputs = [ pycairo pygobject2 ];
-
-  patches = [
-    ./pypoppler-0.39.0.patch
-    ./pypoppler-poppler.c.patch
-  ];
-
-  # Not supported.
-  disabled = isPy3k;
-
-  # No tests in archive
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://code.launchpad.net/~mriedesel/poppler-python/main";
-    description = "Python bindings for poppler-glib, unofficial branch including bug fixes, and removal of gtk dependencies";
-    license = licenses.gpl2;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pypoppler/pypoppler-0.39.0.patch b/nixpkgs/pkgs/development/python-modules/pypoppler/pypoppler-0.39.0.patch
deleted file mode 100644
index b9e02242e003..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pypoppler/pypoppler-0.39.0.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff --git a/poppler.defs b/poppler.defs
-index 8b12e03..2b8fc16 100644
---- a/poppler.defs
-+++ b/poppler.defs
-@@ -570,18 +570,6 @@
-   )
- )
- 
--(define-enum Orientation
--  (in-module "Poppler")
--  (c-name "PopplerOrientation")
--  (gtype-id "POPPLER_TYPE_ORIENTATION")
--  (values
--    '("portrait" "POPPLER_ORIENTATION_PORTRAIT")
--    '("landscape" "POPPLER_ORIENTATION_LANDSCAPE")
--    '("upsidedown" "POPPLER_ORIENTATION_UPSIDEDOWN")
--    '("seascape" "POPPLER_ORIENTATION_SEASCAPE")
--  )
--)
--
- (define-enum PageTransitionType
-   (in-module "Poppler")
-   (c-name "PopplerPageTransitionType")
diff --git a/nixpkgs/pkgs/development/python-modules/pypoppler/pypoppler-poppler.c.patch b/nixpkgs/pkgs/development/python-modules/pypoppler/pypoppler-poppler.c.patch
deleted file mode 100644
index 1104097cd3e7..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pypoppler/pypoppler-poppler.c.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/poppler.c b/poppler.c
-index 31b4489..16d0838 100644
---- a/poppler.c
-+++ b/poppler.c
-@@ -4501,7 +4501,6 @@ py_poppler_add_constants(PyObject *module, const gchar *strip_prefix)
-   pyg_enum_add(module, "FormTextType", strip_prefix, POPPLER_TYPE_FORM_TEXT_TYPE);
-   pyg_enum_add(module, "FormChoiceType", strip_prefix, POPPLER_TYPE_FORM_CHOICE_TYPE);
-   pyg_enum_add(module, "Error", strip_prefix, POPPLER_TYPE_ERROR);
--  pyg_enum_add(module, "Orientation", strip_prefix, POPPLER_TYPE_ORIENTATION);
-   pyg_enum_add(module, "PageTransitionType", strip_prefix, POPPLER_TYPE_PAGE_TRANSITION_TYPE);
-   pyg_enum_add(module, "PageTransitionAlignment", strip_prefix, POPPLER_TYPE_PAGE_TRANSITION_ALIGNMENT);
-   pyg_enum_add(module, "PageTransitionDirection", strip_prefix, POPPLER_TYPE_PAGE_TRANSITION_DIRECTION);
diff --git a/nixpkgs/pkgs/development/python-modules/pyppeteer/default.nix b/nixpkgs/pkgs/development/python-modules/pyppeteer/default.nix
index 37a40f867bda..153be45ca8f5 100644
--- a/nixpkgs/pkgs/development/python-modules/pyppeteer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyppeteer/default.nix
@@ -2,6 +2,7 @@
 , appdirs
 , buildPythonPackage
 , fetchFromGitHub
+, importlib-metadata
 , poetry-core
 , pyee
 , pytest-xdist
@@ -16,9 +17,10 @@
 buildPythonPackage rec {
   pname = "pyppeteer";
   version = "0.2.6";
-  disabled = pythonOlder "3.6";
   format = "pyproject";
 
+  disabled = pythonOlder "3.6";
+
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
@@ -32,6 +34,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     appdirs
+    importlib-metadata
     pyee
     tqdm
     urllib3
@@ -44,6 +47,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'websockets = "^9.1"' 'websockets = "*"'
+  '';
+
   disabledTestPaths = [
     # Requires network access
     "tests/test_browser.py"
@@ -71,12 +79,14 @@ buildPythonPackage rec {
     "TestPDF"
   ];
 
-  pythonImportsCheck = [ "pyppeteer" ];
+  pythonImportsCheck = [
+    "pyppeteer"
+  ];
 
-  meta = {
+  meta = with lib; {
     description = "Headless chrome/chromium automation library (unofficial port of puppeteer)";
     homepage = "https://github.com/pyppeteer/pyppeteer";
-    license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ kmein ];
+    license = licenses.mit;
+    maintainers = with maintainers; [ kmein ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pypresence/default.nix b/nixpkgs/pkgs/development/python-modules/pypresence/default.nix
index 0fa188c0771a..c21692f7f2a9 100644
--- a/nixpkgs/pkgs/development/python-modules/pypresence/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pypresence/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pypresence";
-  version = "4.2.0";
+  version = "4.2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1c8r7yxih5zp46qb9anq5s91pw2wr7d9d0nzcfh4l42x10c8lqal";
+    sha256 = "691daf98c8189fd216d988ebfc67779e0f664211512d9843f37ab0d51d4de066";
   };
 
   doCheck = false; # tests require internet connection
diff --git a/nixpkgs/pkgs/development/python-modules/pyproj/default.nix b/nixpkgs/pkgs/development/python-modules/pyproj/default.nix
index 9632fc5cb40b..815f0fb84c98 100644
--- a/nixpkgs/pkgs/development/python-modules/pyproj/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyproj/default.nix
@@ -17,14 +17,14 @@
 
 buildPythonPackage rec {
   pname = "pyproj";
-  version = "3.2.1";
+  version = "3.3.0";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "pyproj4";
     repo = "pyproj";
     rev = version;
-    sha256 = "sha256-r343TvXpSr+EMAbvzSUpsfipwP8TFmitOfT0gjgoO00=";
+    hash = "sha256-crLYNACS9I0WGOdkYCJNoyxeAYsR41ZszzKRZsYHCLY=";
   };
 
   # force pyproj to use ${proj}
diff --git a/nixpkgs/pkgs/development/python-modules/pyqt-builder/default.nix b/nixpkgs/pkgs/development/python-modules/pyqt-builder/default.nix
index d116ed275dcf..08eb002ec31f 100644
--- a/nixpkgs/pkgs/development/python-modules/pyqt-builder/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyqt-builder/default.nix
@@ -21,6 +21,6 @@ buildPythonPackage rec {
     description = "PEP 517 compliant build system for PyQt";
     homepage = "https://pypi.org/project/PyQt-builder/";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ eduardosm ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pyqt/5.x.nix b/nixpkgs/pkgs/development/python-modules/pyqt/5.x.nix
index ae737ca2e638..3b98b5738825 100644
--- a/nixpkgs/pkgs/development/python-modules/pyqt/5.x.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyqt/5.x.nix
@@ -5,7 +5,6 @@
 , pkg-config
 , dbus
 , lndir
-, python
 , dbus-python
 , sip
 , pyqt-builder
diff --git a/nixpkgs/pkgs/development/python-modules/pyqtgraph/default.nix b/nixpkgs/pkgs/development/python-modules/pyqtgraph/default.nix
index 49401bf1f843..af5567acc8d3 100644
--- a/nixpkgs/pkgs/development/python-modules/pyqtgraph/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyqtgraph/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fetchFromGitHub
 , scipy
@@ -6,7 +7,6 @@
 , pyqt5
 , pyopengl
 , qt5
-, python
 , pytestCheckHook
 , freefont_ttf
 , makeFontsConf
@@ -53,6 +53,13 @@ buildPythonPackage rec {
     export FONTCONFIG_FILE=${fontsConf}
   '';
 
+  disabledTests = lib.optionals (!stdenv.hostPlatform.isx86) [
+    # small precision-related differences on other architectures,
+    # upstream doesn't consider it serious.
+    # https://github.com/pyqtgraph/pyqtgraph/issues/2110
+    "test_PolyLineROI"
+  ];
+
   meta = with lib; {
     description = "Scientific Graphics and GUI Library for Python";
     homepage = "https://www.pyqtgraph.org/";
diff --git a/nixpkgs/pkgs/development/python-modules/pyquil/default.nix b/nixpkgs/pkgs/development/python-modules/pyquil/default.nix
new file mode 100644
index 000000000000..f984bcc2dea6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyquil/default.nix
@@ -0,0 +1,105 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, fetchpatch
+, importlib-metadata
+, ipython
+, lark-parser
+, networkx
+, numpy
+, poetry-core
+, pytest-asyncio
+, pytest-freezegun
+, pytest-httpx
+, pytest-mock
+, pytestCheckHook
+, pythonOlder
+, qcs-api-client
+, retry
+, respx
+, rpcq
+, scipy
+}:
+
+buildPythonPackage rec {
+  pname = "pyquil";
+  version = "3.0.1";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "rigetti";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-OU7/LjcpCxvqlcfdlm5ll4f0DYXf0yxNprM8Muu2wyg=";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "pyquil-pr-1404-unpin-qcs-api-client-version-pyproject.patch";
+      url = "https://github.com/rigetti/pyquil/commit/2e35a4fdf65262fdf39c5091aeddfa3f3564925a.patch";
+      sha256 = "sha256-KGDNU2wpzsuifQSbbkoMwaFXspHW6zyIJ5GRZbw+lUY=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    lark-parser
+    networkx
+    numpy
+    qcs-api-client
+    retry
+    rpcq
+    scipy
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    importlib-metadata
+  ];
+
+  checkInputs = [
+    pytest-asyncio
+    pytest-freezegun
+    pytest-httpx
+    pytest-mock
+    pytestCheckHook
+    respx
+    ipython
+  ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'lark = "^0.11.1"' 'lark-parser = ">=0.11.1"'
+  '';
+
+  disabledTestPaths = [
+    # Tests require network access
+    "test/e2e/"
+    "test/unit/test_api.py"
+    "test/unit/test_engagement_manager.py"
+    "test/unit/test_operator_estimation.py"
+    "test/unit/test_wavefunction_simulator.py"
+    "test/unit/test_compatibility_v2_operator_estimation.py"
+    "test/unit/test_compatibility_v2_quantum_computer.py"
+    "test/unit/test_compatibility_v2_qvm.py"
+    "test/unit/test_quantum_computer.py"
+    "test/unit/test_qvm.py"
+    "test/unit/test_reference_wavefunction.py"
+  ];
+
+  disabledTests = [
+    "test_compile_with_quilt_calibrations"
+    "test_sets_timeout_on_requests"
+  ];
+
+  pythonImportsCheck = [ "pyquil" ];
+
+  meta = with lib; {
+    description = "Python library for creating Quantum Instruction Language (Quil) programs";
+    homepage = "https://github.com/rigetti/pyquil";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyramid/default.nix b/nixpkgs/pkgs/development/python-modules/pyramid/default.nix
index 9da88fee1538..fb1feb767315 100644
--- a/nixpkgs/pkgs/development/python-modules/pyramid/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyramid/default.nix
@@ -13,7 +13,6 @@
 , webob
 , zope_deprecation
 , zope_interface
-, isPy35
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/pyramid_mako/default.nix b/nixpkgs/pkgs/development/python-modules/pyramid_mako/default.nix
index 9acffbde4333..a4de687eed24 100644
--- a/nixpkgs/pkgs/development/python-modules/pyramid_mako/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyramid_mako/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, fetchpatch
 , webtest
 , pyramid
 , Mako
@@ -15,6 +16,15 @@ buildPythonPackage rec {
     sha256 = "0066c863441f1c3ddea60cee1ccc50d00a91a317a8052ca44131da1a12a840e2";
   };
 
+  patches = [
+    # Fix tests with pyramid >= 2.0
+    # https://github.com/Pylons/pyramid_mako/pull/54
+    (fetchpatch {
+      url = "https://github.com/Pylons/pyramid_mako/commit/c0f9e7e0146a7f94e35a9401b1519ac8b7765f5b.patch";
+      sha256 = "15swfm0a07bdl32s85426rmjh72jwfasjcrl849ppg035z75q9fx";
+    })
+  ];
+
   buildInputs = [ webtest ];
   propagatedBuildInputs = [ pyramid Mako ];
 
@@ -23,8 +33,5 @@ buildPythonPackage rec {
     description = "Mako template bindings for the Pyramid web framework";
     license = licenses.bsd0;
     maintainers = with maintainers; [];
-    # broken on pyramid>=2.0
-    # https://github.com/Pylons/pyramid_mako/issues/53
-    broken = true;
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pyramid_multiauth/default.nix b/nixpkgs/pkgs/development/python-modules/pyramid_multiauth/default.nix
index 859d4c3b4339..22e32aa4d1ee 100644
--- a/nixpkgs/pkgs/development/python-modules/pyramid_multiauth/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyramid_multiauth/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "pyramid_multiauth";
-  version = "0.9.0";
+  version = "1.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0lprqjyg3zcji6033p1l3s4nigjigc5423wgivkfhz46vq0jmniy";
+    sha256 = "6d8785558e1d0bbe0d0da43e296efc0fbe0de5071d1f9b1091e891f0e4ec9682";
   };
 
   propagatedBuildInputs = [ pyramid ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyrect/default.nix b/nixpkgs/pkgs/development/python-modules/pyrect/default.nix
new file mode 100644
index 000000000000..e8041786b07b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyrect/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, tox
+, pytestCheckHook
+, pygame
+}:
+buildPythonPackage rec {
+  pname = "PyRect";
+  version = "0.1.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-Oy+nNTzjKhGqawoVSVlo0qdjQjyJR64ki5LAN9704gI=";
+  };
+
+  checkInputs = [ tox pytestCheckHook pygame ];
+  pythonImportsCheck = [ "pyrect" ];
+  preCheck = ''
+    export LC_ALL="en_US.UTF-8"
+  '';
+
+  meta = with lib; {
+    description = "Simple module with a Rect class for Pygame-like rectangular areas";
+    homepage = "https://github.com/asweigart/pyrect";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ lucasew ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyreport/default.nix b/nixpkgs/pkgs/development/python-modules/pyreport/default.nix
deleted file mode 100644
index 6b9649699ba3..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pyreport/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "pyreport";
-  version = "0.3.4c";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1584607596b7b310bf0b6ce79f424bd44238a017fd870aede11cd6732dbe0d4d";
-  };
-
-  # error: invalid command 'test'
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://pypi.python.org/pypi/pyreport";
-    license = licenses.bsd0;
-    description = "Pyreport makes notes out of a python script";
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/PyRMVtransport/default.nix b/nixpkgs/pkgs/development/python-modules/pyrmvtransport/default.nix
index aee4789f93bf..b8104ef23707 100644
--- a/nixpkgs/pkgs/development/python-modules/PyRMVtransport/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyrmvtransport/default.nix
@@ -12,9 +12,10 @@
 }:
 
 buildPythonPackage rec {
-  pname = "PyRMVtransport";
+  pname = "pyrmvtransport";
   version = "0.3.2";
   format = "pyproject";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
@@ -34,14 +35,16 @@ buildPythonPackage rec {
     lxml
   ];
 
-  pythonImportsCheck = [ "RMVtransport" ];
-
   checkInputs = [
     pytestCheckHook
     pytest-asyncio
     pytest-httpx
   ];
 
+  pythonImportsCheck = [
+    "RMVtransport"
+  ];
+
   meta = with lib; {
     homepage = "https://github.com/cgtobi/PyRMVtransport";
     description = "Get transport information from opendata.rmv.de";
diff --git a/nixpkgs/pkgs/development/python-modules/pyro-ppl/default.nix b/nixpkgs/pkgs/development/python-modules/pyro-ppl/default.nix
index c8a9775dd24e..f810cf6f37b6 100644
--- a/nixpkgs/pkgs/development/python-modules/pyro-ppl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyro-ppl/default.nix
@@ -2,12 +2,12 @@
 , graphviz, networkx, six, opt-einsum, tqdm, pyro-api }:
 
 buildPythonPackage rec {
-  version = "1.7.0";
+  version = "1.8.0";
   pname = "pyro-ppl";
 
   src = fetchPypi {
     inherit version pname;
-    sha256 = "a8ec6968fdfa34f140584b266099238f1ffeacbbaab3775de5c94c0e685d018a";
+    sha256 = "68e4ea30f219227dd88e55de2550d3f8c20a20adbdb67ad1e13b50868bb2ac0c";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pyro4/default.nix b/nixpkgs/pkgs/development/python-modules/pyro4/default.nix
index ffb8584f9411..867e42485975 100644
--- a/nixpkgs/pkgs/development/python-modules/pyro4/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyro4/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , serpent
 , dill
 , cloudpickle
diff --git a/nixpkgs/pkgs/development/python-modules/pyro5/default.nix b/nixpkgs/pkgs/development/python-modules/pyro5/default.nix
index 97b41b03daf8..4e56bb49f5fd 100644
--- a/nixpkgs/pkgs/development/python-modules/pyro5/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyro5/default.nix
@@ -1,6 +1,7 @@
 { buildPythonPackage
 , fetchPypi
 , lib
+, stdenv
 , serpent
 , pythonOlder
 , pytestCheckHook
@@ -8,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "Pyro5";
-  version = "5.12";
+  version = "5.13.1";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "616e6957c341da0ca26f947805c9c97b42031941f59ca5613537d1420ff4f2e2";
+    sha256 = "2be9da379ae0ec4cf69ffb3c5c589b698eea00e614a9af7945b87fa9bb09baf2";
   };
 
   propagatedBuildInputs = [ serpent ];
@@ -22,7 +23,10 @@ buildPythonPackage rec {
   checkInputs = [ pytestCheckHook ];
 
   # ignore network related tests, which fail in sandbox
-  disabledTests = [ "StartNSfunc" "Broadcast" "GetIP" "TestNameServer" "TestBCSetup" ];
+  disabledTests = [ "StartNSfunc" "Broadcast" "GetIP" "TestNameServer" "TestBCSetup" ]
+  ++ lib.optionals stdenv.hostPlatform.isDarwin [
+    "Socket"
+  ];
 
   meta = with lib; {
     description = "Distributed object middleware for Python (RPC)";
diff --git a/nixpkgs/pkgs/development/python-modules/pysam/default.nix b/nixpkgs/pkgs/development/python-modules/pysam/default.nix
index 41cdcad20385..2f65aa899e39 100644
--- a/nixpkgs/pkgs/development/python-modules/pysam/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysam/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname   = "pysam";
-  version = "0.17.0";
+  version = "0.18.0";
 
   # Fetching from GitHub instead of PyPi cause the 0.13 src release on PyPi is
   # missing some files which cause test failures.
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "pysam-developers";
     repo = "pysam";
     rev = "v${version}";
-    sha256 = "sha256-RDeBq6pwBGCBNIn8YOPQr96GuL6FKEYeLAPQD6XN0iE=";
+    sha256 = "042ca27r6634xg2ixgvq1079cp714wmm6ml7bwc1snn0wxxzywfg";
   };
 
   nativeBuildInputs = [ samtools ];
diff --git a/nixpkgs/pkgs/development/python-modules/pysaml2/default.nix b/nixpkgs/pkgs/development/python-modules/pysaml2/default.nix
index 6eeb10b6dcd9..bc21b0a309d1 100644
--- a/nixpkgs/pkgs/development/python-modules/pysaml2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysaml2/default.nix
@@ -1,27 +1,60 @@
 { lib
 , buildPythonPackage
-, isPy3k
+, cryptography
+, defusedxml
 , fetchFromGitHub
+, importlib-resources
+, mock
+, pyasn1
+, pymongo
+, pyopenssl
+, pytestCheckHook
+, python-dateutil
+, pythonOlder
+, pytz
+, requests
+, responses
+, six
 , substituteAll
+, xmlschema
 , xmlsec
-, cryptography, defusedxml, pyopenssl, python-dateutil, pytz, requests, six
-, mock, pyasn1, pymongo, pytest, responses, xmlschema, importlib-resources
 }:
 
 buildPythonPackage rec {
   pname = "pysaml2";
-  version = "7.0.1";
+  version = "7.1.0";
+  format = "setuptools";
 
-  disabled = !isPy3k;
+  disabled = pythonOlder "3.6";
 
-  # No tests in PyPI tarball
   src = fetchFromGitHub {
     owner = "IdentityPython";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0ickqask6bjipgi3pvxg92pjr6dk2rr3q9garap39mdrp2gsfhln";
+    sha256 = "sha256-3Yl6j6KAlw7QQYnwU7+naY6D97IqX766zguekKAuic8=";
   };
 
+  propagatedBuildInputs = [
+    cryptography
+    python-dateutil
+    defusedxml
+    pyopenssl
+    pytz
+    requests
+    six
+    xmlschema
+  ] ++ lib.optionals (pythonOlder "3.9") [
+    importlib-resources
+  ];
+
+  checkInputs = [
+    mock
+    pyasn1
+    pymongo
+    pytestCheckHook
+    responses
+  ];
+
   patches = [
     (substituteAll {
       src = ./hardcode-xmlsec1-path.patch;
@@ -34,32 +67,22 @@ buildPythonPackage rec {
     sed -i 's/2999\(-.*T\)/2029\1/g' tests/*.xml
   '';
 
-  propagatedBuildInputs = [
-    cryptography
-    python-dateutil
-    defusedxml
-    importlib-resources
-    pyopenssl
-    pytz
-    requests
-    six
-    xmlschema
+  disabledTests = [
+    # Disabled tests try to access the network
+    "test_load_extern_incommon"
+    "test_load_remote_encoding"
+    "test_load_external"
+    "test_conf_syslog"
   ];
 
-  checkInputs = [ mock pyasn1 pymongo pytest responses ];
-
-  # Disabled tests try to access the network
-  checkPhase = ''
-    py.test -k "not test_load_extern_incommon \
-            and not test_load_remote_encoding \
-            and not test_load_external \
-            and not test_conf_syslog"
-  '';
+  pythonImportsCheck = [
+    "saml2"
+  ];
 
   meta = with lib; {
-    homepage = "https://github.com/rohe/pysaml2";
     description = "Python implementation of SAML Version 2 Standard";
+    homepage = "https://github.com/IdentityPython/pysaml2";
     license = licenses.asl20;
+    maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pysatochip/default.nix b/nixpkgs/pkgs/development/python-modules/pysatochip/default.nix
index a2e726903554..81c0d8bda204 100644
--- a/nixpkgs/pkgs/development/python-modules/pysatochip/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysatochip/default.nix
@@ -12,12 +12,12 @@
 
 buildPythonPackage rec {
   pname = "pysatochip";
-  version = "0.12.3";
+  version = "0.14.1";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "24db358a65c0402c299c0c62efcfbbfc98e494181cd30d3996949ac667d5b4d4";
+    sha256 = "eba800c82ea45e2524c0773a71c36e525d7c18148e6066e336950cef484555f5";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pyscard/default.nix b/nixpkgs/pkgs/development/python-modules/pyscard/default.nix
index caa5e4e24405..9efc461cec2b 100644
--- a/nixpkgs/pkgs/development/python-modules/pyscard/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyscard/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchPypi, buildPythonPackage, swig, pcsclite, PCSC }:
+{ lib, stdenv, fetchpatch, fetchPypi, buildPythonPackage, swig, pcsclite, PCSC }:
 
 let
   # Package does not support configuring the pcsc library.
@@ -14,6 +14,15 @@ buildPythonPackage rec {
     sha256 = "05de0579c42b4eb433903aa2fb327d4821ebac262434b6584da18ed72053fd9e";
   };
 
+  patches = [
+    # present in master - remove after 2.0.2
+    (fetchpatch {
+      name = "darwin-typo-test-fix.patch";
+      url = "https://github.com/LudovicRousseau/pyscard/commit/ce842fcc76fd61b8b6948d0b07306d82ad1ec12a.patch";
+      sha256 = "0wsaj87wp9d2vnfzwncfxp2w95m0zhr7zpkmg5jccn06z52ihis3";
+    })
+  ];
+
   postPatch = if withApplePCSC then ''
     substituteInPlace smartcard/scard/winscarddll.c \
       --replace "/System/Library/Frameworks/PCSC.framework/PCSC" \
diff --git a/nixpkgs/pkgs/development/python-modules/pyscf/default.nix b/nixpkgs/pkgs/development/python-modules/pyscf/default.nix
index 0be40b5dfe7c..d08289d7573d 100644
--- a/nixpkgs/pkgs/development/python-modules/pyscf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyscf/default.nix
@@ -1,45 +1,110 @@
-{ buildPythonPackage, lib, fetchFromGitHub, libcint, libxc, xcfun, blas
-, numpy, scipy, h5py
+{ buildPythonPackage
+, python3
+, lib
+, fetchFromGitHub
+, cmake
+, blas
+, libcint
+, libxc
+, xcfun
+, cppe
+, h5py
+, numpy
+, scipy
+, nose
+, nose-exclude
 }:
 
 buildPythonPackage rec {
   pname = "pyscf";
-  version = "1.7.6.post1";
+  version = "2.0.1";
 
   src = fetchFromGitHub {
     owner = "pyscf";
     repo = pname;
-    rev = "f6c9c6654dd9609c5e467a1edd5c2c076f793acc";
-    sha256  = "0xbwkjxxysfpqz72qn6n4a0zr2h6sprbcal8j7kzymh7swjy117w";
+    rev = "v${version}";
+    sha256 = "sha256-nwnhaqSn/9WHBjUPaEabK4x23fJ83WwEYvz6aCcvsDw=";
   };
 
-  # Backport from the 2.0.0 alpha releases of PySCF.
-  # H5Py > 3.3 deprecates the file modes, that PySCF sets.
-  patches = [ ./h5py.patch ];
+  # setup.py calls Cmake and passes the arguments in CMAKE_CONFIGURE_ARGS to cmake.
+  nativeBuildInputs = [ cmake ];
+  dontUseCmakeConfigure = true;
+  preConfigure = ''
+    export CMAKE_CONFIGURE_ARGS="-DBUILD_LIBCINT=0 -DBUILD_LIBXC=0 -DBUILD_XCFUN=0"
+    PYSCF_INC_DIR="${libcint}:${libxc}:${xcfun}";
+  '';
 
   buildInputs = [
+    blas
     libcint
     libxc
     xcfun
-    blas
   ];
 
   propagatedBuildInputs = [
+    cppe
+    h5py
     numpy
     scipy
-    h5py
   ];
 
-  PYSCF_INC_DIR="${libcint}:${libxc}:${xcfun}";
+  checkInputs = [ nose nose-exclude ];
 
-  doCheck = false;
   pythonImportsCheck = [ "pyscf" ];
+  preCheck = ''
+    # Set config used by tests to ensure reproducibility
+    echo 'pbc_tools_pbc_fft_engine = "NUMPY"' > pyscf/pyscf_config.py
+    export OMP_NUM_THREADS=1
+    ulimit -s 20000
+    export PYSCF_CONFIG_FILE=$(pwd)/pyscf/pyscf_config.py
+  '';
+  # As defined for the PySCF CI at https://github.com/pyscf/pyscf/blob/master/.github/workflows/run_tests.sh
+  # minus some additionally numerically instable tests, that are sensitive to BLAS, FFTW, etc.
+  checkPhase = ''
+    runHook preCheck
+
+    nosetests pyscf/ -v \
+      --exclude-dir=examples --exclude-dir=pyscf/pbc/grad \
+      --exclude-dir=pyscf/x2c \
+      --exclude-dir=pyscf/adc \
+      --exclude-dir=pyscf/pbc/tdscf \
+      -e test_bz \
+      -e h2o_vdz \
+      -e test_mc2step_4o4e \
+      -e test_ks_noimport \
+      -e test_jk_hermi0 \
+      -e test_j_kpts \
+      -e test_k_kpts \
+      -e high_cost \
+      -e skip \
+      -e call_in_background \
+      -e libxc_cam_beta_bug \
+      -e test_finite_diff_rks_eph \
+      -e test_finite_diff_uks_eph \
+      -e test_pipek \
+      -e test_n3_cis_ewald \
+      -I test_kuccsd_supercell_vs_kpts\.py \
+      -I test_kccsd_ghf\.py \
+      -I test_h_.*\.py \
+      --exclude-test=pyscf/pbc/gw/test/test_kgw_slow_supercell.DiamondTestSupercell3 \
+      --exclude-test=pyscf/pbc/gw/test/test_kgw_slow_supercell.DiamondKSTestSupercell3 \
+      --exclude-test=pyscf/pbc/gw/test/test_kgw_slow.DiamondTestSupercell3 \
+      --exclude-test=pyscf/pbc/gw/test/test_kgw_slow.DiamondKSTestSupercell3 \
+      --exclude-test=pyscf/pbc/tdscf/test/test_krhf_slow_supercell.DiamondTestSupercell3 \
+      --exclude-test=pyscf/pbc/tdscf/test/test_kproxy_hf.DiamondTestSupercell3 \
+      --exclude-test=pyscf/pbc/tdscf/test/test_kproxy_ks.DiamondTestSupercell3 \
+      --exclude-test=pyscf/pbc/tdscf/test/test_kproxy_supercell_hf.DiamondTestSupercell3 \
+      --exclude-test=pyscf/pbc/tdscf/test/test_kproxy_supercell_ks.DiamondTestSupercell3 \
+      -I .*_slow.*py -I .*_kproxy_.*py -I test_proxy.py tdscf/*_slow.py gw/*_slow.py
+
+    runHook postCheck
+  '';
 
   meta = with lib; {
     description = "Python-based simulations of chemistry framework";
     homepage = "https://github.com/pyscf/pyscf";
     license = licenses.asl20;
-    platforms = platforms.linux;
+    platforms = [ "x86_64-linux" "x86_64-darwin" ];
     maintainers = [ maintainers.sheepforce ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pyscf/h5py.patch b/nixpkgs/pkgs/development/python-modules/pyscf/h5py.patch
deleted file mode 100644
index 160128633208..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pyscf/h5py.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/pyscf/lib/misc.py b/pyscf/lib/misc.py
-index ed43689ff..a8a0d0e20 100644
---- a/pyscf/lib/misc.py
-+++ b/pyscf/lib/misc.py
-@@ -42,8 +42,6 @@ if h5py.version.version[:4] == '2.2.':
-     sys.stderr.write('h5py-%s is found in your environment. '
-                      'h5py-%s has bug in threading mode.\n'
-                      'Async-IO is disabled.\n' % ((h5py.version.version,)*2))
--if h5py.version.version[:2] == '3.':
--    h5py.get_config().default_file_mode = 'a'
- 
- c_double_p = ctypes.POINTER(ctypes.c_double)
- c_int_p = ctypes.POINTER(ctypes.c_int)
diff --git a/nixpkgs/pkgs/development/python-modules/pyscreeze/default.nix b/nixpkgs/pkgs/development/python-modules/pyscreeze/default.nix
new file mode 100644
index 000000000000..ddca8e72c23f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyscreeze/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pillow
+, xlib
+, xvfb-run
+, scrot
+}:
+buildPythonPackage rec {
+  pname = "PyScreeze";
+  version = "0.1.26";
+
+  src = fetchFromGitHub {
+    owner = "asweigart";
+    repo = "pyscreeze";
+    rev = "28ab707dceecbdd135a9491c3f8effd3a69680af";
+    sha256 = "sha256-gn3ydjf/msdhIhngGlhK+jhEyFy0qGeDr58E7kM2YZs=";
+  };
+
+  pythonImportsCheck = [ "pyscreeze" ];
+  checkInputs = [ scrot xlib xvfb-run ];
+  checkPhase = ''
+    python -m unittest tests.test_pillow_unavailable
+    xvfb-run python -m unittest tests.test_pyscreeze
+  '';
+
+  propagatedBuildInputs = [
+    pillow
+  ];
+
+  meta = with lib; {
+    description = "PyScreeze is a simple, cross-platform screenshot module for Python 2 and 3.";
+    homepage = "https://github.com/asweigart/pyscreeze";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ lucasew ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysecuritas/default.nix b/nixpkgs/pkgs/development/python-modules/pysecuritas/default.nix
new file mode 100644
index 000000000000..7579e014b69c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysecuritas/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, requests
+, xmltodict
+}:
+
+buildPythonPackage rec {
+  pname = "pysecuritas";
+  version = "0.1.6";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "W3DLZCXUH9y5NPipFEu6URmKN+oVXMgeDF1rfKtxRng=";
+  };
+
+  propagatedBuildInputs = [
+    xmltodict
+    requests
+  ];
+
+  # Project doesn't ship tests with PyPI releases
+  # https://github.com/Cebeerre/pysecuritas/issues/13
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pysecuritas"
+  ];
+
+  meta = with lib; {
+    description = "Python client to access Securitas Direct Mobile API";
+    homepage = "https://github.com/Cebeerre/pysecuritas";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyside/apiextractor.nix b/nixpkgs/pkgs/development/python-modules/pyside/apiextractor.nix
index 9398a62997b2..058414747440 100644
--- a/nixpkgs/pkgs/development/python-modules/pyside/apiextractor.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyside/apiextractor.nix
@@ -1,14 +1,18 @@
-{ lib, stdenv, fetchurl, cmake, libxml2, libxslt, python3, qt4 }:
+{ lib, stdenv, fetchFromGitHub, cmake, libxml2, libxslt, python3, qt4 }:
 
 # This derivation does not provide any Python module and should therefore be called via `all-packages.nix`.
 let
-  pythonEnv = python3.withPackages(ps: with ps; [  sphinx ]);
-in stdenv.mkDerivation {
-  name = "pyside-apiextractor-0.10.10";
+  pythonEnv = python3.withPackages (ps: with ps; [ sphinx ]);
+in
+stdenv.mkDerivation rec {
+  pname = "pyside-apiextractor";
+  version = "0.10.10";
 
-  src = fetchurl {
-    url = "https://github.com/PySide/Apiextractor/archive/0.10.10.tar.gz";
-    sha256 = "1zj8yrxy08iv1pk38djxw3faimm226w6wmi0gm32w4yczblylwz3";
+  src = fetchFromGitHub {
+    owner = "PySide";
+    repo = "Apiextractor";
+    rev = version;
+    sha256 = "sha256-YH8aYyzv59xiIglZbdNgOPnmEQwNE2GmotAFFfFdMlg=";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyside/default.nix b/nixpkgs/pkgs/development/python-modules/pyside/default.nix
index f880791eeec0..451c71e7eb43 100644
--- a/nixpkgs/pkgs/development/python-modules/pyside/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyside/default.nix
@@ -1,14 +1,15 @@
-{ lib, fetchurl, cmake, buildPythonPackage, pysideGeneratorrunner, pysideShiboken, qt4, mesa, libGL }:
+{ lib, fetchFromGitHub, cmake, buildPythonPackage, pysideGeneratorrunner, pysideShiboken, qt4, mesa, libGL }:
 
-# This derivation provides a Python module and should therefore be called via `python-packages.nix`.
 buildPythonPackage rec {
   pname = "pyside";
   version = "1.2.4";
   format = "other";
 
-  src = fetchurl {
-    url = "https://github.com/PySide/PySide/archive/${version}.tar.gz";
-    sha256 = "90f2d736e2192ac69e5a2ac798fce2b5f7bf179269daa2ec262986d488c3b0f7";
+  src = fetchFromGitHub {
+    owner = "PySide";
+    repo = "PySide";
+    rev = version;
+    sha256 = "sha256-14XbihJRMk9WaeK6NUBV/4OMFZF8EBIJgEJEaCU8Ecg=";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyside/generatorrunner.nix b/nixpkgs/pkgs/development/python-modules/pyside/generatorrunner.nix
index 532ee6b2b24e..f1e002daf4c5 100644
--- a/nixpkgs/pkgs/development/python-modules/pyside/generatorrunner.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyside/generatorrunner.nix
@@ -1,16 +1,17 @@
-{ lib, stdenv, fetchurl, cmake, pysideApiextractor, python3, qt4 }:
+{ lib, stdenv, fetchFromGitHub, cmake, pysideApiextractor, python3, qt4 }:
 
 # This derivation does not provide any Python module and should therefore be called via `all-packages.nix`.
 let
   pythonEnv = python3.withPackages(ps: with ps; [ sphinx ]);
+in stdenv.mkDerivation rec {
   pname = "pyside-generatorrunner";
   version = "0.6.16";
-in stdenv.mkDerivation {
-  name = "${pname}-${version}";
 
-  src = fetchurl {
-    url = "https://github.com/PySide/Generatorrunner/archive/0.6.16.tar.gz";
-    sha256 = "0vzk3cp0pfbhd921r8f1xkcz96znla39dhj074k623x9k26lj2sj";
+  src = fetchFromGitHub {
+    owner = "PySide";
+    repo = "Generatorrunner";
+    rev = version;
+    sha256 = "sha256-JAghKY033RTD5b2elitzVQbbN3PMmT3BHwpqx8N5EYg=";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyside2-tools/default.nix b/nixpkgs/pkgs/development/python-modules/pyside2-tools/default.nix
index 20f1a572f1b4..66d0fa51f211 100644
--- a/nixpkgs/pkgs/development/python-modules/pyside2-tools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyside2-tools/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, wrapPython, python, fetchurl, lib, stdenv, cmake, qt5,
+{ wrapPython, python, lib, stdenv, cmake, qt5,
   shiboken2, pyside2 }:
 
 stdenv.mkDerivation {
diff --git a/nixpkgs/pkgs/development/python-modules/pyside2/default.nix b/nixpkgs/pkgs/development/python-modules/pyside2/default.nix
index c2786b647d62..bf16e1522dde 100644
--- a/nixpkgs/pkgs/development/python-modules/pyside2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyside2/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, python, fetchurl, lib, stdenv,
+{ python, fetchurl, lib, stdenv,
   cmake, ninja, qt5, shiboken2 }:
 
 stdenv.mkDerivation rec {
diff --git a/nixpkgs/pkgs/development/python-modules/pysimplegui/default.nix b/nixpkgs/pkgs/development/python-modules/pysimplegui/default.nix
new file mode 100644
index 000000000000..9542ffe1b3bb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysimplegui/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, tkinter
+}:
+buildPythonPackage rec {
+  pname = "PySimpleGUI";
+  version = "4.55.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-nUDAoMK0w9Luk1hU5I1yT1CK5oEj9LrIByYS3Z5wfew=";
+  };
+
+  pythonImportsCheck = [ "PySimpleGUI" ];
+
+  propagatedBuildInputs = [
+    tkinter
+  ];
+
+  meta = with lib; {
+    description = "Python GUIs for Humans.";
+    homepage = "https://github.com/PySimpleGUI/PySimpleGUI";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ lucasew ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyskyqhub/default.nix b/nixpkgs/pkgs/development/python-modules/pyskyqhub/default.nix
new file mode 100644
index 000000000000..1f3ad1874621
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyskyqhub/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pyskyqhub";
+  version = "0.1.4";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "RogerSelwyn";
+    repo = "skyq_hub";
+    rev = version;
+    sha256 = "EVkTvynMPmCr7DPuDqfpMvVPCvpPpJHfqsNjD3tn8zg=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  # Tests require phyiscal hardware
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pyskyqhub"
+  ];
+
+  meta = with lib; {
+    description = "Python module for accessing SkyQ Hub";
+    homepage = "https://github.com/RogerSelwyn/skyq_hub";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyskyqremote/default.nix b/nixpkgs/pkgs/development/python-modules/pyskyqremote/default.nix
new file mode 100644
index 000000000000..85fc18463690
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyskyqremote/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pycountry
+, pythonOlder
+, requests
+, websocket-client
+, xmltodict
+}:
+
+buildPythonPackage rec {
+  pname = "pyskyqremote";
+  version = "0.2.54";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "RogerSelwyn";
+    repo = "skyq_remote";
+    rev = version;
+    sha256 = "sha256-Z3fcihyK8QHtdREXWt2ESqjwAwxFZFEI9OXf3Y9onmw=";
+  };
+
+  propagatedBuildInputs = [
+    pycountry
+    requests
+    websocket-client
+    xmltodict
+  ];
+
+  # Project has no tests, only a test script which looks like anusage example
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pyskyqremote"
+  ];
+
+  meta = with lib; {
+    description = "Python module for accessing SkyQ boxes";
+    homepage = "https://github.com/RogerSelwyn/skyq_remote";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyslurm/default.nix b/nixpkgs/pkgs/development/python-modules/pyslurm/default.nix
index abb85930e40e..f25651dcf98b 100644
--- a/nixpkgs/pkgs/development/python-modules/pyslurm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyslurm/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchFromGitHub, fetchpatch, buildPythonPackage, cython, slurm }:
+{ lib, fetchFromGitHub, buildPythonPackage, cython, slurm }:
 
 buildPythonPackage rec {
   pname = "pyslurm";
diff --git a/nixpkgs/pkgs/development/python-modules/pysma/default.nix b/nixpkgs/pkgs/development/python-modules/pysma/default.nix
index 1392f91b6363..cf2325633fba 100644
--- a/nixpkgs/pkgs/development/python-modules/pysma/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysma/default.nix
@@ -4,28 +4,33 @@
 , buildPythonPackage
 , fetchPypi
 , jmespath
-, async-timeout
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pysma";
-  version = "0.6.7";
+  version = "0.6.9";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-8HADY6+qwfzYyEVLQyMiXiUYinADSA1iKUay3YHhNXI=";
+    sha256 = "sha256-2ZU3UjDNo+fpnYK4WlYSu7XqkbpcK7Xz5cUKDABhwdk=";
   };
 
   propagatedBuildInputs = [
     aiohttp
-    async-timeout
     attrs
     jmespath
   ];
 
   # pypi does not contain tests and GitHub archive not available
   doCheck = false;
-  pythonImportsCheck = [ "pysma" ];
+
+  pythonImportsCheck = [
+    "pysma"
+  ];
 
   meta = with lib; {
     description = "Python library for interacting with SMA Solar's WebConnect";
diff --git a/nixpkgs/pkgs/development/python-modules/pysmappee/default.nix b/nixpkgs/pkgs/development/python-modules/pysmappee/default.nix
index 028d591ac924..c2322819ae45 100644
--- a/nixpkgs/pkgs/development/python-modules/pysmappee/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysmappee/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "pysmappee";
-  version = "0.2.27";
+  version = "0.2.29";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "smappee";
     repo = pname;
     rev = version;
-    sha256 = "sha256-CzdkeC53ye+IMeGUiD1mK84h2ruC1/ZpjlDjuWMVoyQ=";
+    sha256 = "sha256-Ffi55FZsZUKDcS4qV46NpRK3VP6axzrL2BO+hYW7J9E=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pysmart-smartx/default.nix b/nixpkgs/pkgs/development/python-modules/pysmart-smartx/default.nix
deleted file mode 100644
index 66b789668a01..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pysmart-smartx/default.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, future
-, pytestCheckHook
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "pysmart-smartx";
-  version = "0.3.10";
-
-  src = fetchFromGitHub {
-    owner = "smartxworks";
-    repo = "pySMART";
-    rev = "v${version}";
-    sha256 = "1irl4nlgz3ds3aikraa9928gzn6hz8chfh7jnpmq2q7d2vqbdrjs";
-  };
-
-  propagatedBuildInputs = [ future ];
-
-  # tests require contextlib.nested
-  doCheck = !isPy3k;
-
-  checkInputs = [ pytestCheckHook mock ];
-
-  pythonImportsCheck = [ "pySMART" ];
-
-  meta = with lib; {
-    description = "It's a fork of pySMART with lots of bug fix and enhances";
-    homepage = "https://github.com/smartxworks/pySMART";
-    maintainers = with maintainers; [ rhoriguchi ];
-    license = licenses.gpl2Only;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pysmart/default.nix b/nixpkgs/pkgs/development/python-modules/pysmart/default.nix
new file mode 100644
index 000000000000..3bd5fa50a133
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysmart/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, smartmontools
+, humanfriendly
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "pysmart";
+  version = "1.1.0";
+
+  src = fetchFromGitHub {
+    owner = "truenas";
+    repo = "py-SMART";
+    rev = "v${version}";
+    sha256 = "sha256-e46ALiYg0Db/gOzqLmVc1vi9ObhfxzqwfQk9/9pz+r0=";
+  };
+
+  postPatch = ''
+    substituteInPlace pySMART/utils.py \
+      --replace "which('smartctl')" '"${smartmontools}/bin/smartctl"'
+  '';
+
+  propagatedBuildInputs = [ humanfriendly ];
+
+  checkInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "pySMART" ];
+
+  meta = with lib; {
+    description = "Wrapper for smartctl (smartmontools)";
+    homepage = "https://github.com/truenas/py-SMART";
+    maintainers = with maintainers; [ nyanloutre ];
+    license = licenses.lgpl21Only;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pysmartapp/default.nix b/nixpkgs/pkgs/development/python-modules/pysmartapp/default.nix
index abf3796ae7f7..a4ab8e58382c 100644
--- a/nixpkgs/pkgs/development/python-modules/pysmartapp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysmartapp/default.nix
@@ -4,17 +4,21 @@
 , httpsig
 , pytest-asyncio
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pysmartapp";
-  version = "0.3.3";
+  version = "0.3.4";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "andrewsayre";
     repo = pname;
     rev = version;
-    sha256 = "03wk44siqxl15pa46x5vkg4q0mnga34ir7qn897576z2ivbx7awh";
+    sha256 = "sha256-zYjv7wRxQTS4PnNaY69bw9xE6I4DZMocwUzEICBfwqM=";
   };
 
   propagatedBuildInputs = [
@@ -26,7 +30,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "pysmartapp" ];
+  pythonImportsCheck = [
+    "pysmartapp"
+  ];
 
   meta = with lib; {
     description = "Python implementation to work with SmartApp lifecycle events";
diff --git a/nixpkgs/pkgs/development/python-modules/pysmartthings/default.nix b/nixpkgs/pkgs/development/python-modules/pysmartthings/default.nix
index e8a295c319c4..8e97570a2c78 100644
--- a/nixpkgs/pkgs/development/python-modules/pysmartthings/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysmartthings/default.nix
@@ -4,17 +4,21 @@
 , fetchFromGitHub
 , pytest-asyncio
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pysmartthings";
-  version = "0.7.6";
+  version = "0.7.7";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "andrewsayre";
     repo = pname;
     rev = version;
-    sha256 = "0m91lfzdbmq6qv6bihd278psi9ghldxpa1d0dsbii2zf338188qj";
+    sha256 = "sha256-AzAiMn88tRRPwMpwSnKoS1XUERHbKz0sVm/TjcbTsGs=";
   };
 
   propagatedBuildInputs = [
@@ -26,7 +30,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "pysmartthings" ];
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "aiohttp>=3.8.0,<4.0.0" "aiohttp<=4.0.0"
+  '';
+
+  pythonImportsCheck = [
+    "pysmartthings"
+  ];
 
   meta = with lib; {
     description = "Python library for interacting with the SmartThings cloud API";
diff --git a/nixpkgs/pkgs/development/python-modules/pysnooper/default.nix b/nixpkgs/pkgs/development/python-modules/pysnooper/default.nix
index 61e1de20acf9..b92ba38c9d09 100644
--- a/nixpkgs/pkgs/development/python-modules/pysnooper/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysnooper/default.nix
@@ -6,13 +6,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "0.4.1";
+  version = "1.0.0";
   pname = "pysnooper";
 
   src = fetchPypi {
     inherit version;
     pname = "PySnooper";
-    sha256 = "1xngly13x3ylwwcdml2ns8skpxip2myzavp3b9ff2dpqaalf0hdl";
+    sha256 = "4804aed962f36db85fefdc33edbd109b96a13153e6ffed82d1e6023b4f483b64";
   };
 
   # test dependency python-toolbox fails with py27
diff --git a/nixpkgs/pkgs/development/python-modules/pysnow/default.nix b/nixpkgs/pkgs/development/python-modules/pysnow/default.nix
index d8d6b4f4401b..1c9fccb70687 100644
--- a/nixpkgs/pkgs/development/python-modules/pysnow/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysnow/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, fetchPypi
 , fetchFromGitHub
 , poetry
 , brotli
diff --git a/nixpkgs/pkgs/development/python-modules/pysolcast/default.nix b/nixpkgs/pkgs/development/python-modules/pysolcast/default.nix
new file mode 100644
index 000000000000..fea0b68dcce9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pysolcast/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, isodate
+, pytestCheckHook
+, pythonOlder
+, pyyaml
+, requests
+, responses
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "pysolcast";
+  version = "1.0.7";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "mcaulifn";
+    repo = "solcast";
+    rev = "v${version}";
+    sha256 = "J4D7W89Qz1Nv4DeqOmHVAWfmThlY5puBjSClRkfwhVw=";
+  };
+
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    isodate
+    pyyaml
+    requests
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    responses
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "pytest-runner" ""
+  '';
+
+  pythonImportsCheck = [
+    "pysolcast"
+  ];
+
+  meta = with lib; {
+    description = "Python library for interacting with the Solcast API";
+    homepage = "https://github.com/mcaulifn/solcast";
+    # No license statement present
+    # https://github.com/mcaulifn/solcast/issues/70
+    license = with licenses; [ unfree ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyspark/default.nix b/nixpkgs/pkgs/development/python-modules/pyspark/default.nix
index 625041fd81b2..2e6f41aa2332 100644
--- a/nixpkgs/pkgs/development/python-modules/pyspark/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyspark/default.nix
@@ -1,28 +1,39 @@
-{ buildPythonPackage, fetchPypi, lib, py4j }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, py4j
+}:
 
 buildPythonPackage rec {
   pname = "pyspark";
-  version = "3.1.2";
+  version = "3.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5e25ebb18756e9715f4d26848cc7e558035025da74b4fc325a0ebc05ff538e65";
+    sha256 = "bfea06179edbfb4bc76a0f470bd3c38e12f00e1023e3ad0373558d07cff102ab";
   };
 
   # pypandoc is broken with pandoc2, so we just lose docs.
   postPatch = ''
     sed -i "s/'pypandoc'//" setup.py
 
-    substituteInPlace setup.py --replace py4j==0.10.9 'py4j>=0.10.9,<0.11'
+    substituteInPlace setup.py \
+      --replace py4j==0.10.9.2 'py4j>=0.10.9,<0.11'
   '';
 
-  propagatedBuildInputs = [ py4j ];
+  propagatedBuildInputs = [
+    py4j
+  ];
 
-  # Tests assume running spark...
+  # Tests assume running spark instance
   doCheck = false;
 
+  pythonImportsCheck = [
+    "pyspark"
+  ];
+
   meta = with lib; {
-    description = "Apache Spark";
+    description = "Python bindings for Apache Spark";
     homepage = "https://github.com/apache/spark/tree/master/python";
     license = licenses.asl20;
     maintainers = [ maintainers.shlevy ];
diff --git a/nixpkgs/pkgs/development/python-modules/pysparse/default.nix b/nixpkgs/pkgs/development/python-modules/pysparse/default.nix
index fda5ad596088..02c1c36d0837 100644
--- a/nixpkgs/pkgs/development/python-modules/pysparse/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysparse/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchFromGitHub
 , numpy
-, setuptools
 , blas
 , lapack
 , isPy27
diff --git a/nixpkgs/pkgs/development/python-modules/pyspcwebgw/default.nix b/nixpkgs/pkgs/development/python-modules/pyspcwebgw/default.nix
index 8c901f17747a..e1a04a9a469d 100644
--- a/nixpkgs/pkgs/development/python-modules/pyspcwebgw/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyspcwebgw/default.nix
@@ -7,7 +7,6 @@
 , pytest-asyncio
 , pytestCheckHook
 , pythonOlder
-, requests
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/pyspinel/default.nix b/nixpkgs/pkgs/development/python-modules/pyspinel/default.nix
index dcd35132c2ed..69c06b8876d2 100644
--- a/nixpkgs/pkgs/development/python-modules/pyspinel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyspinel/default.nix
@@ -1,27 +1,33 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy27
-, future, pyserial, ipaddress
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pyserial
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pyspinel";
-  version = "unstable-2020-06-19";  # no versioned release since 2018
-  disabled = isPy27;
+  version = "unstable-2021-08-19";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "openthread";
     repo = pname;
-    rev = "e0bb3f8e6f49b593ab248a75de04a71626ae8101";
-    sha256 = "0nfmdkgbhmkl82dfxjpwiiarxngm6a3fvdrzpaqp60a4b17pipqg";
+    rev = "50d104e29eacd92d229f0b7179ec1067f5851c17";
+    sha256 = "0s2r00zb909cq3dd28i91qbl0nz8cga3g98z84gq5jqkjpiy8269";
   };
 
   propagatedBuildInputs = [
-    future
-    ipaddress
     pyserial
   ];
 
+  # Tests are out-dated
   doCheck = false;
-  pythonImportsCheck = [ "spinel" ];
+
+  pythonImportsCheck = [
+    "spinel"
+  ];
 
   meta = with lib; {
     description = "Interface to the OpenThread Network Co-Processor (NCP)";
diff --git a/nixpkgs/pkgs/development/python-modules/pyspnego/default.nix b/nixpkgs/pkgs/development/python-modules/pyspnego/default.nix
index a1793118d28d..8ba191317ea0 100644
--- a/nixpkgs/pkgs/development/python-modules/pyspnego/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyspnego/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "pyspnego";
-  version = "0.2.0";
+  version = "0.3.1";
 
   disabled = pythonOlder "3.7";
 
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "jborean93";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-puv9aq53NbjSuN561XFou404N9pIxvvMjZMgnNx3SjM=";
+    sha256 = "sha256-f7CR7wMxHNNpxizV7MFCtWci3SSNvdx+W5i/rgOUSxY=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pyspotify/default.nix b/nixpkgs/pkgs/development/python-modules/pyspotify/default.nix
index 302eb12de5a1..ae7e7468db95 100644
--- a/nixpkgs/pkgs/development/python-modules/pyspotify/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyspotify/default.nix
@@ -1,21 +1,24 @@
-{ lib, stdenv
+{ lib
+, stdenv
 , buildPythonPackage
-, fetchurl
+, fetchFromGitHub
 , cffi
-, pkgs
+, libspotify
 }:
 
 buildPythonPackage rec {
   pname = "pyspotify";
   version = "2.1.3";
 
-  src = fetchurl {
-    url = "https://github.com/mopidy/pyspotify/archive/v${version}.tar.gz";
-    sha256 = "1y1zqkqi9jz5m9bb2z7wmax7g40c1snm3c6di6b63726qrf26rb7";
+  src = fetchFromGitHub {
+    owner = "mopidy";
+    repo = "pyspotify";
+    rev = "v${version}";
+    sha256 = "sha256-CjIRwSlR5HPOJ9tp7lrdcDPiKH3p/PxvEJ8sqVD5s3Q=";
   };
 
   propagatedBuildInputs = [ cffi ];
-  buildInputs = [ pkgs.libspotify ];
+  buildInputs = [ libspotify ];
 
   # python zip complains about old timestamps
   preConfigure = ''
@@ -26,7 +29,7 @@ buildPythonPackage rec {
     find "$out" -name _spotify.so -exec \
         install_name_tool -change \
         @loader_path/../Frameworks/libspotify.framework/libspotify \
-        ${pkgs.libspotify}/lib/libspotify.dylib \
+        ${libspotify}/lib/libspotify.dylib \
         {} \;
   '';
 
@@ -34,11 +37,9 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    homepage    = "http://pyspotify.mopidy.com";
+    homepage = "http://pyspotify.mopidy.com";
     description = "A Python interface to Spotify’s online music streaming service";
-    license     = licenses.unfree;
+    license = licenses.unfree;
     maintainers = with maintainers; [ lovek323 ];
-    platforms   = platforms.unix;
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pystache/default.nix b/nixpkgs/pkgs/development/python-modules/pystache/default.nix
index c93655e10a8e..67ee0063827f 100644
--- a/nixpkgs/pkgs/development/python-modules/pystache/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pystache/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pystache";
-  version = "0.5.4";
+  version = "0.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f7bbc265fb957b4d6c7c042b336563179444ab313fb93a719759111eabd3b85a";
+    sha256 = "93bf92b2149a4c4b58d12142e2c4c6dd5c08d89e4c95afccd4b6efe2ee1d470d";
   };
 
   LC_ALL = "en_US.UTF-8";
diff --git a/nixpkgs/pkgs/development/python-modules/pystray/default.nix b/nixpkgs/pkgs/development/python-modules/pystray/default.nix
index 0bba9f988551..c3cf0a9841fa 100644
--- a/nixpkgs/pkgs/development/python-modules/pystray/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pystray/default.nix
@@ -3,13 +3,13 @@
 
 buildPythonPackage rec {
   pname = "pystray";
-  version = "0.17.4";
+  version = "0.19.2";
 
   src = fetchFromGitHub {
     owner = "moses-palmer";
     repo = "pystray";
     rev = "v${version}";
-    sha256 = "sha256-Rg2bbFTXLc1hXdShUmFxPcJtlcyWhspcjZtJYDSQ6vQ=";
+    sha256 = "sha256-8B178MSe4ujlnGBmQhIu+BoAh1doP9V5cL0ermLQTvs=";
   };
 
   nativeBuildInputs = [ sphinx ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyswitchbot/default.nix b/nixpkgs/pkgs/development/python-modules/pyswitchbot/default.nix
index 1f21d09d9504..a51f15f5eeb7 100644
--- a/nixpkgs/pkgs/development/python-modules/pyswitchbot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyswitchbot/default.nix
@@ -6,20 +6,26 @@
 
 buildPythonPackage rec {
   pname = "pyswitchbot";
-  version = "0.12.0";
+  version = "0.13.0";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "Danielhiversen";
     repo = "pySwitchbot";
     rev = version;
-    sha256 = "sha256-8u5KeWVaCOksag2CYE7GBl36crB4k9YdLZ5aHD9hlwU=";
+    sha256 = "sha256-dx3OMzWJohOYCg7TnrqL4FLZoC+Q1dyJyUAdreDyfl0=";
   };
 
-  propagatedBuildInputs = [ bluepy ];
+  propagatedBuildInputs = [
+    bluepy
+  ];
 
   # Project has no tests
   doCheck = false;
-  pythonImportsCheck = [ "switchbot" ];
+
+  pythonImportsCheck = [
+    "switchbot"
+  ];
 
   meta = with lib; {
     description = "Python library to control Switchbot IoT devices";
diff --git a/nixpkgs/pkgs/development/python-modules/pytado/default.nix b/nixpkgs/pkgs/development/python-modules/pytado/default.nix
index a54c89f348dd..31cea0c09d06 100644
--- a/nixpkgs/pkgs/development/python-modules/pytado/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytado/default.nix
@@ -1,19 +1,36 @@
-{ lib, buildPythonPackage, fetchFromGitHub }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, requests
+}:
 
 buildPythonPackage rec {
-  pname = "PyTado";
-  version = "0.2.7";
+  pname = "pytado";
+  version = "0.13.0";
 
   src = fetchFromGitHub {
     owner = "wmalgadey";
-    repo = pname;
-    # Upstream hasn't tagged this release yet. This commit fixes the build.
-    rev = "79a5dfdf75cd9a3e1a1ee8a8ff0d08923aebda7b";
-    sha256 = "14xdfw4913g4j4h576hjbigm7fiw8k0dc8s98gh2ag9xrc2ifgr0";
+    repo = "PyTado";
+    # Upstream hasn't tagged 0.13.0 yet
+    rev = "2a243174e9ae01ef7adae940ecc6e340992ab28d";
+    sha256 = "Y1FxEzs/AF0ZTPdOK/1v+2U2fidfu+AmZbPddJCWIFc=";
   };
 
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "PyTado"
+  ];
+
   meta = with lib; {
-    description = "Python binding for Tado web API. Pythonize your central heating!";
+    description = "Python binding for Tado web API";
     homepage = "https://github.com/wmalgadey/PyTado";
     license = licenses.gpl3;
     maintainers = with maintainers; [ elseym ];
diff --git a/nixpkgs/pkgs/development/python-modules/pytaglib/default.nix b/nixpkgs/pkgs/development/python-modules/pytaglib/default.nix
index bf17988e758c..cd51421fbc74 100644
--- a/nixpkgs/pkgs/development/python-modules/pytaglib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytaglib/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "pytaglib";
-  version = "1.4.6";
+  version = "1.5.0-1";
 
   src = fetchFromGitHub {
     owner = "supermihi";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-UAWXR1MCxEB48n7oQE+L545F+emlU3HErzLX6YTRteg=";
+    sha256 = "1nssiqzlzvzdd3pc5xd1qwgwgkyazynmq8qiljz0dhy0c8j6mkfp";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pytap2/default.nix b/nixpkgs/pkgs/development/python-modules/pytap2/default.nix
new file mode 100644
index 000000000000..3823f0270381
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytap2/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, nettools
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pytap2";
+  version = "2.2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "johnthagen";
+    repo = "pytap2";
+    rev = "v${version}";
+    hash = "sha256-/t0Seg+8ZrOWOHBu9ftE1xkrnDeoYdHopXBvJTMGYRI=";
+  };
+
+  propagatedBuildInputs = [
+    nettools
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "pytap2"
+  ];
+
+  meta = with lib; {
+    description = "Object-oriented wrapper around the Linux Tun/Tap device";
+    homepage = "https://github.com/johnthagen/pytap2";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytautulli/default.nix b/nixpkgs/pkgs/development/python-modules/pytautulli/default.nix
index 32806004f767..b96a3de3f7ad 100644
--- a/nixpkgs/pkgs/development/python-modules/pytautulli/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytautulli/default.nix
@@ -1,7 +1,6 @@
 { lib
 , aiohttp
 , aresponses
-, async-timeout
 , buildPythonPackage
 , fetchFromGitHub
 , pytest-asyncio
@@ -11,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "pytautulli";
-  version = "21.10.0";
+  version = "21.11.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -20,7 +19,7 @@ buildPythonPackage rec {
     owner = "ludeeus";
     repo = pname;
     rev = version;
-    sha256 = "1gi1jalwzf1aykvdmdbvr7hvfch9wbbjra87f1vzdmkb5iiirw01";
+    sha256 = "sha256-zODU3aN+8Fdw/GQ/EfZhn6kOuLDARKgLULzRw2+b2BM=";
   };
 
   postPatch = ''
@@ -32,7 +31,6 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     aiohttp
-    async-timeout
   ];
 
   checkInputs = [
@@ -41,7 +39,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "pytautulli" ];
+  pythonImportsCheck = [
+    "pytautulli"
+  ];
 
   meta = with lib; {
     description = "Python module to get information from Tautulli";
diff --git a/nixpkgs/pkgs/development/python-modules/pytenable/default.nix b/nixpkgs/pkgs/development/python-modules/pytenable/default.nix
index d2e227c1b175..af3c2c9b6514 100644
--- a/nixpkgs/pkgs/development/python-modules/pytenable/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytenable/default.nix
@@ -14,17 +14,18 @@
 , responses
 , restfly
 , semver
+, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "pytenable";
-  version = "1.3.3";
+  version = "1.4.2";
 
   src = fetchFromGitHub {
     owner = "tenable";
     repo = "pyTenable";
     rev = version;
-    sha256 = "19vhy7mf972545abydywyig82gkxalp6sfwinvj71hzbihwwzjpq";
+    sha256 = "sha256-qljoJ+nYFVS5VHr/M4mITtO9Czuyb4HLzVjhprhyJIs=";
   };
 
   propagatedBuildInputs = [
@@ -40,6 +41,7 @@ buildPythonPackage rec {
     requests
     requests-pkcs12
     restfly
+    typing-extensions
   ];
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-aio/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-aio/default.nix
new file mode 100644
index 000000000000..09c278a70e10
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-aio/default.nix
@@ -0,0 +1,57 @@
+{ lib
+, anyio
+, buildPythonPackage
+, curio
+, fetchFromGitHub
+, hypothesis
+, pytest
+, pytestCheckHook
+, pythonOlder
+, sniffio
+, trio
+, trio-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "pytest-aio";
+  version = "1.4.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "klen";
+    repo = "pytest-aio";
+    rev = version;
+    sha256 = "pLH0yXe/KS9ohI8+hWSprP1OA3Qjki2BPqeApMPMGDs=";
+  };
+
+  postPatch = ''
+    sed -i '/addopts/d' setup.cfg
+  '';
+
+  buildInputs = [
+    pytest
+  ];
+
+  checkInputs = [
+    anyio
+    curio
+    hypothesis
+    pytestCheckHook
+    sniffio
+    trio
+    trio-asyncio
+  ];
+
+  pythonImportsCheck = [
+    "pytest_aio"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/klen/pytest-aio";
+    description = "Pytest plugin for aiohttp support";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-annotate/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-annotate/default.nix
index 22b57f9e7706..7936d6e4ac2d 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-annotate/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-annotate/default.nix
@@ -6,12 +6,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.0.3";
+  version = "1.0.4";
   pname = "pytest-annotate";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1ef5924aca93a7b47edaf46a38284fb5a173eed5e3b1a93ec00c8e35f0dd76ab";
+    sha256 = "d0da4c3d872a7d5796ac85016caa1da38ae902bebdc759e1b6c0f6f8b5802741";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-arraydiff/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-arraydiff/default.nix
index 5c6f9cf2b852..bfbec757b1d7 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-arraydiff/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-arraydiff/default.nix
@@ -4,7 +4,6 @@
 , numpy
 , six
 , pytest
-, astropy
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-astropy/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-astropy/default.nix
index f6736a736c34..9a3f46d476c2 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-astropy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-astropy/default.nix
@@ -3,24 +3,25 @@
 , fetchPypi
 , hypothesis
 , pytest
+, pytest-arraydiff
 , pytest-astropy-header
 , pytest-doctestplus
 , pytest-filter-subpackage
-, pytest-remotedata
+, pytest-mock
 , pytest-openfiles
-, pytest-arraydiff
+, pytest-remotedata
 , setuptools-scm
 , pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pytest-astropy";
-  version = "0.8.0";
-  disabled = pythonOlder "3.6";
+  version = "0.9.0";
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "619800eb2cbf64548fbea25268efe7c6f6ae206cb4825f34abd36f27bcf946a2";
+    sha256 = "7cdac1b2a5460f37477a329712c3a5d4af4ddf876b064731995663621be4308b";
   };
 
   nativeBuildInputs = [
@@ -33,19 +34,17 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     hypothesis
+    pytest-arraydiff
     pytest-astropy-header
     pytest-doctestplus
     pytest-filter-subpackage
-    pytest-remotedata
+    pytest-mock
     pytest-openfiles
-    pytest-arraydiff
+    pytest-remotedata
   ];
 
-  # pytest-astropy is a meta package and has no tests
-  #doCheck = false;
-  checkPhase = ''
-    # 'doCheck = false;' still invokes the pytestCheckPhase which makes the build fail
-  '';
+  # pytest-astropy is a meta package that only propagates requirements
+  doCheck = false;
 
   meta = with lib; {
     description = "Meta-package containing dependencies for testing";
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-asyncio/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-asyncio/default.nix
index 3ec6392f884c..9e09724624c2 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-asyncio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-asyncio/default.nix
@@ -1,13 +1,13 @@
 { lib, buildPythonPackage, fetchPypi, pytest, isPy3k, isPy35, async_generator }:
 buildPythonPackage rec {
   pname = "pytest-asyncio";
-  version = "0.15.1";
+  version = "0.16.0";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2564ceb9612bbd560d19ca4b41347b54e7835c2f792c504f698e05395ed63f6f";
+    sha256 = "7496c5977ce88c34379df64a66459fe395cd05543f0a2f837016e7144391fcfb";
   };
 
   buildInputs = [ pytest ]
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-cases/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-cases/default.nix
index b8c1ab527220..47f5bbb1fd0b 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-cases/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-cases/default.nix
@@ -10,12 +10,14 @@
 
 buildPythonPackage rec {
   pname = "pytest-cases";
-  version = "3.6.4";
+  version = "3.6.5";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-m2oxE7q46TWadhZgpwTAHKep5ZN9LG1VNCRJkPz5W1E=";
+    sha256 = "sha256-JZfQI6dgYFHWUbCMuHD78eBi9svoV5zkX887V9xFLNw=";
   };
 
   nativeBuildInputs = [
@@ -32,7 +34,8 @@ buildPythonPackage rec {
   ];
 
   postPatch = ''
-    substituteInPlace setup.cfg --replace "pytest-runner" ""
+    substituteInPlace setup.cfg \
+      --replace "pytest-runner" ""
   '';
 
   # Tests have dependencies (pytest-harvest, pytest-steps) which
@@ -40,7 +43,9 @@ buildPythonPackage rec {
   # makefun, pytest-*) have circular dependecies.
   doCheck = false;
 
-  pythonImportsCheck = [ "pytest_cases" ];
+  pythonImportsCheck = [
+    "pytest_cases"
+  ];
 
   meta = with lib; {
     description = "Separate test code from test cases in pytest";
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-datadir/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-datadir/default.nix
index 26c22dfa388b..d53734618b3e 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-datadir/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-datadir/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchFromGitHub
-, setuptools-scm, pytest, cmake
+, setuptools-scm, pytest
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-doctestplus/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-doctestplus/default.nix
index 8cd73f483fa8..c49d76705f79 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-doctestplus/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-doctestplus/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "pytest-doctestplus";
-  version = "0.10.1";
+  version = "0.11.2";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7e9e0912c206c53cd6ee996265aa99d5c99c9334e37d025ce6114bc0416ffc14";
+    sha256 = "f393adf659709a5f111d6ca190871c61808a6f3611bd0a132e27e93b24dd3448";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-dotenv/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-dotenv/default.nix
new file mode 100644
index 000000000000..3ae89e6a5197
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-dotenv/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, pytest, python-dotenv }:
+
+buildPythonPackage rec {
+  pname = "pytest-dotenv";
+  version = "0.5.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "LcbDrG2HZMccbSgE6QLQ/4EPoZaS6V/hOK78mxqnNzI=";
+  };
+
+  buildInputs = [ pytest ];
+  propagatedBuildInputs = [ python-dotenv ];
+
+  checkInputs = [ pytest ];
+
+  meta = with lib; {
+    description = "A pytest plugin that parses environment files before running tests";
+    homepage = "https://github.com/quiqua/pytest-dotenv";
+    license = licenses.mit;
+    maintainers = with maintainers; [ cleeyv ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-flake8/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-flake8/default.nix
index 9486875ff34a..231ddf97c948 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-flake8/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-flake8/default.nix
@@ -1,9 +1,11 @@
-{lib, buildPythonPackage, fetchPypi, pytest, flake8}:
+{lib, buildPythonPackage, fetchPypi, pythonOlder, fetchpatch, pytest, flake8}:
 
 buildPythonPackage rec {
   pname = "pytest-flake8";
   version = "1.0.7";
 
+  disabled = pythonOlder "3.5";
+
   # although pytest is a runtime dependency, do not add it as
   # propagatedBuildInputs in order to allow packages depend on another version
   # of pytest more easily
@@ -15,6 +17,14 @@ buildPythonPackage rec {
     sha256 = "f0259761a903563f33d6f099914afef339c085085e643bee8343eb323b32dd6b";
   };
 
+  # see https://github.com/tholo/pytest-flake8/pull/82/commits
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/tholo/pytest-flake8/commit/eda4ef74c0f25b856fe282742ea206b21e94c24c.patch";
+      sha256 = "0kq0wshds00rk6wvkn6ccjrjyqxg7m9l7dlyaqw974asizw6byci";
+    })
+  ];
+
   checkPhase = ''
     pytest .
   '';
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-flakes/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-flakes/default.nix
index e016b68837de..afa04dfe937a 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-flakes/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-flakes/default.nix
@@ -7,12 +7,12 @@ buildPythonPackage rec {
   # upstream has abandoned project in favor of pytest-flake8
   # retaining package to not break other packages
   pname = "pytest-flakes";
-  version = "4.0.3";
+  version = "4.0.5";
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bf070c5485dad82d5b5f5d0eb08d269737e378492d9a68f5223b0a90924c7754";
+    sha256 = "953134e97215ae31f6879fbd7368c18d43f709dc2fab5b7777db2bb2bac3a924";
   };
 
   buildInputs = [ pytest ];
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-freezegun/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-freezegun/default.nix
index 2fbc7a651c18..3ba67867a1aa 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-freezegun/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-freezegun/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, isPy27
 , fetchFromGitHub
 , freezegun
 , pytest
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-helpers-namespace/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-helpers-namespace/default.nix
index eac8cf6377d1..f7d6ce312640 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-helpers-namespace/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-helpers-namespace/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "pytest-helpers-namespace";
-  version = "2021.4.29";
+  version = "2021.12.29";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "183524e3db4e2a1fea92e0ca3662a624ba44c9f3568da15679d7535ba6838a6a";
+    sha256 = "792038247e0021beb966a7ea6e3a70ff5fcfba77eb72c6ec8fd6287af871c35b";
   };
 
   nativeBuildInputs = [ setuptools setuptools-declarative-requirements setuptools-scm ];
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-httpserver/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-httpserver/default.nix
index 5a5c3b1449f2..cd07a104038c 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-httpserver/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-httpserver/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "pytest-httpserver";
-  version = "1.0.2";
+  version = "1.0.3";
 
   src = fetchPypi {
     pname = "pytest_httpserver";
     inherit version;
-    sha256 = "sha256-JwH9HZgU1YVR+dEETbM1xrqYcxaTZsWDSVI6WM907UA=";
+    sha256 = "87561c4fa6a7bc306d76d1979a3eb9d54eb26bfb2f3f51f1643bf3c090ce629d";
   };
 
   propagatedBuildInputs = [ werkzeug ];
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-httpx/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-httpx/default.nix
index b0bc07b6c162..819c0a14832f 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-httpx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-httpx/default.nix
@@ -9,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "pytest-httpx";
-  version = "0.13.0";
+  version = "0.15.0";
 
   src = fetchFromGitHub {
     owner = "Colin-b";
     repo = "pytest_httpx";
     rev = "v${version}";
-    sha256 = "0lh7df3ysxmjzvx6242xb6qiwpfxrnj70kjmw5sndvzmy5dfpxfc";
+    sha256 = "08dxvjkxlnam3r0yp17495d1vksyawzzkpykacjql1gi6hqlfrwg";
   };
 
   buildInputs = [ pytest ];
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-json-report/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-json-report/default.nix
new file mode 100644
index 000000000000..2b89fe715921
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-json-report/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, pytest-metadata
+, pytest-xdist
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "pytest-json-report";
+  version = "1.4.1";
+
+  src = fetchFromGitHub {
+    owner = "numirias";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-OS9ASUp9iJ12Ovr931RQU/DHEAXqbgcRMCBP4h+GAhk=";
+  };
+
+  buildInputs = [
+    pytest
+  ];
+
+  propagatedBuildInputs = [
+    pytest-metadata
+  ];
+
+  checkInputs = [
+    pytest-xdist
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # pytest-flaky is not available at the moment
+    "test_bug_31"
+  ];
+
+  pythonImportsCheck = [
+    "pytest_jsonreport"
+  ];
+
+  meta = with lib; {
+    description = "Pytest plugin to report test results as JSON";
+    homepage = "https://github.com/numirias/pytest-json-report";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-localserver/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-localserver/default.nix
index 577400b859eb..a3f57ff40e7a 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-localserver/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-localserver/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "pytest-localserver";
-  version = "0.5.0";
+  version = "0.5.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3a5427909d1dfda10772c1bae4b9803679c0a8f04adb66c338ac607773bfefc2";
+    sha256 = "ef6f04193dc0f7e8df5b27b3a8834318fa12eaf025436d2a99afff1b73cde761";
   };
 
   propagatedBuildInputs = [ werkzeug ];
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-mock/2.nix b/nixpkgs/pkgs/development/python-modules/pytest-mock/2.nix
deleted file mode 100644
index ad1e7f0c3fd3..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pytest-mock/2.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, isPy3k
-, pytest
-, mock
-, setuptools-scm
-}:
-
-buildPythonPackage rec {
-  pname = "pytest-mock";
-  version = "2.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b35eb281e93aafed138db25c8772b95d3756108b601947f89af503f8c629413f";
-  };
-
-  propagatedBuildInputs = lib.optional (!isPy3k) mock;
-
-  nativeBuildInputs = [
-   setuptools-scm
-  ];
-
-  checkInputs = [
-    pytest
-  ];
-
-  checkPhase = ''
-    pytest
-  '';
-
-  meta = with lib; {
-    description = "Thin-wrapper around the mock package for easier use with py.test.";
-    homepage    = "https://github.com/pytest-dev/pytest-mock";
-    license     = licenses.mit;
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-mypy-plugins/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-mypy-plugins/default.nix
new file mode 100644
index 000000000000..38b2168e13fd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-mypy-plugins/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, chevron
+, pyyaml
+, mypy
+, pytest
+, decorator
+, regex
+}:
+
+buildPythonPackage rec {
+  pname = "pytest-mypy-plugins";
+  version = "1.9.2";
+  src = fetchFromGitHub {
+    owner = "typeddjango";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-Me5P4Q2M+gGEWlUVgQ0L048rVUOlUzVMgZZcqZPeE4Q=";
+  };
+  propagatedBuildInputs = [ chevron pyyaml mypy pytest decorator regex ];
+
+  meta = with lib; {
+    description = "pytest plugin for testing mypy types, stubs, and plugins";
+    homepage = "https://github.com/TypedDjango/pytest-mypy-plugins";
+    license = licenses.mit;
+    maintainers = with maintainers; [ SomeoneSerge ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-raisin/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-raisin/default.nix
new file mode 100644
index 000000000000..7412928062d7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytest-raisin/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, flit-core
+, pytest
+}:
+
+buildPythonPackage rec {
+  pname = "pytest-raisin";
+  version = "0.3";
+  format = "flit";
+
+  src = fetchFromGitHub {
+    owner = "wimglenn";
+    repo = "pytest-raisin";
+    rev = "v${version}";
+    sha256 = "73cOrsqlE04m6X3a6VwtRzfi24oqkdO3HjKQH61bU88=";
+  };
+
+  nativeBuildInputs = [
+    flit-core
+  ];
+
+  propagatedBuildInputs = [
+    pytest
+  ];
+
+  # tests cause circular pytest-raisin already registered with pytest error
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Plugin enabling the use of exception instances with pytest.raises context";
+    homepage = "https://github.com/wimglenn/pytest-raisin";
+    license = licenses.mit;
+    maintainers = with maintainers; [ aadibajpai ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-repeat/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-repeat/default.nix
index 0652bcacbccd..1b3721282159 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-repeat/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-repeat/default.nix
@@ -3,7 +3,6 @@
 , fetchPypi
 , setuptools-scm
 , pytest
-, fetchpatch
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-sanic/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-sanic/default.nix
index 761f4deed2dc..2bce8eaecb71 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-sanic/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-sanic/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "pytest-sanic";
-  version = "1.8.1";
+  version = "1.9.1";
 
   src = fetchFromGitHub {
     owner = "yunstanford";
     repo = pname;
     rev = "v${version}";
-    sha256 = "128qxpqilqjhpjzjzzfzsgi4bc0vxwmz0k3xwry6fwhyzcf2bzl5";
+    sha256 = "sha256-82Xq/jyxTXyZVHqn7G+S9K++InDdORCO9oFqgaIgY7s=";
   };
 
   buildInputs = [
@@ -38,33 +38,15 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  postPatch = ''
-    # https://github.com/yunstanford/pytest-sanic/issues/55
-    substituteInPlace setup.py \
-      --replace "websockets>=8.1,<9.0" "websockets>=9.1,<10.0"
-  '';
-
-  disabledTests = [
-    # https://github.com/yunstanford/pytest-sanic/issues/51
-    "test_fixture_sanic_client_get"
-    "test_fixture_sanic_client_post"
-    "test_fixture_sanic_client_put"
-    "test_fixture_sanic_client_delete"
-    "test_fixture_sanic_client_patch"
-    "test_fixture_sanic_client_options"
-    "test_fixture_sanic_client_head"
-    "test_fixture_sanic_client_close"
-    "test_fixture_sanic_client_passing_headers"
-    "test_fixture_sanic_client_context_manager"
-    "test_fixture_test_client_context_manager"
+  pythonImportsCheck = [
+    "pytest_sanic"
   ];
 
-  pythonImportsCheck = [ "pytest_sanic" ];
-
   meta = with lib; {
     description = "A pytest plugin for Sanic";
     homepage = "https://github.com/yunstanford/pytest-sanic/";
     license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
+    broken = true; # 2021-11-04
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-services/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-services/default.nix
index 4f2a577bb4db..41890215025c 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-services/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-services/default.nix
@@ -6,7 +6,6 @@
 , psutil
 , pytest
 , setuptools-scm
-, subprocess32 ? null
 , toml
 , zc_lockfile
 }:
@@ -31,7 +30,7 @@ buildPythonPackage rec {
     requests
     psutil
     zc_lockfile
-  ] ++ lib.optional (!isPy3k) subprocess32;
+  ];
 
   # no tests in PyPI tarball
   doCheck = false;
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-snapshot/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-snapshot/default.nix
index e5f8ce159f1f..3b7a9f389ebd 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-snapshot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-snapshot/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pytest-snapshot";
-  version = "0.7.0";
+  version = "0.8.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "427b5ab088b25a1c8b63ce99725040664c840ff1f5a3891252723cce972897f9";
+    sha256 = "cf84c88c3e0b4ae08ae797d9ccdc32715b64dd68b2da40f575db56956ed23326";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-subprocess/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-subprocess/default.nix
index 83afef929244..74f1e7cddcee 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-subprocess/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-subprocess/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "pytest-subprocess";
-  version = "1.1.1";
+  version = "1.3.2";
 
   disabled = pythonOlder "3.6";
 
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "aklajnert";
     repo = "pytest-subprocess";
     rev = version;
-    sha256 = "sha256-o8wDZhNHGPV1BQ5Zi2kFNlWq5w0cqebaJUhUUwTK6So=";
+    sha256 = "sha256-auPpqoPeYxmkWTVbbKhEZI6gJGH9Pf1D9YLkuD3FaX0=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-testmon/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-testmon/default.nix
index 94f587999773..1b291778b2ad 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-testmon/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-testmon/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "pytest-testmon";
-  version = "1.2.0";
+  version = "1.2.2";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2c61ae6185ea7dc07ea0d4db3984be62f1a176a5c16615fd208c5945aa411599";
+    sha256 = "e69d5aeac4e371986f94e8ad06e56d70633870d026f2306fca44051f02fcb688";
   };
 
   propagatedBuildInputs = [ coverage ];
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-trio/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-trio/default.nix
index a9327e2b2320..e42ed5c68386 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-trio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-trio/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchFromGitHub, pythonOlder
-, trio, python, async_generator, hypothesis, outcome, pytest }:
+, trio, async_generator, hypothesis, outcome, pytest }:
 
 buildPythonPackage rec {
   pname = "pytest-trio";
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-xdist/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-xdist/default.nix
index e9b13177d9dd..f71522a40dc6 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-xdist/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-xdist/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "pytest-xdist";
-  version = "2.3.0";
+  version = "2.4.0";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e8ecde2f85d88fbcadb7d28cb33da0fa29bca5cf7d5967fa89fc0e97e5299ea5";
+    sha256 = "89b330316f7fc475f999c81b577c2b926c9569f3d397ae432c0c2e2496d61ff9";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
@@ -36,6 +36,8 @@ buildPythonPackage rec {
     "test_rsync_report"
     "test_init_rsync_roots"
     "test_rsyncignore"
+    # flakey
+    "test_internal_errors_propagate_to_controller"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/pytest/4.nix b/nixpkgs/pkgs/development/python-modules/pytest/4.nix
index fd6d3507afb8..0a0ae571ba01 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest/4.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest/4.nix
@@ -43,6 +43,19 @@ buildPythonPackage rec {
     }
 
     preDistPhases+=" pytestcachePhase"
+
+    # pytest generates it's own bytecode files to improve assertion messages.
+    # These files similar to cpython's bytecode files but are never laoded
+    # by python interpreter directly. We remove them for a few reasons:
+    # - files are non-deterministic: https://github.com/NixOS/nixpkgs/issues/139292
+    #   (file headers are generatedt by pytest directly and contain timestamps)
+    # - files are not needed after tests are finished
+    pytestRemoveBytecodePhase () {
+        # suffix is defined at:
+        #    https://github.com/pytest-dev/pytest/blob/4.6.11/src/_pytest/assertion/rewrite.py#L32-L47
+        find $out -name "*-PYTEST.py[co]" -delete
+    }
+    preDistPhases+=" pytestRemoveBytecodePhase"
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/pytest/5.nix b/nixpkgs/pkgs/development/python-modules/pytest/5.nix
index b38c1a759fe3..ee04e3be429f 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest/5.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest/5.nix
@@ -1,16 +1,13 @@
 { lib, buildPythonPackage, pythonOlder, fetchPypi, isPy3k, isPyPy
 , atomicwrites
 , attrs
-, funcsigs
 , hypothesis
-, mock
 , more-itertools
 , packaging
 , pathlib2
 , pluggy
 , py
 , pygments
-, python
 , setuptools
 , setuptools-scm
 , six
@@ -70,6 +67,19 @@ buildPythonPackage rec {
         find $out -name .pytest_cache -type d -exec rm -rf {} +
     }
     preDistPhases+=" pytestcachePhase"
+
+    # pytest generates it's own bytecode files to improve assertion messages.
+    # These files similar to cpython's bytecode files but are never laoded
+    # by python interpreter directly. We remove them for a few reasons:
+    # - files are non-deterministic: https://github.com/NixOS/nixpkgs/issues/139292
+    #   (file headers are generatedt by pytest directly and contain timestamps)
+    # - files are not needed after tests are finished
+    pytestRemoveBytecodePhase () {
+        # suffix is defined at:
+        #    https://github.com/pytest-dev/pytest/blob/5.4.3/src/_pytest/assertion/rewrite.py#L42-L45
+        find $out -name "*-pytest-*.py[co]" -delete
+    }
+    preDistPhases+=" pytestRemoveBytecodePhase"
   '';
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/pytest/default.nix b/nixpkgs/pkgs/development/python-modules/pytest/default.nix
index f2438622f6a6..ac036936b991 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest/default.nix
@@ -82,6 +82,19 @@ buildPythonPackage rec {
         find $out -name .pytest_cache -type d -exec rm -rf {} +
     }
     preDistPhases+=" pytestcachePhase"
+
+    # pytest generates it's own bytecode files to improve assertion messages.
+    # These files similar to cpython's bytecode files but are never laoded
+    # by python interpreter directly. We remove them for a few reasons:
+    # - files are non-deterministic: https://github.com/NixOS/nixpkgs/issues/139292
+    #   (file headers are generatedt by pytest directly and contain timestamps)
+    # - files are not needed after tests are finished
+    pytestRemoveBytecodePhase () {
+        # suffix is defined at:
+        #    https://github.com/pytest-dev/pytest/blob/6.2.5/src/_pytest/assertion/rewrite.py#L51-L53
+        find $out -name "*-pytest-*.py[co]" -delete
+    }
+    preDistPhases+=" pytestRemoveBytecodePhase"
   '';
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/python-box/default.nix b/nixpkgs/pkgs/development/python-modules/python-box/default.nix
index 6410bbadd27e..0edf2b695807 100644
--- a/nixpkgs/pkgs/development/python-modules/python-box/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-box/default.nix
@@ -5,7 +5,7 @@
 , pytestCheckHook
 , pythonOlder
 , pyyaml
-, ruamel_yaml
+, ruamel-yaml
 , toml
 }:
 
@@ -24,7 +24,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     msgpack
     pyyaml
-    ruamel_yaml
+    ruamel-yaml
     toml
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/python-cinderclient/default.nix b/nixpkgs/pkgs/development/python-modules/python-cinderclient/default.nix
index 8346074c9c51..fe421fa55d38 100644
--- a/nixpkgs/pkgs/development/python-modules/python-cinderclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-cinderclient/default.nix
@@ -17,11 +17,11 @@
 
 buildPythonPackage rec {
   pname = "python-cinderclient";
-  version = "8.1.0";
+  version = "8.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b57b432b2ac9161c2482a569a023211d2d3d0ada81c4da62c8f6e47f0b2bf82d";
+    sha256 = "7b2f08a2d1cc05d2c1f84f02fadb2208678b1acb501acfe2de33720078ec7b9f";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/python-codon-tables/default.nix b/nixpkgs/pkgs/development/python-modules/python-codon-tables/default.nix
index 4c1ec6a3a20e..7c4551a9d67a 100644
--- a/nixpkgs/pkgs/development/python-modules/python-codon-tables/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-codon-tables/default.nix
@@ -5,12 +5,12 @@
 
 buildPythonPackage rec {
   pname = "python-codon-tables";
-  version = "0.1.10";
+  version = "0.1.11";
 
   src = fetchPypi {
     pname = "python_codon_tables";
     inherit version;
-    sha256 = "265beac928cbb77c6745bc728471adc7ffef933b794be303d272ecb9ad37d3d4";
+    sha256 = "ba590fcfb1988f9674c8627464caeb3ea0797d970872a2c27ea09906acd24110";
   };
 
   # no tests in tarball
diff --git a/nixpkgs/pkgs/development/python-modules/python-crontab/default.nix b/nixpkgs/pkgs/development/python-modules/python-crontab/default.nix
index f5e368de0372..9de0801d5375 100644
--- a/nixpkgs/pkgs/development/python-modules/python-crontab/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-crontab/default.nix
@@ -2,15 +2,19 @@
 
 buildPythonPackage rec {
   pname = "python-crontab";
-  version = "2.5.1";
+  version = "2.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4bbe7e720753a132ca4ca9d4094915f40e9d9dc8a807a4564007651018ce8c31";
+    sha256 = "1e35ed7a3cdc3100545b43e196d34754e6551e7f95e4caebbe0e1c0ca41c2f1b";
   };
 
   checkInputs = [ pytestCheckHook ];
-  disabledTests = [ "test_07_non_posix_shell"];
+  disabledTests = [
+    "test_07_non_posix_shell"
+    # doctest that assumes /tmp is writeable, awkward to patch
+    "test_03_usage"
+  ];
 
   propagatedBuildInputs = [ python-dateutil ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/python-csxcad/default.nix b/nixpkgs/pkgs/development/python-modules/python-csxcad/default.nix
index 885208e0e61c..e6f22d37b55d 100644
--- a/nixpkgs/pkgs/development/python-modules/python-csxcad/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-csxcad/default.nix
@@ -36,7 +36,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python interface to CSXCAD";
-    homepage = http://openems.de/index.php/Main_Page.html;
+    homepage = "http://openems.de/index.php/Main_Page.html";
     license = licenses.gpl3;
     maintainers = with maintainers; [ matthuszagh ];
     platforms = platforms.linux;
diff --git a/nixpkgs/pkgs/development/python-modules/python-datemath/default.nix b/nixpkgs/pkgs/development/python-modules/python-datemath/default.nix
new file mode 100644
index 000000000000..4b0366ae4da5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-datemath/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, arrow
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, pytestCheckHook
+, unittest2
+}:
+
+buildPythonPackage rec {
+  pname = "python-datemath";
+  version = "1.5.5";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "nickmaccarthy";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-WVWGhyBguE1+KEMQu0N5QxO7IC4rPEJ/2L3VWUCQNi4=";
+  };
+
+  propagatedBuildInputs = [
+    arrow
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    unittest2
+  ];
+
+  pytestFlagsArray = [
+    "tests.py"
+  ];
+
+  pythonImportsCheck = [
+    "datemath"
+  ];
+
+  meta = with lib; {
+    description = "Python module to emulate the date math used in SOLR and Elasticsearch";
+    homepage = "https://github.com/nickmaccarthy/python-datemath";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-didl-lite/default.nix b/nixpkgs/pkgs/development/python-modules/python-didl-lite/default.nix
index cab8bc0c0b0c..f58da984f8c9 100644
--- a/nixpkgs/pkgs/development/python-modules/python-didl-lite/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-didl-lite/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "python-didl-lite";
-  version = "1.3.0";
+  version = "1.3.2";
   disabled = pythonOlder "3.5.3";
 
   src = fetchFromGitHub {
     owner = "StevenLooman";
     repo = pname;
     rev = version;
-    sha256 = "sha256-NsZ/VQlKEp4p3JRSNQKTGvzLrKgDCkkT81NzgS3UHos=";
+    sha256 = "sha256-laKmWGDEzlBVJCUSKxekjPEXVlAz4MIzM7dNJfta/ek=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/python-dotenv/default.nix b/nixpkgs/pkgs/development/python-modules/python-dotenv/default.nix
index 22bf7ea7ece4..774ca6855aee 100644
--- a/nixpkgs/pkgs/development/python-modules/python-dotenv/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-dotenv/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "python-dotenv";
-  version = "0.19.0";
+  version = "0.19.2";
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f521bc2ac9a8e03c736f62911605c5d83970021e3fa95b37d769e2bbbe9b6172";
+    sha256 = "a5de49a31e953b45ff2d2fd434bbc2670e8db5273606c1e737cc6b93eff3655f";
   };
 
   propagatedBuildInputs = [ click ];
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 dc35c0c022fb..d1769806e283 100644
--- a/nixpkgs/pkgs/development/python-modules/python-ecobee-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-ecobee-api/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "python-ecobee-api";
-  version = "0.2.13";
+  version = "0.2.15";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7c39f5aac854a2fb8fb33f41b351769a92ff784bc6112e7a5c1b9e1949a0fefe";
+    sha256 = "91929b0dda6acc2af6661d0fb539eb6375323d7529d3d64b67915efb1dc1a6ca";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/python-engineio/default.nix b/nixpkgs/pkgs/development/python-modules/python-engineio/default.nix
index 7f51ccac6a72..baf385bb7d78 100644
--- a/nixpkgs/pkgs/development/python-modules/python-engineio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-engineio/default.nix
@@ -1,28 +1,31 @@
-{ lib, stdenv
-, buildPythonPackage
-, fetchFromGitHub
+{ lib
+, stdenv
 , aiohttp
+, buildPythonPackage
 , eventlet
+, fetchFromGitHub
 , iana-etc
 , libredirect
 , mock
+, pytestCheckHook
+, pythonOlder
 , requests
-, six
 , tornado
 , websocket-client
-, websockets
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "python-engineio";
-  version = "4.2.1";
+  version = "4.3.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "miguelgrinberg";
     repo = "python-engineio";
     rev = "v${version}";
-    sha256 = "sha256-aAoTeQZCtxddVBPwlyv2j4aACMO9p0vQ/ESkkv4E3VE=";
+    sha256 = "sha256-ohNRtceh0bHBlnGSFUckG5KzoLY8Q1jvpFee7T78Vto=";
   };
 
   checkInputs = [
@@ -32,7 +35,6 @@ buildPythonPackage rec {
     requests
     tornado
     websocket-client
-    websockets
     pytestCheckHook
   ];
 
@@ -43,11 +45,19 @@ buildPythonPackage rec {
     export NIX_REDIRECTS=/etc/protocols=${iana-etc}/etc/protocols:/etc/resolv.conf=$(realpath resolv.conf) \
       LD_PRELOAD=${libredirect}/lib/libredirect.so
   '';
-  postCheck = "unset NIX_REDIRECTS LD_PRELOAD";
+
+  postCheck = ''
+    unset NIX_REDIRECTS LD_PRELOAD
+  '';
 
   # somehow effective log level does not change?
-  disabledTests = [ "test_logger" ];
-  pythonImportsCheck = [ "engineio" ];
+  disabledTests = [
+    "test_logger"
+  ];
+
+  pythonImportsCheck = [
+    "engineio"
+  ];
 
   meta = with lib; {
     description = "Python based Engine.IO client and server";
diff --git a/nixpkgs/pkgs/development/python-modules/python-gammu/default.nix b/nixpkgs/pkgs/development/python-modules/python-gammu/default.nix
index d61512bd6b1f..ec8d5841bafd 100644
--- a/nixpkgs/pkgs/development/python-modules/python-gammu/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-gammu/default.nix
@@ -9,25 +9,34 @@
 
 buildPythonPackage rec {
   pname = "python-gammu";
-  version = "3.2.3";
+  version = "3.2.4";
+  format = "setuptools";
+
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "gammu";
     repo = pname;
     rev = version;
-    sha256 = "sha256-MtFxKRE6CB/LZq9McMyYhjwfs/Rdke9gsNUqbOQdWYQ=";
+    sha256 = "sha256-lFQBrKWwdvUScwsBva08izZVeVDn1u+ldzixtL9YTpA=";
   };
 
-  nativeBuildInputs = [ pkg-config ];
+  nativeBuildInputs = [
+    pkg-config
+  ];
 
-  buildInputs = [ gammu ];
+  buildInputs = [
+    gammu
+  ];
 
   # Check with the next release if tests could be run with pytest
   # checkInputs = [ pytestCheckHook ];
   # Don't run tests for now
   doCheck = false;
-  pythonImportsCheck = [ "gammu" ];
+
+  pythonImportsCheck = [
+    "gammu"
+  ];
 
   meta = with lib; {
     description = "Python bindings for Gammu";
diff --git a/nixpkgs/pkgs/development/python-modules/python-gnupg/default.nix b/nixpkgs/pkgs/development/python-modules/python-gnupg/default.nix
index 7189a235deda..e26e60c43ec4 100644
--- a/nixpkgs/pkgs/development/python-modules/python-gnupg/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-gnupg/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname   = "python-gnupg";
-  version = "0.4.7";
+  version = "0.4.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2061f56b1942c29b92727bf9aecbd3cea3893acc9cccbdc7eb4604285efe4ac7";
+    sha256 = "b64de1ae5cedf872b437201a566fa2c62ce0c95ea2e30177eb53aee1258507d7";
   };
 
   # Let's make the library default to our gpg binary
diff --git a/nixpkgs/pkgs/development/python-modules/python-google-nest/default.nix b/nixpkgs/pkgs/development/python-modules/python-google-nest/default.nix
new file mode 100644
index 000000000000..a1e612e1f74e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-google-nest/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, requests_oauthlib
+}:
+
+buildPythonPackage rec {
+  pname = "python-google-nest";
+  version = "5.1.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "y3BOhorVkJ3rFPifNOopLMqk6y1fHX5vxHGiqWvWHhE=";
+  };
+
+  propagatedBuildInputs = [
+    requests_oauthlib
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "nest"
+  ];
+
+  meta = with lib; {
+    description = "Python API and command line tool for talking to Nest thermostats";
+    homepage = "https://github.com/axlan/python-nest/";
+    license = licenses.cc-by-nc-sa-30;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-gvm/default.nix b/nixpkgs/pkgs/development/python-modules/python-gvm/default.nix
index 5f3ff50d1a8d..b98c44581887 100644
--- a/nixpkgs/pkgs/development/python-modules/python-gvm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-gvm/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "python-gvm";
-  version = "21.10.0";
+  version = "21.11.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "greenbone";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-6cNoeuB9449HB2/41VjazpSAGvaHmBjG/hqmBKX5FEA=";
+    sha256 = "sha256-H3cM+4YA6obYbo7qm7BhLlQxW4DKV6A3X0ZKsXWPDBs=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/python-hglib/default.nix b/nixpkgs/pkgs/development/python-modules/python-hglib/default.nix
new file mode 100644
index 000000000000..9d667dcba853
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-hglib/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mercurial
+, nose
+}:
+
+buildPythonPackage rec {
+  pname = "python-hglib";
+  version = "2.6.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-sYvR7VPJDuV9VxTWata7crZOkw1K7KmDCJLAi7KNpgg=";
+  };
+
+  checkInputs = [ mercurial nose ];
+
+  preCheck = ''
+    export HGTMP=$(mktemp -d)
+    export HGUSER=test
+  '';
+
+  pythonImportsCheck = [ "hglib" ];
+
+  meta = with lib; {
+    description = "Library with a fast, convenient interface to Mercurial. It uses Mercurial’s command server for communication with hg.";
+    homepage = "https://www.mercurial-scm.org/wiki/PythonHglibs";
+    license = licenses.mit;
+    maintainers = [ maintainers.kvark ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-hpilo/default.nix b/nixpkgs/pkgs/development/python-modules/python-hpilo/default.nix
index f151e3ffb4cd..c23f9eb4ac26 100644
--- a/nixpkgs/pkgs/development/python-modules/python-hpilo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-hpilo/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, utils
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/python-http-client/default.nix b/nixpkgs/pkgs/development/python-modules/python-http-client/default.nix
index b69c478ef27d..db79870ad591 100644
--- a/nixpkgs/pkgs/development/python-modules/python-http-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-http-client/default.nix
@@ -7,13 +7,14 @@
 
 buildPythonPackage rec {
   pname = "python_http_client";
-  version = "3.3.3";
+  version = "3.3.4";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "sendgrid";
     repo = "python-http-client";
     rev = version;
-    sha256 = "sha256-cZqyu67xP0UIKYbhYYTNL5kLiPjjMjayde75sqkHZhg=";
+    sha256 = "sha256-wTXHq+tC+rfvmDZIWvcGhQZqm6DxOmx50BsX0c6asec=";
   };
 
   checkInputs = [
@@ -21,9 +22,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  # Failure was fixed by https://github.com/sendgrid/python-http-client/commit/6d62911ab0d0645b499e14bb17c302b48f3c10e4
-  disabledTests = [ "test__daterange" ];
-  pythonImportsCheck = [ "python_http_client" ];
+  pythonImportsCheck = [
+    "python_http_client"
+  ];
 
   meta = with lib; {
     description = "Python HTTP library to call APIs";
diff --git a/nixpkgs/pkgs/development/python-modules/python-ironicclient/default.nix b/nixpkgs/pkgs/development/python-modules/python-ironicclient/default.nix
index fb4840753df6..5654c2de3a85 100644
--- a/nixpkgs/pkgs/development/python-modules/python-ironicclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-ironicclient/default.nix
@@ -4,7 +4,7 @@
 , pbr
 , appdirs
 , cliff
-, dogpile_cache
+, dogpile-cache
 , jsonschema
 , keystoneauth1
 , openstacksdk
@@ -31,7 +31,7 @@ buildPythonApplication rec {
     pbr
     appdirs
     cliff
-    dogpile_cache
+    dogpile-cache
     jsonschema
     keystoneauth1
     openstacksdk
diff --git a/nixpkgs/pkgs/development/python-modules/python-izone/default.nix b/nixpkgs/pkgs/development/python-modules/python-izone/default.nix
index 4bd1f988d455..1d1eb5ac54eb 100644
--- a/nixpkgs/pkgs/development/python-modules/python-izone/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-izone/default.nix
@@ -4,22 +4,23 @@
 , fetchFromGitHub
 , aiohttp
 , netifaces
-, asynctest
-, pytest-aiohttp
+, pytest-aio
+, pytest-asyncio
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "python-izone";
-  version = "1.1.6";
+  version = "1.2.3";
+  format = "setuptools";
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "Swamp-Ig";
     repo = "pizone";
     rev = "v${version}";
-    sha256 = "sha256-zgE1ccEPSa9nX0SEMN02VEGfnHexk/+jCJe7ugUL5UA=";
+    hash = "sha256-WF37t9vCEIyQMeN3/CWAiiZ5zsMRMFQ5UvMUqfoGM9I=";
   };
 
   propagatedBuildInputs = [
@@ -28,15 +29,19 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    asynctest
-    pytest-aiohttp
+    pytest-aio
+    pytest-asyncio
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "pizone" ];
+  doCheck = false; # most tests access network
+
+  pythonImportsCheck = [
+    "pizone"
+  ];
 
   meta = with lib; {
-    description = "A python interface to the iZone airconditioner controller";
+    description = "Python interface to the iZone airconditioner controller";
     homepage = "https://github.com/Swamp-Ig/pizone";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/nixpkgs/pkgs/development/python-modules/python-jenkins/default.nix b/nixpkgs/pkgs/development/python-modules/python-jenkins/default.nix
index 06a5d234ecf6..7c1d64fc827d 100644
--- a/nixpkgs/pkgs/development/python-modules/python-jenkins/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-jenkins/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fetchPypi
 , mock
@@ -22,6 +23,13 @@ buildPythonPackage rec {
     sha256 = "01jid5s09lr3kayr2h1z9n8h9nhyw3jxv9c4b5hrlxijknkqzvfy";
   };
 
+  # test uses timeout mechanism unsafe for use with the "spawn"
+  # multiprocessing backend used on macos
+  postPatch = lib.optionalString stdenv.isDarwin ''
+    substituteInPlace tests/test_jenkins_sockets.py \
+      --replace test_jenkins_open_no_timeout dont_test_jenkins_open_no_timeout
+  '';
+
   buildInputs = [ mock ];
   propagatedBuildInputs = [ pbr pyyaml setuptools six multi_key_dict requests ];
 
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 a6d0bf800ea6..a8cbec25a996 100644
--- a/nixpkgs/pkgs/development/python-modules/python-jsonrpc-server/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-jsonrpc-server/default.nix
@@ -1,7 +1,6 @@
 { lib, buildPythonPackage, fetchFromGitHub, pythonOlder
 , pytestCheckHook, mock, pytest-cov, coverage
-, future, futures ? null, ujson, isPy38
-}:
+, future, futures ? null, ujson}:
 
 buildPythonPackage rec {
   pname = "python-jsonrpc-server";
diff --git a/nixpkgs/pkgs/development/python-modules/python-language-server/default.nix b/nixpkgs/pkgs/development/python-modules/python-language-server/default.nix
index f022eba58571..e0de396b7c76 100644
--- a/nixpkgs/pkgs/development/python-modules/python-language-server/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-language-server/default.nix
@@ -36,6 +36,7 @@ buildPythonPackage rec {
     # Reading the changelog I don't expect an API break in pycodestyle and pyflakes
     substituteInPlace setup.py \
       --replace "pycodestyle>=2.6.0,<2.7.0" "pycodestyle>=2.6.0,<2.8.0" \
+      --replace "jedi>=0.17.2,<0.18.0" "jedi>=0.17.2,<0.19.0" \
       --replace "pyflakes>=2.2.0,<2.3.0" "pyflakes>=2.2.0,<2.4.0"
   '';
 
@@ -85,5 +86,8 @@ buildPythonPackage rec {
     description = "An implementation of the Language Server Protocol for Python";
     license = licenses.mit;
     maintainers = [ ];
+    # no longer maintained
+    # see https://github.com/palantir/python-language-server/pull/918#issuecomment-817361554
+    broken = true;
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/python-levenshtein/default.nix b/nixpkgs/pkgs/development/python-modules/python-levenshtein/default.nix
index d208f2c6bdd1..9795c27d9901 100644
--- a/nixpkgs/pkgs/development/python-modules/python-levenshtein/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-levenshtein/default.nix
@@ -4,8 +4,9 @@
 }:
 
 buildPythonPackage rec {
-  pname = "python-Levenshtein";
+  pname = "python-levenshtein";
   version = "0.12.2";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
@@ -15,11 +16,14 @@ buildPythonPackage rec {
   # No tests included in archive
   doCheck = false;
 
+  pythonImportsCheck = [
+    "Levenshtein"
+  ];
+
   meta = with lib; {
     description = "Functions for fast computation of Levenshtein distance and string similarity";
-    homepage    = "https://github.com/ztane/python-Levenshtein";
-    license     = licenses.gpl2;
+    homepage = "https://github.com/ztane/python-Levenshtein";
+    license = licenses.gpl2Plus;
     maintainers = with maintainers; [ aske ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/python-lsp-black/default.nix b/nixpkgs/pkgs/development/python-modules/python-lsp-black/default.nix
index 3c18d291e37f..bd557c402ffb 100644
--- a/nixpkgs/pkgs/development/python-modules/python-lsp-black/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-lsp-black/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "python-lsp-black";
-  version = "1.0.0";
+  version = "1.0.1";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "python-lsp";
     repo = "python-lsp-black";
     rev = "v${version}";
-    sha256 = "1blxhj70jxb9xfbd4dxqikd262n6dn9dw5qhyml5yvdwxbv0bybc";
+    sha256 = "03k32m4jfqfzrawj69yxhk9kwzsdcwginip77kxdbra2xwgqfc3w";
   };
 
   checkInputs = [ pytestCheckHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/python-lsp-server/default.nix b/nixpkgs/pkgs/development/python-modules/python-lsp-server/default.nix
index 39597afa8540..b000379dd1bb 100644
--- a/nixpkgs/pkgs/development/python-modules/python-lsp-server/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-lsp-server/default.nix
@@ -35,14 +35,15 @@
 
 buildPythonPackage rec {
   pname = "python-lsp-server";
-  version = "1.2.4";
-  disabled = pythonOlder "3.6";
+  version = "1.3.3";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "python-lsp";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0c1g46hpzjhqbjcmv6xm3by3jprcjhzjslqzrp95hdkbykvrgs5x";
+    sha256 = "sha256-F8f9NAjPWkm01D/KwFH0oA6nQ3EF4ZVCCckZTL4A35Y=";
   };
 
   postPatch = ''
@@ -96,7 +97,9 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d);
   '';
 
-  pythonImportsCheck = [ "pylsp" ];
+  pythonImportsCheck = [
+    "pylsp"
+  ];
 
   meta = with lib; {
     description = "Python implementation of the Language Server Protocol";
diff --git a/nixpkgs/pkgs/development/python-modules/python-lzo/default.nix b/nixpkgs/pkgs/development/python-modules/python-lzo/default.nix
index 5025b86361a3..dcf55e8e32b0 100644
--- a/nixpkgs/pkgs/development/python-modules/python-lzo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-lzo/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "python-lzo";
-  version = "1.12";
+  version = "1.14";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0iakqgd51n1cd7r3lpdylm2rgbmd16y74cra9kcapwg84mlf9a4p";
+    sha256 = "83cbd8ecaae284735250e31d6c0ecc18ac08763fab2a8c910dc5a6910db6250c";
   };
 
   buildInputs = [ lzo ];
diff --git a/nixpkgs/pkgs/development/python-modules/python-magic/default.nix b/nixpkgs/pkgs/development/python-modules/python-magic/default.nix
index 02f1cc691522..d8a0f638d968 100644
--- a/nixpkgs/pkgs/development/python-modules/python-magic/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-magic/default.nix
@@ -3,6 +3,7 @@
 , python
 , buildPythonPackage
 , fetchFromGitHub
+, fetchpatch
 , substituteAll
 , file
 , glibcLocales
@@ -20,6 +21,13 @@ buildPythonPackage rec {
   };
 
   patches = [
+    # pull upstream patch to support file-5.41
+    (fetchpatch {
+      name = "file-5.41-compat.patch";
+      url = "https://github.com/ahupp/python-magic/commit/0ae7e7ceac0e80e03adc75c858bb378c0427331a.patch";
+      sha256 = "0vclaamb56nza1mcy88wjbkh81hnish2gzvl8visa2cknhgdmk50";
+    })
+
     (substituteAll {
       src = ./libmagic-path.patch;
       libmagic = "${file}/lib/libmagic${stdenv.hostPlatform.extensions.sharedLibrary}";
diff --git a/nixpkgs/pkgs/development/python-modules/python-manilaclient/default.nix b/nixpkgs/pkgs/development/python-modules/python-manilaclient/default.nix
index 5ffe1a1ea730..aea8b6dab303 100644
--- a/nixpkgs/pkgs/development/python-modules/python-manilaclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-manilaclient/default.nix
@@ -18,11 +18,11 @@
 
 buildPythonApplication rec {
   pname = "python-manilaclient";
-  version = "3.0.0";
+  version = "3.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2d90af35c5beccc53fa6b0f5a3c4b330a065e86924c33c42b017f18943ab2b05";
+    sha256 = "d53f69238cdc454c0297f513e0b481a039d0bac723990ebd5ab9d3d29633956e";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/python-mapnik/default.nix b/nixpkgs/pkgs/development/python-modules/python-mapnik/default.nix
index 3a4e4af54def..2d888518ff45 100644
--- a/nixpkgs/pkgs/development/python-modules/python-mapnik/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-mapnik/default.nix
@@ -68,7 +68,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python bindings for Mapnik";
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ erictapen ];
     homepage = "https://mapnik.org";
     license = licenses.lgpl21;
   };
diff --git a/nixpkgs/pkgs/development/python-modules/python-miio/default.nix b/nixpkgs/pkgs/development/python-modules/python-miio/default.nix
index 48c9f9a404d3..46900dd80e3d 100644
--- a/nixpkgs/pkgs/development/python-modules/python-miio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-miio/default.nix
@@ -37,6 +37,7 @@ buildPythonPackage rec {
     substituteInPlace pyproject.toml \
       --replace 'click = "^7"' 'click = "*"' \
       --replace 'croniter = "^0"' 'croniter = "*"' \
+      --replace 'cryptography = "^3"' 'cryptography = "*"' \
       --replace 'defusedxml = "^0.6"' 'defusedxml = "*"'
   '';
 
@@ -74,4 +75,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ flyfloh ];
   };
 }
-
diff --git a/nixpkgs/pkgs/development/python-modules/python_mimeparse/default.nix b/nixpkgs/pkgs/development/python-modules/python-mimeparse/default.nix
index 0f713bd21391..ccc8dc78f442 100644
--- a/nixpkgs/pkgs/development/python-modules/python_mimeparse/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-mimeparse/default.nix
@@ -19,6 +19,6 @@ buildPythonPackage rec {
     description = "A module provides basic functions for parsing mime-type names and matching them against a list of media-ranges";
     homepage = "https://github.com/dbtsai/python-mimeparse";
     license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/python-nest/default.nix b/nixpkgs/pkgs/development/python-modules/python-nest/default.nix
index c894654e41e6..8caa61517c6f 100644
--- a/nixpkgs/pkgs/development/python-modules/python-nest/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-nest/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, fetchPypi, lib, python, python-dateutil, requests
+{ buildPythonPackage, fetchPypi, lib, python-dateutil, requests
 , six, sseclient-py }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/python-nmap/default.nix b/nixpkgs/pkgs/development/python-modules/python-nmap/default.nix
index 745d6c67eac7..1cb3559b049b 100644
--- a/nixpkgs/pkgs/development/python-modules/python-nmap/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-nmap/default.nix
@@ -6,22 +6,28 @@
 
 buildPythonPackage rec {
   pname = "python-nmap";
-  version = "0.6.4";
+  version = "0.7.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "013q2797d9sf6mrj7x1hqfcql5gqgg50zgiifp2yypfa4k8cwjsx";
+    sha256 = "sha256-91r2uR3Y47DDH4adsyFj9iraaGlF5bfCX4S8D3+tO2Q=";
   };
 
-  propagatedBuildInputs = [ nmap ];
+  propagatedBuildInputs = [
+    nmap
+  ];
 
   postPatch = ''
-    substituteInPlace setup.cfg --replace "universal=3" "universal=1"
+    substituteInPlace setup.cfg \
+      --replace "universal=3" "universal=1"
   '';
 
   # Tests requires sudo and performs scans
   doCheck = false;
-  pythonImportsCheck = [ "nmap" ];
+
+  pythonImportsCheck = [
+    "nmap"
+  ];
 
   meta = with lib; {
     description = "Python library which helps in using nmap";
diff --git a/nixpkgs/pkgs/development/python-modules/python-olm/default.nix b/nixpkgs/pkgs/development/python-modules/python-olm/default.nix
index 2a8295a65bf7..d38c33df8c81 100644
--- a/nixpkgs/pkgs/development/python-modules/python-olm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-olm/default.nix
@@ -17,6 +17,10 @@ buildPythonPackage {
     future
   ] ++ lib.optionals (!isPy3k) [ typing ];
 
+  propagatedNativeBuildInputs = [
+    cffi
+  ];
+
   # Some required libraries for testing are not packaged yet.
   doCheck = false;
   pythonImportsCheck = [ "olm" ];
diff --git a/nixpkgs/pkgs/development/python-modules/python-opendata-transport/default.nix b/nixpkgs/pkgs/development/python-modules/python-opendata-transport/default.nix
index 906f08439808..01733dece385 100644
--- a/nixpkgs/pkgs/development/python-modules/python-opendata-transport/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-opendata-transport/default.nix
@@ -2,30 +2,34 @@
 , buildPythonPackage
 , fetchPypi
 , aiohttp
-, async-timeout
 , urllib3
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "python-opendata-transport";
-  version = "0.2.2";
+  version = "0.3.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     pname = "python_opendata_transport";
     inherit version;
-    sha256 = "sha256-Z0VHkKYHpwbBwwFrMtA5JRy0m7f0566IjCmGizoKEoo=";
+    sha256 = "sha256-CpzMMp2C3UOiUna9EcUucD/PKv7AZlkaU8QJfWntoi8=";
   };
 
   propagatedBuildInputs = [
     aiohttp
-    async-timeout
     urllib3
   ];
 
   # no tests are present
   doCheck = false;
 
-  pythonImportsCheck = [ "opendata_transport" ];
+  pythonImportsCheck = [
+    "opendata_transport"
+  ];
 
   meta = with lib; {
     description = "Python client for interacting with transport.opendata.ch";
diff --git a/nixpkgs/pkgs/development/python-modules/python-openstackclient/default.nix b/nixpkgs/pkgs/development/python-modules/python-openstackclient/default.nix
index d538c01acc66..8e446d6b9909 100644
--- a/nixpkgs/pkgs/development/python-modules/python-openstackclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-openstackclient/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "python-openstackclient";
-  version = "5.6.0";
+  version = "5.7.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0abc6666378c5a7db83ec83515a8524fb6246a919236110169cc5c216ac997ea";
+    sha256 = "c65e3d51018f193cce2daf3d0fd69daa36003bdb2b85df6b07b973e4c39e2f92";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/python-otr/default.nix b/nixpkgs/pkgs/development/python-modules/python-otr/default.nix
deleted file mode 100644
index 6b657dba78df..000000000000
--- a/nixpkgs/pkgs/development/python-modules/python-otr/default.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, zope_interface
-, cryptography
-, application
-, gmpy2
-}:
-
-buildPythonPackage rec {
-  pname = "python-otr";
-  version = "1.2.0";
-  disabled = isPy3k;
-
-  src = fetchFromGitHub {
-    owner = "AGProjects";
-    repo = pname;
-    rev = "release-${version}";
-    sha256 = "0p3b1n8jlxwd65gbk2k5007fkhdyjwcvr4982s42hncivxvabzzy";
-  };
-
-  propagatedBuildInputs = [ zope_interface cryptography application gmpy2 ];
-
-  meta = with lib; {
-    description = "A pure python implementation of OTR";
-    homepage = "https://github.com/AGProjects/python-otr";
-    license = licenses.lgpl21Plus;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ edwtjo ];
-    # The package itself does not support python3, and its transitive
-    # dependencies rely on namespace package support that does not work in
-    # Nix's python2 infra. See #74619 for details.
-    broken = true;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/python-pidfile/default.nix b/nixpkgs/pkgs/development/python-modules/python-pidfile/default.nix
index 7ba39341516e..6626f0b77b3c 100644
--- a/nixpkgs/pkgs/development/python-modules/python-pidfile/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-pidfile/default.nix
@@ -27,6 +27,6 @@ buildPythonPackage rec {
     description = "Python context manager for managing pid files";
     homepage = "https://github.com/mosquito/python-pidfile";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [ legendofmiracles ];
+    maintainers = with maintainers; [ lom ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/python-pipedrive/default.nix b/nixpkgs/pkgs/development/python-modules/python-pipedrive/default.nix
index d776002b2129..a8d96043d8d7 100644
--- a/nixpkgs/pkgs/development/python-modules/python-pipedrive/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-pipedrive/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , httplib2
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/python-redis-lock/default.nix b/nixpkgs/pkgs/development/python-modules/python-redis-lock/default.nix
index bd8933be824c..7671e5a4a9b2 100644
--- a/nixpkgs/pkgs/development/python-modules/python-redis-lock/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-redis-lock/default.nix
@@ -6,7 +6,7 @@
 , pytestCheckHook
 , process-tests
 , pkgs
-, withDjango ? false, django_redis
+, withDjango ? false, django-redis
 }:
 
 buildPythonPackage rec {
@@ -20,7 +20,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     redis
-  ] ++ lib.optional withDjango django_redis;
+  ] ++ lib.optional withDjango django-redis;
 
   checkInputs = [
     pytestCheckHook
diff --git a/nixpkgs/pkgs/development/python-modules/python-sat/default.nix b/nixpkgs/pkgs/development/python-modules/python-sat/default.nix
index ea3d1bfb444a..43b5e635294b 100644
--- a/nixpkgs/pkgs/development/python-modules/python-sat/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-sat/default.nix
@@ -2,19 +2,32 @@
 
 buildPythonPackage rec {
   pname = "python-sat";
-  version = "0.1.6.dev6";
+  version = "0.1.7.dev1";
 
   src = fetchFromGitHub {
     owner = "pysathq";
     repo = "pysat";
     rev = version;
-    sha256 = "1gckxhqkvzyw7pmwg8xzxq146jysqy0s23l5mjc3awm6swdij66y";
+    sha256 = "sha256-zGdgD+SgoMB7/zDQI/trmV70l91TB7OkDxaJ30W3dkI=";
   };
 
   propagatedBuildInputs = [ six pypblib ];
 
   checkInputs = [ pytestCheckHook ];
 
+  # https://github.com/pysathq/pysat/pull/102
+  postPatch = ''
+    # Fix for case-insensitive filesystem
+    cat >>solvers/patches/cadical.patch <<EOF
+diff --git solvers/cadical/VERSION solvers/cdc/VERSION
+deleted file mode 100644
+--- solvers/cadical/VERSION
++++ /dev/null
+@@ -1 +0,0 @@
+-1.0.3
+EOF
+  '';
+
   meta = with lib; {
     description = "Toolkit to provide interface for various SAT (without optional dependancy py-aiger-cnf)";
     homepage = "https://github.com/pysathq/pysat";
diff --git a/nixpkgs/pkgs/development/python-modules/python-slugify/default.nix b/nixpkgs/pkgs/development/python-modules/python-slugify/default.nix
index 14d15df16f68..5b7af8ad7360 100644
--- a/nixpkgs/pkgs/development/python-modules/python-slugify/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-slugify/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , pytestCheckHook
-, python
 , pythonOlder
 , text-unidecode
 , unidecode
diff --git a/nixpkgs/pkgs/development/python-modules/python-smarttub/default.nix b/nixpkgs/pkgs/development/python-modules/python-smarttub/default.nix
index b4c994b24560..dc266e0e2075 100644
--- a/nixpkgs/pkgs/development/python-modules/python-smarttub/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-smarttub/default.nix
@@ -13,14 +13,16 @@
 
 buildPythonPackage rec {
   pname = "python-smarttub";
-  version = "0.0.27";
+  version = "0.0.28";
+  format = "setuptools";
+
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "mdz";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-EoZn5yxj18hi4oEMuUcB5UN2xQFkLbSG/awp+Qh029E=";
+    sha256 = "sha256-dAwOi1hhjGhBGKEp5u3qW5WL1GLHBFac0drIc1Zk6ok=";
   };
 
   propagatedBuildInputs = [
@@ -36,7 +38,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "smarttub" ];
+  pythonImportsCheck = [
+    "smarttub"
+  ];
 
   meta = with lib; {
     description = "Python API for SmartTub enabled hot tubs";
diff --git a/nixpkgs/pkgs/development/python-modules/python-socketio/default.nix b/nixpkgs/pkgs/development/python-modules/python-socketio/default.nix
index 5a672b2dec64..635f9cd13daf 100644
--- a/nixpkgs/pkgs/development/python-modules/python-socketio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-socketio/default.nix
@@ -1,4 +1,5 @@
 { lib
+, aiohttp
 , bidict
 , buildPythonPackage
 , fetchFromGitHub
@@ -6,22 +7,31 @@
 , msgpack
 , pytestCheckHook
 , python-engineio
+, pythonOlder
+, requests
+, websocket-client
 }:
 
 buildPythonPackage rec {
   pname = "python-socketio";
-  version = "5.4.0";
+  version = "5.5.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "miguelgrinberg";
     repo = "python-socketio";
     rev = "v${version}";
-    sha256 = "sha256-0Q1R8XPciU5AEkj7Exlc906eyA5juYKzzA/Ygnzx7XU=";
+    sha256 = "sha256-K5rs3UEGN1BvWDDfJE9/dPDLsZ4EGSsEf6PXodvc2Bg=";
   };
 
   propagatedBuildInputs = [
+    aiohttp
     bidict
     python-engineio
+    requests
+    websocket-client
   ];
 
   checkInputs = [
@@ -30,7 +40,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "socketio" ];
+  pythonImportsCheck = [
+    "socketio"
+  ];
 
   meta = with lib; {
     description = "Python Socket.IO server and client";
diff --git a/nixpkgs/pkgs/development/python-modules/python-socks/default.nix b/nixpkgs/pkgs/development/python-modules/python-socks/default.nix
index dcf268808275..e6c2d016bb09 100644
--- a/nixpkgs/pkgs/development/python-modules/python-socks/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-socks/default.nix
@@ -1,17 +1,48 @@
-{ lib, buildPythonPackage, trio, curio, async-timeout, fetchPypi, pythonOlder }:
+{ lib
+, async-timeout
+, buildPythonPackage
+, curio
+, fetchFromGitHub
+, flask
+, pytest-asyncio
+, pytest-trio
+, pythonOlder
+, pytestCheckHook
+, trio
+, yarl
+}:
 
 buildPythonPackage rec {
   pname = "python-socks";
-  version = "1.2.4";
+  version = "2.0.0";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1n6xb18jy41ybgkmamakg6psp3qididd45qknxiggngaiibz43kx";
+  disabled = pythonOlder "3.6.1";
+
+  src = fetchFromGitHub {
+    owner = "romis2012";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-iTwlUyfTD2ZhOvBX3IDqjkeW4Z2tfKxvQjIV7GGBVJA=";
   };
 
-  disabled = pythonOlder "3.6.1";
+  propagatedBuildInputs = [
+    trio
+    curio
+    async-timeout
+  ];
+
+  checkInputs = [
+    flask
+    pytest-asyncio
+    pytest-trio
+    pytestCheckHook
+    yarl
+  ];
 
-  propagatedBuildInputs = [ trio curio async-timeout ];
+  pythonImportsCheck = [
+    "python_socks"
+  ];
 
   meta = with lib; {
     description = "Core proxy client (SOCKS4, SOCKS5, HTTP) functionality for Python";
diff --git a/nixpkgs/pkgs/development/python-modules/python-songpal/default.nix b/nixpkgs/pkgs/development/python-modules/python-songpal/default.nix
index 180e5b3d833e..ba17dd81166d 100644
--- a/nixpkgs/pkgs/development/python-modules/python-songpal/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-songpal/default.nix
@@ -9,7 +9,6 @@
 , attrs
 , click
 , importlib-metadata
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/python-string-utils/default.nix b/nixpkgs/pkgs/development/python-modules/python-string-utils/default.nix
index d8d1b136fb3e..1185959f0c6f 100644
--- a/nixpkgs/pkgs/development/python-modules/python-string-utils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-string-utils/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pytest
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/python-swiftclient/default.nix b/nixpkgs/pkgs/development/python-modules/python-swiftclient/default.nix
index adb675c0db55..cb3b5b850e36 100644
--- a/nixpkgs/pkgs/development/python-modules/python-swiftclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-swiftclient/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonApplication rec {
   pname = "python-swiftclient";
-  version = "3.12.0";
+  version = "3.13.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-MTtEShTQ+bYoy/PoxS8sQnFlj56KM9QiKFHC5PD3t6A=";
+    sha256 = "b200dcfbc6842bd4cac29efd0ea9ef34d3b8625957472ba7aa3ae0242437e2cc";
   };
 
   propagatedBuildInputs = [ pbr python-keystoneclient ];
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 e188a3ef8686..382eb3c5a314 100644
--- a/nixpkgs/pkgs/development/python-modules/python-telegram-bot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-telegram-bot/default.nix
@@ -13,12 +13,14 @@
 
 buildPythonPackage rec {
   pname = "python-telegram-bot";
-  version = "13.7";
+  version = "13.8.1";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-JN91RZ4zW5a6/6aZFnn4RL1CaXivWmnKQZoKxDpAYCw=";
+    sha256 = "sha256-sGaR5Vw1lDJn7mNtmqcCs1eRVdLzLg4tbX8R8LXnJ/A=";
   };
 
   propagatedBuildInputs = [
@@ -45,7 +47,9 @@ buildPythonPackage rec {
   # tests not included with release
   doCheck = false;
 
-  pythonImportsCheck = [ "telegram" ];
+  pythonImportsCheck = [
+    "telegram"
+  ];
 
   meta = with lib; {
     description = "Python library to interface with the Telegram Bot API";
diff --git a/nixpkgs/pkgs/development/python-modules/python-utils/default.nix b/nixpkgs/pkgs/development/python-modules/python-utils/default.nix
index f11ce745fed9..d79f357e50e1 100644
--- a/nixpkgs/pkgs/development/python-modules/python-utils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-utils/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "python-utils";
-  version = "2.5.6";
+  version = "2.7.0";
 
   src = fetchFromGitHub {
     owner = "WoLpH";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0gd2jana5w6bn7z58di4a8dwcxvc8rx282jawbw7ws7qm2a5klz3";
+    sha256 = "0gns9v5144cj03p7qbb3822scb6pwrlgr6niixpkynwqkcwjfg4c";
   };
 
   # disable coverage and linting
diff --git a/nixpkgs/pkgs/development/python-modules/python-vipaccess/default.nix b/nixpkgs/pkgs/development/python-modules/python-vipaccess/default.nix
index 8c3a5bf797d4..c3d51ae59119 100644
--- a/nixpkgs/pkgs/development/python-modules/python-vipaccess/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-vipaccess/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "python-vipaccess";
-  version = "0.13";
+  version = "0.14";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f148d4534e3a4dda9050a6a038868594c1216ea2413f2144ca6697e0e20c9cad";
+    sha256 = "d5013d306e5891ecfe523c9ef52d074fe8b6ca29ee259c0deeb8a83ae9884ce0";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/python2-pythondialog/default.nix b/nixpkgs/pkgs/development/python-modules/python2-pythondialog/default.nix
deleted file mode 100644
index 78378a738dba..000000000000
--- a/nixpkgs/pkgs/development/python-modules/python2-pythondialog/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "python2-pythondialog";
-  version = "3.5.1";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "ad159c7b455d9cb2a5173590656d19a26e9cc208264cfab755f5827070d18613";
-  };
-
-  patchPhase = ''
-    substituteInPlace dialog.py --replace ":/bin:/usr/bin" ":$out/bin"
-  '';
-
-  meta = with lib; {
-    description = "A Python interface to the UNIX dialog utility and mostly-compatible programs (Python 2 backport)";
-    homepage = "http://pythondialog.sourceforge.net/";
-    license = licenses.lgpl3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/python3-saml/default.nix b/nixpkgs/pkgs/development/python-modules/python3-saml/default.nix
index af57357d11c9..a21ee97eca5d 100644
--- a/nixpkgs/pkgs/development/python-modules/python3-saml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python3-saml/default.nix
@@ -1,36 +1,18 @@
-{ lib, fetchpatch, fetchFromGitHub, buildPythonPackage, isPy3k,
+{ lib, fetchFromGitHub, buildPythonPackage, isPy3k,
 isodate, lxml, xmlsec, freezegun }:
 
 buildPythonPackage rec {
   pname = "python3-saml";
-  version = "1.10.1";
+  version = "1.12.0";
   disabled = !isPy3k;
 
   src = fetchFromGitHub {
     owner = "onelogin";
     repo = "python3-saml";
     rev = "v${version}";
-    sha256 = "1yk02xq90bm7p6k091av6gapb5h2ccxzgrbm03sj2x8h0wff9s8k";
+    sha256 = "sha256-VPUsjuo4FIes8ti0tkR0kT3J3RdUt1wtl4QEahVsc2c=";
   };
 
-  # Remove both patches on update
-  patches = [
-    # Remove the dependency on defusedxml
-    #
-    # This patch is already merged upstream and does not introduce any
-    # functionality changes.
-    (fetchpatch {
-      url = "https://github.com/onelogin/python3-saml/commit/4b6c4b1f2ed3f6eab70ff4391e595b808ace168c.patch";
-      sha256 = "sha256-KHyAoX3our3Rz2z4xo0lTBB1XOGuC3Pe+lUDCzK5WQI=";
-    })
-
-    # Update expiry dates for test response XMLs
-    (fetchpatch {
-      url = "https://github.com/onelogin/python3-saml/commit/05611bbf6d7d8313adb9c77ff88a9210333ccc38.patch";
-      sha256 = "sha256-62TwgCXDFYsZIAeqAysJRziMvhUVhGzta/C2wS3v4HY=";
-    })
-  ];
-
   propagatedBuildInputs = [
     isodate lxml xmlsec
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/python_statsd/default.nix b/nixpkgs/pkgs/development/python-modules/python_statsd/default.nix
deleted file mode 100644
index 2aabaec2e14f..000000000000
--- a/nixpkgs/pkgs/development/python-modules/python_statsd/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, mock
-, nose
-, coverage
-}:
-
-buildPythonPackage rec {
-  pname = "python-statsd";
-  version = "2.1.0";
-  disabled = isPy3k;  # next release will be py3k compatible
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "d2c573d325d0f015b4d79f0d0f8c88dd8413d7b9ef890c09076a9b6089ab301c";
-  };
-
-  buildInputs = [ mock nose coverage ];
-
-  meta = with lib; {
-    description = "A client for Etsy's node-js statsd server";
-    homepage = "https://github.com/WoLpH/python-statsd";
-    license = licenses.bsd3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pythonegardia/default.nix b/nixpkgs/pkgs/development/python-modules/pythonegardia/default.nix
index 318059d2466f..7ce66f221fb2 100644
--- a/nixpkgs/pkgs/development/python-modules/pythonegardia/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pythonegardia/default.nix
@@ -1,25 +1,44 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
+, fetchpatch
 , requests
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pythonegardia";
   version = "1.0.51";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b99217e34c59bfae059db400acef99d3d32237d13da6fdce9e0d4decc9a07e61";
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "jeroenterheerdt";
+    repo = "python-egardia";
+    rev = "v${version}";
+    sha256 = "7HindS++jcV3GRn/SKoTMpVOchOnLojy/TY0HZjtyD8=";
   };
 
   propagatedBuildInputs = [
     requests
   ];
 
+  patches = [
+    # Adjust search path, https://github.com/jeroenterheerdt/python-egardia/pull/33
+    (fetchpatch {
+      name = "search-path.patch";
+      url = "https://github.com/jeroenterheerdt/python-egardia/commit/6b7bf5b7b2211e3557e0f438586b9d03b9bae440.patch";
+      sha256 = "wUSfmF0SrKCITQJJsHgkGgPZFouaB/zbVqupK6fARHY=";
+    })
+  ];
+
   # Project has no tests, only two test file for manual interaction
   doCheck = false;
-  pythonImportsCheck = [ "pythonegardia" ];
+
+  pythonImportsCheck = [
+    "pythonegardia"
+  ];
 
   meta = with lib; {
     description = "Python interface with Egardia/Woonveilig alarms";
diff --git a/nixpkgs/pkgs/development/python-modules/pythonirclib/default.nix b/nixpkgs/pkgs/development/python-modules/pythonirclib/default.nix
deleted file mode 100644
index 54c84fe6ef59..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pythonirclib/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, paver
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "irclib";
-  version = "0.4.8";
-  disabled = isPy3k;
-
-  src = fetchurl {
-    url = "mirror://sourceforge/python-irclib/python-irclib-${version}.tar.gz";
-    sha256 = "1x5456y4rbxmnw4yblhb4as5791glcw394bm36px3x6l05j3mvl1";
-  };
-
-  patches = [(fetchurl {
-    url = "http://trac.uwc.ac.za/trac/python_tools/browser/xmpp/resources/irc-transport/irclib.py.diff?rev=387&format=raw";
-    name = "irclib.py.diff";
-    sha256 = "5fb8d95d6c95c93eaa400b38447c63e7a176b9502bc49b2f9b788c9905f4ec5e";
-  })];
-
-  patchFlags = [ "irclib.py" ];
-
-  propagatedBuildInputs = [ paver ];
-
-  meta = with lib; {
-    description = "Python IRC library";
-    homepage = "https://github.com/jaraco/irc";
-    license = with licenses; [ lgpl21 ];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pythonmagick/default.nix b/nixpkgs/pkgs/development/python-modules/pythonmagick/default.nix
deleted file mode 100644
index a647fa1005bc..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pythonmagick/default.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, python
-, pkg-config
-, imagemagick
-, autoreconfHook
-, boost
-, isPy3k
-, pythonImportsCheckHook
-}:
-
-buildPythonPackage rec {
-  pname = "pythonmagick";
-  version = "0.9.16";
-  format = "other";
-
-  src = fetchurl {
-    url = "mirror://imagemagick/python/releases/PythonMagick-${version}.tar.xz";
-    sha256 = "137278mfb5079lns2mmw73x8dhpzgwha53dyl00mmhj2z25varpn";
-  };
-
-  postPatch = ''
-    rm configure
-  '';
-
-  configureFlags = [ "--with-boost=${boost}" ];
-
-  nativeBuildInputs = [ pkg-config autoreconfHook pythonImportsCheckHook ];
-  buildInputs = [ python boost imagemagick ];
-
-  pythonImportsCheck = [
-    "PythonMagick"
-  ];
-
-  disabled = isPy3k;
-
-  meta = with lib; {
-    homepage = "http://www.imagemagick.org/script/api.php";
-    license = licenses.imagemagick;
-    description = "PythonMagick provides object oriented bindings for the ImageMagick Library.";
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pythonnet/default.nix b/nixpkgs/pkgs/development/python-modules/pythonnet/default.nix
index 7387d387dbec..382fcc30876f 100644
--- a/nixpkgs/pkgs/development/python-modules/pythonnet/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pythonnet/default.nix
@@ -16,19 +16,19 @@ let
 
   dotnetPkgs = [
     (fetchNuGet {
-      baseName = "UnmanagedExports";
+      pname = "UnmanagedExports";
       version = "1.2.7";
       sha256 = "0bfrhpmq556p0swd9ssapw4f2aafmgp930jgf00sy89hzg2bfijf";
       outputFiles = [ "*" ];
     })
     (fetchNuGet {
-      baseName = "NUnit";
+      pname = "NUnit";
       version = "3.12.0";
       sha256 = "1880j2xwavi8f28vxan3hyvdnph4nlh5sbmh285s4lc9l0b7bdk2";
       outputFiles = [ "*" ];
     })
     (fetchNuGet {
-      baseName = "System.ValueTuple";
+      pname = "System.ValueTuple";
       version = "4.5.0";
       sha256 = "00k8ja51d0f9wrq4vv5z2jhq8hy31kac2rg0rv06prylcybzl8cy";
       outputFiles = [ "*" ];
@@ -82,7 +82,7 @@ buildPythonPackage rec {
 
     ${builtins.concatStringsSep "\n" (
         builtins.map (
-            x: ''ln -s ${x}/lib/dotnet/${x.baseName} ./packages/${x.baseName}.${x.version}''
+            x: ''ln -s ${x}/lib/dotnet/${x.pname} ./packages/${x.pname}.${x.version}''
           ) dotnetPkgs)}
 
     # Setting TERM=xterm fixes an issue with terminfo in mono: System.Exception: Magic number is wrong: 542
diff --git a/nixpkgs/pkgs/development/python-modules/pythonocc-core/default.nix b/nixpkgs/pkgs/development/python-modules/pythonocc-core/default.nix
index d1d06d22c641..9039c52a8a42 100644
--- a/nixpkgs/pkgs/development/python-modules/pythonocc-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pythonocc-core/default.nix
@@ -1,5 +1,4 @@
-{ lib, stdenv, python, fetchFromGitHub, cmake, swig, ninja
-, opencascade, smesh, freetype, libGL, libGLU, libX11
+{ lib, stdenv, python, fetchFromGitHub, cmake, swig, opencascade, smesh, freetype, libGL, libGLU, libX11
 , Cocoa }:
 
 stdenv.mkDerivation rec {
diff --git a/nixpkgs/pkgs/development/python-modules/pytibber/default.nix b/nixpkgs/pkgs/development/python-modules/pytibber/default.nix
index 1ca78b51e983..fbfd0ba030cf 100644
--- a/nixpkgs/pkgs/development/python-modules/pytibber/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytibber/default.nix
@@ -12,7 +12,8 @@
 
 buildPythonPackage rec {
   pname = "pytibber";
-  version = "0.20.0";
+  version = "0.21.6";
+  format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "Danielhiversen";
     repo = "pyTibber";
     rev = version;
-    sha256 = "sha256-q7DNRCJrt4B/u7QV4MocxmlfEdLmJMP7umv3+PJjIoE=";
+    hash = "sha256-zgiUXGso3bQ3pCD7r+VYHGBIihPwSfHibS2OZvPUb3Q=";
   };
 
   propagatedBuildInputs = [
@@ -35,12 +36,16 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [ "test/test.py" ];
+  pytestFlagsArray = [
+    "test/test.py"
+  ];
 
   # tests access network
   doCheck = false;
 
-  pythonImportsCheck = [ "tibber" ];
+  pythonImportsCheck = [
+    "tibber"
+  ];
 
   meta = with lib; {
     description = "Python library to communicate with Tibber";
diff --git a/nixpkgs/pkgs/development/python-modules/pytile/default.nix b/nixpkgs/pkgs/development/python-modules/pytile/default.nix
index 93197e1c2bad..1673688657cc 100644
--- a/nixpkgs/pkgs/development/python-modules/pytile/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytile/default.nix
@@ -13,15 +13,16 @@
 
 buildPythonPackage rec {
   pname = "pytile";
-  version = "5.2.4";
+  version = "2021.12.0";
   format = "pyproject";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "sha256-9FbcGhRmXULJgfJOmy6mhiZwQUDNmvxZI/WxjJIbnc8=";
+    sha256 = "sha256-a76Qzk8ZsoV6HUOcDjMdnFVZJu/iKFbShoC9OZ0caDc=";
   };
 
   nativeBuildInputs = [
@@ -45,7 +46,9 @@ buildPythonPackage rec {
     "examples/"
   ];
 
-  pythonImportsCheck = [ "pytile" ];
+  pythonImportsCheck = [
+    "pytile"
+  ];
 
   __darwinAllowLocalNetworking = true;
 
diff --git a/nixpkgs/pkgs/development/python-modules/pytm/default.nix b/nixpkgs/pkgs/development/python-modules/pytm/default.nix
new file mode 100644
index 000000000000..a1567c9383ed
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytm/default.nix
@@ -0,0 +1,33 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, lib
+, pythonOlder
+, pydal
+, graphviz
+, pandoc
+, plantuml
+}:
+
+buildPythonPackage rec {
+  pname = "pytm";
+  version = "1.2.0";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "izar";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1bx4s9a5kdyr2xvpw0smmh7zi9w38891yfqzdj1bmnsjl57x6qrg";
+  };
+
+  propagatedBuildInputs = [ pydal graphviz pandoc plantuml ];
+
+  pythonImportsCheck = [ "pytm" ];
+
+  meta = with lib; {
+    description = "A Pythonic framework for threat modeling";
+    homepage = "https://owasp.org/www-project-pytm/";
+    license = with licenses; [ capec mit ];
+    maintainers = with maintainers; [ wamserma ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytmx/default.nix b/nixpkgs/pkgs/development/python-modules/pytmx/default.nix
index 0c980034fecd..0fa38a9a6311 100644
--- a/nixpkgs/pkgs/development/python-modules/pytmx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytmx/default.nix
@@ -1,23 +1,32 @@
-{ lib, fetchFromGitHub
-, python, buildPythonPackage, isPy27
-, pygame, pyglet, pysdl2, six
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pygame
+, pyglet
+, pysdl2
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pytmx";
-  version = "3.27";
+  version = "3.31";
+  format = "setuptools";
 
-  disabled = isPy27;
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "bitcraft";
     repo = "PyTMX";
-    # Release was not tagged.
-    rev = "5bb094c45e648d1de6c9ba8d8c8f31f7b83478e1";
-    sha256 = "0kpd39sr2ggwzh7nd3f5801mgwm57rzrrkqcgbcypdm8l2ayga3b";
+    rev = "v${version}";
+    sha256 = "05v8zv06fymvgv332g48kcing4k4ncy2iwgpy1qmxrpin1avyynx";
   };
 
-  propagatedBuildInputs = [ pygame pyglet pysdl2 six ];
+  propagatedBuildInputs = [
+    pygame
+    pyglet
+    pysdl2
+  ];
 
   pythonImportsCheck = [
     "pytmx.pytmx"
@@ -26,11 +35,14 @@ buildPythonPackage rec {
     "pytmx.util_pysdl2"
   ];
 
-  checkPhase = ''
-    # Change into the test directory due to a relative resource path.
-    cd tests/pytmx
-    ${python.interpreter} -m unittest test_pytmx
-  '';
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # AssertionError on the property name
+    "test_contains_reserved_property_name"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/bitcraft/PyTMX";
diff --git a/nixpkgs/pkgs/development/python-modules/pytomlpp/default.nix b/nixpkgs/pkgs/development/python-modules/pytomlpp/default.nix
index d2fc8470d487..271d193ce019 100644
--- a/nixpkgs/pkgs/development/python-modules/pytomlpp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytomlpp/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "pytomlpp";
-  version = "0.3.5";
+  version = "1.0.6";
 
   src = fetchFromGitHub {
     owner = "bobfang1992";
     repo = pname;
-    rev = version;
+    rev = "v${version}";
     fetchSubmodules = true;
-    sha256 = "1h06a2r0f5q4mml485113mn7a7585zmhqsk2p1apcybyydllcqda";
+    sha256 = "sha256-QyjIJCSgiSKjqMBvCbOlWYx6rBbKIoDvXez2YnYaPUo=";
   };
 
   buildInputs = [ pybind11 ];
diff --git a/nixpkgs/pkgs/development/python-modules/pytools/default.nix b/nixpkgs/pkgs/development/python-modules/pytools/default.nix
index af485ce57942..7dcd86705a35 100644
--- a/nixpkgs/pkgs/development/python-modules/pytools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytools/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "pytools";
-  version = "2021.2.8";
+  version = "2021.2.9";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e11adc4914d805ac2bd02656fc6c0ec57c29dd305bd4a44122ca4e651a4bba8b";
+    sha256 = "db6cf83c9ba0a165d545029e2301621486d1e9ef295684072e5cd75316a13755";
   };
 
   checkInputs = [ pytest ];
diff --git a/nixpkgs/pkgs/development/python-modules/pytorch/bin.nix b/nixpkgs/pkgs/development/python-modules/pytorch/bin.nix
index e9bc58321df5..f570a0a5c95a 100644
--- a/nixpkgs/pkgs/development/python-modules/pytorch/bin.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytorch/bin.nix
@@ -18,7 +18,7 @@ let
   pyVerNoDot = builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion;
   srcs = import ./binary-hashes.nix version;
   unsupported = throw "Unsupported system";
-  version = "1.9.1";
+  version = "1.10.0";
 in buildPythonPackage {
   inherit version;
 
@@ -59,13 +59,19 @@ in buildPythonPackage {
     done
   '';
 
+  # The wheel-binary is not stripped to avoid the error of `ImportError: libtorch_cuda_cpp.so: ELF load command address/offset not properly aligned.`.
+  dontStrip = true;
+
   pythonImportsCheck = [ "torch" ];
 
   meta = with lib; {
     description = "Open source, prototype-to-production deep learning platform";
     homepage = "https://pytorch.org/";
     changelog = "https://github.com/pytorch/pytorch/releases/tag/v${version}";
-    license = licenses.unfree; # Includes CUDA and Intel MKL.
+    # Includes CUDA and Intel MKL, but redistributions of the binary are not limited.
+    # https://docs.nvidia.com/cuda/eula/index.html
+    # https://www.intel.com/content/www/us/en/developer/articles/license/onemkl-license-faq.html
+    license = licenses.bsd3;
     platforms = platforms.linux;
     maintainers = with maintainers; [ junjihashimoto ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/pytorch/binary-hashes.nix b/nixpkgs/pkgs/development/python-modules/pytorch/binary-hashes.nix
index 0fbf9ae91287..dd3e5dc1ae3e 100644
--- a/nixpkgs/pkgs/development/python-modules/pytorch/binary-hashes.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytorch/binary-hashes.nix
@@ -6,21 +6,21 @@
 # To add a new version, run "prefetch.sh 'new-version'" to paste the generated file as follows.
 
 version : builtins.getAttr version {
-  "1.9.1" = {
+  "1.10.0" = {
     x86_64-linux-37 = {
-      name = "torch-1.9.1-cp37-cp37m-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu111/torch-1.9.1%2Bcu111-cp37-cp37m-linux_x86_64.whl";
-      hash = "sha256-qzXbbpLX+ZlRv41oAyQRk3guU0n/6vuNzWw+nOieL6s=";
+      name = "torch-1.10.0-cp37-cp37m-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu113/torch-1.10.0%2Bcu113-cp37-cp37m-linux_x86_64.whl";
+      hash = "sha256-KpDbklee2HXSqgrWr1U1nj8EJqUjBWp7SbACw8xtKtg=";
     };
     x86_64-linux-38 = {
-      name = "torch-1.9.1-cp38-cp38-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu111/torch-1.9.1%2Bcu111-cp38-cp38-linux_x86_64.whl";
-      hash = "sha256-JUbcqugax08/iN1LKfXq0ohSpejmbKhbT0by7qMGAzw=";
+      name = "torch-1.10.0-cp38-cp38-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu113/torch-1.10.0%2Bcu113-cp38-cp38-linux_x86_64.whl";
+      hash = "sha256-zM3cMriUG9A+3in/ChzOLytRETpe4ju4uXkxasIRQYM=";
     };
     x86_64-linux-39 = {
-      name = "torch-1.9.1-cp39-cp39-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu111/torch-1.9.1%2Bcu111-cp39-cp39-linux_x86_64.whl";
-      hash = "sha256-wNLLtR9ZxKkVOTzwbAikM5H83pXyH+aPHVFyfrO4c1M=";
+      name = "torch-1.10.0-cp39-cp39-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu113/torch-1.10.0%2Bcu113-cp39-cp39-linux_x86_64.whl";
+      hash = "sha256-w8UJDh4b5cgDu7ZSvDoKzNH4hiXEyRfvpycNOg+wJOg=";
     };
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pytorch/default.nix b/nixpkgs/pkgs/development/python-modules/pytorch/default.nix
index 05f88ca64721..564087769acd 100644
--- a/nixpkgs/pkgs/development/python-modules/pytorch/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytorch/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchFromGitHub, fetchpatch, buildPythonPackage, python,
+{ stdenv, lib, fetchFromGitHub, buildPythonPackage, python,
   cudaSupport ? false, cudatoolkit, cudnn, nccl, magma,
   mklDnnSupport ? true, useSystemNccl ? true,
   MPISupport ? false, mpi,
diff --git a/nixpkgs/pkgs/development/python-modules/pytorch/prefetch.sh b/nixpkgs/pkgs/development/python-modules/pytorch/prefetch.sh
index 65007f11bf7b..debf26bfa20a 100755
--- a/nixpkgs/pkgs/development/python-modules/pytorch/prefetch.sh
+++ b/nixpkgs/pkgs/development/python-modules/pytorch/prefetch.sh
@@ -1,18 +1,19 @@
 #!/usr/bin/env nix-shell
 #!nix-shell -i bash -p nix-prefetch-scripts
 
+set -eou pipefail
+
 version=$1
 
-bucket="https://download.pytorch.org/whl/cu111"
+bucket="https://download.pytorch.org/whl/cu113"
 
 url_and_key_list=(
-"x86_64-linux-37 $bucket/torch-${version}%2Bcu111-cp37-cp37m-linux_x86_64.whl torch-${version}-cp37-cp37m-linux_x86_64.whl"
-"x86_64-linux-38 $bucket/torch-${version}%2Bcu111-cp38-cp38-linux_x86_64.whl torch-${version}-cp38-cp38-linux_x86_64.whl"
-"x86_64-linux-39 $bucket/torch-${version}%2Bcu111-cp39-cp39-linux_x86_64.whl torch-${version}-cp39-cp39-linux_x86_64.whl"
+  "x86_64-linux-37 $bucket/torch-${version}%2Bcu113-cp37-cp37m-linux_x86_64.whl torch-${version}-cp37-cp37m-linux_x86_64.whl"
+  "x86_64-linux-38 $bucket/torch-${version}%2Bcu113-cp38-cp38-linux_x86_64.whl torch-${version}-cp38-cp38-linux_x86_64.whl"
+  "x86_64-linux-39 $bucket/torch-${version}%2Bcu113-cp39-cp39-linux_x86_64.whl torch-${version}-cp39-cp39-linux_x86_64.whl"
 )
 
-hashfile=binary-hashes-"$version".nix
-rm -f $hashfile
+hashfile="binary-hashes-$version.nix"
 echo "  \"$version\" = {" >> $hashfile
 
 for url_and_key in "${url_and_key_list[@]}"; do
diff --git a/nixpkgs/pkgs/development/python-modules/pytraccar/default.nix b/nixpkgs/pkgs/development/python-modules/pytraccar/default.nix
new file mode 100644
index 000000000000..dd14bcfaadc0
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytraccar/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, aiohttp
+, aresponses
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pytest-asyncio
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pytraccar";
+  version = "0.10.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "ludeeus";
+    repo = pname;
+    rev = version;
+    sha256 = "08f7rwvbc1h17lvgv9823ssd3p0vw7yzsg40lbkacgqqiv1hxfzs";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  checkInputs = [
+    aresponses
+    pytestCheckHook
+    pytest-asyncio
+  ];
+
+  postPatch = ''
+    # Upstream doesn't set version in the repo
+    substituteInPlace setup.py \
+      --replace 'version="master",' 'version="${version}",'
+  '';
+
+  pythonImportsCheck = [
+    "pytraccar"
+  ];
+
+  meta = with lib; {
+    description = "Python library to handle device information from Traccar";
+    homepage = "https://github.com/ludeeus/pytraccar";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytradfri/default.nix b/nixpkgs/pkgs/development/python-modules/pytradfri/default.nix
index 597702e6d34b..3e50debd835c 100644
--- a/nixpkgs/pkgs/development/python-modules/pytradfri/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytradfri/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "pytradfri";
-  version = "7.1.0";
+  version = "8.0.0";
 
   disabled = pythonOlder "3.7";
 
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "home-assistant-libs";
     repo = "pytradfri";
     rev = version;
-    sha256 = "sha256-r/qt06YPia8PYhwOeDXk0oK3YvEZ/1kN//+LXj34fmE=";
+    hash = "sha256-YnQUZcqSldtRqzMac5sPoSNDT+ifs3Jqek2CoDeobe8=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pytube/default.nix b/nixpkgs/pkgs/development/python-modules/pytube/default.nix
index bd5b9e374f16..d2c8be795f1d 100644
--- a/nixpkgs/pkgs/development/python-modules/pytube/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytube/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "pytube";
-  version = "11.0.1";
+  version = "11.0.2";
 
   disabled = pythonOlder "3.6";
 
@@ -15,7 +15,7 @@ buildPythonPackage rec {
     owner = "pytube";
     repo = "pytube";
     rev = "v${version}";
-    sha256 = "04s4hganb6x0dlfyyg9gjah5z0vxd7bxzqwgvd28hqnf0iwc2byb";
+    hash = "sha256-3HrkhlwV8OLqbzC6QgddLB1fQxWbwCQ6STCgUXlr5So=";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pyturbojpeg/default.nix b/nixpkgs/pkgs/development/python-modules/pyturbojpeg/default.nix
index eeffd6809bc8..a357e45a5faf 100644
--- a/nixpkgs/pkgs/development/python-modules/pyturbojpeg/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyturbojpeg/default.nix
@@ -1,21 +1,22 @@
 { lib
 , stdenv
-, python
 , buildPythonPackage
 , fetchPypi
-, substituteAll
 , libjpeg_turbo
 , numpy
+, python
+, substituteAll
 }:
 
 buildPythonPackage rec {
   pname = "pyturbojpeg";
-  version = "1.6.1";
+  version = "1.6.3";
+  format = "setuptools";
 
   src = fetchPypi {
     pname = "PyTurboJPEG";
     inherit version;
-    sha256 = "sha256-RiWkDoBETMYigAdbxdj5xb5ht9mQ5qzifE1omqTVZlo=";
+    sha256 = "sha256-5g9MQB7vpeuorVGExt0scHtLdrWlkuLOZMT38FhAsi4=";
   };
 
   patches = [
@@ -34,7 +35,9 @@ buildPythonPackage rec {
     ${python.interpreter} -c 'from turbojpeg import TurboJPEG; TurboJPEG()'
   '';
 
-  pythonImportsCheck = [ "turbojpeg" ];
+  pythonImportsCheck = [
+    "turbojpeg"
+  ];
 
   meta = with lib; {
     description = "A Python wrapper of libjpeg-turbo for decoding and encoding JPEG image";
diff --git a/nixpkgs/pkgs/development/python-modules/pytweening/default.nix b/nixpkgs/pkgs/development/python-modules/pytweening/default.nix
new file mode 100644
index 000000000000..d0ba9803063b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytweening/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+buildPythonPackage rec {
+  pname = "pytweening";
+  version = "1.0.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-hTMoLPcLMd6KBJnhz0IJMLABPHhxGIcrLsiZOCeS4uY=";
+  };
+
+  pythonImportsCheck = [ "pytweening" ];
+  checkPhase = ''
+    python -m unittest tests.basicTests
+  '';
+
+  meta = with lib; {
+    description = "Set of tweening / easing functions implemented in Python";
+    homepage = "https://github.com/asweigart/pytweening";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ lucasew ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytwitchapi/default.nix b/nixpkgs/pkgs/development/python-modules/pytwitchapi/default.nix
index 423f87c1f7d3..27289a13d5d6 100644
--- a/nixpkgs/pkgs/development/python-modules/pytwitchapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytwitchapi/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "pytwitchapi";
-  version = "2.5.0";
+  version = "2.5.1";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "Teekeks";
     repo = "pyTwitchAPI";
     rev = "v${version}";
-    sha256 = "0sbzl9a4zxnvnvkmmmfc9c157dgq7y6qfb2cid5nym6jhxkixnqk";
+    sha256 = "091p9yx0cc7aclj76s1n1jdzkypicy9b2mxgmk2fym5viqlgpbkk";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pytz-deprecation-shim/default.nix b/nixpkgs/pkgs/development/python-modules/pytz-deprecation-shim/default.nix
new file mode 100644
index 000000000000..eccf8399ee29
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pytz-deprecation-shim/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonAtLeast
+, pythonOlder
+, backports-zoneinfo
+, python-dateutil
+, tzdata
+, hypothesis
+, pytestCheckHook
+, pytz
+}:
+
+buildPythonPackage rec {
+  pname = "pytz-deprecation-shim";
+  version = "0.1.0.post0";
+
+  format = "pyproject";
+
+  src = fetchPypi {
+    pname = "pytz_deprecation_shim";
+    inherit version;
+    sha256 = "af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d";
+  };
+
+  propagatedBuildInputs = (lib.optionals (pythonAtLeast "3.6" && pythonOlder "3.9") [
+    backports-zoneinfo
+  ]) ++ (lib.optionals (pythonOlder "3.6") [
+    python-dateutil
+  ]) ++ (lib.optionals (pythonAtLeast "3.6") [
+    tzdata
+  ]);
+
+  checkInputs = [
+    hypothesis
+    pytestCheckHook
+    pytz
+  ];
+
+  # https://github.com/pganssle/pytz-deprecation-shim/issues/27
+  doCheck = pythonAtLeast "3.9";
+
+  meta = with lib; {
+    description = "Shims to make deprecation of pytz easier";
+    homepage = "https://github.com/pganssle/pytz-deprecation-shim";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pytz/default.nix b/nixpkgs/pkgs/development/python-modules/pytz/default.nix
index 1a1e1585d289..f7f406e487cc 100644
--- a/nixpkgs/pkgs/development/python-modules/pytz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytz/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pytz";
-  version = "2021.1";
+  version = "2021.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-g6SpCJS/OOJDzwUsi1jzgb/pp6SD9qnKsUC8f3AqxNo=";
+    sha256 = "acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326";
   };
 
   checkPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pyuavcan/default.nix b/nixpkgs/pkgs/development/python-modules/pyuavcan/default.nix
index ff01ea90e227..c3823a6c3c09 100644
--- a/nixpkgs/pkgs/development/python-modules/pyuavcan/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyuavcan/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchFromGitHub, pythonOlder, numpy, nunavut
-, pyserial , pytest, ruamel_yaml}:
+, pyserial , pytest, ruamel-yaml}:
 
  buildPythonPackage rec {
   pname = "pyuavcan";
@@ -18,7 +18,7 @@
     nunavut
     pyserial
     pytest
-    ruamel_yaml
+    ruamel-yaml
   ];
 
   # allow for writable directory for darwin
diff --git a/nixpkgs/pkgs/development/python-modules/pyupgrade/default.nix b/nixpkgs/pkgs/development/python-modules/pyupgrade/default.nix
index 8e355699258d..8d815ee1ce9f 100644
--- a/nixpkgs/pkgs/development/python-modules/pyupgrade/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyupgrade/default.nix
@@ -8,21 +8,29 @@
 
 buildPythonPackage rec {
   pname = "pyupgrade";
-  version = "2.29.0";
+  version = "2.31.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "asottile";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-Hq58DJe8ZLZSJdhqSxfTaZPnWae2aQFCe7lH+6Y6ABg=";
+    sha256 = "sha256-nuYWJ4nilbXa/1KOuGhc6rB7uXDE4+lcESNud4Ug+3Y=";
   };
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  propagatedBuildInputs = [ tokenize-rt ];
+  propagatedBuildInputs = [
+    tokenize-rt
+  ];
 
-  pythonImportsCheck = [ "pyupgrade" ];
+  pythonImportsCheck = [
+    "pyupgrade"
+  ];
 
   meta = with lib; {
     description = "Tool to automatically upgrade syntax for newer versions of the language";
diff --git a/nixpkgs/pkgs/development/python-modules/pyuptimerobot/default.nix b/nixpkgs/pkgs/development/python-modules/pyuptimerobot/default.nix
new file mode 100644
index 000000000000..6334c3f64c08
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyuptimerobot/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, aiohttp
+, aresponses
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pytest-asyncio
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pyuptimerobot";
+  version = "21.11.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "ludeeus";
+    repo = pname;
+    rev = version;
+    sha256 = "1nmmwp9m38b75lz51ypcj0qxnxm9wq4id5cggl0pn2rx6gwnbw9n";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  checkInputs = [
+    aresponses
+    pytestCheckHook
+    pytest-asyncio
+  ];
+
+  postPatch = ''
+    # Upstream doesn't set version in the repo
+    substituteInPlace setup.py \
+      --replace 'version="main",' 'version="${version}",'
+  '';
+
+  pythonImportsCheck = [
+    "pyuptimerobot"
+  ];
+
+  meta = with lib; {
+    description = "Python API wrapper for Uptime Robot";
+    homepage = "https://github.com/ludeeus/pyuptimerobot";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyvcd/default.nix b/nixpkgs/pkgs/development/python-modules/pyvcd/default.nix
index 09f995412fcd..464e10c33179 100644
--- a/nixpkgs/pkgs/development/python-modules/pyvcd/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyvcd/default.nix
@@ -4,33 +4,30 @@
 , pythonOlder
 , setuptools-scm
 , six
-, pytest
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
-  version = "0.2.4";
+  version = "0.3.0";
   pname = "pyvcd";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "071e51a8362908ad5a2a12f078185639b98b20b653a56f01679de169d0fa425d";
+    sha256 = "ec4d9198bd20f9e07d78f6558ff8bcd45b172ee332e7e8a4588727eeb6a362bc";
   };
 
   buildInputs = [ setuptools-scm ];
-  propagatedBuildInputs = [ six ];
 
-  checkPhase = ''
-    py.test
-  '';
+  propagatedBuildInputs = [ six ];
 
-  checkInputs = [ pytest ];
+  checkInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Python package for writing Value Change Dump (VCD) files";
     homepage = "https://github.com/SanDisk-Open-Source/pyvcd";
     changelog = "https://github.com/SanDisk-Open-Source/pyvcd/blob/${version}/CHANGELOG.rst";
     license = licenses.mit;
-    maintainers = [ maintainers.sb0 maintainers.emily ];
+    maintainers = with maintainers; [ sb0 emily ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pyversasense/default.nix b/nixpkgs/pkgs/development/python-modules/pyversasense/default.nix
new file mode 100644
index 000000000000..f462deedd48c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyversasense/default.nix
@@ -0,0 +1,57 @@
+{ lib
+, aiohttp
+, asynctest
+, buildPythonPackage
+, fetchFromGitHub
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pyversasense";
+  version = "0.0.6";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "imstevenxyz";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "vTaDEwImWDMInwti0Jj+j+RFEtXOOKtiH5wOMD6ZmJk=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  checkInputs = [
+    asynctest
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "tests/test.py"
+  ];
+
+  disabledTests = [
+    # Tests are not properly mocking network requests
+    "test_device_mac"
+    "test_peripheral_id"
+    "test_peripheral_measurements"
+    "test_samples"
+  ];
+
+  pythonImportsCheck = [
+    "pyversasense"
+  ];
+
+  meta = with lib; {
+    description = "Python library to communicate with the VersaSense API";
+    homepage = "https://github.com/imstevenxyz/pyversasense";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyvesync/default.nix b/nixpkgs/pkgs/development/python-modules/pyvesync/default.nix
index e1ae55fd5e41..50a412768c06 100644
--- a/nixpkgs/pkgs/development/python-modules/pyvesync/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyvesync/default.nix
@@ -7,19 +7,26 @@
 
 buildPythonPackage rec {
   pname = "pyvesync";
-  version = "1.4.1";
+  version = "1.4.2";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f8bc6ebbe2c2bf37009b50b16e34747b0cfe35dd249aed4525b68c3af061941f";
+    sha256 = "sha256-O5zt1FiCQAlCaGaiEyrannqZjm4oGq36d4Fa77ys+HE=";
   };
 
-  propagatedBuildInputs = [ requests ];
+  propagatedBuildInputs = [
+    requests
+  ];
 
   # Test are not available (not in PyPI tarball and there are no GitHub releases)
   doCheck = false;
-  pythonImportsCheck = [ "pyvesync" ];
+
+  pythonImportsCheck = [
+    "pyvesync"
+  ];
 
   meta = with lib; {
     description = "Python library to manage Etekcity Devices and Levoit Air Purifier";
diff --git a/nixpkgs/pkgs/development/python-modules/pyvex/default.nix b/nixpkgs/pkgs/development/python-modules/pyvex/default.nix
index e8babafdf9a1..211ba18ae612 100644
--- a/nixpkgs/pkgs/development/python-modules/pyvex/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyvex/default.nix
@@ -11,17 +11,19 @@
 
 buildPythonPackage rec {
   pname = "pyvex";
-  version = "9.0.10159";
+  version = "9.1.10913";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-9I9gAPbazuPdZDyoXpjw0IrTu+97dwznoOnyBzkNNCw=";
+    sha256 = "sha256-EUgCyjD5ia5KQMvZWVAsXeKRjmSVE7tRRYH5u/Ozug0=";
   };
 
   postPatch = lib.optionalString stdenv.isDarwin ''
     substituteInPlace vex/Makefile-gcc --replace '/usr/bin/ar' 'ar'
   '';
 
+  setupPyBuildFlags = lib.optionals stdenv.isLinux [ "--plat-name" "linux" ];
+
   propagatedBuildInputs = [
     archinfo
     bitstring
@@ -45,7 +47,5 @@ buildPythonPackage rec {
     homepage = "https://github.com/angr/pyvex";
     license = with licenses; [ bsd2 gpl3Plus lgpl3Plus ];
     maintainers = with maintainers; [ fab ];
-    # ERROR: pyvex-X-py3-none-manylinux1_aarch64.whl is not a supported wheel on this platform.
-    broken = stdenv.isAarch64;
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/pyvicare/default.nix b/nixpkgs/pkgs/development/python-modules/pyvicare/default.nix
index 7f3b3f5da8f0..a47a46c338a3 100644
--- a/nixpkgs/pkgs/development/python-modules/pyvicare/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyvicare/default.nix
@@ -10,14 +10,16 @@
 
 buildPythonPackage rec {
   pname = "pyvicare";
-  version = "2.13.0";
+  version = "2.14.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "somm15";
     repo = "PyViCare";
     rev = version;
-    sha256 = "sha256-v1twWyxd0nhXxvbRCbnH5TP736eeDYE5Nz62sf6HIcA=";
+    sha256 = "sha256-+Rjs5PwsjcE8vsCS9gHmEj2Hy2OSH/YxNjYgjrBXHPk=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
@@ -38,7 +40,9 @@ buildPythonPackage rec {
       --replace "'setuptools-git-versioning'" " "
   '';
 
-  pythonImportsCheck = [ "PyViCare" ];
+  pythonImportsCheck = [
+    "PyViCare"
+  ];
 
   meta = with lib; {
     description = "Python Library to access Viessmann ViCare API";
diff --git a/nixpkgs/pkgs/development/python-modules/pyvips/default.nix b/nixpkgs/pkgs/development/python-modules/pyvips/default.nix
index c3eb750783fd..b25d9d3b5ae4 100644
--- a/nixpkgs/pkgs/development/python-modules/pyvips/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyvips/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "pyvips";
-  version = "2.1.15";
+  version = "2.1.16";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8bca4077dbdc1434dcbc6759407367b6561e3505aa9555b1bc0b45989dcf50b2";
+    sha256 = "654c03014a15f846786807a2ece6f525a8fec883d1c857742c8e37da149a81ed";
   };
 
   nativeBuildInputs = [ pytest-runner pkgconfig pkg-config ];
diff --git a/nixpkgs/pkgs/development/python-modules/pyvis/default.nix b/nixpkgs/pkgs/development/python-modules/pyvis/default.nix
index a0a024c56ca7..498dba97b325 100644
--- a/nixpkgs/pkgs/development/python-modules/pyvis/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyvis/default.nix
@@ -1,5 +1,4 @@
 { lib
-, isPy3k
 , fetchFromGitHub
 , fetchpatch
 , buildPythonPackage
diff --git a/nixpkgs/pkgs/development/python-modules/pyvolumio/default.nix b/nixpkgs/pkgs/development/python-modules/pyvolumio/default.nix
index f4164b884c74..05dcbce167e8 100644
--- a/nixpkgs/pkgs/development/python-modules/pyvolumio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyvolumio/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "pyvolumio";
-  version = "0.1.4";
+  version = "0.1.5";
 
   disabled = pythonOlder "3.7";
 
@@ -15,7 +15,7 @@ buildPythonPackage rec {
     owner = "OnFreund";
     repo = "PyVolumio";
     rev = "v${version}";
-    sha256 = "0c6kcz9x0n9w67h2gncyhq0dw3q17nmzipcgx59pwqnn33jan5nf";
+    sha256 = "1nyvflap39cwq1cm9wwl9idvfmz1ixsl80f1dnskx22fk0lmvj4h";
   };
 
   propagatedBuildInputs = [ aiohttp ];
diff --git a/nixpkgs/pkgs/development/python-modules/pywal/default.nix b/nixpkgs/pkgs/development/python-modules/pywal/default.nix
index ccc862f8aa47..2e09573d848c 100644
--- a/nixpkgs/pkgs/development/python-modules/pywal/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pywal/default.nix
@@ -9,24 +9,29 @@ buildPythonPackage rec {
     sha256 = "1drha9kshidw908k7h3gd9ws2bl64ms7bjcsa83pwb3hqa9bkspg";
   };
 
-  preCheck = ''
-    mkdir tmp
-    HOME=$PWD/tmp
-  '';
-
   patches = [
     ./convert.patch
     ./feh.patch
   ];
 
-  # Invalid syntax
-  disabled = !isPy3k;
-
   postPatch = ''
     substituteInPlace pywal/backends/wal.py --subst-var-by convert "${imagemagick}/bin/convert"
     substituteInPlace pywal/wallpaper.py --subst-var-by feh "${feh}/bin/feh"
   '';
 
+  # Invalid syntax
+  disabled = !isPy3k;
+
+  preCheck = ''
+    mkdir tmp
+    HOME=$PWD/tmp
+
+    for f in tests/test_export.py tests/test_util.py ; do
+      substituteInPlace "$f" \
+        --replace '/tmp/' "$TMPDIR/"
+    done
+  '';
+
   meta = with lib; {
     description = "Generate and change colorschemes on the fly. A 'wal' rewrite in Python 3";
     homepage = "https://github.com/dylanaraps/pywal";
diff --git a/nixpkgs/pkgs/development/python-modules/pywavelets/default.nix b/nixpkgs/pkgs/development/python-modules/pywavelets/default.nix
index 66c996a487ba..cbd7681c63f9 100644
--- a/nixpkgs/pkgs/development/python-modules/pywavelets/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pywavelets/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "PyWavelets";
-  version = "1.1.1";
+  version = "1.2.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1a64b40f6acb4ffbaccce0545d7fc641744f95351f62e4c6aaa40549326008c9";
+    sha256 = "6cbd69b047bb4e00873097472133425f5f08a4e6bc8b3f0ae709274d4d5e9a8d";
   };
 
   checkInputs = [ nose pytest ];
diff --git a/nixpkgs/pkgs/development/python-modules/pywayland/default.nix b/nixpkgs/pkgs/development/python-modules/pywayland/default.nix
new file mode 100644
index 000000000000..faec2c202632
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pywayland/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+, cffi
+, pkg-config
+, wayland
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "pywayland";
+  version = "0.4.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0IMNOPTmY22JCHccIVuZxDhVr41cDcKNkx8bp+5h2CU=";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+  propagatedNativeBuildInputs = [ cffi ];
+  buildInputs = [ wayland ];
+  propagatedBuildInputs = [ cffi ];
+  checkInputs = [ pytestCheckHook ];
+
+  postBuild = ''
+    ${python.interpreter} pywayland/ffi_build.py
+  '';
+
+  # Tests need this to create sockets
+  preCheck = ''
+    export XDG_RUNTIME_DIR="$PWD"
+  '';
+
+  pythonImportsCheck = [ "pywayland" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/flacjacket/pywayland";
+    description = "Python bindings to wayland using cffi";
+    license = licenses.ncsa;
+    maintainers = with maintainers; [ chvp ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pywbem/default.nix b/nixpkgs/pkgs/development/python-modules/pywbem/default.nix
index be1d0607098f..3e1f37d26b06 100644
--- a/nixpkgs/pkgs/development/python-modules/pywbem/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pywbem/default.nix
@@ -1,17 +1,16 @@
 { lib, buildPythonPackage, fetchPypi, libxml2
-, m2crypto, ply, pyyaml, six, pbr, pythonOlder, isPy37
-, nocasedict, nocaselist, yamlloader, requests-mock
+, m2crypto, ply, pyyaml, six, pbr, pythonOlder, nocasedict, nocaselist, yamlloader, requests-mock
 , httpretty, lxml, mock, pytest, requests, decorator, unittest2
 , FormEncode, testfixtures, pytz
 }:
 
 buildPythonPackage rec {
   pname = "pywbem";
-  version = "1.2.0";
+  version = "1.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8ef48185e0adbaeb9bd5181c4c5de951f6d58d54e2e1d7e87a9834e10eabe957";
+    sha256 = "5df0af28f81891a3914a12f3a30b11b1981f7b30e09c5a42c011797e7fce9b6a";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pyweatherflowrest/default.nix b/nixpkgs/pkgs/development/python-modules/pyweatherflowrest/default.nix
new file mode 100644
index 000000000000..32a5c5d8abc3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyweatherflowrest/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pyweatherflowrest";
+  version = "1.0.7";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "briis";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "17zas565jqvp0qrs8l589rm4f9xpyynhqk8lrqcx089w3rv0hh2p";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "--cov=pyweatherflowrest --cov-append" ""
+  '';
+
+  # Module has no tests. test.py is a demo script
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pyweatherflowrest"
+  ];
+
+  meta = with lib; {
+    description = "Python module to get data from WeatherFlow Weather Stations";
+    homepage = "https://github.com/briis/pyweatherflowrest";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pywebdav/default.nix b/nixpkgs/pkgs/development/python-modules/pywebdav/default.nix
deleted file mode 100644
index 2f6bb8553a4f..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pywebdav/default.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{ lib, fetchPypi, buildPythonPackage, isPy3k }:
-
-buildPythonPackage rec {
-  pname = "PyWebDAV";
-  version = "0.9.8";
-  disabled = isPy3k;
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1v10vg79h85milnq8w7yd75qq5z6297ywkn9b2kxajldzwqxn3ji";
-  };
-  meta = with lib; {
-    homepage = "http://code.google.com/p/pywebdav/";
-    description = "WebDAV library including a standalone server for python";
-    maintainers = with maintainers; [ johbo ];
-    license = licenses.gpl2Plus;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pywebview/default.nix b/nixpkgs/pkgs/development/python-modules/pywebview/default.nix
index e750f234faf5..67f11ed291f5 100644
--- a/nixpkgs/pkgs/development/python-modules/pywebview/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pywebview/default.nix
@@ -7,18 +7,19 @@
 , pythonOlder
 , qt5
 , xvfb-run
+, proxy_tools
 }:
 
 buildPythonPackage rec {
   pname = "pywebview";
-  version = "3.4";
+  version = "3.5";
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "r0x0r";
     repo = "pywebview";
     rev = version;
-    sha256 = "sha256-3JHwtw8oReolEl4k8cdt7GCVGNkfWWJN6EnZYHxzDO8=";
+    sha256 = "sha256-+At/ToEylSPcLh/u2NHVTXQpMnw+2/afsevg5YAX/4c=";
   };
 
   nativeBuildInputs = [
@@ -27,6 +28,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     pyqtwebengine
+    proxy_tools
   ] ++ lib.optionals (pythonOlder "3.7") [ importlib-resources ];
 
   checkInputs = [
@@ -52,6 +54,8 @@ buildPythonPackage rec {
     popd
   '';
 
+  pythonImportsCheck = [ "webview" ];
+
   meta = with lib; {
     homepage = "https://github.com/r0x0r/pywebview";
     description = "Lightweight cross-platform wrapper around a webview";
diff --git a/nixpkgs/pkgs/development/python-modules/pywemo/default.nix b/nixpkgs/pkgs/development/python-modules/pywemo/default.nix
index 878611d8e3fd..1e2f8db96cd8 100644
--- a/nixpkgs/pkgs/development/python-modules/pywemo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pywemo/default.nix
@@ -13,15 +13,16 @@
 
 buildPythonPackage rec {
   pname = "pywemo";
-  version = "0.6.7";
+  version = "0.7.0";
   format = "pyproject";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "sha256-g3/xMCCCsn2EY1DsRuZAcfUIsdkP3mEkYlI+KjYKXOk=";
+    sha256 = "sha256-NwhKrk5cQT7kk4VCr0BMQz0yTP/vuBA6MjTRuk2LM5Y=";
   };
 
   nativeBuildInputs = [
@@ -40,7 +41,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "pywemo" ];
+  pythonImportsCheck = [
+    "pywemo"
+  ];
 
   meta = with lib; {
     description = "Python module to discover and control WeMo devices";
diff --git a/nixpkgs/pkgs/development/python-modules/pywick/default.nix b/nixpkgs/pkgs/development/python-modules/pywick/default.nix
index c675686ef833..0db11576203a 100644
--- a/nixpkgs/pkgs/development/python-modules/pywick/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pywick/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname   = "pywick";
-  version = "0.5.6";
+  version = "0.6.5";
 
   disabled = pythonOlder "3.6";
 
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "achaiah";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1gmlifnv9kji0d1jwg1pa8d96zg48w17qg0sgxwy1y1jf3hn37bm";
+    sha256 = "0wnijdvqgdpzfdsy1cga3bsr0n7zzsl8hp4dskqwxx087g5h1r84";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pywilight/default.nix b/nixpkgs/pkgs/development/python-modules/pywilight/default.nix
index 425cba61ce3f..43c50fa8cf2d 100644
--- a/nixpkgs/pkgs/development/python-modules/pywilight/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pywilight/default.nix
@@ -3,15 +3,19 @@
 , fetchPypi
 , ifaddr
 , requests
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pywilight";
-  version = "0.0.70";
+  version = "0.0.73";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-PLahGx75oEp4NIZB9PVRdA3cLBxhQsHTsnquy7WSEC8=";
+    sha256 = "sha256-8AYzAePLqCiz/EN6cJShGnrISijBpFHAU/u355f5IjY=";
   };
 
   propagatedBuildInputs = [
@@ -19,9 +23,12 @@ buildPythonPackage rec {
     requests
   ];
 
-  # no tests are present
+  # Module has no tests
   doCheck = false;
-  pythonImportsCheck = [ "pywilight" ];
+
+  pythonImportsCheck = [
+    "pywilight"
+  ];
 
   meta = with lib; {
     description = "Python API for WiLight device";
diff --git a/nixpkgs/pkgs/development/python-modules/pywizlight/default.nix b/nixpkgs/pkgs/development/python-modules/pywizlight/default.nix
index 1461a7053022..16a72550ffd0 100644
--- a/nixpkgs/pkgs/development/python-modules/pywizlight/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pywizlight/default.nix
@@ -5,17 +5,21 @@
 , fetchFromGitHub
 , pytest-asyncio
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pywizlight";
-  version = "0.4.7";
+  version = "0.4.16";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "sbidy";
     repo = pname;
-    rev = version;
-    sha256 = "0zagdb90bxmf06fzpljhqgsgzg36zc1yhdibacfrx8bmnx3l657h";
+    rev = "v${version}";
+    sha256 = "sha256-Da5hkmzGJtfqiDPV9X02opv54Ry6sGiSbDnej9a2QDA=";
   };
 
   propagatedBuildInputs = [
@@ -28,14 +32,18 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  # Tests requires network features (e. g., discovery testing)
   disabledTests = [
+    # Tests requires network features (e. g., discovery testing)
     "test_Bulb_Discovery"
     "test_timeout"
     "test_timeout_PilotBuilder"
+    "test_error_PilotBuilder_warm_wite"
+    "test_error_PilotBuilder_cold_white_lower"
   ];
 
-  pythonImportsCheck = [ "pywizlight" ];
+  pythonImportsCheck = [
+    "pywizlight"
+  ];
 
   meta = with lib; {
     description = "Python connector for WiZ light bulbs";
diff --git a/nixpkgs/pkgs/development/python-modules/pywlroots/default.nix b/nixpkgs/pkgs/development/python-modules/pywlroots/default.nix
new file mode 100644
index 000000000000..a35132ade3f6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pywlroots/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+, cffi
+, pkg-config
+, libxkbcommon
+, libinput
+, pixman
+, udev
+, wlroots
+, wayland
+, pywayland
+, xkbcommon
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "pywlroots";
+  version = "0.14.11";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "Ey1B3tx6UufxZs8I64vaoPSNC+4LGdcPuyKrLBHxZa8=";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+  propagatedNativeBuildInputs = [ cffi ];
+  buildInputs = [ libinput libxkbcommon pixman udev wayland wlroots ];
+  propagatedBuildInputs = [ cffi pywayland xkbcommon ];
+  checkInputs = [ pytestCheckHook ];
+
+  postBuild = ''
+    ${python.interpreter} wlroots/ffi_build.py
+  '';
+
+  pythonImportsCheck = [ "wlroots" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/flacjacket/pywlroots";
+    description = "Python bindings to wlroots using cffi";
+    license = licenses.ncsa;
+    maintainers = with maintainers; [ chvp ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pyworld/default.nix b/nixpkgs/pkgs/development/python-modules/pyworld/default.nix
index bbe5a4c135e6..9833a29593e8 100644
--- a/nixpkgs/pkgs/development/python-modules/pyworld/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyworld/default.nix
@@ -26,7 +26,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "PyWorld is a Python wrapper for WORLD vocoder";
-    homepage = https://github.com/JeremyCCHsu/Python-Wrapper-for-World-Vocoder;
+    homepage = "https://github.com/JeremyCCHsu/Python-Wrapper-for-World-Vocoder";
     license = licenses.mit;
     maintainers = [ maintainers.mic92 ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/pyxb/default.nix b/nixpkgs/pkgs/development/python-modules/pyxb/default.nix
index 3be79736e555..de4c4e8b9689 100644
--- a/nixpkgs/pkgs/development/python-modules/pyxb/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyxb/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/pyxdg/default.nix b/nixpkgs/pkgs/development/python-modules/pyxdg/default.nix
index c0e8b8063ba0..0ad5777e6377 100644
--- a/nixpkgs/pkgs/development/python-modules/pyxdg/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyxdg/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitLab
-, nose
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/pyxml/default.nix b/nixpkgs/pkgs/development/python-modules/pyxml/default.nix
deleted file mode 100644
index 49796054b564..000000000000
--- a/nixpkgs/pkgs/development/python-modules/pyxml/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{fetchurl, python, buildPythonPackage, makeWrapper}:
-
-buildPythonPackage rec {
-  pname = "PyXML";
-  version = "0.8.4";
-
-  format = "other";
-  src = fetchurl {
-    url = "mirror://sourceforge/pyxml/${pname}-${pname}.tar.gz";
-    sha256 = "04wc8i7cdkibhrldy6j65qp5l75zjxf5lx6qxdxfdf2gb3wndawz";
-  };
-
-  nativeBuildInputs = [ makeWrapper ];
-  buildPhase = "${python.interpreter} ./setup.py build";
-  installPhase = ''
-    ${python.interpreter} ./setup.py install --prefix="$out" || exit 1
-
-    for i in "$out/bin/"*
-    do
-      wrapProgram "$i" --prefix PYTHONPATH :  \
-       "$out/${python.sitePackages}" ||  \
-        exit 2
-    done
-  '';
-
-  meta = {
-    description = "A collection of libraries to process XML with Python";
-    homepage = "http://pyxml.sourceforge.net/";
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/pyzerproc/default.nix b/nixpkgs/pkgs/development/python-modules/pyzerproc/default.nix
index 99f1ac7fd099..7f726d8ae7f8 100644
--- a/nixpkgs/pkgs/development/python-modules/pyzerproc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyzerproc/default.nix
@@ -12,14 +12,16 @@
 
 buildPythonPackage rec {
   pname = "pyzerproc";
-  version = "0.4.9";
-  disabled = pythonOlder "3.6";
+  version = "0.4.10";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "emlove";
     repo = pname;
     rev = version;
-    sha256 = "11bsvmvazx9gpj0w80b6wgdp41z8y2sk6bhkj3ps7grsgr59n7rz";
+    sha256 = "sha256-sfxyHpJzYYwxLsvfJpqI6cC/CKS7Jx0vXSLL3QD9qV4=";
   };
 
   postPatch = ''
@@ -39,7 +41,9 @@ buildPythonPackage rec {
     asynctest
   ];
 
-  pythonImportsCheck = [ "pyzerproc" ];
+  pythonImportsCheck = [
+    "pyzerproc"
+  ];
 
   meta = with lib; {
     description = "Python library to control Zerproc Bluetooth LED smart string lights";
diff --git a/nixpkgs/pkgs/development/python-modules/pyzmq/default.nix b/nixpkgs/pkgs/development/python-modules/pyzmq/default.nix
index 816c46204f88..60fcce9442a8 100644
--- a/nixpkgs/pkgs/development/python-modules/pyzmq/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyzmq/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "pyzmq";
-  version = "22.2.1";
+  version = "22.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6d18c76676771fd891ca8e0e68da0bbfb88e30129835c0ade748016adb3b6242";
+    sha256 = "8eddc033e716f8c91c6a2112f0a8ebc5e00532b4a6ae1eb0ccc48e027f9c671c";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/qcelemental/default.nix b/nixpkgs/pkgs/development/python-modules/qcelemental/default.nix
index c0992e982510..0f1aa5cee7a2 100644
--- a/nixpkgs/pkgs/development/python-modules/qcelemental/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qcelemental/default.nix
@@ -1,26 +1,35 @@
-{ buildPythonPackage, lib, fetchPypi, numpy
-, pydantic, pint,  networkx, pytest-runner, pytest-cov, pytest
+{ buildPythonPackage, lib, fetchPypi
+, networkx
+, numpy
+, pint
+, pydantic
+, pytestCheckHook
 } :
 
 buildPythonPackage rec {
   pname = "qcelemental";
-  version = "0.23.0";
-
-  checkInputs = [ pytest-runner pytest-cov pytest ];
-  propagatedBuildInputs = [ numpy pydantic pint networkx ];
+  version = "0.24.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "642bc86ce937621ddfb1291cbff0851be16b26feb5eec562296999e36181cee3";
+    sha256 = "sha256-XcsR89tu26EG5AcXqmndkESLGWZ8eKmTkjaLziosawE=";
   };
 
+  propagatedBuildInputs = [
+    numpy
+    pydantic
+    pint
+    networkx
+  ];
+
+  checkInputs = [ pytestCheckHook ];
+
   doCheck = true;
 
   meta = with lib; {
     description = "Periodic table, physical constants, and molecule parsing for quantum chemistry";
     homepage = "http://docs.qcarchive.molssi.org/projects/qcelemental/en/latest/";
     license = licenses.bsd3;
-    platforms = platforms.linux;
     maintainers = [ maintainers.sheepforce ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/qcengine/default.nix b/nixpkgs/pkgs/development/python-modules/qcengine/default.nix
index 81813de356af..29fffb1473be 100644
--- a/nixpkgs/pkgs/development/python-modules/qcengine/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qcengine/default.nix
@@ -1,28 +1,31 @@
-{ buildPythonPackage, lib, fetchPypi, pyyaml, qcelemental, pydantic
-, py-cpuinfo, psutil, pytest-runner, pytest, pytest-cov
-} :
+{ buildPythonPackage
+, lib
+, fetchPypi
+, psutil
+, py-cpuinfo
+, pydantic
+, pyyaml
+, qcelemental
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "qcengine";
-  version = "0.20.1";
+  version = "0.21.0";
 
-  checkInputs = [
-    pytest-runner
-    pytest-cov
-    pytest
-  ];
+  checkInputs = [ pytestCheckHook ];
 
   propagatedBuildInputs = [
+    psutil
+    py-cpuinfo
+    pydantic
     pyyaml
     qcelemental
-    pydantic
-    py-cpuinfo
-    psutil
   ];
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "hZxE7b0bOx/B8Kz4cgBC7wV23OikRxwrdZ4UQ8G/yhg=";
+    sha256 = "sha256-ZsPKvbaZ7BBZuOmzq12ism/HyWYcLlQHgZaTzmIsMq4=";
   };
 
   doCheck = true;
diff --git a/nixpkgs/pkgs/development/python-modules/qcs-api-client/default.nix b/nixpkgs/pkgs/development/python-modules/qcs-api-client/default.nix
new file mode 100644
index 000000000000..7e961b8a233d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qcs-api-client/default.nix
@@ -0,0 +1,69 @@
+{ lib
+, attrs
+, buildPythonPackage
+, fetchPypi
+, httpx
+, iso8601
+, pydantic
+, pyjwt
+, pytest-asyncio
+, pytestCheckHook
+, python-dateutil
+, pythonOlder
+, respx
+, retrying
+, rfc3339
+, toml
+}:
+
+buildPythonPackage rec {
+  pname = "qcs-api-client";
+  version = "0.20.5";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-nSkCARZk6K5JMgiXunRBrb3pn5Ti6f493OOFzJYaW0M=";
+  };
+
+  propagatedBuildInputs = [
+    attrs
+    httpx
+    iso8601
+    pydantic
+    pyjwt
+    python-dateutil
+    retrying
+    rfc3339
+    toml
+  ];
+
+  checkInputs = [
+    pytest-asyncio
+    pytestCheckHook
+    respx
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "attrs>=20.1.0,<21.0.0" "attrs" \
+      --replace "httpx>=0.15.0,<0.16.0" "httpx" \
+      --replace "pyjwt>=1.7.1,<2.0.0" "pyjwt"
+  '';
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "qcs_api_client"
+  ];
+
+  meta = with lib; {
+    description = "Python library for accessing the Rigetti QCS API";
+    homepage = "https://pypi.org/project/qcs-api-client/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qiling/default.nix b/nixpkgs/pkgs/development/python-modules/qiling/default.nix
index 0bd86c3caf53..3576f5b73660 100644
--- a/nixpkgs/pkgs/development/python-modules/qiling/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qiling/default.nix
@@ -1,33 +1,43 @@
 { lib
 , buildPythonPackage
-, fetchPypi
 , capstone
-, unicorn
-, pefile
-, python-registry
+, fetchFromGitHub
+, fetchPypi
+, gevent
 , keystone-engine
+, multiprocess
+, pefile
 , pyelftools
-, gevent
+, python-registry
+, unicorn
 }:
+
 buildPythonPackage rec {
   pname = "qiling";
-  version = "1.2.4";
+  version = "1.4.0";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ecaa4415eea44f6f48021c1f7794c0d9fae7d64c8e43a3ff1d5de8e99bd963aa";
+    sha256 = "sha256-xUoNHMyGN0G2itVcKLsk+7QKxZdguzyh6OZCqCHNB4Y=";
   };
 
   propagatedBuildInputs = [
     capstone
-    unicorn
-    pefile
-    python-registry
+    gevent
     keystone-engine
+    multiprocess
+    pefile
     pyelftools
-    gevent
+    python-registry
+    unicorn
   ];
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "pefile==2021.5.24" "pefile>=2021.5.24"
+  '';
+
   # Tests are broken (attempt to import a file that tells you not to import it,
   # amongst other things)
   doCheck = false;
diff --git a/nixpkgs/pkgs/development/python-modules/qimage2ndarray/default.nix b/nixpkgs/pkgs/development/python-modules/qimage2ndarray/default.nix
index 3949361a0a8c..0bb9ed2199a2 100644
--- a/nixpkgs/pkgs/development/python-modules/qimage2ndarray/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qimage2ndarray/default.nix
@@ -1,4 +1,4 @@
-{ lib, pkgs, buildPythonPackage, fetchPypi, isPy3k
+{ lib, buildPythonPackage, fetchPypi, isPy3k
 , numpy
 , pyqt5
 }:
diff --git a/nixpkgs/pkgs/development/python-modules/qiskit-aer/default.nix b/nixpkgs/pkgs/development/python-modules/qiskit-aer/default.nix
index 89041f7508df..b2e708d586f7 100644
--- a/nixpkgs/pkgs/development/python-modules/qiskit-aer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qiskit-aer/default.nix
@@ -24,11 +24,13 @@
 , fixtures
 , pytest-timeout
 , qiskit-terra
+, setuptools
+, testtools
 }:
 
 buildPythonPackage rec {
   pname = "qiskit-aer";
-  version = "0.8.2";
+  version = "0.9.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -37,23 +39,16 @@ buildPythonPackage rec {
     owner = "Qiskit";
     repo = "qiskit-aer";
     rev = version;
-    hash = "sha256-7NWM7qpMQ3vA6p0dhEPnkBjsPMdhceYTYcAD4tsClf0=";
+    sha256 = "sha256-SAJjU2zYz6UabOPV1KI2JB7CbJfUJcjbPKbo6iiCk/g=";
   };
 
-  patches = [
-    (fetchpatch {
-      # https://github.com/Qiskit/qiskit-aer/pull/1250
-      name = "qiskit-aer-pr-1250-native-cmake_dl_libs.patch";
-      url = "https://github.com/Qiskit/qiskit-aer/commit/2bf04ade3e5411776817706cf82cc67a3b3866f6.patch";
-      sha256 = "0ldwzxxfgaad7ifpci03zfdaj0kqj0p3h94qgshrd2953mf27p6z";
-    })
-  ];
-  # Remove need for cmake python package
-  # pybind11 shouldn't be an install requirement, just build requirement.
   postPatch = ''
     substituteInPlace setup.py \
       --replace "'cmake!=3.17,!=3.17.0'," "" \
-      --replace "'pybind11>=2.6'" ""
+      --replace "'pybind11', min_version='2.6'" "'pybind11'" \
+      --replace "pybind11>=2.6" "pybind11" \
+      --replace "scikit-build>=0.11.0" "scikit-build" \
+      --replace "min_version='0.11.0'" ""
   '';
 
   nativeBuildInputs = [
@@ -78,7 +73,6 @@ buildPythonPackage rec {
     numpy
   ];
 
-  # Disable using conan for build
   preBuild = ''
     export DISABLE_CONAN=1
   '';
@@ -94,6 +88,17 @@ buildPythonPackage rec {
   ];
   # Slow tests
   disabledTests = [
+    "test_clifford" # fails on cvxpy >= 1.1.15. https://github.com/Qiskit/qiskit-aer/pull/1318. Remove in future.
+    "test_snapshot" # TODO: these ~30 tests fail on setup due to pytest fixture issues?
+    "test_initialize_2" # TODO: simulations appear incorrect, off by >10%.
+
+    # these fail for some builds. Haven't been able to reproduce error locally.
+    "test_kraus_gate_noise"
+    "test_backend_method_clifford_circuits_and_kraus_noise"
+    "test_backend_method_nonclifford_circuit_and_kraus_noise"
+    "test_kraus_noise_fusion"
+
+    # Slow tests
     "test_paulis_1_and_2_qubits"
     "test_3d_oscillator"
     "_057"
@@ -114,6 +119,8 @@ buildPythonPackage rec {
     fixtures
     pytest-timeout
     qiskit-terra
+    setuptools  # temporary workaround for pbr missing setuptools, see https://github.com/NixOS/nixpkgs/pull/132614
+    testtools
   ];
   pytestFlagsArray = [
     "--timeout=30"
diff --git a/nixpkgs/pkgs/development/python-modules/qiskit-aqua/default.nix b/nixpkgs/pkgs/development/python-modules/qiskit-aqua/default.nix
index 7069629470cd..88365e0f8b70 100644
--- a/nixpkgs/pkgs/development/python-modules/qiskit-aqua/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qiskit-aqua/default.nix
@@ -19,7 +19,7 @@
 , withTorch ? false
 , pytorch
 , withPyscf ? false
-, pyscf ? null
+, pyscf
 , withScikitQuant ? false
 , scikit-quant ? null
 , withCplex ? false
@@ -33,7 +33,7 @@
 
 buildPythonPackage rec {
   pname = "qiskit-aqua";
-  version = "0.9.1";
+  version = "0.9.5";
 
   disabled = pythonOlder "3.6";
 
@@ -42,7 +42,7 @@ buildPythonPackage rec {
     owner = "Qiskit";
     repo = "qiskit-aqua";
     rev = version;
-    hash = "sha256-fptyqPrkUgl3UjtlEmDYORdX/SsONxWozQGEs/EahmU=";
+    sha256 = "sha256-7QmRwlbAVAR5KfM7tuObkb6+UgiuIm82iGWBuqfve08=";
   };
 
   # Optional packages: pyscf (see below NOTE) & pytorch. Can install via pip/nix if needed.
@@ -111,15 +111,27 @@ buildPythonPackage rec {
     "qiskit.optimization"
   ];
   pytestFlagsArray = [
-    "--timeout=30"
+    "--timeout=30"  # limit test duration to 30 seconds. Some tests previously would run indefinitely
     "--durations=10"
-  ] ++ lib.optionals (!withPyscf) [
-    "--ignore=test/chemistry/test_qeom_ee.py"
-    "--ignore=test/chemistry/test_qeom_vqe.py"
-    "--ignore=test/chemistry/test_vqe_uccsd_adapt.py"
-    "--ignore=test/chemistry/test_bopes_sampler.py"
+  ];
+  disabledTestPaths = lib.optionals (!withPyscf) [
+    "test/chemistry/test_qeom_ee.py"
+    "test/chemistry/test_qeom_vqe.py"
+    "test/chemistry/test_vqe_uccsd_adapt.py"
+    "test/chemistry/test_bopes_sampler.py"
   ];
   disabledTests = [
+    # TODO: figure out why failing, only fail with upgrade to qiskit-terra > 0.16.1 & qiskit-aer > 0.7.2
+    # In test.aqua.test_amplitude_estimation.TestSineIntegral
+    "test_confidence_intervals_1"
+    "test_statevector_1"
+
+    # fails due to approximation error with latest qiskit-aer?
+    "test_application"
+
+    # Fail on CI for some reason, not locally
+    "test_binary"
+
     # Online tests
     "test_exchangedata"
     "test_yahoo"
@@ -157,6 +169,8 @@ buildPythonPackage rec {
     "test_eoh"
     "test_qasm_5"
     "test_uccsd_hf"
+    "test_lih"
+    "test_lih_freeze_core"
   ] ++ lib.optionals (!withPyscf) [
     "test_validate" # test/chemistry/test_inputparser.py
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/qiskit-finance/default.nix b/nixpkgs/pkgs/development/python-modules/qiskit-finance/default.nix
new file mode 100644
index 000000000000..d4eaa58e7af9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qiskit-finance/default.nix
@@ -0,0 +1,78 @@
+{ lib
+, pythonOlder
+, buildPythonPackage
+, fetchFromGitHub
+  # Python Inputs
+, fastdtw
+, numpy
+, pandas
+, psutil
+, qiskit-terra
+, qiskit-optimization
+, scikit-learn
+, scipy
+, quandl
+, yfinance
+  # Check Inputs
+, pytestCheckHook
+, ddt
+, pytest-timeout
+, qiskit-aer
+}:
+
+buildPythonPackage rec {
+  pname = "qiskit-finance";
+  version = "0.2.1";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "qiskit";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-fEhc/01j6iYYwS6mLle+TpX9j0DVn12oPUFamEecoAY=";
+  };
+
+  propagatedBuildInputs = [
+    fastdtw
+    numpy
+    pandas
+    psutil
+    qiskit-terra
+    qiskit-optimization
+    quandl
+    scikit-learn
+    scipy
+    yfinance
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    pytest-timeout
+    ddt
+    qiskit-aer
+  ];
+
+  pythonImportsCheck = [ "qiskit_finance" ];
+  disabledTests = [
+    # Fail due to approximation error, ~1-2%
+    "test_application"
+
+    # Tests fail b/c require internet connection. Stalls tests if enabled.
+    "test_exchangedata"
+    "test_yahoo"
+    "test_wikipedia"
+  ];
+  pytestFlagsArray = [
+    "--durations=10"
+  ];
+
+  meta = with lib; {
+    description = "Software for developing quantum computing programs";
+    homepage = "https://qiskit.org";
+    downloadPage = "https://github.com/QISKit/qiskit-optimization/releases";
+    changelog = "https://qiskit.org/documentation/release_notes.html";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ drewrisinger ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix b/nixpkgs/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix
index aa02de42fb32..5b304bf38984 100644
--- a/nixpkgs/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix
@@ -7,9 +7,9 @@
 , qiskit-terra
 , requests
 , requests_ntlm
-, websockets
+, websocket-client
   # Visualization inputs
-, withVisualization ? false
+, withVisualization ? true
 , ipython
 , ipyvuetify
 , ipywidgets
@@ -23,6 +23,7 @@
 , nbformat
 , pproxy
 , qiskit-aer
+, websockets
 , vcrpy
 }:
 
@@ -39,7 +40,7 @@ let
 in
 buildPythonPackage rec {
   pname = "qiskit-ibmq-provider";
-  version = "0.13.1";
+  version = "0.18.1";
 
   disabled = pythonOlder "3.6";
 
@@ -47,7 +48,7 @@ buildPythonPackage rec {
     owner = "Qiskit";
     repo = pname;
     rev = version;
-    hash = "sha256-DlHlXncttzGo4uVoh2aQ7urW6krN3ej2sJ/EwuxeF2I=";
+    sha256 = "sha256-rySSCyI+62G7kL1ZRtjX1WeWj3LPXECvrlXAcIDINF4=";
   };
 
   propagatedBuildInputs = [
@@ -56,9 +57,13 @@ buildPythonPackage rec {
     qiskit-terra
     requests
     requests_ntlm
-    websockets
+    websocket-client
   ] ++ lib.optionals withVisualization visualizationPackages;
 
+  postPatch = ''
+    substituteInPlace setup.py --replace "websocket-client>=1.0.1" "websocket-client"
+  '';
+
   # Most tests require credentials to run on IBMQ
   checkInputs = [
     pytestCheckHook
@@ -67,6 +72,7 @@ buildPythonPackage rec {
     pproxy
     qiskit-aer
     vcrpy
+    websockets
   ] ++ lib.optionals (!withVisualization) visualizationPackages;
 
   pythonImportsCheck = [ "qiskit.providers.ibmq" ];
@@ -75,6 +81,7 @@ buildPythonPackage rec {
     "test_old_api_url"
     "test_non_auth_url"
     "test_non_auth_url_with_hub"
+    "test_coder_optimizers" # TODO: reenable when package scikit-quant is packaged, either in NUR or nixpkgs
 
     # slow tests
     "test_websocket_retry_failure"
diff --git a/nixpkgs/pkgs/development/python-modules/qiskit-machine-learning/default.nix b/nixpkgs/pkgs/development/python-modules/qiskit-machine-learning/default.nix
new file mode 100644
index 000000000000..a2006079c195
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qiskit-machine-learning/default.nix
@@ -0,0 +1,87 @@
+{ lib
+, pythonOlder
+, pythonAtLeast
+, buildPythonPackage
+, fetchFromGitHub
+, fetchpatch
+  # Python Inputs
+, fastdtw
+, numpy
+, psutil
+, qiskit-terra
+, scikit-learn
+, sparse
+  # Optional inputs
+, withTorch ? true
+, pytorch
+  # Check Inputs
+, pytestCheckHook
+, ddt
+, pytest-timeout
+, qiskit-aer
+}:
+
+buildPythonPackage rec {
+  pname = "qiskit-machine-learning";
+  version = "0.2.1";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "qiskit";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-2dfrkNZYSaXwiOCaRrPckq4BllANgc6BogyBcP0vosY=";
+  };
+
+  propagatedBuildInputs = [
+    fastdtw
+    numpy
+    psutil
+    qiskit-terra
+    scikit-learn
+    sparse
+  ] ++ lib.optional withTorch pytorch;
+
+  doCheck = false;  # TODO: enable. Tests fail on unstable due to some multithreading issue?
+  checkInputs = [
+    pytestCheckHook
+    pytest-timeout
+    ddt
+    qiskit-aer
+  ];
+
+  pythonImportsCheck = [ "qiskit_machine_learning" ];
+
+  pytestFlagsArray = [
+    "--durations=10"
+    "--showlocals"
+    "-vv"
+    "--ignore=test/connectors/test_torch_connector.py"  # TODO: fix, get multithreading errors with python3.9, segfaults
+  ];
+  disabledTests = [
+    # Slow tests >10 s
+    "test_readme_sample"
+    "test_vqr_8"
+    "test_vqr_7"
+    "test_qgan_training_cg"
+    "test_vqc_4"
+    "test_classifier_with_circuit_qnn_and_cross_entropy_4"
+    "test_vqr_4"
+    "test_regressor_with_opflow_qnn_4"
+    "test_qgan_save_model"
+    "test_qgan_training_analytic_gradients"
+    "test_qgan_training_run_algo_numpy"
+    "test_ad_hoc_data"
+    "test_qgan_training"
+  ];
+
+  meta = with lib; {
+    description = "Software for developing quantum computing programs";
+    homepage = "https://qiskit.org";
+    downloadPage = "https://github.com/QISKit/qiskit-optimization/releases";
+    changelog = "https://qiskit.org/documentation/release_notes.html";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ drewrisinger ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qiskit-nature/default.nix b/nixpkgs/pkgs/development/python-modules/qiskit-nature/default.nix
new file mode 100644
index 000000000000..09941fcdd448
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qiskit-nature/default.nix
@@ -0,0 +1,80 @@
+{ lib
+, pythonOlder
+, buildPythonPackage
+, fetchFromGitHub
+  # Python Inputs
+, h5py
+, numpy
+, psutil
+, qiskit-terra
+, retworkx
+, scikit-learn
+, scipy
+, withPyscf ? false
+, pyscf
+  # Check Inputs
+, pytestCheckHook
+, ddt
+, pylatexenc
+}:
+
+buildPythonPackage rec {
+  pname = "qiskit-nature";
+  version = "0.2.2";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "qiskit";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-nQbvH911Gt4KddG23qwmiXfRJTWwVEsrzPvuTQfy4FY=";
+  };
+
+  postPatch = ''
+    substituteInPlace requirements.txt --replace "h5py<3.3" "h5py"
+  '';
+
+  propagatedBuildInputs = [
+    h5py
+    numpy
+    psutil
+    qiskit-terra
+    retworkx
+    scikit-learn
+    scipy
+  ] ++ lib.optional withPyscf pyscf;
+
+  checkInputs = [
+    pytestCheckHook
+    ddt
+    pylatexenc
+  ];
+
+  pythonImportsCheck = [ "qiskit_nature" ];
+
+  pytestFlagsArray = [
+    "--durations=10"
+  ] ++ lib.optionals (!withPyscf) [
+    "--ignore=test/algorithms/excited_state_solvers/test_excited_states_eigensolver.py"
+  ];
+
+  disabledTests = [
+    # small math error < 0.05 (< 9e-6 %)
+    "test_vqe_uvccsd_factory"
+    # unsure of failure reason. Might be related to recent cvxpy update?
+    "test_two_qubit_reduction"
+  ] ++ lib.optionals (!withPyscf) [
+    "test_h2_bopes_sampler"
+    "test_potential_interface"
+  ];
+
+  meta = with lib; {
+    description = "Software for developing quantum computing programs";
+    homepage = "https://qiskit.org";
+    downloadPage = "https://github.com/QISKit/qiskit-optimization/releases";
+    changelog = "https://qiskit.org/documentation/release_notes.html";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ drewrisinger ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qiskit-optimization/default.nix b/nixpkgs/pkgs/development/python-modules/qiskit-optimization/default.nix
new file mode 100644
index 000000000000..5d9ae3d4375f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qiskit-optimization/default.nix
@@ -0,0 +1,63 @@
+{ lib
+, pythonOlder
+, buildPythonPackage
+, fetchFromGitHub
+  # Python Inputs
+, decorator
+, docplex
+, networkx
+, numpy
+, qiskit-terra
+, scipy
+  # Check Inputs
+, pytestCheckHook
+, ddt
+, pylatexenc
+, qiskit-aer
+}:
+
+buildPythonPackage rec {
+  pname = "qiskit-optimization";
+  version = "0.2.3";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "qiskit";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-y/j/cerzMAKVjehh1LUqYe1Juoa4lIxH2qS165S9img=";
+  };
+
+  postPatch = ''
+    substituteInPlace requirements.txt --replace "networkx>=2.2,<2.6" "networkx"
+  '';
+
+  propagatedBuildInputs = [
+    docplex
+    decorator
+    networkx
+    numpy
+    qiskit-terra
+    scipy
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    ddt
+    pylatexenc
+    qiskit-aer
+  ];
+
+  pythonImportsCheck = [ "qiskit_optimization" ];
+  pytestFlagsArray = [ "--durations=10" ];
+
+  meta = with lib; {
+    description = "Software for developing quantum computing programs";
+    homepage = "https://qiskit.org";
+    downloadPage = "https://github.com/QISKit/qiskit-optimization/releases";
+    changelog = "https://qiskit.org/documentation/release_notes.html";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ drewrisinger ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qiskit-terra/default.nix b/nixpkgs/pkgs/development/python-modules/qiskit-terra/default.nix
index 8b83c506808e..da31f86500fb 100644
--- a/nixpkgs/pkgs/development/python-modules/qiskit-terra/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qiskit-terra/default.nix
@@ -16,7 +16,10 @@
 , python-dateutil
 , retworkx
 , scipy
+, scikit-quant ? null
+, symengine
 , sympy
+, tweedledum
 , withVisualization ? false
   # Python visualization requirements, optional
 , ipywidgets
@@ -29,9 +32,6 @@
   # Crosstalk-adaptive layout pass
 , withCrosstalkPass ? false
 , z3
-  # Classical function -> Quantum Circuit compiler
-, withClassicalFunctionCompiler ? true
-, tweedledum
   # test requirements
 , ddt
 , hypothesis
@@ -52,12 +52,11 @@ let
     seaborn
   ];
   crosstalkPackages = [ z3 ];
-  classicalCompilerPackages = [ tweedledum ];
 in
 
 buildPythonPackage rec {
   pname = "qiskit-terra";
-  version = "0.17.4";
+  version = "0.18.3";
 
   disabled = pythonOlder "3.6";
 
@@ -65,7 +64,7 @@ buildPythonPackage rec {
     owner = "Qiskit";
     repo = pname;
     rev = version;
-    hash = "sha256-JyNuke+XPqjLVZbvPud9Y7k0+EmvETVKcOYcDldBiVo=";
+    sha256 = "sha256-w/EnkdlC1hvmLqm4I8ajEYADxqMYGdHKrySLcb/yWGs=";
   };
 
   nativeBuildInputs = [ cython ];
@@ -82,10 +81,12 @@ buildPythonPackage rec {
     python-dateutil
     retworkx
     scipy
+    scikit-quant
+    symengine
     sympy
+    tweedledum
   ] ++ lib.optionals withVisualization visualizationPackages
-  ++ lib.optionals withCrosstalkPass crosstalkPackages
-  ++ lib.optionals withClassicalFunctionCompiler classicalCompilerPackages;
+  ++ lib.optionals withCrosstalkPass crosstalkPackages;
 
   # *** Tests ***
   checkInputs = [
@@ -103,21 +104,21 @@ buildPythonPackage rec {
 
   disabledTestPaths = [
     "test/randomized/test_transpiler_equivalence.py" # collection requires qiskit-aer, which would cause circular dependency
-  ] ++ lib.optionals (!withClassicalFunctionCompiler) [
-    "test/python/classical_function_compiler/"
+    # These tests are nondeterministic and can randomly fail.
+    # We ignore them here for deterministic building.
+    "test/randomized/"
+    # These tests consistently fail on GitHub Actions build
+    "test/python/quantum_info/operators/test_random.py"
   ];
+  pytestFlagsArray = [ "--durations=10" ];
   disabledTests = [
-    # Not working on matplotlib >= 3.4.0, checks images match.
-    "test_plot_circuit_layout"
-
     # Flaky tests
-    "test_cx_equivalence"
-    "test_pulse_limits"
-    "test_1q_random"
-  ] ++ lib.optionals (!withClassicalFunctionCompiler) [
-    "TestPhaseOracle"
-  ] ++ lib.optionals stdenv.isAarch64 [
-    "test_circuit_init" # failed on aarch64, https://gist.github.com/r-rmcgibbo/c2e173d43ced4f6954811004f6b5b842
+    "test_pulse_limits" # Fails on GitHub Actions, probably due to minor floating point arithmetic error.
+    "test_cx_equivalence"  # Fails due to flaky test
+    "test_two_qubit_synthesis_not_pulse_optimal" # test of random circuit, seems to randomly fail depending on seed
+    "test_qv_natural" # fails due to sign error. Not sure why
+  ] ++ lib.optionals (lib.versionAtLeast matplotlib.version "3.4.0") [
+    "test_plot_circuit_layout"
   ]
   # Disabling slow tests for build constraints
   ++ [
@@ -147,6 +148,12 @@ buildPythonPackage rec {
     "test_qaoa_qc_mixer_4"
     "test_abelian_grouper_random_2"
     "test_pauli_two_design"
+    "test_shor_factoring"
+    "test_sample_counts_memory_ghz"
+    "test_two_qubit_weyl_decomposition_ab0"
+    "test_sample_counts_memory_superposition"
+    "test_piecewise_polynomial_function"
+    "test_vqe_qasm"
   ];
 
   # Moves tests to $PACKAGEDIR/test. They can't be run from /build because of finding
diff --git a/nixpkgs/pkgs/development/python-modules/qiskit/default.nix b/nixpkgs/pkgs/development/python-modules/qiskit/default.nix
index 6cc24be1958a..9d050606006c 100644
--- a/nixpkgs/pkgs/development/python-modules/qiskit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qiskit/default.nix
@@ -8,14 +8,28 @@
 , qiskit-ibmq-provider
 , qiskit-ignis
 , qiskit-terra
+  # Optional inputs
+, withOptionalPackages ? true
+, qiskit-finance
+, qiskit-machine-learning
+, qiskit-nature
+, qiskit-optimization
   # Check Inputs
 , pytestCheckHook
 }:
 
+let
+  optionalQiskitPackages = [
+    qiskit-finance
+    qiskit-machine-learning
+    qiskit-nature
+    qiskit-optimization
+  ];
+in
 buildPythonPackage rec {
   pname = "qiskit";
   # NOTE: This version denotes a specific set of subpackages. See https://qiskit.org/documentation/release_notes.html#version-history
-  version = "0.26.2";
+  version = "0.32.1";
 
   disabled = pythonOlder "3.6";
 
@@ -23,7 +37,7 @@ buildPythonPackage rec {
     owner = "qiskit";
     repo = "qiskit";
     rev = version;
-    hash = "sha256-QYWKKS7e/uCt5puWV4jA9Emp7M4Cyv2RUCxilbChWhw=";
+    sha256 = "sha256-0L4TlolvL1akHhWSJ0GRQ/Cu/rZ+Es00jjNM5Ho2uEA=";
   };
 
   propagatedBuildInputs = [
@@ -32,7 +46,7 @@ buildPythonPackage rec {
     qiskit-ibmq-provider
     qiskit-ignis
     qiskit-terra
-  ];
+  ] ++ lib.optionals withOptionalPackages optionalQiskitPackages;
 
   checkInputs = [ pytestCheckHook ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/qmk-dotty-dict/default.nix b/nixpkgs/pkgs/development/python-modules/qmk-dotty-dict/default.nix
index c67d911a3eda..4e52dc991795 100644
--- a/nixpkgs/pkgs/development/python-modules/qmk-dotty-dict/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qmk-dotty-dict/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, fetchPypi, lib, pytest, setuptools-scm }:
+{ buildPythonPackage, fetchPypi, lib, setuptools-scm }:
 
 buildPythonPackage rec {
   pname = "qmk_dotty_dict";
@@ -14,8 +14,13 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    description = "Dictionary wrapper for quick access to deeply nested keys";
     homepage = "https://github.com/pawelzny/dotty_dict";
+    description = "Dictionary wrapper for quick access to deeply nested keys";
+    longDescription = ''
+      This is a version of dotty-dict by QMK (https://qmk.fm) since the original
+      dotty-dict published to pypi has non-ASCII characters that breaks with
+      some non-UTF8 locale settings.
+    '';
     license = licenses.mit;
     maintainers = with maintainers; [ babariviere ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/qnap-qsw/default.nix b/nixpkgs/pkgs/development/python-modules/qnap-qsw/default.nix
new file mode 100644
index 000000000000..f4e9a1cdf8b8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qnap-qsw/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "qnap-qsw";
+  version = "0.3.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "Noltari";
+    repo = "python-qnap-qsw";
+    rev = version;
+    sha256 = "WP1bGt7aAtSVFOMJgPXKqVSbi5zj9K7qoIVrYCrPGqk=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "qnap_qsw"
+  ];
+
+  meta = with lib; {
+    description = "Python library to interact with the QNAP QSW API";
+    homepage = "https://github.com/Noltari/python-qnap-qsw";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/qserve/default.nix b/nixpkgs/pkgs/development/python-modules/qserve/default.nix
deleted file mode 100644
index f316e3fb65c1..000000000000
--- a/nixpkgs/pkgs/development/python-modules/qserve/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "qserve";
-  version = "0.3.0";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    extension = "zip";
-    sha256 = "dac1ee4ec60af6beb9af8f3f02d08d6db4cc9868b0915d626cb900a50d003ed4";
-  };
-
-  meta = with lib; {
-    description = "Job queue server";
-    homepage = "https://github.com/pediapress/qserve";
-    license = licenses.bsd3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/qtawesome/default.nix b/nixpkgs/pkgs/development/python-modules/qtawesome/default.nix
index 0a024faf919f..4bb3303af467 100644
--- a/nixpkgs/pkgs/development/python-modules/qtawesome/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qtawesome/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "QtAwesome";
-  version = "1.0.3";
+  version = "1.1.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d37bbeb69ddc591e5ff036b741bda8d1d92133811f1f5a7150021506f70b8e6e";
+    sha256 = "ec02e200231fa68a146a93845890aa0432a7edcba14bf811ff6975cf9acdab5d";
   };
 
   propagatedBuildInputs = [ qtpy six ];
diff --git a/nixpkgs/pkgs/development/python-modules/qtconsole/default.nix b/nixpkgs/pkgs/development/python-modules/qtconsole/default.nix
index 5e63001013a5..4cf9bd022dab 100644
--- a/nixpkgs/pkgs/development/python-modules/qtconsole/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qtconsole/default.nix
@@ -6,7 +6,7 @@
 , mock
 , traitlets
 , jupyter_core
-, jupyter_client
+, jupyter-client
 , pygments
 , ipykernel
 , pyqt5
@@ -15,15 +15,15 @@
 
 buildPythonPackage rec {
   pname = "qtconsole";
-  version = "5.1.1";
+  version = "5.2.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bbc34bca14f65535afcb401bc74b752bac955e5313001ba640383f7e5857dc49";
+    sha256 = "8f9db97b27782184efd0a0f2d57ea3bd852d053747a2e442a9011329c082976d";
   };
 
   checkInputs = [ nose ] ++ lib.optionals isPy27 [mock];
-  propagatedBuildInputs = [traitlets jupyter_core jupyter_client pygments ipykernel pyqt5 qtpy];
+  propagatedBuildInputs = [traitlets jupyter_core jupyter-client pygments ipykernel pyqt5 qtpy];
 
   # : cannot connect to X server
   doCheck = false;
diff --git a/nixpkgs/pkgs/development/python-modules/qtpy/default.nix b/nixpkgs/pkgs/development/python-modules/qtpy/default.nix
index 7ee51449ed90..ef981f19c664 100644
--- a/nixpkgs/pkgs/development/python-modules/qtpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/qtpy/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "QtPy";
-  version = "1.10.0";
+  version = "1.11.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3d20f010caa3b2c04835d6a2f66f8873b041bdaf7a76085c2a0d7890cdd65ea9";
+    sha256 = "d6e4ae3a41f1fcb19762b58f35ad6dd443b4bdc867a4cb81ef10ccd85403c92b";
   };
 
   # no concrete propagatedBuildInputs as multiple backends are supposed
diff --git a/nixpkgs/pkgs/development/python-modules/quantum-gateway/default.nix b/nixpkgs/pkgs/development/python-modules/quantum-gateway/default.nix
new file mode 100644
index 000000000000..19b9ae22264a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/quantum-gateway/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, buildPythonPackage
+, esprima
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+, requests
+, requests-mock
+, setuptools-scm
+, urllib3
+}:
+
+buildPythonPackage rec {
+  pname = "quantum-gateway";
+  version = "0.0.6";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "cisasteelersfan";
+    repo = "quantum_gateway";
+    rev = version;
+    sha256 = "f2LYOr9xJSfbA/1aHfll5lg7r05o855Zkkk9HuRamP8=";
+  };
+
+  propagatedBuildInputs = [
+    urllib3
+    esprima
+    requests
+  ];
+
+  checkInputs = [
+    requests-mock
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "quantum_gateway"
+  ];
+
+  meta = with lib; {
+    description = "Python library for interacting with Verizon Fios Quantum gateway devices";
+    homepage = "https://github.com/cisasteelersfan/quantum_gateway";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/questionary/default.nix b/nixpkgs/pkgs/development/python-modules/questionary/default.nix
index 27619b785459..29ceff5e2ace 100644
--- a/nixpkgs/pkgs/development/python-modules/questionary/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/questionary/default.nix
@@ -1,10 +1,10 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, poetry
+, poetry-core
 , prompt-toolkit
-, pytest-cov
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
@@ -12,6 +12,8 @@ buildPythonPackage rec {
   version = "1.10.0";
   format = "pyproject";
 
+  disabled = pythonOlder "3.6";
+
   src = fetchFromGitHub {
     owner = "tmbo";
     repo = pname;
@@ -20,7 +22,7 @@ buildPythonPackage rec {
   };
 
   nativeBuildInputs = [
-    poetry
+    poetry-core
   ];
 
   propagatedBuildInputs = [
@@ -28,11 +30,17 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    pytest-cov
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "questionary" ];
+  disabledTests = [
+    # TypeError: <lambda>() missing 1 required...
+    "test_print_with_style"
+  ];
+
+  pythonImportsCheck = [
+    "questionary"
+  ];
 
   meta = with lib; {
     description = "Python library to build command line user prompts";
diff --git a/nixpkgs/pkgs/development/python-modules/qutip/default.nix b/nixpkgs/pkgs/development/python-modules/qutip/default.nix
new file mode 100644
index 000000000000..38cf79e19049
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/qutip/default.nix
@@ -0,0 +1,57 @@
+{ lib, stdenv, fetchFromGitHub, buildPythonPackage, python, packaging, numpy
+, cython, scipy, matplotlib, pytestCheckHook, pytest-rerunfailures }:
+
+buildPythonPackage rec {
+  pname = "qutip";
+  version = "4.6.2";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "04g7ixq1yrrid4lliqbcamnzyw5r0fjbl8ipklps234hvsjfwmxb";
+  };
+
+  # QuTiP says it needs specific (old) Numpy versions. We overwrite them here
+  # as the tests work perfectly fine with up-to-date packages.
+  postPatch = ''
+    substituteInPlace setup.cfg --replace "numpy>=1.16.6,<1.20" "numpy>=1.16.6"
+  '';
+
+  # Disabling OpenMP support on Darwin.
+  setupPyGlobalFlags = lib.optional (!stdenv.isDarwin) "--with-openmp";
+
+  propagatedBuildInputs = [
+    packaging
+    numpy
+    cython
+    scipy
+    matplotlib
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    pytest-rerunfailures
+  ];
+
+  # - QuTiP tries to access the home directory to create an rc file for us.
+  # This of course fails and therefore, we provide a writable temp dir as HOME.
+  # - We need to go to another directory to run the tests from there.
+  # This is due to the Cython-compiled modules not being in the correct location
+  # of the source tree.
+  # - For running tests, see:
+  # https://qutip.org/docs/latest/installation.html#verifying-the-installation
+  checkPhase = ''
+    export OMP_NUM_THREADS=$NIX_BUILD_CORES
+    export HOME=$(mktemp -d)
+    mkdir -p test && cd test
+    ${python.interpreter} -c "import qutip.testing; qutip.testing.run()"
+  '';
+
+  meta = with lib; {
+    description = "Open-source software for simulating the dynamics of closed and open quantum systems";
+    homepage = "https://qutip.org/";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.fabiangd ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/r2pipe/default.nix b/nixpkgs/pkgs/development/python-modules/r2pipe/default.nix
index 1d7b4e95e854..7498c9c1e0f2 100644
--- a/nixpkgs/pkgs/development/python-modules/r2pipe/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/r2pipe/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "r2pipe";
-  version = "1.6.4";
+  version = "1.6.5";
 
   postPatch = let
     r2lib = "${lib.getOutput "lib" radare2}/lib";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a79877781b8e8e9bd5612faebd3991d75d7189f2941021d2adea9b4b4c5b9b7b";
+    sha256 = "512d2aca27c4515e55743852e0ab227190739d9595d2c4b6ae97b23d1a2bdd26";
   };
 
   # Tiny sanity check to make sure r2pipe finds radare2 (since r2pipe doesn't
diff --git a/nixpkgs/pkgs/development/python-modules/radio_beam/default.nix b/nixpkgs/pkgs/development/python-modules/radio_beam/default.nix
index 58137e3adbdb..1fcf778a58cb 100644
--- a/nixpkgs/pkgs/development/python-modules/radio_beam/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/radio_beam/default.nix
@@ -1,6 +1,7 @@
 { lib
 , fetchPypi
 , buildPythonPackage
+, setuptools-scm
 , astropy
 , pytestCheckHook
 , pytest-doctestplus
@@ -17,6 +18,10 @@ buildPythonPackage rec {
     sha256 = "e34902d91713ccab9f450b9d3e82317e292cf46a30bd42f9ad3c9a0519fcddcd";
   };
 
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [ astropy ];
 
   checkInputs = [ pytestCheckHook pytest-doctestplus scipy ];
diff --git a/nixpkgs/pkgs/development/python-modules/rapidfuzz/default.nix b/nixpkgs/pkgs/development/python-modules/rapidfuzz/default.nix
index 3f26fa4a15dd..19ee86e93ab6 100644
--- a/nixpkgs/pkgs/development/python-modules/rapidfuzz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rapidfuzz/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "rapidfuzz";
-  version = "1.7.1";
+  version = "1.9.1";
 
   disabled = pythonOlder "3.5";
 
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     repo = "RapidFuzz";
     rev = "v${version}";
     fetchSubmodules = true;
-    sha256 = "sha256-41Ga8BeqVMC9XI+R+ajonUcQ5R3wtizJFzHy9Rqm+DM=";
+    sha256 = "sha256-aZqsQHrxmPqZARkqR1hWaj7XndOlCJjmWk1Cosx4skA=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/rcssmin/default.nix b/nixpkgs/pkgs/development/python-modules/rcssmin/default.nix
index 3de6f2038038..ab74662e3b4c 100644
--- a/nixpkgs/pkgs/development/python-modules/rcssmin/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rcssmin/default.nix
@@ -1,11 +1,11 @@
 { lib, buildPythonPackage, fetchPypi }:
 buildPythonPackage rec {
   pname = "rcssmin";
-  version = "1.0.6";
+  version = "1.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0w42l4dhxghcz7pj3q7hkxp015mvb8z2cq9sfxbl31npsfavd1ya";
+    sha256 = "27fc400627fd3d328b7fe95af2a01f5d0af6b5af39731af5d071826a1f08e362";
   };
 
   # The package does not ship tests, and the setup machinary confuses
diff --git a/nixpkgs/pkgs/development/python-modules/rdflib-jsonld/default.nix b/nixpkgs/pkgs/development/python-modules/rdflib-jsonld/default.nix
deleted file mode 100644
index 3872ef5d2fe5..000000000000
--- a/nixpkgs/pkgs/development/python-modules/rdflib-jsonld/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ buildPythonPackage, fetchPypi, lib, rdflib, nose }:
-
-buildPythonPackage rec {
-  pname = "rdflib-jsonld";
-  version = "0.6.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "107cd3019d41354c31687e64af5e3fd3c3e3fa5052ce635f5ce595fd31853a63";
-  };
-
-  nativeBuildInputs = [ nose ];
-  propagatedBuildInputs = [ rdflib ];
-
-  meta = with lib; {
-    homepage = "https://github.com/RDFLib/rdflib-jsonld";
-    license = licenses.bsdOriginal;
-    description = "rdflib extension adding JSON-LD parser and serializer";
-    maintainers = [ maintainers.koslambrou ];
-    # incomptiable with rdflib 6.0.0, half of the test suite fails with import and atrribute errors
-    broken = true;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/rdflib/default.nix b/nixpkgs/pkgs/development/python-modules/rdflib/default.nix
index 5b16e2f744e2..2ffe190a4720 100644
--- a/nixpkgs/pkgs/development/python-modules/rdflib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rdflib/default.nix
@@ -1,36 +1,68 @@
-{ buildPythonPackage
+{ lib
+, stdenv
+, buildPythonPackage
 , fetchPypi
-, isodate
 , html5lib
-, SPARQLWrapper
+, isodate
 , networkx
 , nose
-, python
+, pyparsing
+, tabulate
+, pandas
+, pytestCheckHook
+, pythonOlder
+, SPARQLWrapper
 }:
 
 buildPythonPackage rec {
   pname = "rdflib";
-  version = "6.0.0";
+  version = "6.0.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7ce4d757eb26f4dd43205ec340d8c097f29e5adfe45d6ea20238c731dc679879";
+    sha256 = "sha256-YTauBWABR07ir/X8W5VuYqEcOpxmuw89nAqqX7tWhU4=";
   };
 
-  propagatedBuildInputs = [isodate html5lib SPARQLWrapper ];
+  propagatedBuildInputs = [
+    isodate
+    html5lib
+    pyparsing
+    SPARQLWrapper
+  ];
 
-  checkInputs = [ networkx nose ];
+  checkInputs = [
+    networkx
+    pandas
+    nose
+    tabulate
+    pytestCheckHook
+  ];
 
-  # Python 2 syntax
-  # Failing doctest
-  doCheck = false;
+  disabledTests = [
+    # Requires network access
+    "api_key"
+    "BerkeleyDBTestCase"
+    "test_bad_password"
+    "test_service"
+    "testGuessFormatForParse"
+  ] ++ lib.optional stdenv.isDarwin [
+    # Require loopback network access
+    "test_sparqlstore"
+    "test_sparqlupdatestore_mock"
+    "TestGraphHTTP"
+  ];
 
-  checkPhase = ''
-    ${python.interpreter} run_tests.py
-  '';
+  pythonImportsCheck = [
+    "rdflib"
+  ];
 
-  meta = {
-    description = "A Python library for working with RDF, a simple yet powerful language for representing information";
-    homepage = "http://www.rdflib.net/";
+  meta = with lib; {
+    description = "Python library for working with RDF";
+    homepage = "https://rdflib.readthedocs.io";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/rdkit/default.nix b/nixpkgs/pkgs/development/python-modules/rdkit/default.nix
index 97f2e5a6afc2..1ec7301dabd1 100644
--- a/nixpkgs/pkgs/development/python-modules/rdkit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rdkit/default.nix
@@ -4,7 +4,7 @@
 , fetchzip
 , cmake
 , boost
-, catch
+, catch2
 , inchi
 , cairo
 , eigen
@@ -75,7 +75,7 @@ buildPythonPackage rec {
 
   buildInputs = [
     boost
-    catch
+    catch2
     inchi
     eigen
     cairo
@@ -107,7 +107,7 @@ buildPythonPackage rec {
   '';
 
   cmakeFlags = [
-    "-DCATCH_DIR=${catch}/include/catch"
+    "-DCATCH_DIR=${catch2}/include/catch2"
     "-DINCHI_LIBRARY=${inchi}/lib/libinchi.so"
     "-DINCHI_LIBRARIES=${inchi}/lib/libinchi.so"
     "-DINCHI_INCLUDE_DIR=${inchi}/include/inchi"
diff --git a/nixpkgs/pkgs/development/python-modules/readme_renderer/default.nix b/nixpkgs/pkgs/development/python-modules/readme_renderer/default.nix
index 0d22a0c56c9f..43d1494a58b0 100644
--- a/nixpkgs/pkgs/development/python-modules/readme_renderer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/readme_renderer/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "readme_renderer";
-  version = "29.0";
+  version = "30.0";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-kv1awr+Gd/MQ8zA6pLzludX58glKuYwp8TeR17gFo9s=";
+    sha256 = "sha256-gplwDXqRDDBAcqdgHq+tpnEqWwEaIBOUF+Gx6fBGRdg=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/rebulk/default.nix b/nixpkgs/pkgs/development/python-modules/rebulk/default.nix
index f422934f02fb..570654dc7e15 100644
--- a/nixpkgs/pkgs/development/python-modules/rebulk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rebulk/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "rebulk";
-  version = "3.0.1";
+  version = "3.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "025d191c11abf9174c6aff0006579624047d3371a654333c4bf7a4b421552cdc";
+    sha256 = "809de3a97c68afa831f7101b10d316fe62e061dc9f7f67a44b7738128721173a";
   };
 
   # Some kind of trickery with imports that doesn't work.
diff --git a/nixpkgs/pkgs/development/python-modules/reflink/default.nix b/nixpkgs/pkgs/development/python-modules/reflink/default.nix
index 9f5024daf7e8..cb0a9fb5856a 100644
--- a/nixpkgs/pkgs/development/python-modules/reflink/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/reflink/default.nix
@@ -3,7 +3,6 @@
 , fetchPypi
 , lib
 , pytestCheckHook
-, pytest-runner
 }:
 
 buildPythonPackage rec {
@@ -15,10 +14,17 @@ buildPythonPackage rec {
     sha256 = "sha256-ySU1gtskQTv9cDq/wbKkneePMbSQcjnyhumhkpoebjo=";
   };
 
-  propagatedBuildInputs = [ cffi pytest-runner ];
+  propagatedBuildInputs = [ cffi ];
+
+  propagatedNativeBuildInputs = [ cffi ];
 
   checkInputs = [ pytestCheckHook ];
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "pytest-runner" ""
+  '';
+
   # FIXME: These do not work, and I have been unable to figure out why.
   doCheck = false;
 
diff --git a/nixpkgs/pkgs/development/python-modules/regenmaschine/default.nix b/nixpkgs/pkgs/development/python-modules/regenmaschine/default.nix
index 65a949ebe772..18e9e9e6c1a5 100644
--- a/nixpkgs/pkgs/development/python-modules/regenmaschine/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/regenmaschine/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "regenmaschine";
-  version = "3.2.0";
+  version = "2021.10.0";
   format = "pyproject";
   disabled = pythonOlder "3.6";
 
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "sha256-H3ZTts9tk0D53IcnmROCgylhVerctUg/AQCjFo5iJZY=";
+    sha256 = "sha256-vMXDnnIQiRuyLvem1JKop6FJ0fhwR8xP0276PdZi/QI=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/regex/default.nix b/nixpkgs/pkgs/development/python-modules/regex/default.nix
index 92ce64d186db..b96c7ca89956 100644
--- a/nixpkgs/pkgs/development/python-modules/regex/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/regex/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "regex";
-  version = "2021.8.28";
+  version = "2021.11.10";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f585cbbeecb35f35609edccb95efd95a3e35824cd7752b586503f7e6087303f1";
+    sha256 = "sha256-80HuLfCZm/33qV5EgHXv/g2yEqWTh94acGkOSssD1MY=";
   };
 
   # Sources for different Python releases are located in same folder
diff --git a/nixpkgs/pkgs/development/python-modules/reikna/default.nix b/nixpkgs/pkgs/development/python-modules/reikna/default.nix
index 873a39244fe3..c9c5011da617 100644
--- a/nixpkgs/pkgs/development/python-modules/reikna/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/reikna/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "reikna";
-  version = "0.7.5";
+  version = "0.7.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d01f4264c8379ef2962a93aacb002d491b92ef9b5b22b45f77e7821dfa87bef7";
+    sha256 = "722fefbd253d0bbcbf5250b7b9c4aca5722cde4ca38bfbf863a551a5fc26edfa";
   };
 
   checkInputs = [ sphinx pytest-cov pytest ];
diff --git a/nixpkgs/pkgs/development/python-modules/related/default.nix b/nixpkgs/pkgs/development/python-modules/related/default.nix
new file mode 100644
index 000000000000..ddcedc4eae6d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/related/default.nix
@@ -0,0 +1,60 @@
+{ lib
+, attrs
+, buildPythonPackage
+, fetchPypi
+, future
+, pytestCheckHook
+, python-dateutil
+, pythonOlder
+, pyyaml
+}:
+
+buildPythonPackage rec {
+  pname = "related";
+  version = "0.7.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "w0XmNWh1xF08qitH22lQgTRNqO6qyYrYd2dc6x3Fop0=";
+  };
+
+  propagatedBuildInputs = [
+    attrs
+    future
+    python-dateutil
+    pyyaml
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    # Remove outdated setup.cfg
+    rm setup.cfg
+    substituteInPlace setup.py \
+      --replace "'pytest-runner'," ""
+  '';
+
+  disabledTests = [
+    # Source tarball doesn't contains all needed files
+    "test_compose_from_yml"
+    "test_yaml_roundtrip_with_empty_values"
+    "test_compose_from_yml"
+    "test_store_data_from_json"
+  ];
+
+  pythonImportsCheck = [
+    "related"
+  ];
+
+  meta = with lib; {
+    description = "Nested Object Models in Python";
+    homepage = "https://github.com/genomoncology/related";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/remotecv/default.nix b/nixpkgs/pkgs/development/python-modules/remotecv/default.nix
deleted file mode 100644
index 078e431f3baa..000000000000
--- a/nixpkgs/pkgs/development/python-modules/remotecv/default.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pillow, pyres, nose
-, preggy, numpy, yanc, nose-focus, mock, opencv }:
-
-buildPythonPackage rec {
-  pname = "remotecv";
-  version = "2.2.2";
-
-  propagatedBuildInputs = [ pillow pyres ];
-
-  checkInputs = [ nose preggy numpy yanc nose-focus mock opencv ];
-
-  # PyPI tarball doesn't contain tests so let's use GitHub
-  src = fetchFromGitHub {
-    owner = "thumbor";
-    repo = pname;
-    rev = version;
-    sha256 = "0slalp1x626ajy2cbdfifhxf0ffzckqdz6siqsqr6s03hrl877hy";
-  };
-
-  # Remove unnecessary argparse dependency and some seemingly unnecessary
-  # version upper bounds because nixpkgs contains (or could contain) newer
-  # versions.
-  # See: https://github.com/thumbor/remotecv/issues/15
-  patches = [
-    ./install_requires.patch
-  ];
-
-  checkPhase = ''
-    nosetests --with-yanc -s tests/
-  '';
-
-  meta = with lib; {
-    description = "OpenCV worker for facial and feature recognition";
-    homepage = "https://github.com/thumbor/remotecv/wiki";
-    license = licenses.mit;
-    maintainers = with maintainers; [ jluttine ];
-    broken = true; # no longer compatible with latest pillow
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/remotecv/install_requires.patch b/nixpkgs/pkgs/development/python-modules/remotecv/install_requires.patch
deleted file mode 100644
index 37203128486e..000000000000
--- a/nixpkgs/pkgs/development/python-modules/remotecv/install_requires.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/setup.py b/setup.py
-index 70f765c..8003cda 100644
---- a/setup.py
-+++ b/setup.py
-@@ -53,9 +53,8 @@ remotecv is an OpenCV worker for facial and feature recognition
-     },
- 
-     install_requires=[
--        "argparse>=1.2.1,<1.3.0",
--        "pyres>=1.5,<1.6",
--        "Pillow>=4.3.0,<5.2.0",
-+        "pyres>=1.5",
-+        "Pillow>=4.3.0",
-     ],
- 
-     entry_points={
diff --git a/nixpkgs/pkgs/development/python-modules/renault-api/default.nix b/nixpkgs/pkgs/development/python-modules/renault-api/default.nix
index cf7bed958edb..eef2459c259d 100644
--- a/nixpkgs/pkgs/development/python-modules/renault-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/renault-api/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "renault-api";
-  version = "0.1.5";
+  version = "0.1.6";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "hacf-fr";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-b3oHpERUqeIw0yOxZytQuRE4jVUcahWlMQ+7ZBX0KL8=";
+    sha256 = "0v9a8p0ynikqzg7vvinvik5gjvsc5nrfqkq528mhcw7y4hmj8ndm";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/reolink/default.nix b/nixpkgs/pkgs/development/python-modules/reolink/default.nix
new file mode 100644
index 000000000000..71f94d489aa1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/reolink/default.nix
@@ -0,0 +1,69 @@
+{ lib
+, aiohttp
+, aiounittest
+, buildPythonPackage
+, fetchFromGitHub
+, ffmpeg-python
+, pytestCheckHook
+, pythonOlder
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "reolink";
+  version = "0.56";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "fwestenberg";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-ld1KDWweaG7y7EPN6Y19PzQRGCIFAPEb6AmlXXbjgCU=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    ffmpeg-python
+    requests
+  ];
+
+  checkInputs = [
+    aiounittest
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    # Packages in nixpkgs is different than the module name
+    substituteInPlace setup.py \
+      --replace "ffmpeg" "ffmpeg-python"
+  '';
+
+  # https://github.com/fwestenberg/reolink/issues/83
+  doCheck = false;
+
+  pytestFlagsArray = [
+    "test.py"
+  ];
+
+  disabledTests = [
+    # Tests require network access
+    "test1_settings"
+    "test2_states"
+    "test3_images"
+    "test4_properties"
+    "test_succes"
+  ];
+
+  pythonImportsCheck = [
+    "reolink"
+  ];
+
+  meta = with lib; {
+    description = "Python module to interact with the Reolink IP camera API";
+    homepage = "https://github.com/fwestenberg/reolink";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/reportlab/default.nix b/nixpkgs/pkgs/development/python-modules/reportlab/default.nix
index 71d4cd7425d1..de2b799a051b 100644
--- a/nixpkgs/pkgs/development/python-modules/reportlab/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/reportlab/default.nix
@@ -11,11 +11,11 @@ let
   ft = freetype.overrideAttrs (oldArgs: { dontDisableStatic = true; });
 in buildPythonPackage rec {
   pname = "reportlab";
-  version = "3.6.1";
+  version = "3.6.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "68f9324000cfc5570b5a59a92306691b5d655078a399f20bc72c2581fe903261";
+    sha256 = "f0c4b47b012d893b0b9f5703cf6f01b5593714a3fc1e7dc73efbbfe26bb7e16a";
   };
 
   checkInputs = [ glibcLocales ];
diff --git a/nixpkgs/pkgs/development/python-modules/requests-cache/default.nix b/nixpkgs/pkgs/development/python-modules/requests-cache/default.nix
index ca6cb7d23075..f095cf00a28c 100644
--- a/nixpkgs/pkgs/development/python-modules/requests-cache/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/requests-cache/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "requests-cache";
-  version = "0.8.1";
+  version = "0.9.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = "reclosedev";
     repo = "requests-cache";
     rev = "v${version}";
-    sha256 = "sha256-HzOcPWmvUhqPtb/7Mnw6wWY7a4CwGRwPgq+7QoHJAc8=";
+    sha256 = "0gz6fyc6lgbab9k92cihrp3711r1wcp4xhs25qp176zbzgccbj43";
   };
 
   nativeBuildInputs = [
@@ -55,10 +55,19 @@ buildPythonPackage rec {
     timeout-decorator
   ];
 
-  # Integration tests require local DBs
-  pytestFlagsArray = [ "tests/unit" ];
+  pytestFlagsArray = [
+    # Integration tests require local DBs
+    "tests/unit"
+  ];
+
+  disabledTests = [
+    # Tests are flaky in the sandbox
+    "test_remove_expired_responses"
+  ];
 
-  pythonImportsCheck = [ "requests_cache" ];
+  pythonImportsCheck = [
+    "requests_cache"
+  ];
 
   meta = with lib; {
     description = "Persistent cache for requests library";
diff --git a/nixpkgs/pkgs/development/python-modules/requests-kerberos/default.nix b/nixpkgs/pkgs/development/python-modules/requests-kerberos/default.nix
index 0a023dab8714..17a8191455ae 100644
--- a/nixpkgs/pkgs/development/python-modules/requests-kerberos/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/requests-kerberos/default.nix
@@ -4,36 +4,43 @@
 , cryptography
 , requests
 , pykerberos
+, pyspnego
 , pytestCheckHook
+, pytest-mock
 , mock
 }:
 
 buildPythonPackage rec {
   pname = "requests-kerberos";
-  version = "0.12.0";
+  version = "0.13.0";
 
   # tests are not present in the PyPI version
   src = fetchFromGitHub {
     owner = "requests";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1qw96aw84nljh9cip372mfv50p1yyirfgigavvavgpc3c5g278s6";
+    sha256 = "0yvfg2cj3d10l8fd8kyal4hmpd7fd1c3bca13cj9ril5l573in76";
   };
 
+  # avoid needing to package krb5
+  postPatch = ''
+    substituteInPlace setup.py \
+    --replace "pyspnego[kerberos]" "pyspnego"
+  '';
+
   propagatedBuildInputs = [
     cryptography
     requests
     pykerberos
+    pyspnego
   ];
 
   checkInputs = [
     mock
     pytestCheckHook
+    pytest-mock
   ];
 
-  # they have a setup.py which mentions a test suite that doesn't exist...
-  patches = [ ./fix_setup.patch ];
-
   pythonImportsCheck = [ "requests_kerberos" ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/requests-kerberos/fix_setup.patch b/nixpkgs/pkgs/development/python-modules/requests-kerberos/fix_setup.patch
deleted file mode 100644
index 67cc3a60f77e..000000000000
--- a/nixpkgs/pkgs/development/python-modules/requests-kerberos/fix_setup.patch
+++ /dev/null
@@ -1,9 +0,0 @@
---- ./setup.py	1980-01-02 00:00:00.000000000 +0000
-+++ ./setup.py	1980-01-02 00:00:00.000000000 +0000
-@@ -56,6 +56,5 @@
-         ':sys_platform=="win32"': ['winkerberos>=0.5.0'],
-         ':sys_platform!="win32"': ['pykerberos>=1.1.8,<2.0.0'],
-     },
--    test_suite='test_requests_kerberos',
-     tests_require=['mock'],
- )
diff --git a/nixpkgs/pkgs/development/python-modules/requests-toolbelt/default.nix b/nixpkgs/pkgs/development/python-modules/requests-toolbelt/default.nix
index 5a87d0a0e05b..3ad219025a92 100644
--- a/nixpkgs/pkgs/development/python-modules/requests-toolbelt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/requests-toolbelt/default.nix
@@ -24,7 +24,9 @@ buildPythonPackage rec {
     # disabled tests access the network
     py.test tests -k "not test_no_content_length_header \
                   and not test_read_file \
-                  and not test_reads_file_from_url_wrapper"
+                  and not test_reads_file_from_url_wrapper \
+                  and not test_x509_der \
+                  and not test_x509_pem"
   '';
 
   meta = {
diff --git a/nixpkgs/pkgs/development/python-modules/requests/default.nix b/nixpkgs/pkgs/development/python-modules/requests/default.nix
index f7c2cdbf27ac..8ba7aef46074 100644
--- a/nixpkgs/pkgs/development/python-modules/requests/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/requests/default.nix
@@ -36,12 +36,10 @@ buildPythonPackage rec {
   '';
 
   propagatedBuildInputs = [
-    brotlicffi
     certifi
-    charset-normalizer
-    chardet
     idna
     urllib3
+    chardet
   ] ++ lib.optionals (isPy3k) [
     brotlicffi
     charset-normalizer
diff --git a/nixpkgs/pkgs/development/python-modules/responses/default.nix b/nixpkgs/pkgs/development/python-modules/responses/default.nix
index e052a51d859a..cff31f782c5a 100644
--- a/nixpkgs/pkgs/development/python-modules/responses/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/responses/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "responses";
-  version = "0.14.0";
+  version = "0.16.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-k/d0p2LuDifA2dfgYieu2p/59faTkvcrtsa3P4djVj4=";
+    sha256 = "sha256-ouOsoqgnfmElfNOxwVSx3Q14Kxrj04t/o3y+P+tTF5E=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/respx/default.nix b/nixpkgs/pkgs/development/python-modules/respx/default.nix
index 0d7f509b4a0e..d085d43008bb 100644
--- a/nixpkgs/pkgs/development/python-modules/respx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/respx/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "respx";
-  version = "0.17.1";
+  version = "0.19.0";
 
   src = fetchFromGitHub {
     owner = "lundberg";
     repo = pname;
     rev = version;
-    sha256 = "0w8idh6l2iq04ydz7r2qisq9jsxq8wszkx97kx4g3yjwg4ypvc6k";
+    sha256 = "sha256-xiAt42kc1+rro99KMwzYKi3XC+wxYVqOY11tM+M/uV8=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/restfly/default.nix b/nixpkgs/pkgs/development/python-modules/restfly/default.nix
index 2eef8cdba604..8b47183dcfd3 100644
--- a/nixpkgs/pkgs/development/python-modules/restfly/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/restfly/default.nix
@@ -11,13 +11,13 @@
 
 buildPythonPackage rec {
   pname = "restfly";
-  version = "1.4.2";
+  version = "1.4.4";
 
   src = fetchFromGitHub {
     owner = "stevemcgrath";
     repo = pname;
     rev = version;
-    sha256 = "sha256-1sLkjM6hRAbfrZEXP97N9ZDqpL255LC7JS1r2yOXG5E=";
+    sha256 = "sha256-T5NfG+Vuguh6xZ/Rdx3a1vMDgXPcl/OYhOkxb76yEXg=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/restrictedpython/default.nix b/nixpkgs/pkgs/development/python-modules/restrictedpython/default.nix
index d7005e154504..6e782b1bd336 100644
--- a/nixpkgs/pkgs/development/python-modules/restrictedpython/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/restrictedpython/default.nix
@@ -1,34 +1,34 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-
-# Test dependencies
-, pytest, pytest-mock
+, pytest-mock
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
-  pname = "RestrictedPython";
-  version = "5.1";
+  pname = "restrictedpython";
+  version = "5.2";
+  format = "setuptools";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "9ae16e500782b41bd1abefd8554ccb26330817bba9ce090d385aa226f1ca83e8";
+    pname = "RestrictedPython";
+    inherit version;
+    sha256 = "sha256-Y02h9sXBIqJi9DOwg+49F6mgOfjxs3eFl++0dGHNNhs=";
   };
 
-  #propagatedBuildInputs = [ xmltodict requests ifaddr ];
-
   checkInputs = [
-    pytest pytest-mock
+    pytestCheckHook
+    pytest-mock
   ];
 
-  checkPhase = ''
-    pytest
-  '';
+  pythonImportsCheck = [
+    "RestrictedPython"
+  ];
 
-  meta = {
+  meta = with lib; {
+    description = "Restricted execution environment for Python to run untrusted code";
     homepage = "https://github.com/zopefoundation/RestrictedPython";
-    description = "A restricted execution environment for Python to run untrusted code";
-    license = lib.licenses.zpl21;
-    maintainers = with lib.maintainers; [ juaningan ];
+    license = licenses.zpl21;
+    maintainers = with maintainers; [ juaningan ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/restview/default.nix b/nixpkgs/pkgs/development/python-modules/restview/default.nix
index b2fc2d9beae7..b25b28eca943 100644
--- a/nixpkgs/pkgs/development/python-modules/restview/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/restview/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , docutils
 , readme_renderer
 , packaging
@@ -12,22 +11,29 @@
 
 buildPythonPackage rec {
   pname = "restview";
-  version = "2.9.2";
+  version = "2.9.3";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1p1jgdvc04ws8kga3r0vrq3m0b52qw3clwyydl96a13wb3mrf03r";
+    sha256 = "sha256-WVGqIYLnqao6uQbb0PDTPfj+k+ZjGKholknBIorXTNg=";
   };
 
-  patches = [
-    (fetchpatch {
-      url = "https://github.com/mgedmin/restview/commit/a1ded30a87c65f3ce59a18497a7fc5099317c2be.patch";
-      sha256 = "1ax7pih456a3nbj8qrrq7hqigbyag4ihzpn6bm0z4y74d0r3v8a5";
-    })
+  propagatedBuildInputs = [
+    docutils
+    readme_renderer
+    packaging
+    pygments
   ];
 
-  propagatedBuildInputs = [ docutils readme_renderer packaging pygments ];
-  checkInputs = [ mock pytestCheckHook ];
+  checkInputs = [
+    mock
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "restview"
+  ];
 
   meta = {
     description = "ReStructuredText viewer";
diff --git a/nixpkgs/pkgs/development/python-modules/rfc3339-validator/default.nix b/nixpkgs/pkgs/development/python-modules/rfc3339-validator/default.nix
index 6294eee7f346..d821d672a294 100644
--- a/nixpkgs/pkgs/development/python-modules/rfc3339-validator/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rfc3339-validator/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, fetchpatch
 , fetchPypi
 , pytestCheckHook
 , hypothesis
diff --git a/nixpkgs/pkgs/development/python-modules/rfc3339/default.nix b/nixpkgs/pkgs/development/python-modules/rfc3339/default.nix
new file mode 100644
index 000000000000..4b1355e511a8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rfc3339/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "rfc3339";
+  version = "6.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1l6l1bh91i2r4dwcm86hlkx8cbh1xwgsk8hb4jvr5y5fxxg3ng6m";
+  };
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "rfc3339" ];
+
+  meta = with lib; {
+    description = "Format dates according to the RFC 3339";
+    homepage = "https://hg.sr.ht/~henryprecheur/rfc3339";
+    license = licenses.isc;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rfc6555/default.nix b/nixpkgs/pkgs/development/python-modules/rfc6555/default.nix
index 4e47915bdf76..5be65fee2395 100644
--- a/nixpkgs/pkgs/development/python-modules/rfc6555/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rfc6555/default.nix
@@ -1,27 +1,42 @@
-{ lib, buildPythonPackage, fetchPypi, pythonPackages }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, selectors2
+}:
 
 buildPythonPackage rec {
   pname = "rfc6555";
-  version = "0.0.0";
+  version = "0.1.0";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "05sjrd6jc0sdvx0z7d3llk82rx366jlmc7ijam0nalsv66hbn70r";
+  src = fetchFromGitHub {
+    owner = "sethmlarson";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "Lmwgusc4EQlF0GHmMTUxWzUCjBk19cvurNwbOnT+1jM=";
   };
 
-  propagatedBuildInputs = with pythonPackages; [ selectors2 ];
+  propagatedBuildInputs = [
+    selectors2
+  ];
 
-  checkInputs = with pythonPackages; [ mock pytest ];
-  # disabling tests that require a functional DNS IPv{4,6} stack to pass.
-  patches = [ ./disable_network_tests.patch ];
-  # default doCheck = true; is not enough, apparently
-  postCheck = ''
-    py.test tests/
-  '';
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Disabling tests that require a functional DNS IPv{4,6} stack to pass
+    "test_create_connection_has_proper_timeout"
+  ];
+
+  pythonImportsCheck = [
+    "rfc6555"
+  ];
 
   meta = with lib; {
     description = "Python implementation of the Happy Eyeballs Algorithm";
-    homepage = "https://pypi.org/project/rfc6555";
+    homepage = "https://github.com/sethmlarson/rfc6555";
     license = licenses.asl20;
     maintainers = with maintainers; [ endocrimes ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/rfc6555/disable_network_tests.patch b/nixpkgs/pkgs/development/python-modules/rfc6555/disable_network_tests.patch
deleted file mode 100644
index dc59111ac43f..000000000000
--- a/nixpkgs/pkgs/development/python-modules/rfc6555/disable_network_tests.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-diff --git a/tests/test_create_connection.py b/tests/test_create_connection.py
-index fe38026..cdb26b4 100644
---- a/tests/test_create_connection.py
-+++ b/tests/test_create_connection.py
-@@ -6,10 +6,12 @@ from .test_utils import requires_network
- 
- 
- class _BasicCreateConnectionTests(object):
-+
-     @requires_network
-     def test_create_connection_google(self):
-         sock = rfc6555.create_connection(('www.google.com', 80))
- 
-+    @requires_network
-     @pytest.mark.parametrize('timeout', [None, 5.0])
-     def test_create_connection_has_proper_timeout(self, timeout):
-         sock = rfc6555.create_connection(('www.google.com', 80), timeout=timeout)
-diff --git a/tests/test_ipv6.py b/tests/test_ipv6.py
-index 3ee8564..f0db28e 100644
---- a/tests/test_ipv6.py
-+++ b/tests/test_ipv6.py
-@@ -2,7 +2,9 @@ import socket
- import mock
- import rfc6555
- 
-+from .test_utils import requires_network
- 
-+@requires_network
- def test_ipv6_available():
-     assert rfc6555._detect_ipv6()
- 
diff --git a/nixpkgs/pkgs/development/python-modules/rflink/default.nix b/nixpkgs/pkgs/development/python-modules/rflink/default.nix
index 781363334e13..82374a8a0423 100644
--- a/nixpkgs/pkgs/development/python-modules/rflink/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rflink/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, fetchpatch
 , async-timeout
 , docopt
 , pyserial
@@ -12,6 +13,7 @@
 buildPythonPackage rec {
   pname = "rflink";
   version = "0.0.58";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "aequitas";
@@ -20,11 +22,6 @@ buildPythonPackage rec {
     sha256 = "1zab55lsw419gg0jfrl69ap6128vbi3wdmg5z7qin65ijpjdhasc";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "version=version_from_git()" "version='${version}'"
-  '';
-
   propagatedBuildInputs = [
     async-timeout
     docopt
@@ -37,7 +34,23 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "rflink.protocol" ];
+  patches = [
+    # Remove loop, https://github.com/aequitas/python-rflink/pull/61
+    (fetchpatch {
+      name = "remove-loop.patch";
+      url = "https://github.com/aequitas/python-rflink/commit/777e19b5bde3398df5b8f142896c34a01ae18d52.patch";
+      sha256 = "sJmihxY3fNSfZVFhkvQ/+9gysQup/1jklKDMyDDLOs8=";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "version=version_from_git()" "version='${version}'"
+  '';
+
+  pythonImportsCheck = [
+    "rflink.protocol"
+  ];
 
   meta = with lib; {
     description = "Library and CLI tools for interacting with RFlink 433MHz transceiver";
diff --git a/nixpkgs/pkgs/development/python-modules/rhpl/builder.sh b/nixpkgs/pkgs/development/python-modules/rhpl/builder.sh
deleted file mode 100644
index 15e05a73f93f..000000000000
--- a/nixpkgs/pkgs/development/python-modules/rhpl/builder.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-source $stdenv/setup
-
-rpmextract $src
-tar xfvj rhpl-*.tar.bz2
-rm rhpl-*.tar.bz2
-cd rhpl-*
-incl=$(echo $python/include/python2.*)
-sed -i -e "s@/usr/include/\$(PYTHON)@$incl@" \
-       -e "s@PYTHONLIBDIR = /usr/\$(LIBDIR)/\$(PYTHON)/site-packages@PYTHONLIBDIR = $(toPythonPath $out)@" Makefile.inc
-sed -i -e "s@/usr/bin/install@install@g" \
-       -e "s@\$(DESTDIR)/usr/share/locale@$out/share/locale@" po/Makefile
-make PREFIX=$out
-make PREFIX=$out install
diff --git a/nixpkgs/pkgs/development/python-modules/rhpl/default.nix b/nixpkgs/pkgs/development/python-modules/rhpl/default.nix
deleted file mode 100644
index bfc53910b29a..000000000000
--- a/nixpkgs/pkgs/development/python-modules/rhpl/default.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{buildPythonPackage, fetchurl, rpmextract, python, wirelesstools, gettext}:
-
-buildPythonPackage {
-  pname = "rhpl";
-  version = "0.218";
-  format = "other";
-
-  src = fetchurl {
-    url = "http://ftp-stud.hs-esslingen.de/pub/Mirrors/archive.fedoraproject.org/fedora/linux/releases/10/Everything/source/SRPMS//rhpl-0.218-1.src.rpm";
-    sha256 = "0c3sc74cjzz5dmpr2gi5naxcc5p2qmzagz7k561xj07njn0ddg16";
-  };
-
-  inherit python;
-
-  builder = ./builder.sh;
-
-  nativeBuildInputs = [ rpmextract  gettext ];
-  buildInputs = [ wirelesstools ];
-}
diff --git a/nixpkgs/pkgs/development/python-modules/rich/default.nix b/nixpkgs/pkgs/development/python-modules/rich/default.nix
index 6c953a4579ea..98c26c7a7ff3 100644
--- a/nixpkgs/pkgs/development/python-modules/rich/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rich/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "rich";
-  version = "10.9.0";
+  version = "10.14.0";
   format = "pyproject";
   disabled = pythonOlder "3.6";
 
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "willmcgugan";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0lf2s7n9b31aavwl5xjl3x1pjc756s8pbk0whh5kag80z5v6qc32";
+    sha256 = "1j1m1064gmy07ah4crds5sd0k7dcwvf2b1z6rvjfvq4v9fx962qv";
   };
 
   nativeBuildInputs = [ poetry-core ];
diff --git a/nixpkgs/pkgs/development/python-modules/ring-doorbell/default.nix b/nixpkgs/pkgs/development/python-modules/ring-doorbell/default.nix
index 041a959ca5b2..968182f8535f 100644
--- a/nixpkgs/pkgs/development/python-modules/ring-doorbell/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ring-doorbell/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "ring-doorbell";
-  version = "0.7.1";
+  version = "0.7.2";
   disabled = !isPy3k;
 
   src = fetchPypi {
     pname = "ring_doorbell";
     inherit version;
-    sha256 = "sha256-xE3TqXdhiUf9Tzmzc48D65Y5t1ekauacsTwwSG1urz4=";
+    sha256 = "0a7e82abf27086843eb39c0279f5dfccea6751ff848560e67154ca6fbfa4ef2b";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/ritassist/default.nix b/nixpkgs/pkgs/development/python-modules/ritassist/default.nix
new file mode 100644
index 000000000000..a23bb3df5dee
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ritassist/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, ciso8601
+, fetchPypi
+, geopy
+, pythonOlder
+, requests
+, sseclient
+}:
+
+buildPythonPackage rec {
+  pname = "ritassist";
+  version = "0.9.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1JCKWb+3mdQYnL250Ml+kFkx6VAlBC7FL6XcQlQ+kC4=";
+  };
+
+  propagatedBuildInputs = [
+    ciso8601
+    geopy
+    requests
+    sseclient
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "ritassist"
+  ];
+
+  meta = with lib; {
+    description = "Python client to access RitAssist and FleetGO API";
+    homepage = "https://github.com/depl0y/ritassist-py";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rjsmin/default.nix b/nixpkgs/pkgs/development/python-modules/rjsmin/default.nix
index d78c445a3e56..2dbc72b1d0ca 100644
--- a/nixpkgs/pkgs/development/python-modules/rjsmin/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rjsmin/default.nix
@@ -1,11 +1,11 @@
 { lib, buildPythonPackage, fetchPypi }:
 buildPythonPackage rec {
   pname = "rjsmin";
-  version = "1.1.0";
+  version = "1.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0cmc72rlkvzz8fl89bc83czkx0pcvhzj7yn7m29r8pgnf5fcfpdi";
+    sha256 = "6c529feb6c400984452494c52dd9fdf59185afeacca2afc5174a28ab37751a1b";
   };
 
   # The package does not ship tests, and the setup machinary confuses
diff --git a/nixpkgs/pkgs/development/python-modules/rki-covid-parser/default.nix b/nixpkgs/pkgs/development/python-modules/rki-covid-parser/default.nix
new file mode 100644
index 000000000000..ec201fcd9f57
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rki-covid-parser/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, aiohttp
+, aioresponses
+, buildPythonPackage
+, fetchFromGitHub
+, pytest-aiohttp
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "rki-covid-parser";
+  version = "1.3.1";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "thebino";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "UTLWBbNjvRuBwc5JD8l+izJu5vODLwS16ExdxUPT14A=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  checkInputs = [
+    aioresponses
+    pytest-aiohttp
+    pytestCheckHook
+  ];
+
+  disabledTestPaths = [
+    # Tests require netowrk access
+    "tests/test_districts.py"
+    "tests/test_endpoint_availibility.py"
+  ];
+
+  pythonImportsCheck = [
+    "rki_covid_parser"
+  ];
+
+  meta = with lib; {
+    description = "Python module for working with data from the Robert-Koch Institut";
+    homepage = "https://github.com/thebino/rki-covid-parser";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rnginline/default.nix b/nixpkgs/pkgs/development/python-modules/rnginline/default.nix
new file mode 100644
index 000000000000..9c4b6ad358e8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rnginline/default.nix
@@ -0,0 +1,28 @@
+{ lib, fetchPypi, buildPythonPackage, lxml, docopt, six, pytestCheckHook, mock }:
+
+buildPythonPackage rec {
+  pname = "rnginline";
+  version = "0.0.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-j4W4zwHA4yA6iAFVa/LDKp00eeCX3PbmWkjd2LSUGfk=";
+  };
+
+  propagatedBuildInputs = [ lxml docopt six ];
+
+  checkInputs = [ pytestCheckHook mock ];
+
+  # Those tests does not succeed, a test dependency is likely missing but nothing is specified upstream
+  disabledTestPaths = [
+    "rnginline/test/test_cmdline.py"
+    "rnginline/test/test_rnginline.py"
+  ];
+
+  meta = {
+    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";
+    license = lib.licenses.asl20;
+    maintainers = [ lib.maintainers.lesuisse ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/robotframework-ride/default.nix b/nixpkgs/pkgs/development/python-modules/robotframework-ride/default.nix
deleted file mode 100644
index bc9e0873fe54..000000000000
--- a/nixpkgs/pkgs/development/python-modules/robotframework-ride/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ lib, fetchurl, buildPythonPackage, isPy3k, pygments, wxPython }:
-
-buildPythonPackage rec {
-  version = "1.2.3";
-  pname = "robotframework-ride";
-  disabled = isPy3k;
-
-  src = fetchurl {
-    url = "https://robotframework-ride.googlecode.com/files/${pname}-${version}.tar.gz";
-    sha256 = "1lf5f4x80f7d983bmkx12sxcizzii21kghs8kf63a1mj022a5x5j";
-  };
-
-  propagatedBuildInputs = [ pygments wxPython ];
-
-  # ride_postinstall.py checks that needed deps are installed and creates a
-  # desktop shortcut. We don't really need it and it clutters up bin/ so
-  # remove it.
-  postInstall = ''
-    rm -f "$out/bin/ride_postinstall.py"
-  '';
-
-  # error: invalid command 'test'
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Light-weight and intuitive editor for Robot Framework test case files";
-    homepage = "https://code.google.com/p/robotframework-ride/";
-    license = licenses.asl20;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ bjornfor ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/robotframework-sshlibrary/default.nix b/nixpkgs/pkgs/development/python-modules/robotframework-sshlibrary/default.nix
index 82a5fd3fed67..e72a72308643 100644
--- a/nixpkgs/pkgs/development/python-modules/robotframework-sshlibrary/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/robotframework-sshlibrary/default.nix
@@ -7,12 +7,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "3.7.0";
+  version = "3.8.0";
   pname = "robotframework-sshlibrary";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "55bd5a11bb1fe60a5a83446e6a3e1e81b13fc671e3b660aa55912a263c1f63aa";
+    sha256 = "aedf8a02bcb7344404cf8575d0ada25d6c7dc2fcb65de2113c4e07c63d2446c2";
   };
 
   # unit tests are impure
diff --git a/nixpkgs/pkgs/development/python-modules/robotframework/default.nix b/nixpkgs/pkgs/development/python-modules/robotframework/default.nix
index 3acb55377f9f..b0b363d8ca2c 100644
--- a/nixpkgs/pkgs/development/python-modules/robotframework/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/robotframework/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "robotframework";
-  version = "4.1.2";
+  version = "4.1.3";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "0s6lakbd8h1pa4lfdj18sm13gpywszgpcns4hz026a4kam787kby";
+    sha256 = "0j71awmfkwk7prz82kr1zbcl3nrih3396sshrygnqlrdjmgivd3p";
   };
 
   checkInputs = [ jsonschema ];
diff --git a/nixpkgs/pkgs/development/python-modules/rokuecp/default.nix b/nixpkgs/pkgs/development/python-modules/rokuecp/default.nix
index 9804507423ec..e1ee42b08157 100644
--- a/nixpkgs/pkgs/development/python-modules/rokuecp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rokuecp/default.nix
@@ -1,23 +1,27 @@
 { lib
-, buildPythonPackage
-, fetchFromGitHub
 , aiohttp
-, xmltodict
-, yarl
 , aresponses
+, buildPythonPackage
+, fetchFromGitHub
 , pytest-asyncio
 , pytestCheckHook
+, pythonOlder
+, xmltodict
+, yarl
 }:
 
 buildPythonPackage rec {
   pname = "rokuecp";
-  version = "0.8.2";
+  version = "0.8.4";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "ctalkington";
     repo = "python-rokuecp";
     rev = version;
-    sha256 = "sha256-2FAnshIxaA52EwwwABBQ0sedAsz561YYxXDQo2Vcp1c=";
+    sha256 = "sha256-vwXBYwiDQZBxEZDwLX9if6dt7tKQQOLyKL5m0q/3eUw=";
   };
 
   propagatedBuildInputs = [
@@ -32,10 +36,19 @@ buildPythonPackage rec {
     pytest-asyncio
   ];
 
+  disabledTests = [
+    # https://github.com/ctalkington/python-rokuecp/issues/249
+    "test_resolve_hostname"
+  ];
+
+  pythonImportsCheck = [
+    "rokuecp"
+  ];
+
   meta = with lib; {
     description = "Asynchronous Python client for Roku (ECP)";
     homepage = "https://github.com/ctalkington/python-rokuecp";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/rollbar/default.nix b/nixpkgs/pkgs/development/python-modules/rollbar/default.nix
index 60787d5158ad..fb3d792edd24 100644
--- a/nixpkgs/pkgs/development/python-modules/rollbar/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rollbar/default.nix
@@ -42,6 +42,6 @@ buildPythonPackage rec {
     description = "Error tracking and logging from Python to Rollbar";
     homepage = "https://github.com/rollbar/pyrollbar";
     license = licenses.mit;
-    maintainers = with maintainers; [ superherointj ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/roombapy/default.nix b/nixpkgs/pkgs/development/python-modules/roombapy/default.nix
index 459037d6191e..2a97993669f1 100644
--- a/nixpkgs/pkgs/development/python-modules/roombapy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/roombapy/default.nix
@@ -11,20 +11,25 @@
 
 buildPythonPackage rec {
   pname = "roombapy";
-  version = "1.6.3";
+  version = "1.6.5";
   format = "pyproject";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "pschmitt";
     repo = "roombapy";
     rev = version;
-    sha256 = "sha256-GkDfIC2jx4Mpguk/Wu45pZw0czhabJwTz58WYSLCOV8=";
+    sha256 = "sha256-Xjeh29U+FCzI5n/i5s6wC0B88Ktmb8pnNDdOzCiKWi4=";
   };
 
-  nativeBuildInputs = [ poetry-core ];
+  nativeBuildInputs = [
+    poetry-core
+  ];
 
-  propagatedBuildInputs = [ paho-mqtt ];
+  propagatedBuildInputs = [
+    paho-mqtt
+  ];
 
   checkInputs = [
     amqtt
@@ -37,12 +42,19 @@ buildPythonPackage rec {
     "tests/test_discovery.py"
   ];
 
-  pythonImportsCheck = [ "roombapy" ];
+  disabledTests = [
+    # Test want to connect to a local MQTT broker
+    "test_roomba_connect"
+  ];
+
+  pythonImportsCheck = [
+    "roombapy"
+  ];
 
   meta = with lib; {
-    homepage = "https://github.com/pschmitt/roombapy";
     description = "Python program and library to control Wi-Fi enabled iRobot Roombas";
-    maintainers = with maintainers; [ justinas ];
+    homepage = "https://github.com/pschmitt/roombapy";
     license = licenses.mit;
+    maintainers = with maintainers; [ justinas ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/ropgadget/default.nix b/nixpkgs/pkgs/development/python-modules/ropgadget/default.nix
new file mode 100644
index 000000000000..aaf31f06a1cc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ropgadget/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, capstone
+}:
+
+buildPythonPackage rec {
+  pname = "ropgadget";
+  version = "6.6";
+
+  src = fetchFromGitHub {
+    owner = "JonathanSalwan";
+    repo = "ROPgadget";
+    rev = "v${version}";
+    sha256 = "1i0gx0cwhxk6d8byvck17hh83szz3k6ndd118ha3q0r0msap0lz1";
+  };
+
+  propagatedBuildInputs = [
+    capstone
+  ];
+
+  # Test suite is working with binaries
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "ropgadget"
+  ];
+
+  meta = with lib; {
+    description = "Tool to search for gadgets in binaries to facilitate ROP exploitation";
+    homepage = "http://shell-storm.org/project/ROPgadget/";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ bennofs ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rpcq/default.nix b/nixpkgs/pkgs/development/python-modules/rpcq/default.nix
new file mode 100644
index 000000000000..82db76bc859f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rpcq/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, msgpack
+, numpy
+, pytest-asyncio
+, pytestCheckHook
+, python-rapidjson
+, pythonOlder
+, pyzmq
+, ruamel-yaml
+}:
+
+buildPythonPackage rec {
+  pname = "rpcq";
+  version = "3.9.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "rigetti";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1vvf6y7459f8aamhkcxx36ajiai143s2vwg751x0dl0lx7hp3yn5";
+  };
+
+  propagatedBuildInputs = [
+    msgpack
+    python-rapidjson
+    pyzmq
+    ruamel-yaml
+  ];
+
+  checkInputs = [
+    numpy
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "msgpack>=0.6,<1.0" "msgpack"
+  '';
+
+  disabledTests = [
+    # Test doesn't work properly on Hydra
+    "test_client_backlog"
+  ];
+
+  pythonImportsCheck = [
+    "rpcq"
+  ];
+
+  meta = with lib; {
+    description = "The RPC framework and message specification for rigetti Quantum Cloud services";
+    homepage = "https://github.com/rigetti/rpcq";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/rpkg/default.nix b/nixpkgs/pkgs/development/python-modules/rpkg/default.nix
deleted file mode 100644
index 5f1cfc622c9f..000000000000
--- a/nixpkgs/pkgs/development/python-modules/rpkg/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib, buildPythonPackage, isPy3k, fetchurl, six, pycurl, cccolutils
-, koji, rpmfluff }:
-
-buildPythonPackage rec {
-  pname = "rpkg";
-  version = "1.50";
-
-  disabled = isPy3k;
-
-  src = fetchurl {
-    url = "https://releases.pagure.org/rpkg/${pname}-${version}.tar.gz";
-    sha256 = "0j83bnm9snr3m1mabw2cvd2r7d6kcnkzyz7b9p65fhcc3c7s3rvv";
-  };
-
-
-  propagatedBuildInputs = [ pycurl koji cccolutils six rpmfluff ];
-
-  doCheck = false; # needs /var/lib/rpm database to run tests
-
-  meta = with lib; {
-    description = "Python library for dealing with rpm packaging";
-    homepage = "https://pagure.io/fedpkg";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ ];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/rpy2/2.nix b/nixpkgs/pkgs/development/python-modules/rpy2/2.nix
deleted file mode 100644
index 3108861e9ce2..000000000000
--- a/nixpkgs/pkgs/development/python-modules/rpy2/2.nix
+++ /dev/null
@@ -1,108 +0,0 @@
-{ lib
-, python
-, buildPythonPackage
-, fetchPypi
-, isPyPy
-, isPy27
-, readline
-, R
-, rWrapper
-, rPackages
-, pcre
-, xz
-, bzip2
-, zlib
-, icu
-, singledispatch
-, six
-, jinja2
-, pytz
-, numpy
-, pytest
-, mock
-, extraRPackages ? []
-}:
-
-buildPythonPackage rec {
-    version = "2.8.6"; # python2 support dropped in 2.9.x
-    pname = "rpy2";
-    disabled = isPyPy;
-    src = fetchPypi {
-      inherit version pname;
-      sha256 = "162zki5c1apgv6qbafi7n66y4hgpgp43xag7q75qb6kv99ri6k80";
-    };
-    buildInputs = [
-      readline
-      R
-      pcre
-      xz
-      bzip2
-      zlib
-      icu
-    ] ++ (with rPackages; [
-      # packages expected by the test framework
-      ggplot2
-      dplyr
-      RSQLite
-      broom
-      DBI
-      dbplyr
-      hexbin
-      lme4
-      tidyr
-
-      # is in upstream's `requires` although it shouldn't be -- this is easier than patching it away
-      pytest
-    ]) ++ extraRPackages ++ rWrapper.recommendedPackages;
-
-    nativeBuildInputs = [
-      R # needed at setup time to detect R_HOME (alternatively set R_HOME explicitly)
-    ];
-
-    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.
-      ./r-libs-site.patch
-    ];
-    postPatch = ''
-      substituteInPlace ${ if isPy27 then "rpy/rinterface/__init__.py" else "rpy2/rinterface_lib/embedded.py" } --replace '@NIX_R_LIBS_SITE@' "$R_LIBS_SITE"
-    '';
-
-    doPatchelf = false; # fails because of "missing filename"
-    patchelfPhase = "";
-
-    propagatedBuildInputs = [
-      singledispatch
-      six
-      jinja2
-      pytz
-      numpy
-    ];
-
-    checkInputs = [
-      pytest
-      mock
-    ];
-    # One remaining test failure caused by different unicode encoding.
-    # https://bitbucket.org/rpy2/rpy2/issues/488
-    doCheck = false;
-    checkPhase = ''
-      ${python.interpreter} -m 'rpy2'
-    '';
-
-    # For some reason libreadline.so is not found. Curiously `ldd _rinterface.so | grep readline` shows two readline entries:
-    # libreadline.so.6 => not found
-    # libreadline.so.6 => /nix/store/z2zhmrg6jcrn5iq2779mav0nnq4vm2q6-readline-6.3p08/lib/libreadline.so.6 (0x00007f333ac43000)
-    # There must be a better way to fix this, but I don't know it.
-    postFixup = ''
-      patchelf --add-needed ${readline}/lib/libreadline.so "$out/${python.sitePackages}/rpy2/rinterface/"_rinterface*.so
-    '';
-
-    meta = {
-      homepage = "http://rpy.sourceforge.net/rpy2";
-      description = "Python interface to R";
-      license = lib.licenses.gpl2Plus;
-      platforms = lib.platforms.unix;
-      maintainers = with lib.maintainers; [ joelmo ];
-    };
-  }
diff --git a/nixpkgs/pkgs/development/python-modules/rpy2/r-libs-site.patch b/nixpkgs/pkgs/development/python-modules/rpy2/r-libs-site.patch
deleted file mode 100644
index a55b6038bb4b..000000000000
--- a/nixpkgs/pkgs/development/python-modules/rpy2/r-libs-site.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/rpy/rinterface/__init__.py b/rpy/rinterface/__init__.py
-index 9362e57..1af258e 100644
---- a/rpy/rinterface/__init__.py
-+++ b/rpy/rinterface/__init__.py
-@@ -43,6 +43,15 @@ if not R_HOME:
- if not os.environ.get("R_HOME"):
-     os.environ['R_HOME'] = R_HOME
- 
-+# path to libraries
-+existing = os.environ.get('R_LIBS_SITE')
-+if existing is not None:
-+    prefix = existing + ':'
-+else:
-+    prefix = ''
-+additional = '@NIX_R_LIBS_SITE@'
-+os.environ['R_LIBS_SITE'] = prefix + additional
-+
- if sys.platform == 'win32':
-     _load_r_dll(R_HOME)
- 
diff --git a/nixpkgs/pkgs/development/python-modules/rpyc/default.nix b/nixpkgs/pkgs/development/python-modules/rpyc/default.nix
index e549a00c8948..e56aed2aeb7c 100644
--- a/nixpkgs/pkgs/development/python-modules/rpyc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rpyc/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, nose
 , plumbum
 , pytestCheckHook
 }:
diff --git a/nixpkgs/pkgs/development/python-modules/rq/default.nix b/nixpkgs/pkgs/development/python-modules/rq/default.nix
index 731204b78e62..24001f176ae2 100644
--- a/nixpkgs/pkgs/development/python-modules/rq/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rq/default.nix
@@ -2,14 +2,14 @@
 
 buildPythonPackage rec {
   pname = "rq";
-  version = "1.10";
+  version = "1.10.1";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "rq";
     repo = "rq";
     rev = "v${version}";
-    sha256 = "16k5qz5k3v232dzv99bxxw52jr2hb5ra08b6dkhqya98wjviq8l5";
+    sha256 = "1f4fi1rvn97d2b524q45k6s10b007pr23k0mf44q7hy8q4vnjmh5";
   };
 
   # test require a running redis rerver, which is something we can't do yet
diff --git a/nixpkgs/pkgs/development/python-modules/rsa/4_0.nix b/nixpkgs/pkgs/development/python-modules/rsa/4_0.nix
deleted file mode 100644
index 1a9ad2171a07..000000000000
--- a/nixpkgs/pkgs/development/python-modules/rsa/4_0.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, unittest2
-, pyasn1
-, mock
-, isPy3k
-, pythonOlder
-}:
-
-buildPythonPackage rec {
-  pname = "rsa";
-  version = "4.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1a836406405730121ae9823e19c6e806c62bbad73f890574fff50efa4122c487";
-  };
-
-  checkInputs = [ unittest2 mock ];
-  propagatedBuildInputs = [ pyasn1 ];
-
-  preConfigure = lib.optionalString (isPy3k && pythonOlder "3.7") ''
-    substituteInPlace setup.py --replace "open('README.md')" "open('README.md',encoding='utf-8')"
-  '';
-
-  meta = with lib; {
-    homepage = "https://stuvel.eu/rsa";
-    license = licenses.asl20;
-    description = "A pure-Python RSA implementation";
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/rsa/default.nix b/nixpkgs/pkgs/development/python-modules/rsa/default.nix
index 247fd2a2a7f8..ccfd237862d7 100644
--- a/nixpkgs/pkgs/development/python-modules/rsa/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rsa/default.nix
@@ -6,16 +6,15 @@
 , mock
 , isPy3k
 , pythonOlder
-, poetry
 }:
 
 buildPythonPackage rec {
   pname = "rsa";
-  version = "4.7.2";
+  version = "4.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9d689e6ca1b3038bc82bf8d23e944b6b6037bc02301a574935b2dd946e0353b9";
+    sha256 = "5c6bd9dc7a543b7fe4304a631f8a8a3b674e2bbfc49c2ae96200cdbe55df6b17";
   };
 
   checkInputs = [ unittest2 mock ];
diff --git a/nixpkgs/pkgs/development/python-modules/rtoml/default.nix b/nixpkgs/pkgs/development/python-modules/rtoml/default.nix
index e5043ca941a0..9ff43bce0843 100644
--- a/nixpkgs/pkgs/development/python-modules/rtoml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rtoml/default.nix
@@ -5,6 +5,7 @@
 , setuptools-rust
 , rustPlatform
 , pytestCheckHook
+, libiconv
 }:
 
 buildPythonPackage rec {
@@ -32,6 +33,8 @@ buildPythonPackage rec {
     cargoSetupHook
   ];
 
+  buildInputs = [ libiconv ];
+
   pythonImportsCheck = [ "rtoml" ];
 
   checkInputs = [ pytestCheckHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/ruamel_base/default.nix b/nixpkgs/pkgs/development/python-modules/ruamel-base/default.nix
index 1f829bb4e0ba..2db8a335e895 100644
--- a/nixpkgs/pkgs/development/python-modules/ruamel_base/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ruamel-base/default.nix
@@ -4,18 +4,24 @@
 }:
 
 buildPythonPackage rec {
-  pname = "ruamel.base";
+  pname = "ruamel-base";
   version = "1.0.0";
 
   src = fetchPypi {
-    inherit pname version;
+    pname = "ruamel.base";
+    inherit version;
     sha256 = "1wswxrn4givsm917mfl39rafgadimf1sldpbjdjws00g1wx36hf0";
   };
 
+  # no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "ruamel.base" ];
+
   meta = with lib; {
     description = "Common routines for ruamel packages";
     homepage = "https://sourceforge.net/projects/ruamel-base/";
     license = licenses.mit;
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/ruamel_yaml_clib/default.nix b/nixpkgs/pkgs/development/python-modules/ruamel-yaml-clib/default.nix
index c403239d5525..b12920fc7640 100644
--- a/nixpkgs/pkgs/development/python-modules/ruamel_yaml_clib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ruamel-yaml-clib/default.nix
@@ -1,28 +1,28 @@
 { lib
 , buildPythonPackage
 , fetchhg
-, ruamel_base
-, ruamel_ordereddict ? null
-, isPy3k
 }:
 
 buildPythonPackage rec {
-  pname = "ruamel.yaml.clib";
-  version = "0.2.0";
+  pname = "ruamel-yaml-clib";
+  version = "0.2.4";
 
   src = fetchhg {
     url = "http://hg.code.sf.net/p/ruamel-yaml-clib/code";
     rev = version;
-    sha256 = "0kq6zi96qlm72lzj90fc2rfk6nm5kqhk6qxdl8wl9s3a42b0v6wl";
+    sha256 = "sha256-HQZY1opUvVQdXUHmsZmcYX2vfgjKsl6xATmVIXjnBlc=";
   };
 
-  # outputs match wheel
+  # no tests
   doCheck = false;
 
+  # circular depedency with ruamel-yaml
+  # pythonImportsCheck = [ "_ruamel_yaml" ];
+
   meta = with lib; {
     description = "YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order";
     homepage = "https://sourceforge.net/projects/ruamel-yaml-clib/";
     license = licenses.mit;
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/ruamel_yaml/default.nix b/nixpkgs/pkgs/development/python-modules/ruamel-yaml/default.nix
index efd418e454d4..2a30bd95f968 100644
--- a/nixpkgs/pkgs/development/python-modules/ruamel_yaml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ruamel-yaml/default.nix
@@ -1,40 +1,33 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, ruamel_base
-, ruamel_ordereddict ? null
-, ruamel_yaml_clib ? null
-, isPy3k
+, ruamel-base
+, ruamel-yaml-clib
 , isPyPy
 }:
 
 buildPythonPackage rec {
-  pname = "ruamel.yaml";
+  pname = "ruamel-yaml";
   version = "0.17.16";
 
   src = fetchPypi {
-    inherit pname version;
+    pname = "ruamel.yaml";
+    inherit version;
     sha256 = "1a771fc92d3823682b7f0893ad56cb5a5c87c48e62b5399d6f42c8759a583b33";
   };
 
   # Tests use relative paths
   doCheck = false;
 
-  propagatedBuildInputs = [ ruamel_base ]
-    ++ lib.optional (!isPy3k) ruamel_ordereddict
-    ++ lib.optional (!isPyPy) ruamel_yaml_clib;
+  propagatedBuildInputs = [ ruamel-base ]
+    ++ lib.optional (!isPyPy) ruamel-yaml-clib;
 
-  # causes namespace clash on py27
-  dontUsePythonImportsCheck = !isPy3k;
-  pythonImportsCheck = [
-    "ruamel.yaml"
-    "ruamel.base"
-  ];
+  pythonImportsCheck = [ "ruamel.yaml" ];
 
   meta = with lib; {
     description = "YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order";
     homepage = "https://sourceforge.net/projects/ruamel-yaml/";
     license = licenses.mit;
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/ruamel_ordereddict/default.nix b/nixpkgs/pkgs/development/python-modules/ruamel_ordereddict/default.nix
deleted file mode 100644
index 98c36221dcd5..000000000000
--- a/nixpkgs/pkgs/development/python-modules/ruamel_ordereddict/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, isPyPy
-}:
-
-buildPythonPackage rec {
-  pname = "ruamel.ordereddict";
-  version = "0.4.15";
-  disabled = isPy3k || isPyPy;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "d7d9cf8b11e7662deb460260cf062980cd84b87a1d0457132060ab9d44e0a5f4";
-  };
-
-  meta = with lib; {
-    description = "A version of dict that keeps keys in insertion resp. sorted order";
-    homepage = "https://sourceforge.net/projects/ruamel-ordereddict/";
-    license = licenses.mit;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/ruamel_yaml/0.16.nix b/nixpkgs/pkgs/development/python-modules/ruamel_yaml/0.16.nix
deleted file mode 100644
index ed2ddf330659..000000000000
--- a/nixpkgs/pkgs/development/python-modules/ruamel_yaml/0.16.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ruamel_base
-, ruamel_ordereddict ? null
-, ruamel_yaml_clib ? null
-, isPy3k
-, isPyPy
-}:
-
-buildPythonPackage rec {
-  pname = "ruamel.yaml";
-  version = "0.16.13";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0hm9yg785f46bkrgqknd6fdvmkby9dpzjnm0b63qf0i748acaj5v";
-  };
-
-  # Tests use relative paths
-  doCheck = false;
-
-  propagatedBuildInputs = [ ruamel_base ]
-    ++ lib.optional (!isPy3k) ruamel_ordereddict
-    ++ lib.optional (!isPyPy) ruamel_yaml_clib;
-
-  # causes namespace clash on py27
-  dontUsePythonImportsCheck = !isPy3k;
-  pythonImportsCheck = [
-    "ruamel.yaml"
-    "ruamel.base"
-  ];
-
-  meta = with lib; {
-    description = "YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order";
-    homepage = "https://sourceforge.net/projects/ruamel-yaml/";
-    license = licenses.mit;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/ruffus/default.nix b/nixpkgs/pkgs/development/python-modules/ruffus/default.nix
index a425c077343f..714ffebd8a4e 100644
--- a/nixpkgs/pkgs/development/python-modules/ruffus/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ruffus/default.nix
@@ -3,7 +3,6 @@
 , fetchFromGitHub
 , hostname
 , pytest
-, python
 , lib, stdenv
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/runsnakerun/default.nix b/nixpkgs/pkgs/development/python-modules/runsnakerun/default.nix
deleted file mode 100644
index ace9b8269c53..000000000000
--- a/nixpkgs/pkgs/development/python-modules/runsnakerun/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, squaremap
-, wxPython
-}:
-
-buildPythonPackage rec {
-  pname = "runsnakerun";
-  version = "2.0.5";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "a66a0cdf0333dc3c0830c18e2f3d62f741dea197cd01a7e0059da4886a3a123f";
-  };
-
-  propagatedBuildInputs = [ squaremap wxPython ];
-
-  meta = with lib; {
-    description = "GUI Viewer for Python profiling runs";
-    homepage = "http://www.vrplumber.com/programming/runsnakerun/";
-    license = licenses.bsd3;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/ruyaml/default.nix b/nixpkgs/pkgs/development/python-modules/ruyaml/default.nix
index 3b5a0d41283e..bb0728bd2639 100644
--- a/nixpkgs/pkgs/development/python-modules/ruyaml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ruyaml/default.nix
@@ -10,13 +10,15 @@
 
 buildPythonPackage rec {
   pname = "ruyaml";
-  version = "0.90.0.2";
+  version = "0.91.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "pycontribs";
     repo = pname;
-    rev = version;
+    rev = "v${version}";
     sha256 = "0gxvwry7n1gczxkjzyfrr3fammllkvnnamja4yln8xrg3n1h89al";
   };
 
@@ -35,7 +37,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "ruyaml" ];
+  pythonImportsCheck = [
+    "ruyaml"
+  ];
 
   meta = with lib; {
     description = "YAML 1.2 loader/dumper package for Python";
diff --git a/nixpkgs/pkgs/development/python-modules/rzpipe/default.nix b/nixpkgs/pkgs/development/python-modules/rzpipe/default.nix
index 8ff52a289cdd..91c25f9a3b32 100644
--- a/nixpkgs/pkgs/development/python-modules/rzpipe/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rzpipe/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "rzpipe";
-  version = "0.1.1";
+  version = "0.1.2";
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "13z88c4zjy10a1sc98ba25sz200v6w2wprbq4iknm4sy2fmrsydh";
+    sha256 = "sha256-va56xSWDIVtZ88QUzPfk8cCr28+5nZCNcSJMiVj3SZU=";
   };
 
   # No native rz_core library
diff --git a/nixpkgs/pkgs/development/python-modules/s3fs/default.nix b/nixpkgs/pkgs/development/python-modules/s3fs/default.nix
index 2769e96a40ac..e8a8bbea801b 100644
--- a/nixpkgs/pkgs/development/python-modules/s3fs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/s3fs/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "s3fs";
-  version = "2021.10.0";
+  version = "2021.11.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-mSdMmP5b6pu954GQxBrb0bEghyLLKtSGd6aPhHPwOV0=";
+    sha256 = "3c23eac1fa5b685c9d507950b24f75929e8bcd1ea98b9a95cf2a9cb66ee6c9f5";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/sagemaker/default.nix b/nixpkgs/pkgs/development/python-modules/sagemaker/default.nix
index 015ba22781a8..3df0a94cf8e5 100644
--- a/nixpkgs/pkgs/development/python-modules/sagemaker/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sagemaker/default.nix
@@ -16,11 +16,11 @@
 
 buildPythonPackage rec {
   pname = "sagemaker";
-  version = "2.63.0";
+  version = "2.69.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b4d793217181f4ff1d269aa22e44f82e21a060ec9723301e1ae5e7d9082c76c8";
+    sha256 = "8e9051a44a82be07e32d83cfc12d724fd1cb76f83ade34cd9e69c45a8d37c676";
   };
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/samsungtvws/default.nix b/nixpkgs/pkgs/development/python-modules/samsungtvws/default.nix
index 31fa56a34726..bf2e4ef620f6 100644
--- a/nixpkgs/pkgs/development/python-modules/samsungtvws/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/samsungtvws/default.nix
@@ -5,12 +5,12 @@
 
 buildPythonPackage rec {
   pname = "samsungtvws";
-  version = "1.6.0";
+  version = "1.7.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "09nls4n0lbnr8nj8105lagr9h2my8lb1s2k285kmsbli36ywd8lj";
+    sha256 = "431af8348164cbb56b62492c3fde7ab81911b7905c8009580ccc54bd3f50f7ee";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/sandboxlib/default.nix b/nixpkgs/pkgs/development/python-modules/sandboxlib/default.nix
deleted file mode 100644
index 1be4c485b800..000000000000
--- a/nixpkgs/pkgs/development/python-modules/sandboxlib/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pbr
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "sandboxlib";
-  version = "0.31";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0csj8hbpylqdkxcpqkcfs73dfvdqkyj23axi8m9drqdi4dhxb41h";
-  };
-
-  buildInputs = [ pbr ];
-
-  meta = with lib; {
-    description = "Sandboxing Library for Python";
-    homepage = "https://pypi.python.org/pypi/sandboxlib/0.3.1";
-    license = licenses.gpl2;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/sanic-auth/default.nix b/nixpkgs/pkgs/development/python-modules/sanic-auth/default.nix
index 38d73d461c2d..c854017ae782 100644
--- a/nixpkgs/pkgs/development/python-modules/sanic-auth/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sanic-auth/default.nix
@@ -1,24 +1,44 @@
-{ lib, buildPythonPackage, fetchPypi, sanic, sanic-testing, pytestCheckHook }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, sanic
+, sanic-testing
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "Sanic-Auth";
   version = "0.3.0";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "0dc24ynqjraqwgvyk0g9bj87zgpq4xnssl24hnsn7l5vlkmk8198";
   };
 
-  propagatedBuildInputs = [ sanic ];
+  propagatedBuildInputs = [
+    sanic
+  ];
 
-  checkInputs = [ pytestCheckHook sanic-testing ];
+  checkInputs = [
+    pytestCheckHook
+    sanic-testing
+  ];
 
-  pythonImportsCheck = [ "sanic_auth" ];
+  postPatch = ''
+    # Support for httpx>=0.20.0
+    substituteInPlace tests/test_auth.py \
+      --replace "allow_redirects=False" "follow_redirects=False"
+  '';
+
+  pythonImportsCheck = [
+    "sanic_auth"
+  ];
 
   meta = with lib; {
     description = "Simple Authentication for Sanic";
     homepage = "https://github.com/pyx/sanic-auth/";
     license = licenses.bsdOriginal;
-    maintainers = [ maintainers.arnoldfarkas ];
+    maintainers = with maintainers; [ arnoldfarkas ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/sanic-routing/default.nix b/nixpkgs/pkgs/development/python-modules/sanic-routing/default.nix
index 76eb72dc7086..b0ecc5ed122c 100644
--- a/nixpkgs/pkgs/development/python-modules/sanic-routing/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sanic-routing/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "sanic-routing";
-  version = "0.6.2";
+  version = "0.7.2";
 
   src = fetchFromGitHub {
     owner = "sanic-org";
     repo = "sanic-routing";
     rev = "v${version}";
-    hash = "sha256-ZMl8PB9E401pUfUJ4tW7nBx1TgPQQtx9erVni3zP+lo=";
+    hash = "sha256-MN6A8CtDVxj34eehr3UIwCT09VOfcruVX+/iImr1MgY=";
   };
 
   checkInputs = [ pytestCheckHook pytest-asyncio ];
diff --git a/nixpkgs/pkgs/development/python-modules/sanic-testing/default.nix b/nixpkgs/pkgs/development/python-modules/sanic-testing/default.nix
index 5e7deb51362e..c99a78e0cc18 100644
--- a/nixpkgs/pkgs/development/python-modules/sanic-testing/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sanic-testing/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "sanic-testing";
-  version = "0.6.0";
+  version = "0.7.0";
 
   src = fetchFromGitHub {
     owner = "sanic-org";
     repo = "sanic-testing";
     rev = "v${version}";
-    sha256 = "1pf619cd3dckn3d8gh18vbn7dflvb0mzpf6frx4y950x2j3rdplk";
+    sha256 = "0ib6rf1ly1059lfprc3hpmy377c3wfgfhnar6n4jgbxiyin7vzm7";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/sanic/default.nix b/nixpkgs/pkgs/development/python-modules/sanic/default.nix
index cc7be4c93dc6..2fab2a3df889 100644
--- a/nixpkgs/pkgs/development/python-modules/sanic/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sanic/default.nix
@@ -1,18 +1,18 @@
 { lib
+, stdenv
 , aiofiles
 , beautifulsoup4
 , buildPythonPackage
 , doCheck ? true
 , fetchFromGitHub
-, fetchpatch
 , gunicorn
 , httptools
 , multidict
 , pytest-asyncio
 , pytest-benchmark
-, pytest-sanic
 , pytest-sugar
 , pytestCheckHook
+, pythonOlder
 , sanic-routing
 , sanic-testing
 , ujson
@@ -23,28 +23,22 @@
 
 buildPythonPackage rec {
   pname = "sanic";
-  version = "21.3.4";
+  version = "21.9.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "sanic-org";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0vldlic8gqcf56fqb31igycqf11syd9csk66v34w6dim54lcny2b";
+    sha256 = "0m18jdw1mvf7jhpnrxhm96p24pxvv0h9m71a8c7sqqkwnnpa3p5i";
   };
 
-  patches = [
-    # Allow later websockets release, https://github.com/sanic-org/sanic/pull/2154
-    (fetchpatch {
-      name = "later-websockets.patch";
-      url = "https://github.com/sanic-org/sanic/commit/5fb820b5c1ce395e86a1ee11996790c65ec7bc65.patch";
-      sha256 = "1glvq23pf1sxqjnrz0w8rr7nsnyz82k1479b3rm8szfkjg9q5d1w";
-    })
-  ];
-
   postPatch = ''
     # Loosen dependency requirements.
     substituteInPlace setup.py \
-      --replace '"pytest==5.2.1"' '"pytest"' \
+      --replace '"pytest==6.2.5"' '"pytest"' \
       --replace '"gunicorn==20.0.4"' '"gunicorn"' \
       --replace '"pytest-sanic",' "" \
     # Patch a request headers test to allow brotli encoding
@@ -68,7 +62,6 @@ buildPythonPackage rec {
     gunicorn
     pytest-asyncio
     pytest-benchmark
-    pytest-sanic
     pytest-sugar
     pytestCheckHook
     sanic-testing
@@ -77,6 +70,11 @@ buildPythonPackage rec {
 
   inherit doCheck;
 
+  preCheck = ''
+    # Some tests depends on sanic on PATH
+    PATH="$out/bin:$PATH"
+  '';
+
   disabledTests = [
     # Tests are flaky
     "test_keep_alive_client_timeout"
@@ -84,11 +82,34 @@ buildPythonPackage rec {
     "test_check_timeouts_response_timeout"
     "test_reloader_live"
     "test_zero_downtime"
+    # Not working from 21.9.1
+    "test_create_server_main"
+    "test_create_server_main_convenience"
+    "test_debug"
+    "test_auto_reload"
+    "test_no_exceptions_when_cancel_pending_request"
+    "test_ipv6_address_is_not_wrapped"
+    # Failure of the redirect tests seems to be related to httpx>0.20.0
+    "test_redirect"
+    "test_chained_redirect"
+    "test_unix_connection"
+    # These appear to be very sensitive to output of commands
+    "test_access_logs"
+    "test_auto_reload"
+    "test_host_port"
+    "test_no_exceptions_when_cancel_pending_request"
+    "test_num_workers"
+    "test_server_run"
+    "test_version"
   ];
 
+  # avoid usage of nixpkgs-review in darwin since tests will compete usage
+  # for the same local port
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [ "sanic" ];
+  pythonImportsCheck = [
+    "sanic"
+  ];
 
   meta = with lib; {
     description = "Web server and web framework";
diff --git a/nixpkgs/pkgs/development/python-modules/sarge/default.nix b/nixpkgs/pkgs/development/python-modules/sarge/default.nix
index 1d46e65d3490..34d10f8a0771 100644
--- a/nixpkgs/pkgs/development/python-modules/sarge/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sarge/default.nix
@@ -1,20 +1,32 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "sarge";
-  version = "0.1.6";
+  version = "0.1.7";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "f48fb904e64f10ad6bef62422eaf4736acfd9b13ab64ba44822637a9dbb53265";
+  src = fetchFromGitHub {
+    owner = "vsajip";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-E1alSDXj0oeyB6dN5PAtN62FPpMsCKb4R9DpfWdFtn0=";
   };
 
-  # No tests in PyPI tarball
-  doCheck = false;
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "sarge"
+  ];
 
   meta = with lib; {
+    description = "Python wrapper for subprocess which provides command pipeline functionality";
     homepage = "https://sarge.readthedocs.org/";
-    description = "A wrapper for subprocess which provides command pipeline functionality";
     license = licenses.bsd3;
     maintainers = with maintainers; [ abbradar ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/sarif-om/default.nix b/nixpkgs/pkgs/development/python-modules/sarif-om/default.nix
new file mode 100644
index 000000000000..b7b334ebf9ba
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sarif-om/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildPythonPackage, fetchPypi
+, attrs
+, pbr
+}:
+
+buildPythonPackage rec {
+  pname = "sarif-om";
+  version = "1.0.4";
+
+  src = fetchPypi {
+    pname = "sarif_om";
+    inherit version;
+    sha256 = "cd5f416b3083e00d402a92e449a7ff67af46f11241073eea0461802a3b5aef98";
+  };
+
+  nativeBuildInputs = [
+    pbr
+  ];
+
+  propagatedBuildInputs = [
+    attrs
+  ];
+
+  pythonImportsCheck = [ "sarif_om" ];
+
+  # no tests included with tarball
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Classes implementing the SARIF 2.1.0 object model";
+    homepage = "https://github.com/microsoft/sarif-python-om";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jonringer ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/schedule/default.nix b/nixpkgs/pkgs/development/python-modules/schedule/default.nix
index 55dc83878060..4aad4dc1abd4 100644
--- a/nixpkgs/pkgs/development/python-modules/schedule/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/schedule/default.nix
@@ -15,6 +15,13 @@ buildPythonPackage rec {
 
   buildInputs = [ mock ];
 
+  preCheck = ''
+    # https://github.com/dbader/schedule/issues/488
+    substituteInPlace test_schedule.py --replace \
+      "self.assertRaises(ScheduleValueError, every().day.until, datetime.time(hour=5))" \
+      "# self.assertRaises(ScheduleValueError, every().day.until, datetime.time(hour=5))"
+  '';
+
   meta = with lib; {
     description = "Python job scheduling for humans";
     homepage = "https://github.com/dbader/schedule";
diff --git a/nixpkgs/pkgs/development/python-modules/schema-salad/default.nix b/nixpkgs/pkgs/development/python-modules/schema-salad/default.nix
index e6342b90bba4..66a5dc1d1475 100644
--- a/nixpkgs/pkgs/development/python-modules/schema-salad/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/schema-salad/default.nix
@@ -1,22 +1,26 @@
 { lib
+, black
 , buildPythonPackage
 , fetchPypi
 , cachecontrol
 , lockfile
 , mistune
 , rdflib
-, rdflib-jsonld
-, ruamel_yaml
+, ruamel-yaml
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "schema-salad";
-  version = "8.1.20210721123742";
+  version = "8.2.20211222191353";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1549555b9b5656cfc690716f04fb76b9fa002feb278638c446522f030632b450";
+    sha256 = "bae31897a9f5c16546081811728cc20296455dc805ffd0bac0064de6cbbcbf88";
   };
 
   propagatedBuildInputs = [
@@ -24,17 +28,23 @@ buildPythonPackage rec {
     lockfile
     mistune
     rdflib
-    rdflib-jsonld
-    ruamel_yaml
+    ruamel-yaml
+  ];
+
+  checkInputs = [
+    black
+    pytestCheckHook
   ];
 
-  checkInputs = [ pytestCheckHook ];
   disabledTests = [
     # setup for these tests requires network access
     "test_secondaryFiles"
     "test_outputBinding"
   ];
-  pythonImportsCheck = [ "schema_salad" ];
+
+  pythonImportsCheck = [
+    "schema_salad"
+  ];
 
   meta = with lib; {
     description = "Semantic Annotations for Linked Avro Data";
diff --git a/nixpkgs/pkgs/development/python-modules/schema/default.nix b/nixpkgs/pkgs/development/python-modules/schema/default.nix
index a29ae2da853c..3ace46489db5 100644
--- a/nixpkgs/pkgs/development/python-modules/schema/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/schema/default.nix
@@ -3,11 +3,11 @@
 buildPythonPackage rec {
 
   pname = "schema";
-  version = "0.7.4";
+  version = "0.7.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "fbb6a52eb2d9facf292f233adcc6008cffd94343c63ccac9a1cb1f3e6de1db17";
+    sha256 = "f06717112c61895cabc4707752b88716e8420a8819d71404501e114f91043197";
   };
 
   preConfigure = ''
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-build/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-build/default.nix
index 749e07ef840e..bc72f76bf223 100644
--- a/nixpkgs/pkgs/development/python-modules/scikit-build/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scikit-build/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , distro
 , packaging
 , setuptools
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-fmm/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-fmm/default.nix
index ab51a47d19b0..c18f2934c23d 100644
--- a/nixpkgs/pkgs/development/python-modules/scikit-fmm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scikit-fmm/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "scikit-fmm";
-  version = "2021.9.23";
+  version = "2021.10.29";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "94808e6d747143cc9d50aa946cf5b1e61dbd4d8bc6229a7a5f57db6cedf38a47";
+    sha256 = "799f36e918a2b64ed8434d6c4fef3a1a47757055955c240fba0d4aadccca26b2";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-hep-testdata/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-hep-testdata/default.nix
index 8f02f67c1b50..d8240fd83333 100644
--- a/nixpkgs/pkgs/development/python-modules/scikit-hep-testdata/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scikit-hep-testdata/default.nix
@@ -5,13 +5,12 @@
 , importlib-resources
 , pyyaml
 , requests
-, pytestCheckHook
 , setuptools-scm
 }:
 
 buildPythonPackage rec {
   pname = "scikit-hep-testdata";
-  version = "0.4.9";
+  version = "0.4.11";
   format = "pyproject";
 
   # fetch from github as we want the data files
@@ -20,7 +19,7 @@ buildPythonPackage rec {
     owner = "scikit-hep";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0y70nx94y2qf0zmaqjq4ljld31jh277ica0j4c3ck2ph7jrs5pg0";
+    sha256 = "18r5nk8d5y79ihzjkjm5l0hiw2sjgj87px7vwb0bxbs73f5v353b";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-image/add-testing-data.patch b/nixpkgs/pkgs/development/python-modules/scikit-image/add-testing-data.patch
new file mode 100644
index 000000000000..60f9287f8b1c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/scikit-image/add-testing-data.patch
@@ -0,0 +1,17 @@
+diff --git a/skimage/data/setup.py b/skimage/data/setup.py
+index 528e9c284ce..ba0e155559c 100644
+--- a/skimage/data/setup.py
++++ b/skimage/data/setup.py
+@@ -11,7 +11,11 @@ def configuration(parent_package='', top_path=None):
+     # further notice.
+     # Testing data and additional datasets should only
+     # be made available via pooch
+-    config.add_data_files(*legacy_datasets)
++    # Nix patch: add ALL images to facilitate testing of a fully-built package
++    from pathlib import Path
++    config.add_data_files(
++        *(path.name for path in Path(__file__).parent.glob("*") if path.suffix != ".py")
++    )
+     # It seems hard to create a consistent hash for README.txt since
+     # the line endings keep getting converted
+     config.add_data_files('README.txt')
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-image/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-image/default.nix
index b34d3ff7b8de..b06c1cb5db48 100644
--- a/nixpkgs/pkgs/development/python-modules/scikit-image/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scikit-image/default.nix
@@ -1,6 +1,8 @@
 { lib
-, fetchPypi
+, stdenv
+, fetchFromGitHub
 , buildPythonPackage
+, python
 , cython
 , numpy
 , scipy
@@ -11,20 +13,26 @@
 , pywavelets
 , dask
 , cloudpickle
-, pytest
 , imageio
 , tifffile
+, pytestCheckHook
 }:
 
-buildPythonPackage rec {
+let
+  installedPackageRoot = "${builtins.placeholder "out"}/${python.sitePackages}";
+in buildPythonPackage rec {
   pname = "scikit-image";
   version = "0.18.3";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "ecae99f93f4c5e9b1bf34959f4dc596c41f2f6b2fc407d9d9ddf85aebd3137ca";
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0a2h3bw5rkk23k4r04qc9maccg00nddssd7lfsps8nhp5agk1vyh";
   };
 
+  patches = [ ./add-testing-data.patch ];
+
   nativeBuildInputs = [ cython ];
 
   propagatedBuildInputs = [
@@ -41,14 +49,56 @@ buildPythonPackage rec {
     tifffile
   ];
 
-  checkInputs = [ pytest ];
+  checkInputs = [ pytestCheckHook ];
+
+  # (1) The package has cythonized modules, whose .so libs will appear only in the wheel, i.e. in nix store;
+  # (2) To stop Python from importing the wrong directory, i.e. the one in the build dir, not the one in nix store, `skimage` dir should be removed or renamed;
+  # (3) Therefore, tests should be run on the installed package in nix store.
+
+  # See e.g. https://discourse.nixos.org/t/cant-import-cythonized-modules-at-checkphase/14207 on why the following is needed.
+  preCheck = ''
+    rm -r skimage
+  '';
 
-  # No tests in archive
-  doCheck = false;
+  disabledTestPaths = [
+    # Requires network access (actually some data is loaded via `skimage._shared.testing.fetch` in the global scope, which calls `pytest.skip` when a network is unaccessible, leading to a pytest collection error).
+    "${installedPackageRoot}/skimage/filters/rank/tests/test_rank.py"
+  ];
+  pytestFlagsArray = [ "${installedPackageRoot}" "--pyargs" "skimage" ] ++ builtins.map (testid: "--deselect=" + testid) ([
+    # These tests require network access
+    "skimage/data/test_data.py::test_skin"
+    "skimage/data/tests/test_data.py::test_skin"
+    "skimage/io/tests/test_io.py::test_imread_http_url"
+    "skimage/restoration/tests/test_rolling_ball.py::test_ndim"
+  ] ++ lib.optionals stdenv.isDarwin [
+    # Matplotlib tests are broken inside darwin sandbox
+    "skimage/feature/tests/test_util.py::test_plot_matches"
+    "skimage/filters/tests/test_thresholding.py::TestSimpleImage::test_try_all_threshold"
+    "skimage/io/tests/test_mpl_imshow.py::"
+  ]);
+
+  # Check cythonized modules
+  pythonImportsCheck = [
+    "skimage"
+    "skimage._shared"
+    "skimage.draw"
+    "skimage.feature"
+    "skimage.restoration"
+    "skimage.filters"
+    "skimage.future.graph"
+    "skimage.graph"
+    "skimage.io"
+    "skimage.measure"
+    "skimage.morphology"
+    "skimage.transform"
+    "skimage.util"
+    "skimage.segmentation"
+  ];
 
   meta = {
     description = "Image processing routines for SciPy";
     homepage = "https://scikit-image.org";
     license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ yl3dy ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-learn/0.20.nix b/nixpkgs/pkgs/development/python-modules/scikit-learn/0.20.nix
deleted file mode 100644
index 0ed863755897..000000000000
--- a/nixpkgs/pkgs/development/python-modules/scikit-learn/0.20.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi
-, gfortran, glibcLocales
-, numpy, scipy, pytest, pillow
-}:
-
-# 0.20.x is the last version that maintains python2 compatibility
-
-buildPythonPackage rec {
-  pname = "scikit-learn";
-  version = "0.20.4";
-  # UnboundLocalError: local variable 'message' referenced before assignment
-  disabled = stdenv.isi686;  # https://github.com/scikit-learn/scikit-learn/issues/5534
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1z3w2c50dwwa297j88pr16pyrjysagsvdj7vrlq40q8777rs7a6z";
-  };
-
-  nativeBuildInputs = [ gfortran ];
-  buildInputs = [ pillow glibcLocales ];
-  propagatedBuildInputs = [ numpy scipy numpy.blas ];
-  checkInputs = [ pytest ];
-
-  LC_ALL="en_US.UTF-8";
-
-  doCheck = !stdenv.isAarch64;
-  # Skip test_feature_importance_regression - does web fetch
-  checkPhase = ''
-    cd $TMPDIR
-    HOME=$TMPDIR OMP_NUM_THREADS=1 pytest -k "not test_feature_importance_regression" --pyargs sklearn
-  '';
-
-  meta = with lib; {
-    description = "A set of python modules for machine learning and data mining";
-    homepage = "https://scikit-learn.org";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-learn/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-learn/default.nix
index e7ac79b42837..b717432a653e 100644
--- a/nixpkgs/pkgs/development/python-modules/scikit-learn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scikit-learn/default.nix
@@ -19,23 +19,14 @@
 
 buildPythonPackage rec {
   pname = "scikit-learn";
-  version = "0.24.1";
+  version = "1.0.1";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "oDNKGALmTWVgIsO/q1anP71r9LEpg0PzaIryFRgQu98=";
+    sha256 = "sha256-rCyp27dU1hz+HIO6hINJjvlR0puT7AnW8AKEfyEKmdo=";
   };
 
-  patches = [
-    # This patch fixes compatibility with numpy 1.20. It was merged before 0.24.1 was released,
-    # but for some reason was not included in the 0.24.1 release tarball.
-    (fetchpatch {
-      url = "https://github.com/scikit-learn/scikit-learn/commit/e7ef22c3ba2334cb3b476e95d7c083cf6b48ce56.patch";
-      sha256 = "174554k1pbf92bj7wgq0xjj16bkib32ailyhwavdxaknh4bd9nmv";
-    })
-  ];
-
   buildInputs = [
     pillow
     glibcLocales
diff --git a/nixpkgs/pkgs/development/python-modules/scikit-survival/default.nix b/nixpkgs/pkgs/development/python-modules/scikit-survival/default.nix
index 5be6457aa6d4..568643afbbf1 100644
--- a/nixpkgs/pkgs/development/python-modules/scikit-survival/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scikit-survival/default.nix
@@ -15,11 +15,11 @@
 
 buildPythonPackage rec {
   pname = "scikit-survival";
-  version = "0.15.0.post0";
+  version = "0.16.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "572c3ac6818a9d0944fc4b8176eb948051654de857e28419ecc5060bcc6fbf37";
+    sha256 = "d3573eb1df9d516c75994a8a82108b6c7a5ca7ea8a9af60b38f3f65c3e227fa7";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/scikits-odes/default.nix b/nixpkgs/pkgs/development/python-modules/scikits-odes/default.nix
index f8f48793e902..c96cf1b2ddd4 100644
--- a/nixpkgs/pkgs/development/python-modules/scikits-odes/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scikits-odes/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, fetchurl
 , cython
 , enum34
 , gfortran
diff --git a/nixpkgs/pkgs/development/python-modules/scipy/default.nix b/nixpkgs/pkgs/development/python-modules/scipy/default.nix
index 2e19d2d42042..9c3b28e0a9ac 100644
--- a/nixpkgs/pkgs/development/python-modules/scipy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scipy/default.nix
@@ -15,11 +15,11 @@
 
 buildPythonPackage rec {
   pname = "scipy";
-  version = "1.7.1";
+  version = "1.7.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6b47d5fa7ea651054362561a28b1ccc8da9368a39514c1bbf6c0977a1c376764";
+    sha256 = "ab5875facfdef77e0a47d5fd39ea178b58e60e454a4c85aa1e52fcb80db7babf";
   };
 
   nativeBuildInputs = [ cython gfortran pythran ];
diff --git a/nixpkgs/pkgs/development/python-modules/scp/default.nix b/nixpkgs/pkgs/development/python-modules/scp/default.nix
index 47276ad305c7..e62581057d04 100644
--- a/nixpkgs/pkgs/development/python-modules/scp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scp/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "scp";
-  version = "0.14.1";
+  version = "0.14.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b776bd6ce8c8385aa9a025b64a9815b5d798f12d4ef0d712d569503f62aece8b";
+    sha256 = "713f117413bbd616a1a7da8f07db9adcd835ce73d8585fb469ea5b5785f92e4d";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/scrapy/default.nix b/nixpkgs/pkgs/development/python-modules/scrapy/default.nix
index dd06a04e080a..dc05f5579817 100644
--- a/nixpkgs/pkgs/development/python-modules/scrapy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scrapy/default.nix
@@ -13,11 +13,9 @@
 , jmespath
 , lxml
 , parsel
-, pillow
 , protego
 , pydispatcher
 , pyopenssl
-, pytest-twisted
 , pytestCheckHook
 , pythonOlder
 , queuelib
diff --git a/nixpkgs/pkgs/development/python-modules/screeninfo/default.nix b/nixpkgs/pkgs/development/python-modules/screeninfo/default.nix
index 21b3f30e1323..f2ab4c946c49 100644
--- a/nixpkgs/pkgs/development/python-modules/screeninfo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/screeninfo/default.nix
@@ -11,13 +11,13 @@
 
 buildPythonApplication rec {
   pname = "screeninfo";
-  version = "0.7";
+  version = "0.8";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "12a97c3527e3544ac5dbd7c1204283e2653d655cbd15844c990a83b1b13ef500";
+    sha256 = "9501bf8b8458c7d1be4cb0ac9abddddfa80b932fb3f65bfcb54f5586434b1dc5";
   };
 
   propagatedBuildInputs = lib.optionals (pythonOlder "3.7") [
diff --git a/nixpkgs/pkgs/development/python-modules/screenlogicpy/default.nix b/nixpkgs/pkgs/development/python-modules/screenlogicpy/default.nix
index 1032f6256bb6..1ade4b8ea1de 100644
--- a/nixpkgs/pkgs/development/python-modules/screenlogicpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/screenlogicpy/default.nix
@@ -2,32 +2,41 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pythonOlder
+, pytest-asyncio
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "screenlogicpy";
-  version = "0.4.3";
+  version = "0.5.3";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "dieselrabbit";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0v0nbwz0w2m7kzvcl0fh2v2rk5ldsq22siyxq6d401pkpzwih25c";
+    sha256 = "1ic19l0xr2wlnc8q6nhvv747k0f4j9k94ix14zkrwpp9nl09sm8j";
   };
 
   checkInputs = [
+    pytest-asyncio
     pytestCheckHook
   ];
 
   disabledTests = [
     # Tests require network access
     "test_gateway_discovery"
+    "test_async_discovery"
+    "test_gateway"
+    "test_async"
     "test_asyncio_gateway_discovery"
   ];
 
-  pythonImportsCheck = [ "screenlogicpy" ];
+  pythonImportsCheck = [
+    "screenlogicpy"
+  ];
 
   meta = with lib; {
     description = "Python interface for Pentair Screenlogic devices";
diff --git a/nixpkgs/pkgs/development/python-modules/scs/default.nix b/nixpkgs/pkgs/development/python-modules/scs/default.nix
index 128e9276608d..24b7d36343a8 100644
--- a/nixpkgs/pkgs/development/python-modules/scs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/scs/default.nix
@@ -5,26 +5,22 @@
 , lapack
 , numpy
 , scipy
-, scs
   # check inputs
-, nose
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
-  inherit (scs) pname version;
+  pname = "scs";
+  version = "3.0.0";
 
   src = fetchFromGitHub {
     owner = "bodono";
     repo = "scs-python";
-    rev = "f02abdc0e2e0a5851464e30f6766ccdbb19d73f0"; # need to choose commit manually, untagged
-    sha256 = "174b5s7cwgrn1m55jlrszdl403zhpzc4yl9acs6kjv9slmg1mmjr";
+    rev = version;
+    sha256 = "sha256-7OgqCo21S0FDev8xv6/8iGFXg8naVi93zd8v1f9iaWw=";
+    fetchSubmodules = true;
   };
 
-  preConfigure = ''
-    rm -r scs
-    ln -s ${scs.src} scs
-  '';
-
   buildInputs = [
     lapack
     blas
@@ -35,10 +31,7 @@ buildPythonPackage rec {
     scipy
   ];
 
-  checkInputs = [ nose ];
-  checkPhase = ''
-    nosetests
-  '';
+  checkInputs = [ pytestCheckHook ];
   pythonImportsCheck = [ "scs" ];
 
   meta = with lib; {
@@ -50,7 +43,7 @@ buildPythonPackage rec {
     '';
     homepage = "https://github.com/cvxgrp/scs"; # upstream C package
     downloadPage = "https://github.com/bodono/scs-python";
-    license = licenses.gpl3;
+    license = licenses.mit;
     maintainers = with maintainers; [ drewrisinger ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/seaborn/0.9.1.nix b/nixpkgs/pkgs/development/python-modules/seaborn/0.9.1.nix
deleted file mode 100644
index 79361a491698..000000000000
--- a/nixpkgs/pkgs/development/python-modules/seaborn/0.9.1.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, pandas
-, matplotlib
-}:
-
-buildPythonPackage rec {
-  pname = "seaborn";
-  version = "0.9.1";
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "da33aa8c20a9a342ce73831d02831a10413f54a05471c7f31edf34f225d456ae";
-  };
-
-  checkInputs = [ nose ];
-  propagatedBuildInputs = [ pandas matplotlib ];
-
-  checkPhase = ''
-    nosetests -v
-  '';
-
-  # Computationally very demanding tests
-  doCheck = false;
-
-  meta = {
-    description = "Statisitical data visualization";
-    homepage = "https://seaborn.pydata.org/";
-    license = with lib.licenses; [ bsd3 ];
-    maintainers = [ ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/seaborn/default.nix b/nixpkgs/pkgs/development/python-modules/seaborn/default.nix
index a57acebb4ad2..c190093bb30f 100644
--- a/nixpkgs/pkgs/development/python-modules/seaborn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/seaborn/default.nix
@@ -1,15 +1,19 @@
 { lib
 , buildPythonPackage
-, pythonOlder
 , fetchPypi
-, nose
-, pandas
 , matplotlib
+, pytestCheckHook
+, numpy
+, pandas
+, pythonOlder
+, scipy
 }:
 
 buildPythonPackage rec {
   pname = "seaborn";
   version = "0.11.2";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
@@ -17,21 +21,35 @@ buildPythonPackage rec {
     sha256 = "cf45e9286d40826864be0e3c066f98536982baf701a7caa386511792d61ff4f6";
   };
 
-  checkInputs = [ nose ];
-  propagatedBuildInputs = [ pandas matplotlib ];
+  propagatedBuildInputs = [
+    matplotlib
+    numpy
+    pandas
+    scipy
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  checkPhase = ''
-    nosetests -v
-  '';
+  disabledTests = [
+    # Tests fail because of AttributeError:...
+    "TestKDEPlotBivariate"
+    "TestBoxPlotter"
+    "TestCatPlot"
+    "TestKDEPlotUnivariate"
+    "test_with_rug"
+    "test_bivariate_kde_norm"
+  ];
 
-  # Computationally very demanding tests
-  doCheck = false;
-  pythonImportsCheck= [ "seaborn" ];
+  pythonImportsCheck= [
+    "seaborn"
+  ];
 
-  meta = {
+  meta = with lib; {
     description = "Statisitical data visualization";
     homepage = "https://seaborn.pydata.org/";
-    license = with lib.licenses; [ bsd3 ];
-    maintainers = with lib.maintainers; [ fridh ];
+    license = with licenses; [ bsd3 ];
+    maintainers = with maintainers; [ fridh ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/seatconnect/default.nix b/nixpkgs/pkgs/development/python-modules/seatconnect/default.nix
new file mode 100644
index 000000000000..7adef77210ab
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/seatconnect/default.nix
@@ -0,0 +1,63 @@
+{ lib
+, aiohttp
+, beautifulsoup4
+, buildPythonPackage
+, cryptography
+, fetchFromGitHub
+, lxml
+, pyjwt
+, pythonOlder
+, setuptools-scm
+, xmltodict
+}:
+
+buildPythonPackage rec {
+  pname = "seatconnect";
+  version = "1.1.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "farfar";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-EOaFZch/C9N4lacZ4IqIJUVSaEn8wOFN/WN6WOL/1mo=";
+  };
+
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    beautifulsoup4
+    cryptography
+    lxml
+    pyjwt
+    xmltodict
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "'pytest>=5,<6'," ""
+    substituteInPlace requirements.txt \
+      --replace "pytest-asyncio" ""
+  '';
+
+  # Project only has a dummy test
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "seatconnect"
+  ];
+
+  meta = with lib; {
+    description = "Python module to communicate with Seat Connect";
+    homepage = "https://github.com/farfar/seatconnect";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/secp256k1/default.nix b/nixpkgs/pkgs/development/python-modules/secp256k1/default.nix
index 58fa81b444f3..1637814cadd2 100644
--- a/nixpkgs/pkgs/development/python-modules/secp256k1/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/secp256k1/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "secp256k1";
-  version = "0.13.2";
+  version = "0.14.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a3b43e02d321c09eafa769a6fc2c156f555cab3a7db62175ef2fd21e16cdf20c";
+    sha256 = "82c06712d69ef945220c8b53c1a0d424c2ff6a1f64aee609030df79ad8383397";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/nixpkgs/pkgs/development/python-modules/semantic/default.nix b/nixpkgs/pkgs/development/python-modules/semantic/default.nix
deleted file mode 100644
index 518b7637ad71..000000000000
--- a/nixpkgs/pkgs/development/python-modules/semantic/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, quantities
-, numpy
-}:
-
-buildPythonPackage rec {
-  pname = "semantic";
-  version = "1.0.3";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "bbc47dad03dddb1ba5895612fdfa1e43cfb3c497534976cebacd4f3684b505b4";
-  };
-
-  propagatedBuildInputs = [ quantities numpy ];
-
-  # strange setuptools error (can not import semantic.test)
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Common Natural Language Processing Tasks for Python";
-    homepage = "https://github.com/crm416/semantic";
-    license = licenses.mit;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/send2trash/default.nix b/nixpkgs/pkgs/development/python-modules/send2trash/default.nix
index a91be0151119..8a35d3ed71a6 100644
--- a/nixpkgs/pkgs/development/python-modules/send2trash/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/send2trash/default.nix
@@ -6,13 +6,14 @@
 
 buildPythonPackage rec {
   pname = "Send2Trash";
-  version = "1.5.0";
+  version = "1.8.1b0";
+  format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "hsoft";
     repo = "send2trash";
     rev = version;
-    sha256 = "1c76zldhw2ay7q7r00nnzcampjz9lkqfcbzqpm0iqp5i6bmmv30v";
+    sha256 = "sha256-kDUEfyMTk8CXSxTEi7E6kl09ohnWHeaoif+EIaIJh9Q=";
   };
 
   doCheck = !stdenv.isDarwin;
diff --git a/nixpkgs/pkgs/development/python-modules/sendgrid/default.nix b/nixpkgs/pkgs/development/python-modules/sendgrid/default.nix
index c77bcfee3384..b71c25a283d0 100644
--- a/nixpkgs/pkgs/development/python-modules/sendgrid/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sendgrid/default.nix
@@ -11,13 +11,14 @@
 
 buildPythonPackage rec {
   pname = "sendgrid";
-  version = "6.8.3";
+  version = "6.9.3";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = "sendgrid-python";
     rev = version;
-    sha256 = "sha256-kJbpYLM+GpyAHEnO2mqULOYyxIpOrmGeSMd4wJccz/8=";
+    sha256 = "sha256-/4Wk+1zAFwK+FxRhABQBha43/zapgPDfTFGrPJjXA7s=";
   };
 
   propagatedBuildInputs = [
@@ -32,20 +33,20 @@ buildPythonPackage rec {
     werkzeug
   ];
 
-  # Exclude tests that require network access
-  pytestFlagsArray = [
-    "--ignore test/test_sendgrid.py"
-    "--ignore live_test.py"
+  disabledTestPaths = [
+    # Exclude tests that require network access
+    "test/integ/test_sendgrid.py"
+    "live_test.py"
   ];
 
-  pythonImportsCheck = [ "sendgrid" ];
+  pythonImportsCheck = [
+    "sendgrid"
+  ];
 
   meta = with lib; {
     description = "Python client for SendGrid";
     homepage = "https://github.com/sendgrid/sendgrid-python";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
-    # No support for new starkbank-ecdsa releases
-    broken = true;
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/sense-energy/default.nix b/nixpkgs/pkgs/development/python-modules/sense-energy/default.nix
index d3b027924c52..8d73407c9802 100644
--- a/nixpkgs/pkgs/development/python-modules/sense-energy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sense-energy/default.nix
@@ -9,13 +9,14 @@
 
 buildPythonPackage rec {
   pname = "sense-energy";
-  version = "0.9.2";
+  version = "0.9.3";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "scottbonline";
     repo = "sense";
     rev = version;
-    sha256 = "sha256-XZvx/GWpz49dsiY9pgMfX+6gUfWA8q6IpnzmCRPFHus=";
+    sha256 = "sha256-LUM7SP03U3mRxCTjgxPRXh/ZLz15R04zBWOxLKnan98=";
   };
 
   propagatedBuildInputs = [
@@ -28,7 +29,9 @@ buildPythonPackage rec {
   # no tests implemented
   doCheck = false;
 
-  pythonImportsCheck = [ "sense_energy" ];
+  pythonImportsCheck = [
+    "sense_energy"
+  ];
 
   meta = with lib; {
     description = "API for the Sense Energy Monitor";
diff --git a/nixpkgs/pkgs/development/python-modules/sentry-sdk/default.nix b/nixpkgs/pkgs/development/python-modules/sentry-sdk/default.nix
index d7678941597e..0d06fa96563b 100644
--- a/nixpkgs/pkgs/development/python-modules/sentry-sdk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sentry-sdk/default.nix
@@ -1,4 +1,7 @@
-{ aiohttp
+{ lib
+, stdenv
+, aiohttp
+, asttokens
 , blinker
 , botocore
 , bottle
@@ -7,61 +10,129 @@
 , certifi
 , chalice
 , django
+, executing
+, fakeredis
 , falcon
-, fetchPypi
-, flask
+, fetchFromGitHub
+, flask_login
+, gevent
+, httpx
 , iana-etc
 , isPy3k
+, jsonschema
 , libredirect
+, pure-eval
 , pyramid
+, pyspark
+, pytest-django
+, pytest-forked
+, pytest-localserver
+, pytestCheckHook
 , rq
 , sanic
+, sanic-testing
 , sqlalchemy
-, lib
 , tornado
-, urllib3
 , trytond
+, urllib3
 , werkzeug
-, executing
-, pure-eval
-, asttokens
 }:
 
 buildPythonPackage rec {
   pname = "sentry-sdk";
-  version = "1.4.3";
+  version = "1.5.1";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b9844751e40710e84a457c5bc29b21c383ccb2b63d76eeaad72f7f1c808c8828";
+  src = fetchFromGitHub {
+    owner = "getsentry";
+    repo = "sentry-python";
+    rev = version;
+    sha256 = "sha256-vQ5zeAscPMQH3L+Ogj50IZZp2pBoYaxHzvcXakaoC4k=";
   };
 
-  checkInputs = [ blinker botocore chalice django flask tornado bottle rq falcon sqlalchemy werkzeug trytond
-    executing pure-eval asttokens ]
-  ++ lib.optionals isPy3k [ celery pyramid sanic aiohttp ];
+  propagatedBuildInputs = [
+    certifi
+    urllib3
+  ];
 
-  propagatedBuildInputs = [ urllib3 certifi ];
+  checkInputs = [
+    asttokens
+    blinker
+    botocore
+    bottle
+    chalice
+    django
+    executing
+    fakeredis
+    falcon
+    flask_login
+    gevent
+    jsonschema
+    pure-eval
+    pytest-django
+    pytest-forked
+    pytest-localserver
+    pytestCheckHook
+    rq
+    sqlalchemy
+    tornado
+    trytond
+    werkzeug
+  ] ++ lib.optionals isPy3k [
+    aiohttp
+    celery
+    httpx
+    pyramid
+    pyspark
+    sanic
+    sanic-testing
+  ];
 
+  doCheck = !stdenv.isDarwin;
 
-  # The Sentry tests need access to `/etc/protocols` (the tests call
-  # `socket.getprotobyname('tcp')`, which reads from this file). Normally
-  # this path isn't available in the sandbox. Therefore, use libredirect
-  # to make on eavailable from `iana-etc`. This is a test-only operation.
-  preCheck = ''
-    export NIX_REDIRECTS=/etc/protocols=${iana-etc}/etc/protocols
-    export LD_PRELOAD=${libredirect}/lib/libredirect.so
-  '';
+  disabledTests = [
+    # Issue with the asseration
+    "test_auto_enabling_integrations_catches_import_error"
+    # Output mismatch in sqlalchemy test
+    "test_too_large_event_truncated"
+    # Failing falcon tests
+    "test_has_context"
+    "uri_template-"
+    "path-"
+    "test_falcon_large_json_request"
+    "test_falcon_empty_json_request"
+    "test_falcon_raw_data_request"
+    # Failing spark tests
+    "test_set_app_properties"
+    "test_start_sentry_listener"
+    # Failing threading test
+    "test_circular_references"
+    # Failing wsgi test
+    "test_session_mode_defaults_to_request_mode_in_wsgi_handler"
+  ];
 
-  postCheck = "unset NIX_REDIRECTS LD_PRELOAD";
+  disabledTestPaths = [
+    # Some tests are failing (network access, assertion errors)
+    "tests/integrations/aiohttp/"
+    "tests/integrations/gcp/"
+    "tests/integrations/httpx/"
+    "tests/integrations/stdlib/test_httplib.py"
+    # Tests are blocking
+    "tests/integrations/celery/"
+    # pytest-chalice is not available in nixpkgs yet
+    "tests/integrations/chalice/"
+    # broken since rq-1.10.1: https://github.com/getsentry/sentry-python/issues/1274
+    "tests/integrations/rq/"
+  ];
 
-  # no tests
-  doCheck = false;
-  pythonImportsCheck = [ "sentry_sdk" ];
+  pythonImportsCheck = [
+    "sentry_sdk"
+  ];
 
   meta = with lib; {
+    description = "Python SDK for Sentry.io";
     homepage = "https://github.com/getsentry/sentry-python";
-    description = "New Python SDK for Sentry.io";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ gebner ];
+    maintainers = with maintainers; [ fab gebner ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/sepaxml/default.nix b/nixpkgs/pkgs/development/python-modules/sepaxml/default.nix
index 8f6d4eb94f58..1ebe0e49b091 100644
--- a/nixpkgs/pkgs/development/python-modules/sepaxml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sepaxml/default.nix
@@ -1,20 +1,25 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy27
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
 , lxml
-, pytest
+, pytestCheckHook
 , text-unidecode
 , xmlschema
 }:
 
 buildPythonPackage rec {
-  version = "2.2.0";
   pname = "sepaxml";
-  disabled = isPy27;
+  version = "2.4.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "raphaelm";
     repo = "python-sepaxml";
     rev = version;
-    sha256 = "1qmgdcz61hs65m2fddwn9jpyk2sxifdb0f3jz1n0lgy774z0pmas";
+    sha256 = "sha256-Up6zHm20tc6+lQk958csdgC4FMJFhdt+oAJcNcVbcjk=";
   };
 
   propagatedBuildInputs = [
@@ -22,15 +27,18 @@ buildPythonPackage rec {
     xmlschema
   ];
 
-  checkInputs = [ pytest lxml ];
+  checkInputs = [
+    pytestCheckHook
+    lxml
+  ];
 
-  checkPhase = ''
-    pytest
-  '';
+  pythonImportsCheck = [
+    "sepaxml"
+  ];
 
   meta = with lib; {
-    homepage = "https://github.com/raphaelm/python-sepaxml/";
     description = "SEPA Direct Debit XML generation in python";
+    homepage = "https://github.com/raphaelm/python-sepaxml/";
     license = licenses.mit;
     maintainers = with maintainers; [ elohmeier ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/seqdiag/default.nix b/nixpkgs/pkgs/development/python-modules/seqdiag/default.nix
index 2ae9defc504e..c27a2eb2c91c 100644
--- a/nixpkgs/pkgs/development/python-modules/seqdiag/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/seqdiag/default.nix
@@ -1,25 +1,49 @@
-{ lib, fetchurl, buildPythonPackage, isPy27, pep8, nose, unittest2, docutils
+{ lib
 , blockdiag
+, buildPythonPackage
+, fetchFromGitHub
+, nose
+, pytestCheckHook
+, pythonOlder
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "seqdiag";
-  version = "2.0.0";
-  disabled = isPy27;
+  version = "3.0.0";
+  format = "setuptools";
 
-  src = fetchurl {
-    url = "mirror://pypi/s/seqdiag/${pname}-${version}.tar.gz";
-    sha256 = "0k7j4f9j3d0325piwvbv90nfh0wzfk2n6s73s6h6nsxmqshcgswk";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "blockdiag";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-Dh9JMx50Nexi0q39rYr9MpkKmQRAfT7lzsNOXoTuphg=";
   };
 
-  buildInputs = [ pep8 nose unittest2 docutils ];
+  propagatedBuildInputs = [
+    blockdiag
+    setuptools
+  ];
+
+  checkInputs = [
+    nose
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "src/seqdiag/tests/"
+  ];
 
-  propagatedBuildInputs = [ blockdiag ];
+  disabledTests = [
+    # UnicodeEncodeError: 'latin-1' codec can't encode...
+    "test_setup_inline_svg_is_true_with_multibytes"
+  ];
 
-  # Tests fail:
-  #   ...
-  #   ERROR: Failure: OSError ([Errno 2] No such file or directory: '/tmp/nix-build-python2.7-seqdiag-0.9.0.drv-0/seqdiag-0.9.0/src/seqdiag/tests/diagrams/')
-  doCheck = false;
+  pythonImportsCheck = [
+    "seqdiag"
+  ];
 
   meta = with lib; {
     description = "Generate sequence-diagram image from spec-text file (similar to Graphviz)";
diff --git a/nixpkgs/pkgs/development/python-modules/seqeval/default.nix b/nixpkgs/pkgs/development/python-modules/seqeval/default.nix
index 9ed516e4d5c3..73ad00332bf8 100644
--- a/nixpkgs/pkgs/development/python-modules/seqeval/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/seqeval/default.nix
@@ -3,7 +3,6 @@
 , fetchFromGitHub
 , numpy
 , scikit-learn
-, perl
 , pytestCheckHook
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/serversyncstorage/default.nix b/nixpkgs/pkgs/development/python-modules/serversyncstorage/default.nix
deleted file mode 100644
index a409d48837e6..000000000000
--- a/nixpkgs/pkgs/development/python-modules/serversyncstorage/default.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy27
-, testfixtures
-, unittest2
-, webtest
-, pyramid
-, sqlalchemy
-, simplejson
-, mozsvc
-, cornice
-, pyramid_hawkauth
-, pymysql
-, pymysqlsa
-, umemcache
-, WSGIProxy
-, requests
-, pybrowserid
-}:
-
-buildPythonPackage rec {
-  pname = "serversyncstorage";
-  version = "1.6.14";
-  disabled = !isPy27;
-
-  src = fetchFromGitHub {
-    owner = "mozilla-services";
-    repo = "server-syncstorage";
-    rev = version;
-    sha256 = "08xclxj38rav8yay9cijiavv35jbyf6a9jzr24vgcna8pjjnbbmh";
-  };
-
-  checkInputs = [ testfixtures unittest2 webtest ];
-  propagatedBuildInputs = [
-    pyramid sqlalchemy simplejson mozsvc cornice pyramid_hawkauth pymysql
-    pymysqlsa umemcache WSGIProxy requests pybrowserid
-  ];
-
-  meta = with lib; {
-    broken = cornice.version != "0.17";
-    description = "The SyncServer server software, as used by Firefox Sync";
-    homepage = "https://github.com/mozilla-services/server-syncstorage";
-    license = licenses.mpl20;
-    maintainers = with maintainers; [ nadrieril ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/setupmeta/default.nix b/nixpkgs/pkgs/development/python-modules/setupmeta/default.nix
new file mode 100644
index 000000000000..07b521ee9495
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/setupmeta/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, git
+, mock
+, pep440
+, pytestCheckHook
+, pythonOlder
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "setupmeta";
+  version = "3.3.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "codrsquad";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "21hABRiY8CTKkpFjePgBAtjs4/G5eFS3aPNMCBC41CY=";
+  };
+
+  checkInputs = [
+    git
+    mock
+    pep440
+    pytestCheckHook
+    setuptools-scm
+  ];
+
+  disabledTests = [
+    # Tests want to scan site-packages
+    "test_check_dependencies"
+    "test_scenario"
+    "test_git_versioning"
+  ];
+
+  pythonImportsCheck = [
+    "setupmeta"
+  ];
+
+  meta = with lib; {
+    description = "Python module to simplify setup.py files";
+    homepage = "https://github.com/codrsquad/setupmeta";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/setuptools-scm/default.nix b/nixpkgs/pkgs/development/python-modules/setuptools-scm/default.nix
index 6713e5e84f4b..62568869b7bf 100644
--- a/nixpkgs/pkgs/development/python-modules/setuptools-scm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/setuptools-scm/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "setuptools-scm";
-  version = "6.3.1";
+  version = "6.3.2";
 
   src = fetchPypi {
     pname = "setuptools_scm";
     inherit version;
-    sha256 = "sha256-D2omORKxN5jAKLmicdka873g5CeECRx5fezMOtOn9ZY=";
+    sha256 = "1wm0i27siyy1yqr9rv7lqvb65agay9051yi8jzmi8dgb3q4ai6m4";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/setuptools-scm/tests.nix b/nixpkgs/pkgs/development/python-modules/setuptools-scm/tests.nix
index 174b54aca9cd..b90797abf7eb 100644
--- a/nixpkgs/pkgs/development/python-modules/setuptools-scm/tests.nix
+++ b/nixpkgs/pkgs/development/python-modules/setuptools-scm/tests.nix
@@ -1,5 +1,4 @@
-{ lib
-, buildPythonPackage
+{ buildPythonPackage
 , setuptools-scm
 , pytestCheckHook
 , git
diff --git a/nixpkgs/pkgs/development/python-modules/setuptools/44.0.nix b/nixpkgs/pkgs/development/python-modules/setuptools/44.0.nix
index 40265dc639b9..ca70a1061512 100644
--- a/nixpkgs/pkgs/development/python-modules/setuptools/44.0.nix
+++ b/nixpkgs/pkgs/development/python-modules/setuptools/44.0.nix
@@ -2,9 +2,6 @@
 , buildPythonPackage
 , fetchFromGitHub
 , python
-, wrapPython
-, unzip
-, callPackage
 , bootstrapped-pip
 , lib
 , pipInstallHook
diff --git a/nixpkgs/pkgs/development/python-modules/setuptools/default.nix b/nixpkgs/pkgs/development/python-modules/setuptools/default.nix
index 62e7fb686c4a..e748334b5ad1 100644
--- a/nixpkgs/pkgs/development/python-modules/setuptools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/setuptools/default.nix
@@ -1,11 +1,7 @@
 { stdenv
-, fetchurl
 , buildPythonPackage
 , fetchFromGitHub
 , python
-, wrapPython
-, unzip
-, callPackage
 , bootstrapped-pip
 , lib
 , pipInstallHook
diff --git a/nixpkgs/pkgs/development/python-modules/setuptoolsdarcs/default.nix b/nixpkgs/pkgs/development/python-modules/setuptoolsdarcs/default.nix
deleted file mode 100644
index 41fe5043ea85..000000000000
--- a/nixpkgs/pkgs/development/python-modules/setuptoolsdarcs/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, darcsver
-}:
-
-buildPythonPackage rec {
-  pname = "setuptools_darcs";
-  version = "1.2.11";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1wsh0g1fn10msqk87l5jrvzs0yj5mp6q9ld3gghz6zrhl9kqzdn1";
-  };
-
-  # In order to break the dependency on darcs -> ghc, we don't add
-  # darcs as a propagated build input.
-  propagatedBuildInputs = [ darcsver ];
-
-  # ugly hack to specify version that should otherwise come from darcs
-  patchPhase = ''
-    substituteInPlace setup.py --replace "name=PKG" "name=PKG, version='${version}'"
-  '';
-
-  meta = with lib; {
-    description = "Setuptools plugin for the Darcs version control system";
-    homepage = "http://allmydata.org/trac/setuptools_darcs";
-    license = licenses.bsd0;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/sfepy/default.nix b/nixpkgs/pkgs/development/python-modules/sfepy/default.nix
index bf73e7561a13..7b939342bfc2 100644
--- a/nixpkgs/pkgs/development/python-modules/sfepy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sfepy/default.nix
@@ -1,6 +1,6 @@
 { lib
 , buildPythonPackage
-, fetchurl
+, fetchFromGitHub
 , numpy
 , scipy
 , matplotlib
@@ -17,13 +17,15 @@
 }:
 
 buildPythonPackage rec {
-  name = "sfepy";
+  pname = "sfepy";
   version = "2021.2";
   disabled = pythonOlder "3.8";
 
-  src = fetchurl {
-    url="https://github.com/sfepy/sfepy/archive/release_${version}.tar.gz";
-    sha256 = "1vnynxzbspj900wjyy6020l71jdv2l1wkyax7nhi6w5wvav4kfwz";
+  src = fetchFromGitHub {
+    owner = "sfepy";
+    repo = "sfepy";
+    rev = "release_${version}";
+    sha256 = "sha256-zFtm4KrpqjYfxVHcMrTU4tMyHYnD9VPEvuId2lR1MHU=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/sh/default.nix b/nixpkgs/pkgs/development/python-modules/sh/default.nix
index c8da91750f02..a08920a39e2b 100644
--- a/nixpkgs/pkgs/development/python-modules/sh/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sh/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, fetchpatch, python, coverage, lsof, glibcLocales, coreutils }:
+{ lib, buildPythonPackage, fetchPypi, python, coverage, lsof, glibcLocales, coreutils }:
 
 buildPythonPackage rec {
   pname = "sh";
diff --git a/nixpkgs/pkgs/development/python-modules/shamir-mnemonic/default.nix b/nixpkgs/pkgs/development/python-modules/shamir-mnemonic/default.nix
index 74ca2228d8b4..e6502a76524c 100644
--- a/nixpkgs/pkgs/development/python-modules/shamir-mnemonic/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/shamir-mnemonic/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "shamir-mnemonic";
-  version = "0.2.1";
+  version = "0.2.2";
 
   disabled = !isPy3k;
 
@@ -18,14 +18,9 @@ buildPythonPackage rec {
     owner = "trezor";
     repo = "python-${pname}";
     rev = "v${version}";
-    sha256 = "1mi1n01yw8yycbiv1l0xnfzlhhq2arappyvyi2jm5yq65jln77kg";
+    sha256 = "sha256-b9tBXN9dBdAeGg3xf5ZBdd6kPpFzseJl6wRTTfNZEwo=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "click>=7,<8" "click"
-  '';
-
   propagatedBuildInputs = [
     attrs
     click
diff --git a/nixpkgs/pkgs/development/python-modules/shap/default.nix b/nixpkgs/pkgs/development/python-modules/shap/default.nix
index 128dacfd55a8..fbd43953b592 100644
--- a/nixpkgs/pkgs/development/python-modules/shap/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/shap/default.nix
@@ -17,14 +17,14 @@
 
 buildPythonPackage rec {
   pname = "shap";
-  version = "0.39.0";
+  version = "0.40.0";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "slundberg";
     repo = pname;
     rev = "v${version}";
-    sha256 = "065c40k6g8sy6ynzk4k8k7iddl18g2b6kb9kg4m6g7npclmn5wvp";
+    sha256 = "0ra0dp319qj13wxaqh2vz4xhn59m9h3bfg1m6wf3cxsix737b1k4";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/shapely/default.nix b/nixpkgs/pkgs/development/python-modules/shapely/default.nix
index e8ea874e5ca5..818cce6a5670 100644
--- a/nixpkgs/pkgs/development/python-modules/shapely/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/shapely/default.nix
@@ -8,17 +8,16 @@
 , pytestCheckHook
 , cython
 , numpy
-, fetchpatch
 }:
 
 buildPythonPackage rec {
   pname = "Shapely";
-  version = "1.7.1";
-  disabled = pythonOlder "3.5";
+  version = "1.8.0";
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0adiz4jwmwxk7k1awqifb1a9bj5x4nx4gglb5dz9liam21674h8n";
+    sha256 = "177g8wxsgnphhhn4634n6ca1qrk462ijqlznpj5ry6d49ghpwc7m";
   };
 
   nativeBuildInputs = [
@@ -38,16 +37,6 @@ buildPythonPackage rec {
   GEOS_LIBRARY_PATH = "${geos}/lib/libgeos_c${stdenv.hostPlatform.extensions.sharedLibrary}";
 
   patches = [
-    # Fix with geos 3.9. This patch will be part of the next release after 1.7.1
-    (fetchpatch {
-      url = "https://github.com/Toblerity/Shapely/commit/77879a954d24d1596f986d16ba3eff5e13861164.patch";
-      sha256 = "1w7ngjqbpf9vnvrfg4nyv34kckim9a60gvx20h6skc79xwihd4m5";
-      excludes = [
-        "tests/test_create_inconsistent_dimensionality.py"
-        "appveyor.yml"
-        ".travis.yml"
-      ];
-    })
     # Patch to search form GOES .so/.dylib files in a Nix-aware way
     (substituteAll {
       src = ./library-paths.patch;
diff --git a/nixpkgs/pkgs/development/python-modules/shapely/library-paths.patch b/nixpkgs/pkgs/development/python-modules/shapely/library-paths.patch
index 7681fb1d9bb2..d55630be9c10 100644
--- a/nixpkgs/pkgs/development/python-modules/shapely/library-paths.patch
+++ b/nixpkgs/pkgs/development/python-modules/shapely/library-paths.patch
@@ -1,27 +1,45 @@
 diff --git a/shapely/geos.py b/shapely/geos.py
-index d5a67d2..19b7ffc 100644
+index 4619732..1abdb5e 100644
 --- a/shapely/geos.py
 +++ b/shapely/geos.py
-@@ -61,127 +61,17 @@ def load_dll(libname, fallbacks=None, mode=DEFAULT_MODE):
+@@ -55,148 +55,21 @@ def load_dll(libname, fallbacks=None, mode=DEFAULT_MODE):
              "Could not find lib {} or load any of its variants {}.".format(
                  libname, fallbacks or []))
  
 -_lgeos = None
+ def exists_conda_env():
+     """Does this module exist in a conda environment?"""
+     return os.path.exists(os.path.join(sys.prefix, 'conda-meta'))
+ 
 -
 -if sys.platform.startswith('linux'):
--    # Test to see if we have a wheel repaired by 'auditwheel' containing its
--    # own libgeos_c
--    geos_whl_so = glob.glob(os.path.abspath(os.path.join(os.path.dirname(
--        __file__), '.libs/libgeos_c-*.so.*')))
--    if len(geos_whl_so) == 1:
--        _lgeos = CDLL(geos_whl_so[0])
+-    # Test to see if we have a wheel repaired by auditwheel which contains its
+-    # own libgeos_c. Note: auditwheel 3.1 changed the location of libs.
+-    geos_whl_so = glob.glob(
+-        os.path.abspath(os.path.join(os.path.dirname(__file__), ".libs/libgeos*.so*"))
+-    ) or glob.glob(
+-        os.path.abspath(
+-            os.path.join(
+-                os.path.dirname(__file__), "..", "Shapely.libs", "libgeos*.so*"
+-            )
+-        )
+-    )
+-
+-    if len(geos_whl_so) > 0:
+-        # We have observed problems with CDLL of libgeos_c not automatically
+-        # loading the sibling c++ library since the change made by auditwheel
+-        # 3.1, so we explicitly load them both.
+-        geos_whl_so = sorted(geos_whl_so)
+-        CDLL(geos_whl_so[0])
+-        _lgeos = CDLL(geos_whl_so[-1])
 -        LOG.debug("Found GEOS DLL: %r, using it.", _lgeos)
+-
 -    elif hasattr(sys, 'frozen'):
 -        geos_pyinstaller_so = glob.glob(os.path.join(sys.prefix, 'libgeos_c-*.so.*'))
--        if len(geos_pyinstaller_so) == 1:
+-        if len(geos_pyinstaller_so) >= 1:
 -            _lgeos = CDLL(geos_pyinstaller_so[0])
 -            LOG.debug("Found GEOS DLL: %r, using it.", _lgeos)
--    elif os.getenv('CONDA_PREFIX', ''):
+-    elif exists_conda_env():
 -        # conda package.
 -        _lgeos = CDLL(os.path.join(sys.prefix, 'lib', 'libgeos_c.so'))
 -    else:
@@ -30,11 +48,14 @@ index d5a67d2..19b7ffc 100644
 -            'libgeos_c.so',
 -        ]
 -        _lgeos = load_dll('geos_c', fallbacks=alt_paths)
--    # Necessary for environments with only libc.musl
--    c_alt_paths = [
--        'libc.musl-x86_64.so.1'
--    ]
--    free = load_dll('c', fallbacks=c_alt_paths).free
+-
++_lgeos = CDLL('@libgeos_c@')
++if sys.platform == 'darwin':
+     # ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen
+     # manpage says, "If filename is NULL, then the returned handle is for the
+     # main program". This way we can let the linker do the work to figure out
+     # which libc Python is actually using.
+     free = CDLL(None).free
 -    free.argtypes = [c_void_p]
 -    free.restype = None
 -
@@ -52,7 +73,7 @@ index d5a67d2..19b7ffc 100644
 -            _lgeos = CDLL(geos_whl_dylib)
 -            LOG.debug("Found GEOS DLL: %r, using it.", _lgeos)
 -
--    elif os.getenv('CONDA_PREFIX', ''):
+-    elif exists_conda_env():
 -        # conda package.
 -        _lgeos = CDLL(os.path.join(sys.prefix, 'lib', 'libgeos_c.dylib'))
 -    else:
@@ -63,9 +84,11 @@ index d5a67d2..19b7ffc 100644
 -                    os.environ['RESOURCEPATH'], '..', 'Frameworks',
 -                    'libgeos_c.dylib')]
 -            except KeyError:
--                # binary from pyinstaller
 -                alt_paths = [
--                    os.path.join(sys.executable, 'libgeos_c.dylib')]
+-                    # binary from pyinstaller
+-                    os.path.join(sys.executable, 'libgeos_c.dylib'),
+-                    # .app from cx_Freeze
+-                    os.path.join(os.path.dirname(sys.executable), 'libgeos_c.1.dylib')]
 -                if hasattr(sys, '_MEIPASS'):
 -                    alt_paths.append(
 -                        os.path.join(sys._MEIPASS, 'libgeos_c.1.dylib'))
@@ -75,23 +98,22 @@ index d5a67d2..19b7ffc 100644
 -                "/Library/Frameworks/GEOS.framework/Versions/Current/GEOS",
 -                # macports
 -                '/opt/local/lib/libgeos_c.dylib',
--                # homebrew
+-                # homebrew Intel
 -                '/usr/local/lib/libgeos_c.dylib',
+-                # homebrew Apple Silicon
+-                '/opt/homebrew/lib/libgeos_c.dylib',
 -            ]
 -        _lgeos = load_dll('geos_c', fallbacks=alt_paths)
 -
--    # ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen
--    # manpage says, "If filename is NULL, then the returned handle is for the
--    # main program". This way we can let the linker do the work to figure out
--    # which libc Python is actually using.
 -    free = CDLL(None).free
 -    free.argtypes = [c_void_p]
 -    free.restype = None
 -
 -elif sys.platform == 'win32':
--    if os.getenv('CONDA_PREFIX', ''):
+-    _conda_dll_path = os.path.join(sys.prefix, 'Library', 'bin', 'geos_c.dll')
+-    if exists_conda_env() and os.path.exists(_conda_dll_path):
 -        # conda package.
--        _lgeos = CDLL(os.path.join(sys.prefix, 'Library', 'bin', 'geos_c.dll'))
+-        _lgeos = CDLL(_conda_dll_path)
 -    else:
 -        try:
 -            egg_dlls = os.path.abspath(
@@ -119,21 +141,15 @@ index d5a67d2..19b7ffc 100644
 -
 -elif sys.platform == 'sunos5':
 -    _lgeos = load_dll('geos_c', fallbacks=['libgeos_c.so.1', 'libgeos_c.so'])
--    free = CDLL('libc.so.1').free
+-    free.restype = None
 -    free.argtypes = [c_void_p]
 -    free.restype = None
+-
 -else:  # other *nix systems
 -    _lgeos = load_dll('geos_c', fallbacks=['libgeos_c.so.1', 'libgeos_c.so'])
--    free = load_dll('c', fallbacks=['libc.so.6']).free
+-    free = CDLL(None).free
 -    free.argtypes = [c_void_p]
 -    free.restype = None
-+_lgeos = CDLL('@libgeos_c@')
-+if sys.platform == 'darwin':
-+    # ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen
-+    # manpage says, "If filename is NULL, then the returned handle is for the
-+    # main program". This way we can let the linker do the work to figure out
-+    # which libc Python is actually using.
-+    free = CDLL(None).free
 +else:
 +    free = CDLL('@libc@').free
 +free.argtypes = [c_void_p]
@@ -142,20 +158,18 @@ index d5a67d2..19b7ffc 100644
  
  def _geos_version():
 diff --git a/tests/test_dlls.py b/tests/test_dlls.py
-index 35f9cc2..3dfcaac 100644
+index c71da8e..fae9da6 100644
 --- a/tests/test_dlls.py
 +++ b/tests/test_dlls.py
-@@ -12,12 +12,7 @@ class LoadingTestCase(unittest.TestCase):
+@@ -12,10 +12,4 @@ class LoadingTestCase(unittest.TestCase):
      @unittest.skipIf(sys.platform == "win32", "FIXME: adapt test for win32")
      def test_fallbacks(self):
          load_dll('geos_c', fallbacks=[
 -            os.path.join(sys.prefix, "lib", "libgeos_c.dylib"), # anaconda (Mac OS X)
--            '/opt/local/lib/libgeos_c.dylib',  # MacPorts
--            '/usr/local/lib/libgeos_c.dylib',  # homebrew (Mac OS X)
+-            '/opt/local/lib/libgeos_c.dylib',     # MacPorts
+-            '/usr/local/lib/libgeos_c.dylib',     # homebrew (Mac OS X)
+-            '/opt/homebrew/lib/libgeos_c.dylib',  # homebrew (macOS)
 -            os.path.join(sys.prefix, "lib", "libgeos_c.so"), # anaconda (Linux)
 -            'libgeos_c.so.1',
 -            'libgeos_c.so'])
 +            '@libgeos_c@'])
- 
- 
- def test_suite():
diff --git a/nixpkgs/pkgs/development/python-modules/shiboken2/default.nix b/nixpkgs/pkgs/development/python-modules/shiboken2/default.nix
index 23836addd0ca..11461a9545cd 100644
--- a/nixpkgs/pkgs/development/python-modules/shiboken2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/shiboken2/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, python, fetchurl, lib, stdenv, pyside2
+{ python, lib, stdenv, pyside2
 , cmake, qt5, llvmPackages }:
 
 stdenv.mkDerivation {
diff --git a/nixpkgs/pkgs/development/python-modules/shortuuid/default.nix b/nixpkgs/pkgs/development/python-modules/shortuuid/default.nix
index f1c1efbc0ec2..5b7aad436fe1 100644
--- a/nixpkgs/pkgs/development/python-modules/shortuuid/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/shortuuid/default.nix
@@ -2,21 +2,25 @@
 , buildPythonPackage
 , isPy3k
 , fetchPypi
+, django
 , pep8
 }:
 
 buildPythonPackage rec {
   pname = "shortuuid";
-  version = "1.0.1";
+  version = "1.0.8";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3c11d2007b915c43bee3e10625f068d8a349e04f0d81f08f5fa08507427ebf1f";
+    sha256 = "9435e87e5a64f3b92f7110c81f989a3b7bdb9358e22d2359829167da476cfc23";
   };
 
-  buildInputs = [pep8];
+  checkInputs = [
+    django
+    pep8
+  ];
 
   meta = with lib; {
     description = "A generator library for concise, unambiguous and URL-safe UUIDs";
diff --git a/nixpkgs/pkgs/development/python-modules/sievelib/default.nix b/nixpkgs/pkgs/development/python-modules/sievelib/default.nix
index de023377c050..4e0e058ac947 100644
--- a/nixpkgs/pkgs/development/python-modules/sievelib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sievelib/default.nix
@@ -1,37 +1,36 @@
-{ lib, buildPythonPackage, fetchPypi, fetchpatch, mock
-, future, six, setuptools-scm }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, mock
+, pytestCheckHook
+, setuptools-scm
+}:
 
 buildPythonPackage rec {
   pname = "sievelib";
-  version = "1.1.1";
+  version = "1.2.1";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1sl1fnwr5jdacrrnq2rvzh4vv1dyxd3x31vnqga36gj8h546h7mz";
+    sha256 = "sha256-7cubQWqYWjzFt9f01+wBPjcuv5DmTJ2eAOIDEpmvOP0=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "pip-10-pip-req.patch";
-      url = "https://github.com/tonioo/sievelib/commit/1deef0e2bf039a0e817ea6f19aaf1947dc9fafbc.patch";
-      sha256 = "0vaj73mcij9dism8vfaai82irh8j1b2n8gf9jl1a19d2l26jrflk";
-    })
-    (fetchpatch {
-      name = "requirements-in-setup-py.patch";
-      url = "https://github.com/tonioo/sievelib/commit/91f40ec226ea288e98379da01672a46dabd89fc9.patch";
-      sha256 = "0hph89xn16r353rg6f05bh0cgigmwdc736bya089qc03jhssrgns";
-    })
+  nativeBuildInputs = [
+    setuptools-scm
   ];
 
-  buildInputs = [ setuptools-scm ];
-  propagatedBuildInputs = [ future six ];
-  checkInputs = [ mock ];
+  checkInputs = [
+    mock
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "sievelib"
+  ];
 
-  meta = {
+  meta = with lib; {
     description = "Client-side Sieve and Managesieve library written in Python";
-    homepage    = "https://github.com/tonioo/sievelib";
-    license     = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ leenaars ];
     longDescription = ''
       A library written in Python that implements RFC 5228 (Sieve: An Email
       Filtering Language) and RFC 5804 (ManageSieve: A Protocol for
@@ -43,5 +42,8 @@ buildPythonPackage rec {
        * Vacation (RFC 5230)
        * Imap4flags (RFC 5232)
     '';
+    homepage = "https://github.com/tonioo/sievelib";
+    license = licenses.mit;
+    maintainers = with maintainers; [ leenaars ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/signify/default.nix b/nixpkgs/pkgs/development/python-modules/signify/default.nix
index be0623b1b73b..dbad1a8167db 100644
--- a/nixpkgs/pkgs/development/python-modules/signify/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/signify/default.nix
@@ -1,31 +1,49 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, pytestCheckHook
-, certvalidator, pyasn1, pyasn1-modules
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, asn1crypto
+, certvalidator
+, oscrypto
+, pyasn1
+, pyasn1-modules
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "signify";
-  version = "0.3.0";
-  disabled = pythonOlder "3.5";
+  version = "0.4.0";
+  disabled = pythonOlder "3.6";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "ralphje";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-JxQECpwHhPm8TCVW/bCnEpu5I/WETyZVBx29SQE4NmE=";
+    sha256 = "sha256-YJc9RIqkEL7dd1ahE4IbxyyZgsZWBDqbXZAvI/nK24M=";
   };
-  patches = [
-    # Upstream patch is available here:
-    #  https://github.com/ralphje/signify/commit/8c345be954e898a317825bb450bed5ba0304b2b5.patch
-    # But update a couple other things and dont apply cleanly. This is an extract of the part
-    # we care about and breaks the tests after 2021-03-01
-    ./certificate-expiration-date.patch
+
+  propagatedBuildInputs = [
+    asn1crypto
+    certvalidator
+    oscrypto
+    pyasn1
+    pyasn1-modules
   ];
 
-  propagatedBuildInputs = [ certvalidator pyasn1 pyasn1-modules ];
+  pythonImportsCheck = [
+    "signify"
+  ];
 
-  checkInputs = [ pytestCheckHook ];
-  pytestFlagsArray = [ "-v" ];
-  pythonImportsCheck = [ "signify" ];
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # chain doesn't validate because end-entitys certificate expired
+    # https://github.com/ralphje/signify/issues/27
+    "test_revoked_certificate"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/ralphje/signify";
diff --git a/nixpkgs/pkgs/development/python-modules/sigtools/default.nix b/nixpkgs/pkgs/development/python-modules/sigtools/default.nix
index 1d81ba5180cf..b61e64684c86 100644
--- a/nixpkgs/pkgs/development/python-modules/sigtools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sigtools/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "sigtools";
-  version = "2.0.2";
+  version = "2.0.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1b890f22ece64bc47d3d4e84c950581e83917794a6cf1548698145590e221aff";
+    sha256 = "e7789628ec0d02e421bca76532b0d5da149f96f09e7ed4a5cbf318624b75e949";
   };
 
   buildInputs = [ repeated_test sphinx mock coverage unittest2 ];
diff --git a/nixpkgs/pkgs/development/python-modules/simple-di/default.nix b/nixpkgs/pkgs/development/python-modules/simple-di/default.nix
new file mode 100644
index 000000000000..612d913b7b6f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/simple-di/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, setuptools
+, typing-extensions
+, dataclasses
+}:
+
+buildPythonPackage rec {
+  pname = "simple_di";
+  version = "0.1.4";
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "2667f2b9095e86c7726b3853c30b37f527f7d247282c7dd0b3428a7fb5d1a8a9";
+  };
+
+  propagatedBuildInputs = [
+    setuptools
+    typing-extensions
+  ] ++ lib.optional (pythonOlder "3.7") [
+    dataclasses
+  ];
+
+  pythonImportsCheck = [
+    "simple_di"
+  ];
+
+  # pypi distribution contains no tests
+  doCheck = false;
+
+  meta = {
+    description = "Simple dependency injection library";
+    homepage = "https://github.com/bentoml/simple_di";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ sauyon ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/simple-rest-client/default.nix b/nixpkgs/pkgs/development/python-modules/simple-rest-client/default.nix
index 757acf32e516..d4cbfdbfb94a 100644
--- a/nixpkgs/pkgs/development/python-modules/simple-rest-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/simple-rest-client/default.nix
@@ -12,7 +12,8 @@
 
 buildPythonPackage rec {
   pname = "simple-rest-client";
-  version = "1.1.1";
+  version = "1.1.2";
+  format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "allisson";
     repo = "python-simple-rest-client";
     rev = version;
-    sha256 = "sha256-oJXP2/lChlzzKyNiTgJMHkcNkFyy92kTPxgDkon54g8=";
+    sha256 = "sha256-kyoFtPa94c5EAT7wBEXdkPEg8Bp3hJQQoFsutap1qvs=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/simple-salesforce/default.nix b/nixpkgs/pkgs/development/python-modules/simple-salesforce/default.nix
index ee0d273c1869..d2b36af12a3b 100644
--- a/nixpkgs/pkgs/development/python-modules/simple-salesforce/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/simple-salesforce/default.nix
@@ -3,8 +3,6 @@
 , buildPythonPackage
 , authlib
 , requests
-, mock
-, isPy27
 , nose
 , pytz
 , responses
diff --git a/nixpkgs/pkgs/development/python-modules/simpleai/default.nix b/nixpkgs/pkgs/development/python-modules/simpleai/default.nix
deleted file mode 100644
index 2ad7fe9ba28d..000000000000
--- a/nixpkgs/pkgs/development/python-modules/simpleai/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, isPy3k
-}:
-
-buildPythonPackage rec {
-   version = "0.8.2";
-   pname = "simpleai";
-   disabled = isPy3k;
-
-   src = fetchPypi {
-     inherit pname version;
-     sha256 = "2927d460b09ff6dd177999c2f48f3275c84c956efe5b41b567b5316e2259d21e";
-   };
-
-   propagatedBuildInputs = [ numpy ];
-
-   #No tests in archive
-   doCheck = false;
-
-   meta = with lib; {
-     homepage = "https://github.com/simpleai-team/simpleai";
-     description = "This lib implements many of the artificial intelligence algorithms described on the book 'Artificial Intelligence, a Modern Approach'";
-     maintainers = with maintainers; [ NikolaMandic ];
-   };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/simpleeval/default.nix b/nixpkgs/pkgs/development/python-modules/simpleeval/default.nix
index cb6f50fdd287..6467dc964ef3 100644
--- a/nixpkgs/pkgs/development/python-modules/simpleeval/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/simpleeval/default.nix
@@ -1,16 +1,37 @@
-{ lib, fetchPypi, buildPythonPackage }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "simpleeval";
-  version = "0.9.10";
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1skvl467kj83rzkhk01i0wm8m5vmh6j5znrfdizn6r18ii45a839";
+  version = "0.9.11";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "danthedeckie";
+    repo = pname;
+    rev = version;
+    sha256 = "111w76mahbf3lm2p72dkqp5fhwg7nvnwm4l078dgsgkixssjazi7";
   };
-  meta = {
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "test_simpleeval.py"
+  ];
+
+  pythonImportsCheck = [
+    "simpleeval"
+  ];
+
+  meta = with lib; {
+    description = "Simple, safe single expression evaluator library";
     homepage = "https://github.com/danthedeckie/simpleeval";
-    description = "A simple, safe single expression evaluator library";
-    maintainers = with lib.maintainers; [ johbo ];
-    license = lib.licenses.mit;
+    license = licenses.mit;
+    maintainers = with maintainers; [ johbo ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/simplejson/default.nix b/nixpkgs/pkgs/development/python-modules/simplejson/default.nix
index 52e55c71aff0..1e6def5ae78a 100644
--- a/nixpkgs/pkgs/development/python-modules/simplejson/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/simplejson/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "simplejson";
-  version = "3.17.5";
+  version = "3.17.6";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "1vljsd5bk12gasadkxcddwhmp38fj64x1aqi4frk3frq9lp8h3a1";
+    sha256 = "1irlp5sakbdfcf717qmrx0r9rjlmwk0vza6zm3y55d32zw5c1cxg";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/simplenote/default.nix b/nixpkgs/pkgs/development/python-modules/simplenote/default.nix
new file mode 100644
index 000000000000..5cde9b794cdf
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/simplenote/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+  pname = "simplenote";
+  version = "2.1.4";
+
+  src = fetchFromGitHub {
+    owner = "simplenote-vim";
+    repo = "simplenote.py";
+    rev = "v${version}";
+    sha256 = "1grvvgzdybhxjydalnsgh2aaz3f48idv5lqs48gr0cn7n18xwhd5";
+  };
+
+   propagatedBuildInputs = [ ];
+
+   meta = with lib; {
+    description = "A python library for the simplenote.com web service";
+    homepage = "http://readthedocs.org/docs/simplenotepy/en/latest/api.html";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ];
+   };
+
+}
diff --git a/nixpkgs/pkgs/development/python-modules/simpleparse/default.nix b/nixpkgs/pkgs/development/python-modules/simpleparse/default.nix
deleted file mode 100644
index e81a7d41b7a5..000000000000
--- a/nixpkgs/pkgs/development/python-modules/simpleparse/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, isPyPy
-}:
-
-buildPythonPackage rec {
-  version = "2.2.2";
-  pname = "simpleparse";
-  disabled = isPy3k || isPyPy;
-
-  src = fetchPypi {
-    pname = "SimpleParse";
-    inherit version;
-    sha256 = "010szm4mbqgfdksa2n4l9avj617rb0gkwrryc70mfjmyww0bd1m6";
-  };
-
-  doCheck = false;  # weird error
-
-  meta = with lib; {
-    description = "A Parser Generator for Python";
-    homepage = "https://pypi.python.org/pypi/SimpleParse";
-    license = licenses.bsd0;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/simplisafe-python/default.nix b/nixpkgs/pkgs/development/python-modules/simplisafe-python/default.nix
index 09f7a3056fbd..bbfd95cd9212 100644
--- a/nixpkgs/pkgs/development/python-modules/simplisafe-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/simplisafe-python/default.nix
@@ -1,58 +1,77 @@
 { lib
 , aiohttp
-, aioresponses
+, aresponses
 , asynctest
 , backoff
 , buildPythonPackage
+, docutils
 , fetchFromGitHub
 , poetry-core
 , pytest-aiohttp
+, pytest-asyncio
 , pytestCheckHook
 , pythonOlder
 , pytz
 , types-pytz
 , voluptuous
+, websockets
 }:
 
 buildPythonPackage rec {
   pname = "simplisafe-python";
-  version = "11.0.6";
+  version = "2021.12.2";
   format = "pyproject";
-  disabled = pythonOlder "3.7";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "sha256-XVn/GBcTTthvsRJOnCZ0yOF3nUwbBZ2dfMJZsJXnE6U=";
+    sha256 = "sha256-XVSoPPBdjSQBYrUs0AFGsGFRrQOWbPzlB2mmEBSbFI4=";
   };
 
-  nativeBuildInputs = [ poetry-core ];
+  nativeBuildInputs = [
+    poetry-core
+  ];
 
   propagatedBuildInputs = [
     aiohttp
     backoff
+    docutils
     pytz
     types-pytz
     voluptuous
+    websockets
   ];
 
   checkInputs = [
-    aioresponses
+    aresponses
     asynctest
     pytest-aiohttp
+    pytest-asyncio
     pytestCheckHook
   ];
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'docutils = "<0.18"' 'docutils = "*"'
+  '';
+
   disabledTests = [
     # simplipy/api.py:253: InvalidCredentialsError
     "test_request_error_failed_retry"
     "test_update_error"
   ];
 
-  disabledTestPaths = [ "examples/" ];
+  disabledTestPaths = [
+    # Ignore the examples as they are prefixed with test_
+    "examples/"
+  ];
 
-  pythonImportsCheck = [ "simplipy" ];
+  pythonImportsCheck = [
+    "simplipy"
+  ];
 
   __darwinAllowLocalNetworking = true;
 
diff --git a/nixpkgs/pkgs/development/python-modules/singledispatch/default.nix b/nixpkgs/pkgs/development/python-modules/singledispatch/default.nix
deleted file mode 100644
index 837271b4d57c..000000000000
--- a/nixpkgs/pkgs/development/python-modules/singledispatch/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-, setuptools-scm
-, toml
-}:
-
-buildPythonPackage rec {
-  pname = "singledispatch";
-  version = "3.7.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "c1a4d5c1da310c3fd8fccfb8d4e1cb7df076148fd5d858a819e37fffe44f3092";
-  };
-
-  nativeBuildInputs = [
-    setuptools-scm
-    toml
-  ];
-
-  propagatedBuildInputs = [ six ];
-
-  # pypi singledispatch tarbal does not contain tests
-  doCheck = false;
-
-  meta = {
-    description = "This library brings functools.singledispatch from Python 3.4 to Python 2.6-3.3.";
-    homepage = "https://docs.python.org/3/library/functools.html";
-    license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ costrouc ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/siosocks/default.nix b/nixpkgs/pkgs/development/python-modules/siosocks/default.nix
new file mode 100644
index 000000000000..2a4803ef8bd2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/siosocks/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest-asyncio
+, pytest-trio
+, pytestCheckHook
+, pythonOlder
+, trio
+}:
+
+buildPythonPackage rec {
+  pname = "siosocks";
+  version = "0.2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-k2+qTtxkF0rT5LLPW8icePbf9jNopdo9uDp3NPA9SRo=";
+  };
+
+  propagatedBuildInputs = [
+    trio
+  ];
+
+  checkInputs = [
+    pytest-asyncio
+    pytestCheckHook
+    pytest-trio
+  ];
+
+  pythonImportsCheck = [
+    "siosocks"
+  ];
+
+  meta = with lib; {
+    description = "Python socks 4/5 client/server library/framework";
+    homepage = "https://github.com/pohmelie/siosocks";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sip/default.nix b/nixpkgs/pkgs/development/python-modules/sip/default.nix
index b3945696b7e9..9604d47c4e2f 100644
--- a/nixpkgs/pkgs/development/python-modules/sip/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sip/default.nix
@@ -35,6 +35,6 @@ buildPythonPackage rec {
     description = "Creates C++ bindings for Python modules";
     homepage    = "https://riverbankcomputing.com/";
     license     = licenses.gpl3Only;
-    maintainers = with maintainers; [ eduardosm ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/sipsimple/default.nix b/nixpkgs/pkgs/development/python-modules/sipsimple/default.nix
deleted file mode 100644
index 34b95fe781d9..000000000000
--- a/nixpkgs/pkgs/development/python-modules/sipsimple/default.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, pkgs
-, cython
-, dnspython
-, python-dateutil
-, xcaplib
-, msrplib
-, lxml
-, python-otr
-}:
-
-buildPythonPackage rec {
-  pname = "sipsimple";
-  version = "3.4.2";
-  disabled = isPy3k;
-
-  src = fetchFromGitHub {
-    owner = "AGProjects";
-    repo = "python-sipsimple";
-    rev = "release-${version}";
-    sha256 = "094xf343d6zjhg9jwbm3dr74zq264cyqnn22byvm2m88lnagmhmr";
-  };
-
-  preConfigure = ''
-    # TODO: Executable bits are set by upstream with the next release
-    # see AGProjects/python-sipsimple/commit/a36d66cf758afb43c59f7ac48b193c4148eb1848
-    chmod +x ./deps/pjsip/configure ./deps/pjsip/aconfigure
-
-    export LD=$CC
-  '';
-
-  nativeBuildInputs = [ pkgs.pkg-config ];
-  buildInputs = with pkgs; [ alsa-lib ffmpeg_3 libv4l sqlite libvpx ];
-  propagatedBuildInputs = [ cython pkgs.openssl dnspython python-dateutil xcaplib msrplib lxml python-otr ];
-
-  meta = with lib; {
-    description = "SIP SIMPLE implementation for Python";
-    homepage = "https://sipsimpleclient.org/";
-    license = licenses.gpl3;
-    maintainers = with maintainers; [ pSub ];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/skodaconnect/default.nix b/nixpkgs/pkgs/development/python-modules/skodaconnect/default.nix
new file mode 100644
index 000000000000..5196651959c7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/skodaconnect/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, aiohttp
+, beautifulsoup4
+, buildPythonPackage
+, cryptography
+, fetchFromGitHub
+, lxml
+, pyjwt
+, pythonOlder
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "skodaconnect";
+  version = "1.1.12";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "lendy007";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-OKNw+t8S6rRQDKNRBN/CU36OwWojuOH6mMQ5QItkkb8=";
+  };
+
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    beautifulsoup4
+    cryptography
+    lxml
+    pyjwt
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "'pytest>=5,<6'," ""
+    substituteInPlace requirements.txt \
+      --replace "pytest-asyncio" ""
+  '';
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "skodaconnect"
+  ];
+
+  meta = with lib; {
+    description = "Python module to communicate with Skoda Connect";
+    homepage = "https://github.com/lendy007/skodaconnect";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/skorch/default.nix b/nixpkgs/pkgs/development/python-modules/skorch/default.nix
index 3bbf28d2884e..0b2056979e41 100644
--- a/nixpkgs/pkgs/development/python-modules/skorch/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/skorch/default.nix
@@ -16,11 +16,11 @@
 
 buildPythonPackage rec {
   pname = "skorch";
-  version = "0.10.0";
+  version = "0.11.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9910f97339e654c8d38e0075d87b735e69e5eb11db59c527fb36705b30c8d0a4";
+    sha256 = "b35cb4e50045742f0ffcfad33044af691d5d36b50212573753a804483a947ca9";
   };
 
   propagatedBuildInputs = [ numpy pytorch scikit-learn scipy tabulate tqdm ];
diff --git a/nixpkgs/pkgs/development/python-modules/skytemple-files/default.nix b/nixpkgs/pkgs/development/python-modules/skytemple-files/default.nix
index f563097d98c2..7893cfb2e818 100644
--- a/nixpkgs/pkgs/development/python-modules/skytemple-files/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/skytemple-files/default.nix
@@ -4,13 +4,13 @@
 
 buildPythonPackage rec {
   pname = "skytemple-files";
-  version = "1.3.2";
+  version = "1.3.3";
 
   src = fetchFromGitHub {
     owner = "SkyTemple";
     repo = pname;
     rev = version;
-    sha256 = "1g3d5p6ng4zl0ib7k4gj4zy7lp30d2il2k1m92pf5gghwfjwwfca";
+    sha256 = "01j6khn60mdmz32xkpqrzwdqibmpdpi2wvwzxgdnaim9sq0fdqws";
     fetchSubmodules = true;
   };
 
diff --git a/nixpkgs/pkgs/development/python-modules/skytemple-rust/default.nix b/nixpkgs/pkgs/development/python-modules/skytemple-rust/default.nix
index d98d23fada6d..793e22690e4a 100644
--- a/nixpkgs/pkgs/development/python-modules/skytemple-rust/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/skytemple-rust/default.nix
@@ -2,19 +2,19 @@
 
 buildPythonPackage rec {
   pname = "skytemple-rust";
-  version = "unstable-2021-05-30"; # Contains build bug fixes, but is otherwise identical to 0.0.1.post0
+  version = "unstable-2021-08-11";
 
   src = fetchFromGitHub {
     owner = "SkyTemple";
     repo = pname;
-    rev = "cff8b2930af6d25d41331fab8c04f56a4fd75e95";
-    sha256 = "18y6wwvzyw062zlv3gcirr1hgld9d97ffyrvy0jvw8nr3b9h9x0i";
+    rev = "e306e5edc096cb3fef25585d9ca5a2817543f1cd";
+    sha256 = "0ja231gsy9i1z6jsaywawz93rnyjhldngi5i787nhnf88zrwx9ml";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    sha256 = "1ypcsf9gbq1bz29kfn7g4kg8741mxg1lfcbb14a0vfhjq4d6pnx9";
+    sha256 = "0gjvfblyv72m0nqv90m7qvbdnazsh5ind1pxwqz83vm4zjh9a873";
   };
 
   buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
@@ -27,6 +27,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/SkyTemple/skytemple-rust";
     description = "Binary Rust extensions for SkyTemple";
     license = licenses.mit;
-    maintainers = with maintainers; [ xfix ];
+    maintainers = with maintainers; [ xfix marius851000 ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/slack-sdk/default.nix b/nixpkgs/pkgs/development/python-modules/slack-sdk/default.nix
index 7d2391daad9b..8a8957459ee5 100644
--- a/nixpkgs/pkgs/development/python-modules/slack-sdk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/slack-sdk/default.nix
@@ -20,14 +20,16 @@
 
 buildPythonPackage rec {
   pname = "slack-sdk";
-  version = "3.11.2";
+  version = "3.13.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "slackapi";
     repo = "python-slack-sdk";
     rev = "v${version}";
-    sha256 = "sha256-jfFNka+PZXXYz6r7gwoxoqK7SX2RRcDNlCSqVG3JPY0=";
+    sha256 = "sha256-L12faNLwjlEkJZ9s9aIyUHSk7x3n908EHCYU9jECiYQ=";
   };
 
   propagatedBuildInputs = [
@@ -66,7 +68,9 @@ buildPythonPackage rec {
     "test_interactions"
   ];
 
-  pythonImportsCheck = [ "slack_sdk" ];
+  pythonImportsCheck = [
+    "slack_sdk"
+  ];
 
   meta = with lib; {
     description = "Slack Developer Kit for Python";
diff --git a/nixpkgs/pkgs/development/python-modules/slackclient/default.nix b/nixpkgs/pkgs/development/python-modules/slackclient/default.nix
index c82eba66acae..1c02d592d679 100644
--- a/nixpkgs/pkgs/development/python-modules/slackclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/slackclient/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , aiohttp
 , buildPythonPackage
 , codecov
@@ -51,7 +52,18 @@ buildPythonPackage rec {
 
   # Exclude tests that requires network features
   pytestFlagsArray = [ "--ignore=integration_tests" ];
-  disabledTests = [ "test_start_raises_an_error_if_rtm_ws_url_is_not_returned" ];
+
+  disabledTests = [
+    "test_start_raises_an_error_if_rtm_ws_url_is_not_returned"
+  ] ++ lib.optionals stdenv.isDarwin [
+    # these fail with `ConnectionResetError: [Errno 54] Connection reset by peer`
+    "test_issue_690_oauth_access"
+    "test_issue_690_oauth_v2_access"
+    "test_send"
+    "test_send_attachments"
+    "test_send_blocks"
+    "test_send_dict"
+  ];
 
   pythonImportsCheck = [ "slack" ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/slicer/default.nix b/nixpkgs/pkgs/development/python-modules/slicer/default.nix
index f8329dbab479..89fb4e5dc728 100644
--- a/nixpkgs/pkgs/development/python-modules/slicer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/slicer/default.nix
@@ -5,6 +5,7 @@
 , pytestCheckHook
 , pandas
 , pytorch
+, scipy
 }:
 
 buildPythonPackage rec {
@@ -17,7 +18,7 @@ buildPythonPackage rec {
     sha256 = "f5d5f7b45f98d155b9c0ba6554fa9770c6b26d5793a3e77a1030fb56910ebeec";
   };
 
-  checkInputs = [ pytestCheckHook pandas pytorch ];
+  checkInputs = [ pytestCheckHook pandas pytorch scipy ];
 
   meta = with lib; {
     description = "Wraps tensor-like objects and provides a uniform slicing interface via __getitem__";
diff --git a/nixpkgs/pkgs/development/python-modules/slither-analyzer/default.nix b/nixpkgs/pkgs/development/python-modules/slither-analyzer/default.nix
index a49c2a8b743b..8eaf442fb5de 100644
--- a/nixpkgs/pkgs/development/python-modules/slither-analyzer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/slither-analyzer/default.nix
@@ -8,18 +8,17 @@
 , prettytable
 , setuptools
 , solc
-  # solc is currently broken on Darwin, default to false
-, withSolc ? !stdenv.isDarwin
+, withSolc ? false
 }:
 
 buildPythonPackage rec {
   pname = "slither-analyzer";
-  version = "0.8.1";
+  version = "0.8.2";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-5JgF53ip72bne8AlGf126FIIvXi+u7rovJmMSCcZjEQ=";
+    sha256 = "sha256-77045eB7KvHBb0j61qz4zJTtEprg4/aH6MrPlQY1wiM=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/slowaes/default.nix b/nixpkgs/pkgs/development/python-modules/slowaes/default.nix
deleted file mode 100644
index ddca8509744d..000000000000
--- a/nixpkgs/pkgs/development/python-modules/slowaes/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "slowaes";
-  version = "0.1a1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "83658ae54cc116b96f7fdb12fdd0efac3a4e8c7c7064e3fac3f4a881aa54bf09";
-  };
-
-  disabled = isPy3k;
-
-  meta = with lib; {
-    homepage = "http://code.google.com/p/slowaes/";
-    description = "AES implemented in pure python";
-    license = with licenses; [ asl20 ];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/slugid/default.nix b/nixpkgs/pkgs/development/python-modules/slugid/default.nix
new file mode 100644
index 000000000000..34f394bee302
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/slugid/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage
+, lib
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+  pname = "slugid";
+  version = "2.0.0";
+
+  src = fetchFromGitHub {
+    owner = "taskcluster";
+    repo = "slugid.py";
+    rev = "v${version}";
+    sha256 = "McBxGRi8KqVhe2Xez5k4G67R5wBCCoh41dRsTKW4xMA=";
+  };
+
+  doCheck = false; # has no tests
+
+  pythonImportsCheck = [
+    "slugid"
+  ];
+
+  meta = with lib; {
+    description = "URL-safe base64 UUID encoder for generating 22 character slugs";
+    homepage = "https://github.com/taskcluster/slugid.py";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ milahu ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/smartdc/default.nix b/nixpkgs/pkgs/development/python-modules/smartdc/default.nix
deleted file mode 100644
index ceba9eae9e4b..000000000000
--- a/nixpkgs/pkgs/development/python-modules/smartdc/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, requests
-, http_signature
-}:
-
-buildPythonPackage rec {
-  pname = "smartdc";
-  version = "0.2.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "6ffd866fb98386324e189e24d4f7532f66c1b20eece35ca1a6cb4b2a2639fc85";
-  };
-
-  propagatedBuildInputs = [ requests http_signature ];
-
-  meta = with lib; {
-    description = "Joyent SmartDataCenter CloudAPI connector using http-signature authentication via Requests";
-    homepage = "https://github.com/atl/py-smartdc";
-    license = licenses.mit;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/smbprotocol/default.nix b/nixpkgs/pkgs/development/python-modules/smbprotocol/default.nix
index 05825c6c9640..b5d826c8f8ef 100644
--- a/nixpkgs/pkgs/development/python-modules/smbprotocol/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/smbprotocol/default.nix
@@ -12,14 +12,16 @@
 
 buildPythonPackage rec {
   pname = "smbprotocol";
-  version = "1.7.0";
+  version = "1.8.3";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "jborean93";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-4nhgt9/LgoGucNehZkgs4XcneCq+fihWQHtwMbuSp2s=";
+    sha256 = "sha256-m9C+uzwrEOcbkvBQ3Z+to2BsX2i7cLnUiV/+L7hMUdE=";
   };
 
   propagatedBuildInputs = [
@@ -43,7 +45,9 @@ buildPythonPackage rec {
     "test_recv_"
   ];
 
-  pythonImportsCheck = [ "smbprotocol" ];
+  pythonImportsCheck = [
+    "smbprotocol"
+  ];
 
   meta = with lib; {
     description = "Python SMBv2 and v3 Client";
diff --git a/nixpkgs/pkgs/development/python-modules/smbus-cffi/default.nix b/nixpkgs/pkgs/development/python-modules/smbus-cffi/default.nix
index 6715cfd60d95..ffb22d1c4b42 100644
--- a/nixpkgs/pkgs/development/python-modules/smbus-cffi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/smbus-cffi/default.nix
@@ -24,6 +24,8 @@ buildPythonPackage rec {
     })
   ];
 
+  propagatedNativeBuildInputs = [ cffi ];
+
   propagatedBuildInputs = [ cffi ];
 
   installCheckPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/smpplib/default.nix b/nixpkgs/pkgs/development/python-modules/smpplib/default.nix
index fe22f121efb7..179ab7ce1bfc 100644
--- a/nixpkgs/pkgs/development/python-modules/smpplib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/smpplib/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "smpplib";
-  version = "2.1.0";
+  version = "2.2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0jzxlfwf0861ilh4xyd70hmkdbvdki52aalglm1bnpxkg6i3jhfz";
+    sha256 = "c0b01947b47e404f42ccb59e906b6e4eb507963c971d59b44350db0f29c76166";
   };
 
   propagatedBuildInputs = [ six ];
diff --git a/nixpkgs/pkgs/development/python-modules/snakeviz/default.nix b/nixpkgs/pkgs/development/python-modules/snakeviz/default.nix
index 42602f15e9bc..95253b7c1593 100644
--- a/nixpkgs/pkgs/development/python-modules/snakeviz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/snakeviz/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "snakeviz";
-  version = "2.1.0";
+  version = "2.1.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0s6byw23hr2khqx2az36hpi52fk4v6bfm1bb7biaf0d2nrpqgbcj";
+    sha256 = "0d96c006304f095cb4b3fb7ed98bb866ca35a7ca4ab9020bbc27d295ee4c94d9";
   };
 
   # Upstream doesn't run tests from setup.py
diff --git a/nixpkgs/pkgs/development/python-modules/snowballstemmer/default.nix b/nixpkgs/pkgs/development/python-modules/snowballstemmer/default.nix
index 5f3029de2a70..a1813fac54e2 100644
--- a/nixpkgs/pkgs/development/python-modules/snowballstemmer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/snowballstemmer/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "snowballstemmer";
-  version = "2.1.0";
+  version = "2.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e997baa4f2e9139951b6f4c631bad912dfd3c792467e2f03d7239464af90e914";
+    sha256 = "09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1";
   };
 
   # No tests included
diff --git a/nixpkgs/pkgs/development/python-modules/snowflake-connector-python/default.nix b/nixpkgs/pkgs/development/python-modules/snowflake-connector-python/default.nix
index 3f4ec9a0f561..c157a6a2132a 100644
--- a/nixpkgs/pkgs/development/python-modules/snowflake-connector-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/snowflake-connector-python/default.nix
@@ -24,12 +24,12 @@
 
 buildPythonPackage rec {
   pname = "snowflake-connector-python";
-  version = "2.6.2";
+  version = "2.7.2";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ce131b1dd059a4d081e78595d618654bf9b9fc184d78352f24512375467257d1";
+    sha256 = "b2f8f360750eefa98be09ff53c130381646f8dfc8c6e4a705387676210ff8578";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/snowflake-sqlalchemy/default.nix b/nixpkgs/pkgs/development/python-modules/snowflake-sqlalchemy/default.nix
index 1433ee1185f4..ba2463f4aa8f 100644
--- a/nixpkgs/pkgs/development/python-modules/snowflake-sqlalchemy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/snowflake-sqlalchemy/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "snowflake-sqlalchemy";
-  version = "1.3.2";
+  version = "1.3.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "51d9d923ebbfefe392582f6e3d0faa83f52e5eb6f190607820e055318dd2d2f8";
+    sha256 = "d1c087ce0a90bbce77f2308b9c4aeb14efeb26a3ae9da7c3d5a153341cd8ef34";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/snug/default.nix b/nixpkgs/pkgs/development/python-modules/snug/default.nix
deleted file mode 100644
index 08896467b4e5..000000000000
--- a/nixpkgs/pkgs/development/python-modules/snug/default.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ buildPythonPackage, lib, fetchFromGitHub, glibcLocales
-, pytest, pytest-mock, gentools
-, typing, singledispatch, pythonOlder
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "snug";
-  version = "1.3.4";
-  disabled = isPy3k;
-
-  # Pypi doesn't ship the tests, so we fetch directly from GitHub
-  src = fetchFromGitHub {
-    owner = "ariebovenberg";
-    repo = "snug";
-    rev = "v${version}";
-    sha256 = "0jmg0sivz9ljazlnsrrqaizrb3r7asy5pa0dj3idx49gbig4589i";
-  };
-
-  # Prevent unicode decoding error in setup.py
-  # while reading README.rst and HISTORY.rst
-  buildInputs = [ glibcLocales ];
-  LC_ALL = "en_US.UTF-8";
-
-  propagatedBuildInputs =
-    lib.optionals (pythonOlder "3.4") [ singledispatch ] ++
-    lib.optionals (pythonOlder "3.5") [ typing ];
-
-  checkInputs = [ pytest pytest-mock gentools ];
-  checkPhase = "pytest";
-
-  meta = with lib; {
-    description = "Tiny toolkit for writing reusable interactions with web APIs";
-    license = licenses.mit;
-    homepage = "https://snug.readthedocs.io/en/latest/";
-    maintainers = with maintainers; [ mredaelli ];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/socialscan/default.nix b/nixpkgs/pkgs/development/python-modules/socialscan/default.nix
new file mode 100644
index 000000000000..9e51ccd81d37
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/socialscan/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, colorama
+, pythonOlder
+, tqdm
+}:
+
+buildPythonPackage rec {
+  pname = "socialscan";
+  version = "1.4.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "iojw";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "rT+/j6UqDOzuNBdN3I74YIxS6qkhd7BjHCGX+gGjprc=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    colorama
+    tqdm
+  ];
+
+  # Tests require network access
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "socialscan"
+  ];
+
+  meta = with lib; {
+    description = "Python library and CLI for accurately querying username and email usage on online platforms";
+    homepage = "https://github.com/iojw/socialscan";
+    license = with licenses; [ mpl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/socid-extractor/default.nix b/nixpkgs/pkgs/development/python-modules/socid-extractor/default.nix
new file mode 100644
index 000000000000..38b1de48b2f4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/socid-extractor/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, beautifulsoup4
+, buildPythonPackage
+, fetchFromGitHub
+, python-dateutil
+, pythonOlder
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "socid-extractor";
+  version = "0.0.23";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "soxoj";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0vdcxinpnl3vn2l4dybbyggdzm5mpmi3qbpars7lrg5m0mib0cml";
+  };
+
+  propagatedBuildInputs = [
+    beautifulsoup4
+    python-dateutil
+    requests
+  ];
+
+  # Test require network access
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "socid_extractor"
+  ];
+
+  meta = with lib; {
+    description = "Python module to extract details from personal pages";
+    homepage = "https://github.com/soxoj/socid-extractor";
+    license = with licenses; [ gpl3Only ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/soco/default.nix b/nixpkgs/pkgs/development/python-modules/soco/default.nix
index c5a06ee8f202..df9a06aec14c 100644
--- a/nixpkgs/pkgs/development/python-modules/soco/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/soco/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "soco";
-  version = "0.24.1";
+  version = "0.25.2";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "SoCo";
     repo = "SoCo";
     rev = "v${version}";
-    sha256 = "sha256-78JYetA6msGiLMHNTdTN2b5lOiXaY+TQA9ID8qtPmM0=";
+    sha256 = "sha256-Bu9RtzvQVDPekIzkVvcDkTs5Z+IDx6lSBCMv5zs8gNA=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/softlayer/default.nix b/nixpkgs/pkgs/development/python-modules/softlayer/default.nix
index ef0bb8a07170..b0705346abdb 100644
--- a/nixpkgs/pkgs/development/python-modules/softlayer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/softlayer/default.nix
@@ -17,14 +17,14 @@
 
 buildPythonPackage rec {
   pname = "softlayer";
-  version = "5.9.7";
+  version = "5.9.8";
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = "softlayer-python";
     rev = "v${version}";
-    sha256 = "0zwhykrpckx3ln4w6vlgp0nrkkr8343ni1w43hxznm55qmrllrpg";
+    sha256 = "087kyl2yacvh12i4x3357659mgq4xycv8a4y9rl3rj57kp5jc6ah";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/solax/default.nix b/nixpkgs/pkgs/development/python-modules/solax/default.nix
index 09e09d941823..e76df373bf12 100644
--- a/nixpkgs/pkgs/development/python-modules/solax/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/solax/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "solax";
-  version = "0.2.8";
+  version = "0.2.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-bOpDrbRbdsb4XgEksAQG4GE26XSTwGAECq9Fh//zoYc=";
+    sha256 = "e66db0c5d4ec840b047e574f0325ea01862d1f5563a844510541b35faa55f392";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/nixpkgs/pkgs/development/python-modules/solo-python/default.nix b/nixpkgs/pkgs/development/python-modules/solo-python/default.nix
index 88df4e50fbc4..4e4a807729cf 100644
--- a/nixpkgs/pkgs/development/python-modules/solo-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/solo-python/default.nix
@@ -14,18 +14,18 @@
 
  buildPythonPackage rec {
   pname = "solo-python";
-  version = "0.0.30";
+  version = "0.0.31";
   format = "flit";
-  disabled = pythonOlder "3.6"; # only python>=3.6 is supported
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "solokeys";
     repo = pname;
     rev = version;
-    sha256 = "1i9kybp08qfcdx6m4wl7ij40y1v17mvvhcdg7zglwfakblf69w41";
+    sha256 = "sha256-OguAHeNpom+zthREzdhejy5HJUIumrtwB0WJAwUNiSA=";
   };
 
-  # replaced pinned fido, with unrestricted fido version
   patchPhase = ''
     sed -i '/fido2/c\"fido2",' pyproject.toml
   '';
@@ -41,12 +41,10 @@
     requests
   ];
 
-  # allow for writable directory for darwin
   preBuild = ''
     export HOME=$TMPDIR
   '';
 
-  # repo doesn't contain tests, ensure imports aren't broken
   pythonImportsCheck = [
     "solo"
     "solo.cli"
diff --git a/nixpkgs/pkgs/development/python-modules/somajo/default.nix b/nixpkgs/pkgs/development/python-modules/somajo/default.nix
index 5d17a907caeb..8701fa98e67d 100644
--- a/nixpkgs/pkgs/development/python-modules/somajo/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/somajo/default.nix
@@ -2,14 +2,14 @@
 
 buildPythonPackage rec {
   pname = "SoMaJo";
-  version = "2.1.5";
+  version = "2.1.6";
   disabled = !isPy3k;
 
   src = fetchFromGitHub {
     owner = "tsproisl";
     repo = pname;
     rev = "v${version}";
-    sha256 = "17v1vmbjwpxwql25vlbm7xsair7945ljmyaricxx8fd6fxvgn9rr";
+    sha256 = "1q88x05729qdnl1gbahisjk3s97wha0b5dj3n63kq2qyvyy0929s";
   };
 
   propagatedBuildInputs = [ regex ];
diff --git a/nixpkgs/pkgs/development/python-modules/somecomfort/default.nix b/nixpkgs/pkgs/development/python-modules/somecomfort/default.nix
index 05298549d0ff..89c5dedf5065 100644
--- a/nixpkgs/pkgs/development/python-modules/somecomfort/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/somecomfort/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "somecomfort";
-  version = "0.7.0";
+  version = "0.8.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f201109104a61d05624022d3d0ebf23bf487570408517cac5f3f79dbde4b225d";
+    sha256 = "56e60e4e9f76c12c0c9dd1016e9f1334be6800409e0762f5f143f9069d7292d3";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/sopel/default.nix b/nixpkgs/pkgs/development/python-modules/sopel/default.nix
index 09becb972360..4f9fe7c39e10 100644
--- a/nixpkgs/pkgs/development/python-modules/sopel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sopel/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "sopel";
-  version = "7.1.5";
+  version = "7.1.6";
   disabled = isPyPy;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9511dce6d23abdaa47d39d8e222c6b49206bf92e19f4acaf4966b2d402bb6541";
+    sha256 = "ebd3b2aa9230835f8a68ea7f5a10324ddf35d70d89a9c92c8cba81c558565efb";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/sounddevice/default.nix b/nixpkgs/pkgs/development/python-modules/sounddevice/default.nix
index 3cb0e4b66318..036f91614b1b 100644
--- a/nixpkgs/pkgs/development/python-modules/sounddevice/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sounddevice/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "sounddevice";
-  version = "0.4.2";
+  version = "0.4.3";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1c9b07cff59c837d258002ed806ee134ed367ef11042bd7d283d6ce407bf889c";
+    sha256 = "f1667a7467b65fac4c4ebf668b4e9698eb7333fc3d32bc3c7ec9839ea7cb6c20";
   };
 
   propagatedBuildInputs = [ cffi numpy portaudio ];
diff --git a/nixpkgs/pkgs/development/python-modules/soundfile/default.nix b/nixpkgs/pkgs/development/python-modules/soundfile/default.nix
index dea0e345a999..9a1d614062b7 100644
--- a/nixpkgs/pkgs/development/python-modules/soundfile/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/soundfile/default.nix
@@ -21,6 +21,7 @@ buildPythonPackage rec {
 
     checkInputs = [ pytest ];
     propagatedBuildInputs = [ numpy libsndfile cffi ];
+    propagatedNativeBuildInputs = [ cffi ];
 
     meta = {
       description = "An audio library based on libsndfile, CFFI and NumPy";
diff --git a/nixpkgs/pkgs/development/python-modules/soupsieve/1.nix b/nixpkgs/pkgs/development/python-modules/soupsieve/1.nix
deleted file mode 100644
index bb5ecbc839c2..000000000000
--- a/nixpkgs/pkgs/development/python-modules/soupsieve/1.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, beautifulsoup4
-, isPy3k
-, backports_functools_lru_cache
-}:
-
-buildPythonPackage rec {
-  pname = "soupsieve";
-  version = "1.9.6";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "7985bacc98c34923a439967c1a602dc4f1e15f923b6fcf02344184f86cc7efaa";
-  };
-
-  checkPhase = ''
-    py.test
-  '';
-
-  checkInputs = [ pytest beautifulsoup4 ];
-
-  propagatedBuildInputs = lib.optional (!isPy3k) backports_functools_lru_cache;
-
-  # Circular test dependency on beautifulsoup4
-  doCheck = false;
-
-  meta = {
-    description = "A CSS4 selector implementation for Beautiful Soup";
-    license = lib.licenses.mit;
-    homepage = "https://github.com/facelessuser/soupsieve";
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/soupsieve/default.nix b/nixpkgs/pkgs/development/python-modules/soupsieve/default.nix
index 954599ffefaa..6c50cc6e1150 100644
--- a/nixpkgs/pkgs/development/python-modules/soupsieve/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/soupsieve/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "soupsieve";
-  version = "2.2.1";
+  version = "2.3.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "052774848f448cf19c7e959adf5566904d525f33a3f8b6ba6f6f8f26ec7de0cc";
+    sha256 = "b8d49b1cd4f037c7082a9683dfa1801aa2597fb11c3a1155b7a5b94829b4f1f9";
   };
 
   checkPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/spacy-alignments/default.nix b/nixpkgs/pkgs/development/python-modules/spacy-alignments/default.nix
index 32506c2d9e74..95ba3c946343 100644
--- a/nixpkgs/pkgs/development/python-modules/spacy-alignments/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/spacy-alignments/default.nix
@@ -11,31 +11,21 @@
 
 buildPythonPackage rec {
   pname = "spacy-alignments";
-  version = "0.8.3";
+  version = "0.8.4";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zrqBjaIjtF6bJMbmw7Zo+BeApN6sxxfLkrzsDjdvC78=";
+    sha256 = "sha256-1HApl/RZ0w5Tf2OPu1QBUa36uIqilp+dDbPjujn0e9s=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
-    inherit patches src;
+    inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-YRyG2yflEXKklNqXiDD9oK3J1lq4o704+Eeu2hyY3xI=";
+    sha256 = "sha256-oFSruBnoodv6/0/OrmJ/2SVoWm3u3FGtzVJ9xgp0+Cg=";
   };
 
-  patches = [
-    # Add Cargo.lock, from upstream PR:
-    # https://github.com/explosion/spacy-alignments/pull/3
-    (fetchpatch {
-      url = "https://github.com/explosion/spacy-alignments/commit/7b0ba13ff0d245bfbbe344a36fb7bbd311dd4906.diff";
-      sha256 = "sha256-jx97SSC+3z+ByInNs8Uq58H50eCo4fDCwEi6VKxRs2k=";
-      excludes = [ ".gitignore" ];
-    })
-  ];
-
   nativeBuildInputs = [
     setuptools-rust
   ] ++ (with rustPlatform; [
diff --git a/nixpkgs/pkgs/development/python-modules/spacy-transformers/default.nix b/nixpkgs/pkgs/development/python-modules/spacy-transformers/default.nix
index 3e92dc97f96d..757c945f3f05 100644
--- a/nixpkgs/pkgs/development/python-modules/spacy-transformers/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/spacy-transformers/default.nix
@@ -12,15 +12,19 @@
 
 buildPythonPackage rec {
   pname = "spacy-transformers";
-  version = "1.1.0";
+  version = "1.1.3";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "17c5d821834726d3cad010d07bc9951cdf57b0a703e3727520f817286809591e";
+    sha256 = "f4f553d3d2a065147a8c1292b5d9adf050c0f78dd15bb05c9614341cf88c5574";
   };
 
+  postPatch = ''
+    sed -i 's/transformers>=3.4.0,<4.12.0/transformers/' setup.cfg
+  '';
+
   propagatedBuildInputs = [
     pytorch
     spacy
diff --git a/nixpkgs/pkgs/development/python-modules/spacy/default.nix b/nixpkgs/pkgs/development/python-modules/spacy/default.nix
index c0c8593452c0..0d095cfef07e 100644
--- a/nixpkgs/pkgs/development/python-modules/spacy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/spacy/default.nix
@@ -11,7 +11,6 @@
 , jsonschema
 , murmurhash
 , numpy
-, pathlib
 , preshed
 , requests
 , setuptools
@@ -30,13 +29,13 @@
 
 buildPythonPackage rec {
   pname = "spacy";
-  version = "3.1.3";
+  version = "3.2.0";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-WAhOZKJ5lxkupI8Yq7MOwUjFu+edBNF7pNL8JiEAwqI=";
+    sha256 = "68e54b2a14ce74eeecea9bfb0b9bdadf8a4a8157765dbefa7e50d25a1bf0f2f3";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/spacy/legacy.nix b/nixpkgs/pkgs/development/python-modules/spacy/legacy.nix
index 9bb37e9beb18..b09983aeae3d 100644
--- a/nixpkgs/pkgs/development/python-modules/spacy/legacy.nix
+++ b/nixpkgs/pkgs/development/python-modules/spacy/legacy.nix
@@ -1,7 +1,6 @@
 { lib
 , fetchPypi
 , buildPythonPackage
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/spambayes/default.nix b/nixpkgs/pkgs/development/python-modules/spambayes/default.nix
deleted file mode 100644
index f33748379d1e..000000000000
--- a/nixpkgs/pkgs/development/python-modules/spambayes/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ buildPythonPackage, isPy3k, fetchPypi, bsddb3, pydns, lockfile }:
-
-buildPythonPackage rec {
-  pname = "spambayes";
-  version = "1.1b3";
-
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "016r3g43ja73rls1nh1dl82d75lgsjdl4cv2r5s7zcihm47nb38q";
-  };
-
-  propagatedBuildInputs = [ bsddb3 pydns lockfile ];
-
-  meta = {
-    description = "Statistical anti-spam filter, initially based on the work of Paul Graham";
-    homepage = "http://spambayes.sourceforge.net/";
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/spectral-cube/default.nix b/nixpkgs/pkgs/development/python-modules/spectral-cube/default.nix
index 5a022f467087..b11ca178fc75 100644
--- a/nixpkgs/pkgs/development/python-modules/spectral-cube/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/spectral-cube/default.nix
@@ -1,10 +1,11 @@
 { lib
+, stdenv
 , fetchPypi
-, fetchpatch
 , buildPythonPackage
 , aplpy
 , joblib
 , astropy
+, casa-formats-io
 , radio_beam
 , six
 , dask
@@ -15,27 +16,23 @@
 
 buildPythonPackage rec {
   pname = "spectral-cube";
-  version = "0.5.0";
+  version = "0.6.0";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "17zisr26syfb8kn89xj17lrdycm0hsmy5yp5zrn236wgd8rjriki";
+    sha256 = "1c0pp82wgl680w2vcwlrrz46sy83z1qs74w5bd691wg0512hv2jx";
   };
 
-  patches = [
-    # Fix compatibility with radio_beam >= 0.3.3. Will be included
-    # in the next release of spectral cube > 0.5.0
-    (fetchpatch {
-      url = "https://github.com/radio-astro-tools/spectral-cube/commit/bbe4295ebef7dfa6fe4474275a29acd6cb0cb544.patch";
-    sha256 = "1qddfm3364kc34yf6wd9nd6rxh4qc2v5pqilvz9adwb4a50z28bf";
-    })
-  ];
-
-  nativeBuildInputs = [ astropy-helpers ];
-  propagatedBuildInputs = [ astropy radio_beam joblib six dask ];
+  propagatedBuildInputs = [ astropy casa-formats-io radio_beam joblib six dask ];
   checkInputs = [ pytestCheckHook aplpy pytest-astropy ];
 
+  # On x86_darwin, this test fails with "Fatal Python error: Aborted"
+  # when sandbox = true.
+  disabledTestPaths = lib.optionals stdenv.isDarwin [
+    "spectral_cube/tests/test_visualization.py"
+  ];
+
   meta = {
     description = "Library for reading and analyzing astrophysical spectral data cubes";
     homepage = "http://radio-astro-tools.github.io";
diff --git a/nixpkgs/pkgs/development/python-modules/spglib/default.nix b/nixpkgs/pkgs/development/python-modules/spglib/default.nix
index a050aadb4b20..a54fa65d08b7 100644
--- a/nixpkgs/pkgs/development/python-modules/spglib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/spglib/default.nix
@@ -1,12 +1,12 @@
-{ lib, buildPythonPackage, fetchPypi, fetchpatch, numpy, nose, pyyaml }:
+{ lib, buildPythonPackage, fetchPypi, numpy, nose, pyyaml }:
 
 buildPythonPackage rec {
   pname = "spglib";
-  version = "1.16.1";
+  version = "1.16.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9fd2fefbd83993b135877a69c498d8ddcf20a9980562b65b800cfb4cdadad003";
+    sha256 = "ff1420967d64c2d4f0d747886116a6836d9b473454cdd73d560dbfe973a8a038";
   };
 
   propagatedBuildInputs = [ numpy ];
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx-material/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx-material/default.nix
index aa6dc0d6bf18..f36db1ae87bd 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinx-material/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinx-material/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "sphinx-material";
-  version = "0.0.32";
+  version = "0.0.35";
 
   src = fetchPypi {
     pname = "sphinx_material";
     inherit version;
-    sha256 = "ec02825a1bbe8b662fe624c11b87f1cd8d40875439b5b18c38649cf3366201fa";
+    sha256 = "27f0f1084aa0201b43879aef24a0521b78dc8df4942b003a4e7d79ab11515852";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx/0001-test-images-Use-normalization-equivalent-character.patch b/nixpkgs/pkgs/development/python-modules/sphinx/0001-test-images-Use-normalization-equivalent-character.patch
new file mode 100644
index 000000000000..805e724d0c8c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sphinx/0001-test-images-Use-normalization-equivalent-character.patch
@@ -0,0 +1,35 @@
+From 181617387841b695ee77b162babf9fb177002fcb Mon Sep 17 00:00:00 2001
+From: toonn <toonn@toonn.io>
+Date: Mon, 20 Sep 2021 11:39:46 +0200
+Subject: [PATCH] test-images: Use normalization equivalent character
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+One of the test images used a combining character `ä` that can be
+encoded multiple ways. This means the file's name can end up encoded
+differently depending on whether/which normal form the filesystem uses.
+
+For Nix this causes a different hash for a FOD depending on the
+filesystem where it is evaluated. This is problematic because hashes
+fail to match up when evaluating the FOD across multiple platforms.
+---
+ tests/roots/test-images/index.rst | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/roots/test-images/index.rst b/tests/roots/test-images/index.rst
+index 14a2987..219842e 100644
+--- a/tests/roots/test-images/index.rst
++++ b/tests/roots/test-images/index.rst
+@@ -13,7 +13,7 @@ test-image
+ 
+    The caption of img
+ 
+-.. image:: testimäge.png
++.. image:: testimæge.png
+ 
+ .. image:: rimg.png
+    :target: https://www.sphinx-doc.org/
+-- 
+2.17.2 (Apple Git-113)
+
diff --git a/nixpkgs/pkgs/development/python-modules/sphinx/default.nix b/nixpkgs/pkgs/development/python-modules/sphinx/default.nix
index a04a0585019f..75693f3657e4 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinx/default.nix
@@ -1,8 +1,8 @@
-{ lib
+{ stdenv
+, lib
 , buildPythonPackage
 , pythonOlder
 , fetchFromGitHub
-, fetchpatch
 # propagatedBuildInputs
 , Babel
 , alabaster
@@ -29,24 +29,22 @@
 
 buildPythonPackage rec {
   pname = "sphinx";
-  version = "4.0.2";
+  version = "4.3.1";
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "sphinx-doc";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-0QdgHFX4r40BDHjpi9R40lXqT4n5ZgrIny+w070LZPE=";
+    sha256 = "sha256-8Yj6cPZFG8ycbbZtMR+fsIAOX0brxroi6nYjP+WhnxA=";
+    extraPostFetch = ''
+      cd $out
+      mv tests/roots/test-images/testimäge.png \
+        tests/roots/test-images/testimæge.png
+      patch -p1 < ${./0001-test-images-Use-normalization-equivalent-character.patch}
+    '';
   };
 
-  patches = [
-    (fetchpatch {
-      # Fix tests with pygments 2.10
-      url = "https://github.com/sphinx-doc/sphinx/commit/bde6c8d2effc56dc8b9098abee796167f972c306.patch";
-      sha256 = "0d0ddhgrrh7z9ix0f3zrc2gjb4d73f6ffm98zl62fzv5l4fd00lr";
-    })
-  ];
-
   propagatedBuildInputs = [
     Babel
     alabaster
@@ -85,6 +83,27 @@ buildPythonPackage rec {
     # requires imagemagick (increases build closure size), doesn't
     # test anything substantial
     "test_ext_imgconverter"
+  ] ++ lib.optional stdenv.isDarwin [
+    # Due to lack of network sandboxing can't guarantee port 7777 isn't bound
+    "test_inspect_main_url"
+    "test_auth_header_uses_first_match"
+    "test_linkcheck_request_headers"
+    "test_linkcheck_request_headers_no_slash"
+    "test_follows_redirects_on_HEAD"
+    "test_invalid_ssl"
+    "test_connect_to_selfsigned_with_tls_verify_false"
+    "test_connect_to_selfsigned_with_tls_cacerts"
+    "test_connect_to_selfsigned_with_requests_env_var"
+    "test_connect_to_selfsigned_nonexistent_cert_file"
+    "test_TooManyRedirects_on_HEAD"
+    "test_too_many_requests_retry_after_int_del"
+    "test_too_many_requests_retry_after_HTTP_date"
+    "test_too_many_requests_retry_after_without_header"
+    "test_too_many_requests_user_timeout"
+    "test_raises_for_invalid_status"
+    "test_auth_header_no_match"
+    "test_follows_redirects_on_GET"
+    "test_connect_to_selfsigned_fails"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-actdiag/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-actdiag/default.nix
index 81fa98312565..32470e98b4e0 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-actdiag/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-actdiag/default.nix
@@ -4,25 +4,35 @@
 , sphinx
 , actdiag
 , blockdiag
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-actdiag";
-  version = "2.0.0";
+  version = "3.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-TtuFZOLkig4MULLndDQlrTTx8RiGw34MsjmXoPladMY=";
+    hash = "sha256-PFXUVP/Due/nwg8q2vAiGZuCVhLTLyAL6KSXqofg+B8=";
   };
 
-  propagatedBuildInputs = [ sphinx actdiag blockdiag ];
+  propagatedBuildInputs = [
+    actdiag
+    blockdiag
+    sphinx
+  ];
 
-  pythonImportsCheck = [ "sphinxcontrib.actdiag" ];
+  pythonImportsCheck = [
+    "sphinxcontrib.actdiag"
+  ];
 
   meta = with lib; {
     description = "Sphinx actdiag extension";
     homepage = "https://github.com/blockdiag/sphinxcontrib-actdiag";
-    maintainers = with maintainers; [ davidtwco ];
     license = licenses.bsd2;
+    maintainers = with maintainers; [ davidtwco ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix
index 97e9c7529f23..0b26c24319fa 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-blockdiag";
-  version = "2.0.0";
+  version = "3.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "91fd35b64f1f25db59d80b8a5196ed4ffadf57a81f63ee207e34d53ec36d8f97";
+    sha256 = "aa49bf924516f5de8a479994c7be81e077df5599c9da2a082003d5b388e1d450";
   };
 
   buildInputs = [ mock sphinx-testing ];
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-nwdiag/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-nwdiag/default.nix
index 10963a73a912..47573ad609a8 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-nwdiag/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-nwdiag/default.nix
@@ -1,28 +1,38 @@
 { lib
+, blockdiag
 , buildPythonPackage
 , fetchPypi
-, sphinx
-, blockdiag
 , nwdiag
+, pythonOlder
+, sphinx
 }:
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-nwdiag";
   version = "2.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-bula1DutRv6NwfZRhciZfLHRZmXu42p+qvbeExN/+Fk=";
   };
 
-  propagatedBuildInputs = [ sphinx blockdiag nwdiag ];
+  propagatedBuildInputs = [
+    blockdiag
+    nwdiag
+    sphinx
+  ];
 
-  pythonImportsCheck = [ "sphinxcontrib.nwdiag" ];
+  pythonImportsCheck = [
+    "sphinxcontrib.nwdiag"
+  ];
 
   meta = with lib; {
     description = "Sphinx nwdiag extension";
     homepage = "https://github.com/blockdiag/sphinxcontrib-nwdiag";
-    maintainers = with maintainers; [ davidtwco ];
     license = licenses.bsd2;
+    maintainers = with maintainers; [ davidtwco ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-seqdiag/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-seqdiag/default.nix
index c7407300d313..cc3a96086e4e 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-seqdiag/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-seqdiag/default.nix
@@ -1,28 +1,38 @@
 { lib
+, blockdiag
 , buildPythonPackage
 , fetchPypi
-, sphinx
-, blockdiag
+, pythonOlder
 , seqdiag
+, sphinx
 }:
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-seqdiag";
-  version = "2.0.0";
+  version = "3.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-THJ1ra/W2X/lQaDjGbL27VMn0lWPJApwgKMrPhL0JY0=";
+    hash = "sha256-QH5IeXZz9x2Ujp/6BHFsrB2ZqeyPYW3jdk1C0DNBZXQ=";
   };
 
-  propagatedBuildInputs = [ sphinx blockdiag seqdiag ];
+  propagatedBuildInputs = [
+    blockdiag
+    seqdiag
+    sphinx
+  ];
 
-  pythonImportsCheck = [ "sphinxcontrib.seqdiag" ];
+  pythonImportsCheck = [
+    "sphinxcontrib.seqdiag"
+  ];
 
   meta = with lib; {
     description = "Sphinx seqdiag extension";
     homepage = "https://github.com/blockdiag/sphinxcontrib-seqdiag";
-    maintainers = with maintainers; [ davidtwco ];
     license = licenses.bsd2;
+    maintainers = with maintainers; [ davidtwco ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-spelling/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-spelling/default.nix
index 51885c4b7f31..6239ba0bc83c 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-spelling/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-spelling/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-spelling";
-  version = "7.2.1";
+  version = "7.3.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f2578653014931b32c8c30d1a9930d998ae053b0d8b7adfbea0eb95a63e7a737";
+    sha256 = "9d66dc4990749c5ac52e7eaf17e82f4dc6b4aff6515d26bbf48821829d41bd02";
   };
 
   propagatedBuildInputs = [ sphinx pyenchant pbr ]
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix
index cc5412fe42ff..dcb96f317d4e 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinxcontrib-tikz/default.nix
@@ -1,5 +1,4 @@
 { lib
-, substituteAll
 , buildPythonPackage
 , fetchPypi
 , sphinx
@@ -9,16 +8,16 @@
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-tikz";
-  version = "0.4.14";
+  version = "0.4.15";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1614a45c960b80009dd42f96689122c9c0781018a0c5ec5828f4cdc5e35b11ad";
+    sha256 = "27f9a7a6a64f1bf3ea4dd0e963b7da7c7778948856c8d557a71d64ace086519f";
   };
 
   postPatch = ''
     substituteInPlace sphinxcontrib/tikz.py \
-      --replace "config.latex_engine" "${texLive}/bin/pdflatex" \
+      --replace "config.latex_engine" "'${texLive}/bin/pdflatex'" \
       --replace "system(['pdf2svg'" "system(['${pdf2svg}/bin/pdf2svg'"
   '';
 
@@ -27,6 +26,8 @@ buildPythonPackage rec {
   # no tests in package
   doCheck = false;
 
+  pythonImportsCheck = [ "sphinxcontrib.tikz" ];
+
   meta = with lib; {
     description = "TikZ extension for Sphinx";
     homepage = "https://bitbucket.org/philexander/tikz";
diff --git a/nixpkgs/pkgs/development/python-modules/sphinxext-opengraph/default.nix b/nixpkgs/pkgs/development/python-modules/sphinxext-opengraph/default.nix
index 08a87a2f7c02..8b8cb4cdbb53 100644
--- a/nixpkgs/pkgs/development/python-modules/sphinxext-opengraph/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sphinxext-opengraph/default.nix
@@ -2,24 +2,29 @@
 , buildPythonPackage
 , fetchFromGitHub
 , sphinx
+, pytestCheckHook
+, beautifulsoup4
 }:
 
 buildPythonPackage rec {
   pname = "sphinxext-opengraph";
-  version = "0.4.2";
+  version = "0.5.1";
 
   src = fetchFromGitHub {
     owner = "wpilibsuite";
     repo = "sphinxext-opengraph";
     rev = "v${version}";
-    sha256 = "sha256-978aPtaqUDHcswDdFynzi+IjDYaBmCZDZk+dmDkhajY=";
+    sha256 = "sha256-US0UXxcTlN7x5v2ilpL+umTr7tadqthqhvfaQnm7tCc=";
   };
 
   propagatedBuildInputs = [
     sphinx
   ];
 
-  doCheck = false; # no tests
+  checkInputs = [
+    pytestCheckHook
+    beautifulsoup4
+  ];
 
   pythonImportsCheck = [ "sphinxext.opengraph" ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/spiderpy/default.nix b/nixpkgs/pkgs/development/python-modules/spiderpy/default.nix
index 166f821fb3ee..82007997ccb8 100644
--- a/nixpkgs/pkgs/development/python-modules/spiderpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/spiderpy/default.nix
@@ -2,12 +2,14 @@
 , buildPythonPackage
 , isPy27
 , fetchFromGitHub
+, poetry-core
 , requests
 }:
 
 buildPythonPackage rec {
   pname = "spiderpy";
-  version = "1.5.0";
+  version = "1.7.2";
+  format = "pyproject";
 
   disabled = isPy27;
 
@@ -15,14 +17,18 @@ buildPythonPackage rec {
     owner = "peternijssen";
     repo = "spiderpy";
     rev = version;
-    sha256 = "1nbfjqwiyyl7lhkb4rvickxiy9nwynr2sxr1hpyv0vm09h6q8hsc";
+    sha256 = "sha256-Yujy8HSMbK2DQ/913r2c74hKPYDfcHFKq04ysqxG+go=";
   };
 
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
   propagatedBuildInputs = [
     requests
   ];
 
-  # no unit tests implemented
+  # tests don't mock remote resources
   doCheck = false;
 
   pythonImportsCheck = [ "spiderpy.spiderapi" ];
diff --git a/nixpkgs/pkgs/development/python-modules/splinter/default.nix b/nixpkgs/pkgs/development/python-modules/splinter/default.nix
index cb63f8d11ba4..9a80bb93621a 100644
--- a/nixpkgs/pkgs/development/python-modules/splinter/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/splinter/default.nix
@@ -9,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "splinter";
-  version = "0.15.0";
+  version = "0.17.0";
 
   src = fetchFromGitHub {
     owner = "cobrateam";
     repo = "splinter";
     rev = version;
-    sha256 = "sha256-y87Cnci4gJHrttThGPeOS/h6VK8x95cQA9nZs1fBfAw=";
+    hash = "sha256-7QhFz/qBh2ECyeyvjCyqOYy/YrUK7KVX13VC/gem5BQ=";
   };
 
   propagatedBuildInputs = [
@@ -35,6 +35,7 @@ buildPythonPackage rec {
     "tests/test_popups.py"
     "tests/test_webdriver.py"
     "tests/test_webdriver_chrome.py"
+    "tests/test_webdriver_edge_chromium.py"
     "tests/test_webdriver_firefox.py"
     "tests/test_webdriver_remote.py"
     "tests/test_zopetestbrowser.py"
diff --git a/nixpkgs/pkgs/development/python-modules/spur/default.nix b/nixpkgs/pkgs/development/python-modules/spur/default.nix
new file mode 100644
index 000000000000..24bdc5839a47
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/spur/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, paramiko
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "spur";
+  version = "0.3.22";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.4";
+
+  src = fetchFromGitHub {
+    owner = "mwilliamson";
+    repo = "spur.py";
+    rev = version;
+    sha256 = "sha256-YlwezAE7V4ykFsp+bJ2nYRp6HG4I9Bk7Lhq6f1Inn0s=";
+  };
+
+  propagatedBuildInputs = [
+    paramiko
+  ];
+
+  # Tests require a running SSH server
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "spur"
+  ];
+
+  meta = with lib; {
+    description = "Python module to run commands and manipulate files locally or over SSH";
+    homepage = "https://github.com/mwilliamson/spur.py";
+    license = with licenses; [ bsd2 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/spyder-kernels/default.nix b/nixpkgs/pkgs/development/python-modules/spyder-kernels/default.nix
index 5ce41d8d7575..4c43ce2f1617 100644
--- a/nixpkgs/pkgs/development/python-modules/spyder-kernels/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/spyder-kernels/default.nix
@@ -1,20 +1,20 @@
 { lib, buildPythonPackage, fetchPypi, cloudpickle, ipykernel, wurlitzer,
-  jupyter_client, pyzmq }:
+  jupyter-client, pyzmq }:
 
 buildPythonPackage rec {
   pname = "spyder-kernels";
-  version = "2.1.0";
+  version = "2.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6c287207c7855bb581eae66ef8d990407382d5f9caccb1e0cabf909aaaf10c9b";
+    sha256 = "6b19ea224f183dbff8ff0031bee35ae6b5b3a6eef4aa84cfab04e3bc3e304b91";
   };
 
   propagatedBuildInputs = [
     cloudpickle
     ipykernel
     wurlitzer
-    jupyter_client
+    jupyter-client
     pyzmq
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/spyder/default.nix b/nixpkgs/pkgs/development/python-modules/spyder/default.nix
index dbe54d52e3a9..38558f004984 100644
--- a/nixpkgs/pkgs/development/python-modules/spyder/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/spyder/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchPypi, isPy27, makeDesktopItem, intervaltree,
-  jedi, pycodestyle, psutil, pyflakes, rope, numpy, scipy, matplotlib, pylint,
+  jedi, pycodestyle, psutil, rope, numpy, scipy, matplotlib, pylint,
   keyring, numpydoc, qtconsole, qtawesome, nbconvert, mccabe, pyopengl,
   cloudpickle, pygments, spyder-kernels, qtpy, pyzmq, chardet, qdarkstyle,
   watchdog, python-language-server, pyqtwebengine, atomicwrites, pyxdg,
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "spyder";
-  version = "5.1.1";
+  version = "5.2.0";
 
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6551acfd6fedfebd1f938ef67d3db415b33540f8377e7de3f4d4a2a11dd1b915";
+    sha256 = "cd04acc88426acee9c4ce6bb91f50c13fc161a437e68bca701243b3415ce9d08";
   };
 
   nativeBuildInputs = [ pyqtwebengine.wrapQtAppsHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/sqlalchemy-citext/default.nix b/nixpkgs/pkgs/development/python-modules/sqlalchemy-citext/default.nix
index 8fc03d788af9..9ec70d67f864 100644
--- a/nixpkgs/pkgs/development/python-modules/sqlalchemy-citext/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sqlalchemy-citext/default.nix
@@ -3,7 +3,6 @@
 , fetchPypi
 , psycopg2
 , sqlalchemy
-, python
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/sqlalchemy-i18n/default.nix b/nixpkgs/pkgs/development/python-modules/sqlalchemy-i18n/default.nix
index b3038c5d242e..83d813b3dbd9 100644
--- a/nixpkgs/pkgs/development/python-modules/sqlalchemy-i18n/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sqlalchemy-i18n/default.nix
@@ -3,7 +3,6 @@
 , buildPythonPackage
 , sqlalchemy
 , sqlalchemy-utils
-, psycopg2
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/sqlalchemy-mixins/default.nix b/nixpkgs/pkgs/development/python-modules/sqlalchemy-mixins/default.nix
new file mode 100644
index 000000000000..85a03482a323
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/sqlalchemy-mixins/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, nose
+, pytestCheckHook
+, pythonOlder
+, six
+, sqlalchemy
+}:
+
+buildPythonPackage rec {
+  pname = "sqlalchemy-mixins";
+  version = "1.5.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "absent1706";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-HZiv7F0/UatgY3KlILgzywrK5NJE/tDe6B8/smeYwlM=";
+  };
+
+  propagatedBuildInputs = [
+    six
+    sqlalchemy
+  ];
+
+  checkInputs = [
+    nose
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "sqlalchemy_mixins"
+  ];
+
+  meta = with lib; {
+    description = "Python mixins for SQLAlchemy ORM";
+    homepage = "https://github.com/absent1706/sqlalchemy-mixins";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/sqlalchemy/default.nix b/nixpkgs/pkgs/development/python-modules/sqlalchemy/default.nix
index 54f21c49f771..a8c85fdffd64 100644
--- a/nixpkgs/pkgs/development/python-modules/sqlalchemy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sqlalchemy/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "SQLAlchemy";
-  version = "1.4.25";
+  version = "1.4.27";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-Gt89JeLjOvvNSM+tgHb5N4eTvkPn/sPkM0MGysa+wTg=";
+    sha256 = "sha256-12g1na6zqGZE84VMZlnkSWo+a7orRlHsyHznrUFbMgw=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/sqlite-utils/default.nix b/nixpkgs/pkgs/development/python-modules/sqlite-utils/default.nix
index b2715b4d29ed..ee1181e9c93c 100644
--- a/nixpkgs/pkgs/development/python-modules/sqlite-utils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sqlite-utils/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, fetchpatch
 , pythonOlder
 , click
 , click-default-group
@@ -13,14 +14,23 @@
 
 buildPythonPackage rec {
   pname = "sqlite-utils";
-  version = "3.17.1";
+  version = "3.19";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0cfde0c46a2d4c09d6df8609fe53642bc3ab443bcef3106d8f1eabeb3fccbe3d";
+    sha256 = "509099fce5f25faada6e76b6fb90e8ef5ba0f1715177933a816718be0c8e7244";
   };
 
+  patches = [
+    # https://github.com/simonw/sqlite-utils/pull/347
+    (fetchpatch {
+      name = "sqlite-utils-better-test_rebuild_fts.patch";
+      url = "https://github.com/simonw/sqlite-utils/pull/347/commits/1a7ef2fe2064ace01d5535fb771f941296fb642a.diff";
+      sha256 = "sha256-WKCQGMqr8WYjG7cmAH5pYBhgikowbt3r6hObwtMDDUY=";
+    })
+  ];
+
   postPatch = ''
     substituteInPlace setup.py \
       --replace '"pytest-runner"' ""
diff --git a/nixpkgs/pkgs/development/python-modules/sqlite3dbm/default.nix b/nixpkgs/pkgs/development/python-modules/sqlite3dbm/default.nix
deleted file mode 100644
index 3057f89adf4e..000000000000
--- a/nixpkgs/pkgs/development/python-modules/sqlite3dbm/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "sqlite3dbm";
-  version = "0.1.4";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "4721607e0b817b89efdba7e79cab881a03164b94777f4cf796ad5dd59a7612c5";
-  };
-
-  meta = with lib; {
-    description = "sqlite-backed dictionary";
-    homepage = "https://github.com/Yelp/sqlite3dbm";
-    license = licenses.asl20;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/sqlmap/default.nix b/nixpkgs/pkgs/development/python-modules/sqlmap/default.nix
index 277e59125dfa..429ebc9e0d61 100644
--- a/nixpkgs/pkgs/development/python-modules/sqlmap/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sqlmap/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "sqlmap";
-  version = "1.5.10";
+  version = "1.5.12";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "925b9b18d2880f7c74ebf53694b4cd8b9e04ca2cc27d57c265acda5f27b0dc89";
+    sha256 = "sha256-9FplToUd4CIkYZ88+Lat+joniZzRZDOfifH5z4sH8RM=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/sqlparse/default.nix b/nixpkgs/pkgs/development/python-modules/sqlparse/default.nix
index 3ee59c391f88..29e92cdecb93 100644
--- a/nixpkgs/pkgs/development/python-modules/sqlparse/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sqlparse/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "sqlparse";
-  version = "0.4.1";
+  version = "0.4.2";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0f91fd2e829c44362cbcfab3e9ae12e22badaa8a29ad5ff599f9ec109f0454e8";
+    sha256 = "0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae";
   };
 
   nativeBuildInputs = [ installShellFiles ];
diff --git a/nixpkgs/pkgs/development/python-modules/sqlsoup/default.nix b/nixpkgs/pkgs/development/python-modules/sqlsoup/default.nix
index a6ffd3227cd4..df1f988a03eb 100644
--- a/nixpkgs/pkgs/development/python-modules/sqlsoup/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sqlsoup/default.nix
@@ -14,8 +14,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "A one step database access tool, built on the SQLAlchemy ORM";
-    homepage = "https://bitbucket.org/zzzeek/sqlsoup";
+    homepage = "https://github.com/zzzeek/sqlsoup";
     license = licenses.mit;
     maintainers = [ maintainers.globin ];
+    broken = true; # incompatible with sqlalchemy>=1.4 and unmaintained since 2016
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/squaremap/default.nix b/nixpkgs/pkgs/development/python-modules/squaremap/default.nix
deleted file mode 100644
index bab9e2f99f28..000000000000
--- a/nixpkgs/pkgs/development/python-modules/squaremap/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib
-, buildPythonPackage
-, isPy3k
-, fetchPypi
-, six
-, wxPython
-}:
-
-buildPythonPackage rec {
-  pname = "squaremap";
-  version = "1.0.5";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    pname = "SquareMap";
-    inherit version;
-    sha256 = "1a79jm7mp0pvi3a19za5c3idavnj7hlral01hhr3x9mz1jayav5i";
-  };
-
-  propagatedBuildInputs = [ six wxPython ];
-
-  meta = with lib; {
-    description = "Hierarchic visualization control for wxPython";
-    homepage = "https://launchpad.net/squaremap";
-    license = licenses.bsd3;
-    broken = true; # wxPython doesn't seem to be able to be detected by pip
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/srpenergy/default.nix b/nixpkgs/pkgs/development/python-modules/srpenergy/default.nix
index 140062edf1f0..c5d20436a09c 100644
--- a/nixpkgs/pkgs/development/python-modules/srpenergy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/srpenergy/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "srpenergy";
-  version = "1.3.2";
+  version = "1.3.5";
 
   disabled = pythonOlder "3.6";
 
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "lamoreauxlab";
     repo = "srpenergy-api-client-python";
     rev = version;
-    sha256 = "03kldjk90mrnzf2hpd7xky0lpph853mjxc34kfa2m5mbpbpkxz9c";
+    sha256 = "sha256-s90+gzjcG27pUcMGpzf2rf+mR8/fmpvwBXGfvv3rNGI=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/srsly/default.nix b/nixpkgs/pkgs/development/python-modules/srsly/default.nix
index 86550f998734..18771886b0fa 100644
--- a/nixpkgs/pkgs/development/python-modules/srsly/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/srsly/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "srsly";
-  version = "2.4.1";
+  version = "2.4.2";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-sPKuwKMp5ufnQqCmDpmnSWjKKb5x81xcTeIh4ygXaSY=";
+    hash = "sha256-KrolIpJ2eHUIat9OQ4DiewJNc2VUVveW+OB+s6TfrMA=";
   };
 
   nativeBuildInputs = [ cython ];
diff --git a/nixpkgs/pkgs/development/python-modules/ssdeep/default.nix b/nixpkgs/pkgs/development/python-modules/ssdeep/default.nix
index 510bbbac9518..6ad339a083f5 100644
--- a/nixpkgs/pkgs/development/python-modules/ssdeep/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ssdeep/default.nix
@@ -1,33 +1,51 @@
 { lib
 , buildPythonPackage
-, fetchPypi
-, pkgs
 , cffi
+, fetchFromGitHub
+, pytestCheckHook
 , six
-, pytest
-, pytest-runner
+, ssdeep
 }:
 
 buildPythonPackage rec {
   pname = "ssdeep";
   version = "3.4";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0px8k4fjbkjb717bg2v7rjhm4iclrxzq7sh0hfqs55f4ddqi0m8v";
+  src = fetchFromGitHub {
+    owner = "DinoTools";
+    repo = "python-ssdeep";
+    rev = version;
+    hash = "sha256-eAB4/HmPGj/ngHrqkOlY/kTdY5iUEBHxrsRYjR/RNyw=";
   };
 
-  buildInputs = [ pkgs.ssdeep pytest-runner ];
-  checkInputs = [ pytest ];
-  propagatedBuildInputs = [ cffi six ];
+  buildInputs = [
+    ssdeep
+  ];
 
-  # tests repository does not include required files
-  doCheck = false;
+  propagatedBuildInputs = [
+    cffi
+    six
+  ];
+
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace '"pytest-runner"' ""
+  '';
+
+  pythonImportsCheck = [
+    "ssdeep"
+  ];
 
   meta = with lib; {
-    homepage = "https://github.com/DinoTools/python-ssdeep";
     description = "Python wrapper for the ssdeep library";
-    license = licenses.lgpl3;
+    homepage = "https://github.com/DinoTools/python-ssdeep";
+    license = licenses.lgpl3Plus;
+    maintainers = with maintainers; [ fab ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/sslyze/default.nix b/nixpkgs/pkgs/development/python-modules/sslyze/default.nix
index 5680b4bd36b3..587572646abc 100644
--- a/nixpkgs/pkgs/development/python-modules/sslyze/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sslyze/default.nix
@@ -1,52 +1,107 @@
 { lib
 , fetchFromGitHub
 , buildPythonPackage
-, nassl
-, cryptography
-, typing-extensions
-, faker
 , pytestCheckHook
 , pythonOlder
+  # deps
+, cryptography
+, nassl
+, pydantic
+, tls-parser
+  # check deps
+, faker
+, openssl_1_0_2
+, openssl_1_1
 }:
 
 buildPythonPackage rec {
   pname = "sslyze";
-  version = "4.1.0";
+  version = "5.0.0";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "nabla-c0d3";
     repo = pname;
     rev = version;
-    hash = "sha256-oSTKNiECczlPAbv5Azc023PcquFbnlC5O+8tVgNcUW0=";
+    hash = "sha256-7kUriEMHcGCXKs42KVWxXvM+JEEWf/8tnuoGujHbqHY=";
   };
 
   patchPhase = ''
     substituteInPlace setup.py \
-      --replace "cryptography>=2.6,<3.5" "cryptography>=2.6,<4.0"
+      --replace "cryptography>=2.6,<36.0.0" "cryptography>=2.6"
   '';
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+    faker
+  ];
 
   # Most of the tests are online; hence, applicable tests are listed
   # explicitly here
   pytestFlagsArray = [
-    "tests/test_main.py"
-    "tests/test_scanner.py"
     "tests/cli_tests/test_console_output.py"
-    "tests/cli_tests/test_json_output.py"
     "tests/cli_tests/test_server_string_parser.py"
-    "tests/plugins_tests/test_scan_commands.py"
+    "tests/json_tests/test_json_output.py"
+    "tests/plugins_tests/certificate_info/test_certificate_algorithms.py"
     "tests/plugins_tests/certificate_info/test_certificate_utils.py"
+    "tests/plugins_tests/certificate_info/test_symantec.py"
+    "tests/plugins_tests/certificate_info/test_trust_store_repository.py"
+    "tests/plugins_tests/openssl_cipher_suites/test_cipher_suites.py"
+    "tests/plugins_tests/test_early_data_plugin.py"
+    "tests/plugins_tests/test_http_headers_plugin.py"
+    "tests/plugins_tests/test_robot_plugin.py"
+    "tests/plugins_tests/test_scan_commands.py"
+    "tests/plugins_tests/test_session_renegotiation_plugin.py"
+    "tests/scanner_tests/test_jobs_worker_thread.py"
+    "tests/scanner_tests/test_mass_scanner.py"
+    "tests/scanner_tests/test_models.py"
+    "tests/scanner_tests/test_scanner.py"
+    "tests/server_connectivity_tests/test_client_authentication.py"
   ];
 
   disabledTests = [
-    "test_error_client_certificate_needed"
+    # TestEllipticCurvesPluginWithOnlineServer
+    "test_supported_curves"
+    # TestRobotPluginPlugin
+    "test_robot_attack_good"
+    # TestHttpHeadersPlugin
+    "test_all_headers_disabled"
+    "test_expect_ct_enabled"
+    "test_hsts_enabled"
+    # TestSessionRenegotiationPlugin
+    "test_renegotiation_good"
+    # TestCertificateAlgorithms
+    "test_ecdsa_certificate"
+    "test_invalid_certificate_bad_name"
+    # TestEarlyDataPlugin
+    "test_early_data_enabled"
+    # TestTrustStoresRepository
+    "test_update_default"
+    # TestClientAuthentication
+    "test_optional_client_authentication"
   ];
 
+  # Some tests require OpenSSL
+  preCheck = ''
+    pushd $TMPDIR/$sourceRoot/tests/openssl_server/
+
+    rm openssl-1-1-1-linux64
+    ln -s ${openssl_1_1.bin}/bin/openssl openssl-1-1-1-linux64
+
+    rm openssl-1-0-0e-linux64
+    ln -s ${openssl_1_0_2.bin}/bin/openssl openssl-1-0-0e-linux64
+
+    popd
+  '';
+
   pythonImportsCheck = [ "sslyze" ];
 
-  propagatedBuildInputs = [ nassl cryptography typing-extensions faker ];
+  propagatedBuildInputs = [
+    cryptography
+    nassl
+    pydantic
+    tls-parser
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/nabla-c0d3/sslyze";
diff --git a/nixpkgs/pkgs/development/python-modules/stanza/default.nix b/nixpkgs/pkgs/development/python-modules/stanza/default.nix
new file mode 100644
index 000000000000..ce9719a75210
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/stanza/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, emoji
+, numpy
+, protobuf
+, requests
+, six
+, pytorch
+, tqdm
+}:
+
+buildPythonPackage rec {
+  pname = "stanza";
+  version = "1.3.0";
+
+  src = fetchFromGitHub {
+    owner = "stanfordnlp";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1j5918n875p3ibhzc5zp3vb97asbbnb04pj1igxwzl0xm6qcsbh8";
+  };
+
+  disabled = pythonOlder "3.6";
+
+  propagatedBuildInputs = [
+    emoji
+    numpy
+    protobuf
+    requests
+    six
+    pytorch
+    tqdm
+  ];
+
+  # disabled, because the tests try to connect to the internet which
+  # is forbidden in the sandbox
+  doCheck = false;
+
+  pythonImportsCheck = [ "stanza" ];
+
+  meta = with lib; {
+    description = "Official Stanford NLP Python Library for Many Human Languages";
+    homepage = "https://github.com/stanfordnlp/stanza/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ riotbib ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/starkbank-ecdsa/default.nix b/nixpkgs/pkgs/development/python-modules/starkbank-ecdsa/default.nix
index df45883b9b05..25b7d0aa3c74 100644
--- a/nixpkgs/pkgs/development/python-modules/starkbank-ecdsa/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/starkbank-ecdsa/default.nix
@@ -6,13 +6,14 @@
 
 buildPythonPackage rec {
   pname = "starkbank-ecdsa";
-  version = "2.0.0";
+  version = "2.0.3";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "starkbank";
     repo = "ecdsa-python";
     rev = "v${version}";
-    sha256 = "sha256-MTd9aeX6UavRua0hnuy5qY5kltzSoyvv+LcL5EvU5Sc=";
+    sha256 = "sha256-UA+UuSxKZZN7Zb23HWsCD6UZK6lROpy3OfLN7MAlMM0=";
   };
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/starlette/default.nix b/nixpkgs/pkgs/development/python-modules/starlette/default.nix
index e8c130692125..9612ac999cc8 100644
--- a/nixpkgs/pkgs/development/python-modules/starlette/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/starlette/default.nix
@@ -2,11 +2,9 @@
 , stdenv
 , buildPythonPackage
 , fetchFromGitHub
-, isPy27
 , aiofiles
 , anyio
 , contextlib2
-, graphene
 , itsdangerous
 , jinja2
 , python-multipart
@@ -24,14 +22,16 @@
 
 buildPythonPackage rec {
   pname = "starlette";
-  version = "0.16.0";
+  version = "0.17.1";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "encode";
     repo = pname;
     rev = version;
-    sha256 = "sha256-/NYhRRZdi6I7CtLCohAqK4prsSUayOxa6sBKIJhPv+w=";
+    sha256 = "sha256-qT/w7r8PsrauLoBolwCGpxiwhDZo3z6hIqKVXeY5yqA=";
   };
 
   postPatch = ''
@@ -42,7 +42,6 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     aiofiles
     anyio
-    graphene
     itsdangerous
     jinja2
     python-multipart
@@ -65,19 +64,15 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  disabledTestPaths = [
-    # fails to import graphql, but integrated graphql support is about to
-    # be removed in 0.15, see https://github.com/encode/starlette/pull/1135.
-    "tests/test_graphql.py"
-  ];
-
   disabledTests = [
     # asserts fail due to inclusion of br in Accept-Encoding
     "test_websocket_headers"
     "test_request_headers"
   ];
 
-  pythonImportsCheck = [ "starlette" ];
+  pythonImportsCheck = [
+    "starlette"
+  ];
 
   meta = with lib; {
     homepage = "https://www.starlette.io/";
diff --git a/nixpkgs/pkgs/development/python-modules/stashy/default.nix b/nixpkgs/pkgs/development/python-modules/stashy/default.nix
new file mode 100644
index 000000000000..fa866cc26037
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/stashy/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, decorator
+, fetchPypi
+, pythonOlder
+, requests
+ }:
+
+buildPythonPackage rec {
+  pname = "stashy";
+  version = "0.7";
+  disabled = pythonOlder "3.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1x89zazwxnsx6rdfw8nfr372hj4sk8nrcs5hsjxpcxcva0calrcr";
+  };
+
+  propagatedBuildInputs = [ decorator requests ];
+
+  # Tests require internet connection
+  doCheck = false;
+  pythonImportsCheck = [ "stashy" ];
+
+  meta = with lib; {
+    description = "Python client for the Atlassian Bitbucket Server (formerly known as Stash) REST API.";
+    homepage = "https://github.com/cosmin/stashy";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ mupdt ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/staticjinja/default.nix b/nixpkgs/pkgs/development/python-modules/staticjinja/default.nix
index bce5316187e7..d0c4d39f1165 100644
--- a/nixpkgs/pkgs/development/python-modules/staticjinja/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/staticjinja/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "staticjinja";
-  version = "4.1.0";
+  version = "4.1.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "staticjinja";
     repo = pname;
     rev = version;
-    sha256 = "sha256-4IL+7ncJPd1e7k5oFRjQ6yvDjozcBAAZPf88biNTiLU=";
+    sha256 = "sha256-Bpgff3VaTylnYpkWoaWEiRWu4sYSP6dLbHDOjAhj7BM=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/statsmodels/default.nix b/nixpkgs/pkgs/development/python-modules/statsmodels/default.nix
index 9aebe88b7923..173458a634b6 100644
--- a/nixpkgs/pkgs/development/python-modules/statsmodels/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/statsmodels/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "statsmodels";
-  version = "0.12.2";
+  version = "0.13.1";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8ad7a7ae7cdd929095684118e3b05836c0ccb08b6a01fe984159475d174a1b10";
+    sha256 = "006ec8d896d238873af8178d5475203844f2c391194ed8d42ddac37f5ff77a69";
   };
 
   nativeBuildInputs = [ cython ];
diff --git a/nixpkgs/pkgs/development/python-modules/stdiomask/default.nix b/nixpkgs/pkgs/development/python-modules/stdiomask/default.nix
index 8ef59074fc00..1ad09c22da8e 100644
--- a/nixpkgs/pkgs/development/python-modules/stdiomask/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/stdiomask/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/stdlib-list/default.nix b/nixpkgs/pkgs/development/python-modules/stdlib-list/default.nix
index d654d2588066..fb46ee24cd50 100644
--- a/nixpkgs/pkgs/development/python-modules/stdlib-list/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/stdlib-list/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , isPy27
 , fetchPypi
-, python
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/stem/default.nix b/nixpkgs/pkgs/development/python-modules/stem/default.nix
index c607d45e1706..9ad5e2285ffb 100644
--- a/nixpkgs/pkgs/development/python-modules/stem/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/stem/default.nix
@@ -27,6 +27,6 @@ buildPythonPackage rec {
     description = "Controller library that allows applications to interact with Tor";
     homepage = "https://stem.torproject.org/";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ phreedom ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/stestr/tests.nix b/nixpkgs/pkgs/development/python-modules/stestr/tests.nix
index 7a5d47b5dcfe..35fd1ce71a20 100644
--- a/nixpkgs/pkgs/development/python-modules/stestr/tests.nix
+++ b/nixpkgs/pkgs/development/python-modules/stestr/tests.nix
@@ -1,9 +1,5 @@
-{ stdenv
-, buildPythonPackage
-, ddt
-, sqlalchemy
+{  buildPythonPackage
 , stestr
-, subunit2sql
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/stevedore/default.nix b/nixpkgs/pkgs/development/python-modules/stevedore/default.nix
index b8a42db27fd7..66f99c7b01ec 100644
--- a/nixpkgs/pkgs/development/python-modules/stevedore/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/stevedore/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "stevedore";
-  version = "3.4.0";
+  version = "3.5.0";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "18aaxj4nrki0bjgzmqxqy20m7763q1xmwishy6biicapgzdqxdar";
+    sha256 = "sha256-9AJTiH2HEuqiuw6jgwN0QWc23I7A4i9aZQksEXTEQzU=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/stickytape/default.nix b/nixpkgs/pkgs/development/python-modules/stickytape/default.nix
new file mode 100644
index 000000000000..71d64e1e7bd8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/stickytape/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, nose
+, pytestCheckHook
+, pythonOlder
+, spur
+}:
+
+buildPythonPackage rec {
+  pname = "stickytape";
+  version = "0.2.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.4";
+
+  src = fetchFromGitHub {
+    owner = "mwilliamson";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-KOZN9oxPb91l8QVU07I49UMNXqox8j+oekA1fMtj6l8=";
+  };
+
+  # Tests have additional requirements
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "stickytape"
+  ];
+
+  meta = with lib; {
+    description = "Python module to convert Python packages into a single script";
+    homepage = "https://github.com/mwilliamson/stickytape";
+    license = with licenses; [ bsd2 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/stompclient/default.nix b/nixpkgs/pkgs/development/python-modules/stompclient/default.nix
deleted file mode 100644
index 149be55da580..000000000000
--- a/nixpkgs/pkgs/development/python-modules/stompclient/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, mock
-, nose
-}:
-
-buildPythonPackage rec {
-  pname = "stompclient";
-  version = "0.3.2";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "95a4e98dd0bba348714439ea11a25ee8a74acb8953f95a683924b5bf2a527e4e";
-  };
-
-  buildInputs = [ mock nose ];
-
-  # XXX: Ran 0 tests in 0.217s
-
-  meta = with lib; {
-    description = "Lightweight and extensible STOMP messaging client";
-    homepage = "https://bitbucket.org/hozn/stompclient";
-    license = licenses.asl20;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/streamz/default.nix b/nixpkgs/pkgs/development/python-modules/streamz/default.nix
index 2b327174524d..bb3e2b68cb14 100644
--- a/nixpkgs/pkgs/development/python-modules/streamz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/streamz/default.nix
@@ -1,44 +1,50 @@
 { lib
 , buildPythonPackage
-, fetchPypi
-, fetchpatch
 , confluent-kafka
 , distributed
+, fetchPypi
 , flaky
 , graphviz
 , networkx
-, pytest
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
 , requests
 , six
 , toolz
 , tornado
 , zict
-, pythonOlder
+, fetchpatch
 }:
 
 buildPythonPackage rec {
   pname = "streamz";
-  version = "0.6.2";
+  version = "0.6.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "04446ece273c041506b1642bd3d8380367a8372196be4d6d6d03faafadc590b2";
+    sha256 = "sha256-0wZ1ldLFRAIL9R+gLfwsFbL+gvdORAkYWNjnDmeafm8=";
   };
 
   patches = [
-    # Fix apply import from dask
+    # remove with next bump
     (fetchpatch {
-      url = "https://patch-diff.githubusercontent.com/raw/python-streamz/streamz/pull/423.patch";
-      sha256 = "sha256-CR+uRvzaFu9WQ633tbvX3gAnudhlVN6VvmxKiR37diw=";
+      name = "fix-tests-against-distributed-2021.10.0.patch";
+      url = "https://github.com/python-streamz/streamz/commit/5bd3bc4d305ff40c740bc2550c8491be9162778a.patch";
+      sha256 = "1xzxcbf7yninkyizrwm3ahqk6ij2fmh0454iqjx2n7mmzx3sazx7";
+      includes = ["streamz/tests/test_dask.py"];
     })
   ];
 
   propagatedBuildInputs = [
     networkx
-    tornado
+    six
     toolz
+    tornado
     zict
-    six
   ];
 
   checkInputs = [
@@ -46,25 +52,32 @@ buildPythonPackage rec {
     distributed
     flaky
     graphviz
-    pytest
+    pytest-asyncio
+    pytestCheckHook
     requests
   ];
 
-  disabled = pythonOlder "3.6";
+  pythonImportsCheck = [
+    "streamz"
+  ];
 
-  # Disable test_tcp_async because fails on sandbox build
-  # disable kafka tests
-  checkPhase = ''
-    pytest --deselect=streamz/tests/test_sources.py::test_tcp_async \
-      --deselect=streamz/tests/test_sources.py::test_tcp \
-      --deselect=streamz/tests/test_core.py::test_partition_timeout \
-      --ignore=streamz/tests/test_kafka.py
-  '';
+  disabledTests = [
+    # test_tcp_async fails on sandbox build
+    "test_tcp_async"
+    "test_tcp"
+    "test_partition_timeout"
+    # flaky
+    "test_from_iterable_backpressure"
+  ];
+  disabledTestPaths = [
+    # disable kafka tests
+    "streamz/tests/test_kafka.py"
+  ];
 
   meta = with lib; {
     description = "Pipelines to manage continuous streams of data";
     homepage = "https://github.com/python-streamz/streamz";
     license = licenses.bsd3;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/strictyaml/default.nix b/nixpkgs/pkgs/development/python-modules/strictyaml/default.nix
index d85113b50d2e..1d74a62babd4 100644
--- a/nixpkgs/pkgs/development/python-modules/strictyaml/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/strictyaml/default.nix
@@ -2,18 +2,18 @@
 , lib
 , fetchPypi
 , isPy27
-, ruamel_yaml
+, ruamel-yaml
 , python-dateutil
 }:
 
 buildPythonPackage rec {
-  version = "1.5.0";
+  version = "1.6.0";
   pname = "strictyaml";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "273a6382cc98a404d20779351cd5bb12e746397fbe18a8e9ccec4ae3c0ffa0e2";
+    sha256 = "73fa9769214a310486d7916453a09bd38b07d28a9dcbdf27719183c1d7d949f6";
   };
 
   postPatch = ''
@@ -21,7 +21,7 @@ buildPythonPackage rec {
       --replace "ruamel.yaml==0.17.4" "ruamel.yaml"
   '';
 
-  propagatedBuildInputs = [ ruamel_yaml python-dateutil ];
+  propagatedBuildInputs = [ ruamel-yaml python-dateutil ];
 
   # Library tested with external tool
   # https://hitchdev.com/approach/contributing-to-hitch-libraries/
diff --git a/nixpkgs/pkgs/development/python-modules/stringtemplate/default.nix b/nixpkgs/pkgs/development/python-modules/stringtemplate/default.nix
deleted file mode 100644
index 336a371c0714..000000000000
--- a/nixpkgs/pkgs/development/python-modules/stringtemplate/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib, fetchurl, buildPythonPackage, antlr2, isPy3k }:
-
-buildPythonPackage rec {
-  pname = "PyStringTemplate";
-  version = "3.2b1";
-
-  src = fetchurl {
-    url = "https://www.stringtemplate.org/download/${pname}-${version}.tar.gz";
-    sha256 = "0lbib0l8c1q7i1j610rwcdagymr1idahrql4dkgnm5rzyg2vk3ml";
-  };
-
-  propagatedBuildInputs = [ antlr2 ];
-
-  disabled = isPy3k;
-
-  # No tests included in archive
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://www.stringtemplate.org/";
-    description = "Text Templating Library";
-    platforms = platforms.linux;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/stripe/default.nix b/nixpkgs/pkgs/development/python-modules/stripe/default.nix
index 384d7e3902ed..4acad30ea322 100644
--- a/nixpkgs/pkgs/development/python-modules/stripe/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/stripe/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "stripe";
-  version = "2.61.0";
+  version = "2.64.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8131addd3512a22c4c539dda2d869a8f488e06f1b02d1f3a5f0f4848fc56184e";
+    sha256 = "2f4b2175046104e4fcd8a2689a68bb9828a857814126d2ed13772cf2554fb93e";
   };
 
   propagatedBuildInputs = [ requests ];
diff --git a/nixpkgs/pkgs/development/python-modules/striprtf/default.nix b/nixpkgs/pkgs/development/python-modules/striprtf/default.nix
new file mode 100644
index 000000000000..3f941d59dac7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/striprtf/default.nix
@@ -0,0 +1,21 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "striprtf";
+  version = "0.0.17";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "e122b5d334cda9b0edb3eeb8910f01d0ffb02eaca054facd75b17b98fcf646f5";
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/joshy/striprtf";
+    description = "A simple library to convert rtf to text";
+    maintainers = with maintainers; [ aanderse ];
+    license = with licenses; [ bsd3 ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/structlog/default.nix b/nixpkgs/pkgs/development/python-modules/structlog/default.nix
index 3d1a8f8af674..2e90d3350dbe 100644
--- a/nixpkgs/pkgs/development/python-modules/structlog/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/structlog/default.nix
@@ -1,9 +1,8 @@
 { lib
 , buildPythonPackage
-, fetchPypi
-, pytest
+, fetchFromGitHub
+, pytestCheckHook
 , pytest-asyncio
-, python-rapidjson
 , pretend
 , freezegun
 , twisted
@@ -14,25 +13,23 @@
 
 buildPythonPackage rec {
   pname = "structlog";
-  version = "21.2.0";
+  version = "21.4.0";
+  format = "flit";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "7ac42b565e1295712313f91edbcb64e0840a9037d888c8954f11fa6c43270e99";
+  # sdist is missing conftest.py
+  src = fetchFromGitHub {
+    owner = "hynek";
+    repo = "structlog";
+    rev = version;
+    sha256 = "sha256-uXFSrC1TvQV46uu0sadC3eMq7yk5TnrpQE8m6NSv1Bg=";
   };
 
-  checkInputs = [ pytest pytest-asyncio pretend freezegun simplejson twisted ]
-    ++ lib.optionals (pythonAtLeast "3.6") [ python-rapidjson ];
+  checkInputs = [ pytestCheckHook pytest-asyncio pretend freezegun simplejson twisted ];
   propagatedBuildInputs = [ six ];
 
-  checkPhase = ''
-    # rm tests/test_twisted.py*
-    py.test
-  '';
-
   meta = {
     description = "Painless structural logging";
-    homepage = "http://www.structlog.org/";
+    homepage = "https://github.com/hynek/structlog";
     license = lib.licenses.asl20;
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/stumpy/default.nix b/nixpkgs/pkgs/development/python-modules/stumpy/default.nix
index a72ca40c21a1..00e8306a25d4 100644
--- a/nixpkgs/pkgs/development/python-modules/stumpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/stumpy/default.nix
@@ -16,13 +16,13 @@
 
 buildPythonPackage rec {
   pname = "stumpy";
-  version = "1.9.2";
+  version = "1.10.2";
 
   src = fetchFromGitHub {
     owner = "TDAmeritrade";
     repo = "stumpy";
     rev = "v${version}";
-    sha256 = "0x5kac8fqsi3fkfwjdn0d7anslprxaz6cizky9cyj0rpbp0b0yc3";
+    sha256 = "1v17lxqgvkd3n33c2y1j1zy74xy92vsx2l89yhan89msnnb7aafr";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/subarulink/default.nix b/nixpkgs/pkgs/development/python-modules/subarulink/default.nix
index 6abaa02d703b..1b6d1033c456 100644
--- a/nixpkgs/pkgs/development/python-modules/subarulink/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/subarulink/default.nix
@@ -12,14 +12,16 @@
 
 buildPythonPackage rec {
   pname = "subarulink";
-  version = "0.3.15";
+  version = "0.3.16";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "G-Two";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-akDccWkiFwTwq7dvUxm34BFNS5PnQowqnxVvkPFzxLM=";
+    sha256 = "sha256-7waY5AOONi+u056JRH9KcoBWSB4AlMw4QcMW0uoCARc=";
   };
 
   propagatedBuildInputs = [
@@ -35,7 +37,8 @@ buildPythonPackage rec {
   ];
 
   postPatch = ''
-    substituteInPlace setup.cfg --replace "--cov=subarulink" ""
+    substituteInPlace setup.cfg \
+      --replace "--cov=subarulink" ""
   '';
 
   __darwinAllowLocalNetworking = true;
@@ -44,7 +47,9 @@ buildPythonPackage rec {
     export HOME=$(mktemp -d)
   '';
 
-  pythonImportsCheck = [ "subarulink" ];
+  pythonImportsCheck = [
+    "subarulink"
+  ];
 
   meta = with lib; {
     description = "Python module for interacting with STARLINK-enabled vehicle";
diff --git a/nixpkgs/pkgs/development/python-modules/subliminal/default.nix b/nixpkgs/pkgs/development/python-modules/subliminal/default.nix
index e334608bd4dc..9188ad223eaa 100644
--- a/nixpkgs/pkgs/development/python-modules/subliminal/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/subliminal/default.nix
@@ -7,7 +7,7 @@
 , beautifulsoup4
 , requests
 , click
-, dogpile_cache
+, dogpile-cache
 , stevedore
 , chardet
 , pysrt
@@ -34,7 +34,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     guessit babelfish enzyme beautifulsoup4 requests
-    click dogpile_cache stevedore chardet pysrt six
+    click dogpile-cache stevedore chardet pysrt six
     appdirs rarfile pytz
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/subprocess-tee/default.nix b/nixpkgs/pkgs/development/python-modules/subprocess-tee/default.nix
index e2e9ad081eaa..aae41b915beb 100644
--- a/nixpkgs/pkgs/development/python-modules/subprocess-tee/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/subprocess-tee/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "subprocess-tee";
-  version = "0.3.2";
+  version = "0.3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "01b0z8mcm568v9carhi0py1hs34wrbnlzyvdmhqzipql407kdpk2";
+    sha256 = "ff5cced589a4b8ac973276ca1ba21bb6e3de600cde11a69947ff51f696efd577";
   };
 
   nativeBuildInputs = [
@@ -24,6 +24,11 @@ buildPythonPackage rec {
     enrich
   ];
 
+  disabledTests = [
+    # cyclic dependency on `molecule` (see https://github.com/pycontribs/subprocess-tee/issues/50)
+    "test_molecule"
+  ];
+
   pythonImportsCheck = [
     "subprocess_tee"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/subprocess32/default.nix b/nixpkgs/pkgs/development/python-modules/subprocess32/default.nix
deleted file mode 100644
index 3fc4378fc34d..000000000000
--- a/nixpkgs/pkgs/development/python-modules/subprocess32/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, isPyPy
-, bash
-, python
-}:
-
-buildPythonPackage rec {
-  pname = "subprocess32";
-  version = "3.5.4";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "eb2937c80497978d181efa1b839ec2d9622cf9600a039a79d0e108d1f9aec79d";
-  };
-
-  buildInputs = [ bash ];
-
-  preConfigure = ''
-    substituteInPlace test_subprocess32.py \
-      --replace '/usr/' '${bash}/'
-  '';
-
-  doCheck = !isPyPy;
-  checkPhase = ''
-    ${python.interpreter} test_subprocess32.py
-  '';
-
-  meta = {
-    homepage = "https://pypi.python.org/pypi/subprocess32";
-    description = "Backport of the subprocess module from Python 3.2.5 for use on 2.x";
-    maintainers = with lib.maintainers; [ ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/subzerod/default.nix b/nixpkgs/pkgs/development/python-modules/subzerod/default.nix
new file mode 100644
index 000000000000..e4f3e531b0cb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/subzerod/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "subzerod";
+  version = "1.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-/7g8Upj9Hb4m83JXLI3X2lqa9faCt42LVxh+V9WpI68=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "subzerod"
+  ];
+
+  meta = with lib; {
+    description = "Python module to help with the enumeration of subdomains";
+    homepage = "https://github.com/sanderfoobar/subzerod";
+    license = with licenses; [ wtfpl ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/suds/default.nix b/nixpkgs/pkgs/development/python-modules/suds/default.nix
deleted file mode 100644
index 1a96df26da1d..000000000000
--- a/nixpkgs/pkgs/development/python-modules/suds/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "suds";
-  version = "0.4";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1w4s9051iv90c0gs73k80c3d51y2wbx1xgfdgg2hk7mv4gjlllnm";
-  };
-
-  patches = [ ./suds-0.4-CVE-2013-2217.patch ];
-
-  meta = with lib; {
-    # Broken for security issues:
-    # - https://github.com/NixOS/nixpkgs/issues/19678
-    # - https://lwn.net/Vulnerabilities/559200/
-    broken = true;
-    description = "Lightweight SOAP client";
-    homepage = "https://fedorahosted.org/suds";
-    license = licenses.lgpl3Plus;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/suds/suds-0.4-CVE-2013-2217.patch b/nixpkgs/pkgs/development/python-modules/suds/suds-0.4-CVE-2013-2217.patch
deleted file mode 100644
index 235fc1f928c0..000000000000
--- a/nixpkgs/pkgs/development/python-modules/suds/suds-0.4-CVE-2013-2217.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- suds.orig/suds/cache.py	2013-06-29 16:26:16.930326017 +0200
-+++ suds.orig/suds/cache.py	2013-06-29 16:02:15.000000000 +0200
-@@ -19,6 +19,7 @@ 
- """
- 
- import os
-+import tempfile
- import suds
- from tempfile import gettempdir as tmp
- from suds.transport import *
-@@ -138,7 +139,7 @@ 
-         @type duration: {unit:value}
-         """
-         if location is None:
--            location = os.path.join(tmp(), 'suds')
-+            location = tempfile.mkdtemp()
-         self.location = location
-         self.duration = (None, 0)
-         self.setduration(**duration)
diff --git a/nixpkgs/pkgs/development/python-modules/sunpy/default.nix b/nixpkgs/pkgs/development/python-modules/sunpy/default.nix
index 943bbd22c7fb..2bb07b37301e 100644
--- a/nixpkgs/pkgs/development/python-modules/sunpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sunpy/default.nix
@@ -31,12 +31,12 @@
 
 buildPythonPackage rec {
   pname = "sunpy";
-  version = "3.0.2";
+  version = "3.1.2";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5dcd2c5cbf2f419da00abde00798d067b515c2f082ce63f4fbe1de47682c1c41";
+    sha256 = "5eeb479c3f2424bf46355165249a1caa849872f8bee525349c4dca4d15b271fd";
   };
 
   nativeBuildInputs = [
@@ -86,6 +86,20 @@ buildPythonPackage rec {
   disabledTestPaths = [
     "sunpy/io/special/asdf/schemas/sunpy.org/sunpy/coordinates/frames/helioprojective-1.0.0.yaml"
     "sunpy/io/special/asdf/schemas/sunpy.org/sunpy/coordinates/frames/heliocentric-1.0.0.yaml"
+    # requires mpl-animators package
+    "sunpy/map/tests/test_compositemap.py"
+    "sunpy/map/tests/test_mapbase.py"
+    "sunpy/map/tests/test_mapsequence.py"
+    "sunpy/map/tests/test_plotting.py"
+    "sunpy/map/tests/test_reproject_to.py"
+    "sunpy/net/tests/test_helioviewer.py"
+    "sunpy/timeseries/tests/test_timeseriesbase.py"
+    "sunpy/visualization/animator/tests/test_basefuncanimator.py"
+    "sunpy/visualization/animator/tests/test_mapsequenceanimator.py"
+    "sunpy/visualization/animator/tests/test_wcs.py"
+    "sunpy/visualization/colormaps/tests/test_cm.py"
+    # requires cdflib package
+    "sunpy/timeseries/tests/test_timeseries_factory.py"
   ];
 
   pytestFlagsArray = [
diff --git a/nixpkgs/pkgs/development/python-modules/superqt/default.nix b/nixpkgs/pkgs/development/python-modules/superqt/default.nix
new file mode 100644
index 000000000000..9890a7000a9a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/superqt/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools-scm
+, pyqt5
+, typing-extensions
+, pytest
+, pytestCheckHook
+}: buildPythonPackage rec {
+  pname = "superqt";
+  version = "0.2.5-1";
+  src = fetchFromGitHub {
+    owner = "napari";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-rkTiCJ8mIogS9SDmLPiaAyhhuBx3kk6rXjCc19zbwiM=";
+  };
+  format = "pyproject";
+  nativeBuildInputs = [ setuptools-scm ];
+  propagatedBuildInputs = [ pyqt5 typing-extensions ];
+  checkInputs = [ pytestCheckHook pytest ];
+  doCheck = false; # Segfaults...
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  meta = with lib; {
+    description = "Missing widgets and components for Qt-python (napari/superqt)";
+    homepage = "https://github.com/napari/superqt";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ SomeoneSerge ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/supervisor/default.nix b/nixpkgs/pkgs/development/python-modules/supervisor/default.nix
index a7153b07750f..9af3db2de490 100644
--- a/nixpkgs/pkgs/development/python-modules/supervisor/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/supervisor/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, buildPythonPackage, isPy3k, fetchPypi
+{ stdenv, lib, buildPythonPackage, fetchPypi
 , mock
 , pytest
 , setuptools
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "supervisor";
-  version = "4.2.2";
+  version = "4.2.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5b2b8882ec8a3c3733cce6965cc098b6d80b417f21229ab90b18fe551d619f90";
+    sha256 = "40dc582ce1eec631c3df79420b187a6da276bbd68a4ec0a8f1f123ea616b97a2";
   };
 
   # wants to write to /tmp/foo which is likely already owned by another
diff --git a/nixpkgs/pkgs/development/python-modules/sure/default.nix b/nixpkgs/pkgs/development/python-modules/sure/default.nix
index b8bb9a36586a..84cc78e8a4a8 100644
--- a/nixpkgs/pkgs/development/python-modules/sure/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sure/default.nix
@@ -5,6 +5,7 @@
 , six
 , mock
 , isPyPy
+, fetchpatch
 }:
 
 buildPythonPackage rec {
@@ -17,6 +18,14 @@ buildPythonPackage rec {
     sha256 = "34ae88c846046742ef074036bf311dc90ab152b7bc09c342b281cebf676727a2";
   };
 
+  patches = [
+    # https://github.com/gabrielfalcao/sure/issues/169
+    (fetchpatch {
+      url = "https://raw.githubusercontent.com/archlinux/svntogit-community/055baa81cd987e566de62a5657513937521a90d4/trunk/python310.diff";
+      sha256 = "sha256-BKylV8xpTOuO/X4hzZKpoIcAQcdAK0kXYENRad7AGPc=";
+    })
+  ];
+
   buildInputs = [ rednose ];
   propagatedBuildInputs = [ six mock ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/surepy/default.nix b/nixpkgs/pkgs/development/python-modules/surepy/default.nix
index 1d0b938d4944..9759443228d0 100644
--- a/nixpkgs/pkgs/development/python-modules/surepy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/surepy/default.nix
@@ -20,6 +20,7 @@ buildPythonPackage rec {
   pname = "surepy";
   version = "0.7.2";
   format = "pyproject";
+
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
@@ -31,8 +32,8 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace 'click = "^7.1.2"' 'click = "*"' \
-      --replace 'attrs = "^20.3.0"' 'attrs = "*"'
+      --replace 'aiohttp = {extras = ["speedups"], version = "^3.7.4"}' 'aiohttp = {extras = ["speedups"], version = ">=3.7.4"}' \
+      --replace 'async-timeout = "^3.0.1"' 'async-timeout = ">=3.0.1"'
   '';
 
   nativeBuildInputs = [
@@ -56,7 +57,9 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "surepy" ];
+  pythonImportsCheck = [
+    "surepy"
+  ];
 
   meta = with lib; {
     description = "Python library to interact with the Sure Petcare API";
diff --git a/nixpkgs/pkgs/development/python-modules/svgwrite/default.nix b/nixpkgs/pkgs/development/python-modules/svgwrite/default.nix
index 7799583f8dcf..5b1e863c7785 100644
--- a/nixpkgs/pkgs/development/python-modules/svgwrite/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/svgwrite/default.nix
@@ -1,20 +1,19 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, isPy3k
 , pythonOlder
 , pytest
 }:
 
 buildPythonPackage rec {
   pname = "svgwrite";
-  version = "1.4";
+  version = "1.4.1";
 
   src = fetchFromGitHub {
     owner = "mozman";
     repo = "svgwrite";
     rev = "v${version}";
-    sha256 = "15xjz5b4dw1sg3a5k4wmzky4h5v1n937id8vl6hha1a2xj42z2s5";
+    sha256 = "sha256-d//ZUFb5yj51uD1fb6yJJROaQ2MLyfA3Pa84TblqLNk=";
   };
 
   # svgwrite requires Python 3.6 or newer
diff --git a/nixpkgs/pkgs/development/python-modules/swagger-spec-validator/default.nix b/nixpkgs/pkgs/development/python-modules/swagger-spec-validator/default.nix
index bdb78096aef2..71c9cf16780e 100644
--- a/nixpkgs/pkgs/development/python-modules/swagger-spec-validator/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/swagger-spec-validator/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pyyaml, jsonschema, six, pytest, mock, isPy3k }:
+{ lib, buildPythonPackage, fetchFromGitHub, pyyaml, jsonschema, six, pytest, mock }:
 
 buildPythonPackage rec {
   pname = "swagger-spec-validator";
diff --git a/nixpkgs/pkgs/development/python-modules/swagger-ui-bundle/default.nix b/nixpkgs/pkgs/development/python-modules/swagger-ui-bundle/default.nix
index 9dbd29739fe8..e44fd471bc79 100644
--- a/nixpkgs/pkgs/development/python-modules/swagger-ui-bundle/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/swagger-ui-bundle/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "swagger-ui-bundle";
-  version = "0.0.6";
+  version = "0.0.9";
 
   src = fetchPypi {
     pname = "swagger_ui_bundle";
     inherit version;
-    sha256 = "1lqxz7q9l2iwf7w11nhw5lnglsh1lgcvq8ydvhabkcc76il3ndy5";
+    sha256 = "b462aa1460261796ab78fd4663961a7f6f347ce01760f1303bbbdf630f11f516";
   };
 
   # patch away unused test requirements since package contains no tests
diff --git a/nixpkgs/pkgs/development/python-modules/swspotify/default.nix b/nixpkgs/pkgs/development/python-modules/swspotify/default.nix
index 020e4fe1472f..df2c00ad7c0f 100644
--- a/nixpkgs/pkgs/development/python-modules/swspotify/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/swspotify/default.nix
@@ -1,29 +1,31 @@
-{ lib, buildPythonPackage, fetchFromGitHub, requests, flask-cors, dbus-python, pytestCheckHook, mock, isPy27 }:
+{ lib, stdenv, buildPythonPackage, fetchFromGitHub, requests
+, pytestCheckHook, flask, flask-cors, dbus-python, mock, isPy27 }:
 
 buildPythonPackage rec {
   pname = "SwSpotify";
-  version = "1.2.1";
+  version = "1.2.2";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "SwagLyrics";
     repo = "SwSpotify";
     rev = "v${version}";
-    sha256 = "0jxcvy8lw8kpjbl4q6mi11164pvi0w9m9p76bxj2m7i7s5p4dxd4";
+    sha256 = "sha256-571knnY8LegIbqyPeKUfl+d0suTWAMQHYLN7edKFNdI=";
   };
 
   propagatedBuildInputs = [
-    requests flask-cors dbus-python
+    requests flask flask-cors dbus-python
   ];
 
-  preConfigure = ''
+  postPatch = ''
     substituteInPlace setup.py \
-      --replace 'requests>=2.24.0' 'requests~=2.23' \
-      --replace 'flask-cors==3.0.8' 'flask-cors'
+      --replace 'flask==2.0.1' 'flask'
   '';
 
+  doCheck = !stdenv.isDarwin;
+
   checkPhase = ''
-    pytest tests/test_spotify.py::LinuxTests
+    pytest tests/test_spotify.py::${if stdenv.isDarwin then "DarwinTests" else "LinuxTests"}
   '';
 
   checkInputs = [ pytestCheckHook mock ];
@@ -35,6 +37,6 @@ buildPythonPackage rec {
     description = "Library to get the currently playing song and artist from Spotify";
     license = licenses.mit;
     maintainers = with maintainers; [ siraben ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/sybase/default.nix b/nixpkgs/pkgs/development/python-modules/sybase/default.nix
deleted file mode 100644
index 5a14e7e7f40e..000000000000
--- a/nixpkgs/pkgs/development/python-modules/sybase/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, isPy3k
-, freetds
-}:
-
-buildPythonPackage rec {
-  pname = "python-sybase";
-  version = "0.40pre2";
-  disabled = isPy3k;
-
-  src = fetchurl {
-    url = "https://sourceforge.net/projects/python-sybase/files/python-sybase/${pname}-${version}/${pname}-${version}.tar.gz";
-    sha256 = "0pm88hyn18dy7ljam4mdx9qqgmgraf2zy2wl02g5vsjl4ncvq90j";
-  };
-
-  propagatedBuildInputs = [ freetds ];
-
-  SYBASE = freetds;
-  setupPyBuildFlags = [ "-DHAVE_FREETDS" "-UWANT_BULKCOPY" ];
-
-  meta = with lib; {
-    description = "The Sybase module provides a Python interface to the Sybase relational database system";
-    homepage    = "http://python-sybase.sourceforge.net";
-    license     = licenses.bsd3;
-    maintainers = with maintainers; [ veprbl ];
-    platforms   = platforms.unix;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/sympy/1_5.nix b/nixpkgs/pkgs/development/python-modules/sympy/1_5.nix
deleted file mode 100644
index 00125f43bfc3..000000000000
--- a/nixpkgs/pkgs/development/python-modules/sympy/1_5.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, glibcLocales
-, mpmath
-}:
-
-buildPythonPackage rec {
-  pname = "sympy";
-  version = "1.5.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "d77901d748287d15281f5ffe5b0fef62dd38f357c2b827c44ff07f35695f4e7e";
-  };
-
-  checkInputs = [ glibcLocales ];
-
-  propagatedBuildInputs = [ mpmath ];
-
-  # tests take ~1h
-  doCheck = false;
-  pythonImportsCheck = [ "sympy" ];
-
-  preCheck = ''
-    export LANG="en_US.UTF-8"
-  '';
-
-  meta = with lib; {
-    description = "A Python library for symbolic mathematics";
-    homepage    = "https://www.sympy.org/";
-    license     = licenses.bsd3;
-    maintainers = with maintainers; [ lovek323 ] ++ teams.sage.members;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/sympy/default.nix b/nixpkgs/pkgs/development/python-modules/sympy/default.nix
index 0d9cf098e662..7d6206f04c80 100644
--- a/nixpkgs/pkgs/development/python-modules/sympy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sympy/default.nix
@@ -1,18 +1,17 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , glibcLocales
 , mpmath
 }:
 
 buildPythonPackage rec {
   pname = "sympy";
-  version = "1.8";
+  version = "1.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1ca588a9f6ce6a323c5592f9635159c2093572826668a1022c75c75bdf0297cb";
+    sha256 = "c7a880e229df96759f955d4f3970d4cabce79f60f5b18830c08b90ce77cd5fdc";
   };
 
   checkInputs = [ glibcLocales ];
diff --git a/nixpkgs/pkgs/development/python-modules/systembridge/default.nix b/nixpkgs/pkgs/development/python-modules/systembridge/default.nix
index 8f6d86abdd9b..34403930602c 100644
--- a/nixpkgs/pkgs/development/python-modules/systembridge/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/systembridge/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "systembridge";
-  version = "2.2.0";
+  version = "2.2.3";
 
   src = fetchFromGitHub {
     owner = "timmo001";
     repo = "system-bridge-connector-py";
     rev = "v${version}";
-    sha256 = "sha256-VR5juaZdZaEo7S0XXJkspcKmH1alitNIWmI0g/dFBbM=";
+    sha256 = "sha256-AVMZBhf15eZM9oMUFyiHYs866P1v5z1pbTvX2Qpjzfc=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/tableaudocumentapi/default.nix b/nixpkgs/pkgs/development/python-modules/tableaudocumentapi/default.nix
index 56a3b27e7b96..06a445450e5c 100644
--- a/nixpkgs/pkgs/development/python-modules/tableaudocumentapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tableaudocumentapi/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "tableaudocumentapi";
-  version = "0.7";
+  version = "0.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5b1d04817a0fba43d58e1ce23c64ad8dfe54dc029ba5ccae3908944555bb13e0";
+    sha256 = "0c7d01f01758dd6e50ff2fc915c6087c0da17298635e6635581aaf25c934d6ce";
   };
 
   # tests not inclued with release
diff --git a/nixpkgs/pkgs/development/python-modules/tables/3.5.nix b/nixpkgs/pkgs/development/python-modules/tables/3.5.nix
deleted file mode 100644
index efc47a1ad3f4..000000000000
--- a/nixpkgs/pkgs/development/python-modules/tables/3.5.nix
+++ /dev/null
@@ -1,56 +0,0 @@
-{ lib, fetchPypi, python, buildPythonPackage
-, cython, bzip2, lzo, numpy, numexpr, hdf5, six, c-blosc, mock }:
-
-buildPythonPackage rec {
-  version = "3.5.2";
-  pname = "tables";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1hikrki0hx94ass31pn0jyz9iy0zhnkjacfk86m21cxsc8if685j";
-  };
-
-  buildInputs = [ hdf5 cython bzip2 lzo c-blosc ];
-  propagatedBuildInputs = [ numpy numexpr six mock ];
-
-  # The setup script complains about missing run-paths, but they are
-  # actually set.
-  setupPyBuildFlags = [
-    "--hdf5=${lib.getDev hdf5}"
-    "--lzo=${lib.getDev lzo}"
-    "--bzip2=${lib.getDev bzip2}"
-    "--blosc=${lib.getDev c-blosc}"
-  ];
-  # Run the test suite.
-  # It requires the build path to be in the python search path.
-  # These tests take quite some time.
-  # If the hdf5 library is built with zlib then there is only one
-  # test-failure. That is the same failure as described in the following
-  # github issue:
-  #     https://github.com/PyTables/PyTables/issues/269
-  checkPhase = ''
-    ${python.interpreter} <<EOF
-    import sysconfig
-    import sys
-    import os
-    f = "lib.{platform}-{version[0]}.{version[1]}"
-    lib = f.format(platform=sysconfig.get_platform(),
-                   version=sys.version_info)
-    build = os.path.join(os.getcwd(), 'build', lib)
-    sys.path.insert(0, build)
-    import tables
-    r = tables.test()
-    if not r.wasSuccessful():
-        sys.exit(1)
-    EOF
-  '';
-
-  # Disable tests until the failure described above is fixed.
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Hierarchical datasets for Python";
-    homepage = "http://www.pytables.org/";
-    license = licenses.bsd2;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/tables/default.nix b/nixpkgs/pkgs/development/python-modules/tables/default.nix
index 34e9ef087a9b..245e619e89e0 100644
--- a/nixpkgs/pkgs/development/python-modules/tables/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tables/default.nix
@@ -1,10 +1,8 @@
 { lib
 , fetchPypi
-, fetchurl
 , fetchpatch
 , buildPythonPackage
 , pythonOlder
-, python
 , bzip2
 , c-blosc
 , cython
diff --git a/nixpkgs/pkgs/development/python-modules/tablib/default.nix b/nixpkgs/pkgs/development/python-modules/tablib/default.nix
index 404edac7e59b..4558b3afb26a 100644
--- a/nixpkgs/pkgs/development/python-modules/tablib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tablib/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "tablib";
-  version = "3.0.0";
+  version = "3.1.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f83cac08454f225a34a305daa20e2110d5e6335135d505f93bc66583a5f9c10d";
+    sha256 = "d64c9f6712918a3d90ec5d71b44b8bab1083e3609e4844ad2be80eb633e097ed";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/nixpkgs/pkgs/development/python-modules/tago/default.nix b/nixpkgs/pkgs/development/python-modules/tago/default.nix
new file mode 100644
index 000000000000..220c8f2b0bb7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tago/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, promise
+, python-socketio
+, pythonOlder
+, requests
+, websockets
+}:
+
+buildPythonPackage rec {
+  pname = "tago";
+  version = "3.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "tago-io";
+    repo = "tago-sdk-python";
+    rev = version;
+    sha256 = "sha256-eu6n83qmo1PQKnR/ellto04xi/3egl+LSKMOG277X1k=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    promise
+    python-socketio
+    requests
+    websockets
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "tago"
+  ];
+
+  meta = with lib; {
+    description = "Python module for interacting with Tago.io";
+    homepage = "https://github.com/tago-io/tago-sdk-python";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tailscale/default.nix b/nixpkgs/pkgs/development/python-modules/tailscale/default.nix
new file mode 100644
index 000000000000..96016b3f0d4d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tailscale/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, aiohttp
+, aresponses
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pydantic
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, yarl
+}:
+
+buildPythonPackage rec {
+  pname = "tailscale";
+  version = "0.1.6";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "frenck";
+    repo = "python-tailscale";
+    rev = "v${version}";
+    sha256 = "1dkmjc78mhgbikfz6mi6g63a36w6v29pdbb3pvgpicg0l649rsc9";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    pydantic
+    yarl
+  ];
+
+  checkInputs = [
+    aresponses
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    # Upstream doesn't set a version for the pyproject.toml
+    substituteInPlace pyproject.toml \
+      --replace "0.0.0" "${version}" \
+      --replace "--cov" ""
+  '';
+
+  pythonImportsCheck = [
+    "tailscale"
+  ];
+
+  meta = with lib; {
+    description = "Python client for the Tailscale API";
+    homepage = "https://github.com/frenck/python-tailscale";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tarman/default.nix b/nixpkgs/pkgs/development/python-modules/tarman/default.nix
deleted file mode 100644
index c2a2c4405e28..000000000000
--- a/nixpkgs/pkgs/development/python-modules/tarman/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, unittest2
-, nose
-, mock
-, libarchive
-}:
-
-buildPythonPackage rec {
-  version = "0.1.3";
-  pname = "tarman";
-
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0ri6gj883k042xaxa2d5ymmhbw2bfcxdzhh4bz7700ibxwxxj62h";
-  };
-
-  buildInputs = [ unittest2 nose mock ];
-  propagatedBuildInputs = [ libarchive ];
-
-  # tests are still failing
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://github.com/matejc/tarman";
-    description = "Archive manager with curses interface";
-    license = licenses.bsd0;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/taskw/default.nix b/nixpkgs/pkgs/development/python-modules/taskw/default.nix
index 80d86c3edb01..ac8a55e24d80 100644
--- a/nixpkgs/pkgs/development/python-modules/taskw/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/taskw/default.nix
@@ -11,12 +11,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.3.0";
+  version = "1.3.1";
   pname = "taskw";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7673d80b3d5bace5b35eb71f5035e313a92daab6e437694128d8ce7dcdaf66fb";
+    sha256 = "1a68e49cac2d4f6da73c0ce554fd6f94932d95e20596f2ee44a769a28c12ba7d";
   };
 
   patches = [ ./use-template-for-taskwarrior-install-path.patch ];
diff --git a/nixpkgs/pkgs/development/python-modules/telethon/default.nix b/nixpkgs/pkgs/development/python-modules/telethon/default.nix
index c4479ca63201..a7ee01105a67 100644
--- a/nixpkgs/pkgs/development/python-modules/telethon/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/telethon/default.nix
@@ -1,13 +1,13 @@
-{ lib, buildPythonPackage, fetchPypi, openssl, async_generator, rsa, pyaes, pythonOlder }:
+{ lib, buildPythonPackage, fetchPypi, openssl, rsa, pyaes, pythonOlder }:
 
 buildPythonPackage rec {
   pname = "telethon";
-  version = "1.23.0";
+  version = "1.24.0";
 
   src = fetchPypi {
     inherit version;
     pname = "Telethon";
-    sha256 = "sha256-unVRzkR+lUqtZ/PuukurdXTMoHosb0HlvmmQTm4OwxM=";
+    sha256 = "818cb61281ed3f75ba4da9b68cb69486bed9474d2db4e0aa16e482053117452c";
   };
 
   patchPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/tempest/default.nix b/nixpkgs/pkgs/development/python-modules/tempest/default.nix
index c85e4f5b29fe..5fa1ad4c539b 100644
--- a/nixpkgs/pkgs/development/python-modules/tempest/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tempest/default.nix
@@ -29,11 +29,11 @@
 
 buildPythonApplication rec {
   pname = "tempest";
-  version = "29.0.0";
+  version = "29.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2045963560f91241c56940af741f081e59212c65c9867dfcdabfe07f9dd4d255";
+    sha256 = "0521d3042360c0fb469b16f99174a9abddbae8a2d2a81268cfc664f1ccfdd0f9";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/tempora/default.nix b/nixpkgs/pkgs/development/python-modules/tempora/default.nix
index 7bd7605fc3ff..e9cd3e84fee5 100644
--- a/nixpkgs/pkgs/development/python-modules/tempora/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tempora/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "tempora";
-  version = "4.1.1";
+  version = "4.1.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c54da0f05405f04eb67abbb1dff4448fd91428b58cb00f0f645ea36f6a927950";
+    sha256 = "fd6cafd66b01390d53a760349cf0b3123844ec6ae3d1043d7190473ea9459138";
   };
 
   disabled = pythonOlder "3.2";
diff --git a/nixpkgs/pkgs/development/python-modules/tensorboard-plugin-profile/default.nix b/nixpkgs/pkgs/development/python-modules/tensorboard-plugin-profile/default.nix
index 843b9d6c3199..f31c42e774b7 100644
--- a/nixpkgs/pkgs/development/python-modules/tensorboard-plugin-profile/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tensorboard-plugin-profile/default.nix
@@ -25,7 +25,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Profile Tensorboard Plugin.";
-    homepage = http://tensorflow.org;
+    homepage = "http://tensorflow.org";
     license = licenses.asl20;
     maintainers = with maintainers; [ ndl ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/tensorboardx/default.nix b/nixpkgs/pkgs/development/python-modules/tensorboardx/default.nix
index 603d2a1cc2b2..2127d2275678 100644
--- a/nixpkgs/pkgs/development/python-modules/tensorboardx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tensorboardx/default.nix
@@ -63,6 +63,9 @@ buildPythonPackage rec {
   disabledTestPaths = [
     # we are not interested in linting errors
     "tests/test_lint.py"
+    # breaks with `RuntimeError: cannot schedule new futures after interpreter shutdown`
+    # Upstream tracking bug: https://github.com/lanpa/tensorboardX/issues/652
+    "tests/test_pr_curve.py"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow-estimator/default.nix b/nixpkgs/pkgs/development/python-modules/tensorflow-estimator/default.nix
index dd3b4641beaf..5ad6d0ab6e55 100644
--- a/nixpkgs/pkgs/development/python-modules/tensorflow-estimator/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow-estimator/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "tensorflow-estimator";
-  version = "2.4.0";
+  version = "2.7.0";
   format = "wheel";
 
   src = fetchPypi {
     pname = "tensorflow_estimator";
     inherit version format;
-    sha256 = "1w0pkcslm6934qqd6m5gxyjdlnb4pbl47k6s99wsh6dyvvr7nysv";
+    hash = "sha256-MltaIkhkN5JCt7dsaYfKVEI5voJXnTPmjsfCvaV6vJ0=";
   };
 
   propagatedBuildInputs = [ mock numpy absl-py ];
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/bin.nix b/nixpkgs/pkgs/development/python-modules/tensorflow/bin.nix
index 8d8690d3e5c5..221c75112b9b 100644
--- a/nixpkgs/pkgs/development/python-modules/tensorflow/bin.nix
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow/bin.nix
@@ -2,8 +2,7 @@
 , lib
 , fetchurl
 , buildPythonPackage
-, isPy3k, pythonOlder, pythonAtLeast, isPy38
-, astor
+, isPy3k, pythonOlder, pythonAtLeast, astor
 , gast
 , google-pasta
 , wrapt
@@ -18,14 +17,14 @@
 , wheel
 , opt-einsum
 , backports_weakref
-, tensorflow-estimator_2
-, tensorflow-tensorboard_2
+, tensorflow-estimator
+, tensorflow-tensorboard
 , cudaSupport ? false
-, cudatoolkit ? null
-, cudnn ? null
+, cudatoolkit
+, cudnn
+, patchelfUnstable
 , zlib
 , python
-, symlinkJoin
 , keras-applications
 , keras-preprocessing
 , addOpenGLRunpath
@@ -39,26 +38,16 @@
 # - the source build doesn't work on Darwin.
 # - the source build is currently brittle and not easy to maintain
 
-assert cudaSupport -> cudatoolkit != null
-                   && cudnn != null;
-
 # unsupported combination
 assert ! (stdenv.isDarwin && cudaSupport);
 
 let
   packages = import ./binary-hashes.nix;
-
-  variant = if cudaSupport then "-gpu" else "";
-  pname = "tensorflow${variant}";
-  metadataPatch = ./relax-dependencies-metadata.patch;
-  patch = ./relax-dependencies.patch;
 in buildPythonPackage {
-  inherit pname;
+  pname = "tensorflow" + lib.optionalString cudaSupport "-gpu";
   inherit (packages) version;
   format = "wheel";
 
-  disabled = pythonAtLeast "3.9";
-
   src = let
     pyVerNoDot = lib.strings.stringAsChars (x: if x == "." then "" else x) python.pythonVersion;
     platform = if stdenv.isDarwin then "mac" else "linux";
@@ -82,15 +71,16 @@ in buildPythonPackage {
     opt-einsum
     google-pasta
     wrapt
-    tensorflow-estimator_2
-    tensorflow-tensorboard_2
+    tensorflow-estimator
+    tensorflow-tensorboard
     keras-applications
     keras-preprocessing
     h5py
   ] ++ lib.optional (!isPy3k) mock
     ++ lib.optionals (pythonOlder "3.4") [ backports_weakref ];
 
-  nativeBuildInputs = [ wheel ] ++ lib.optional cudaSupport addOpenGLRunpath;
+  # remove patchelfUnstable once patchelf 0.14 with https://github.com/NixOS/patchelf/pull/256 becomes the default
+  nativeBuildInputs = [ wheel ] ++ lib.optional cudaSupport [ addOpenGLRunpath patchelfUnstable ];
 
   preConfigure = ''
     unset SOURCE_DATE_EPOCH
@@ -101,13 +91,18 @@ in buildPythonPackage {
     pushd dist
 
     wheel unpack --dest unpacked ./*.whl
+    rm ./*.whl
     (
       cd unpacked/tensorflow*
-      # relax too strict versions in setup.py
-      patch -p 1 < ${patch}
-      cd *.dist-info
-      # relax too strict versions in *.dist-info/METADATA
-      patch -p 3 < ${metadataPatch}
+      # Adjust dependency requirements:
+      # - Relax gast version requirement that doesn't match what we have packaged
+      # - The purpose of python3Packages.libclang is not clear at the moment and we don't have it packaged yet
+      # - keras and tensorlow-io-gcs-filesystem will be considered as optional for now.
+      sed -i *.dist-info/METADATA \
+        -e "s/Requires-Dist: gast.*/Requires-Dist: gast/" \
+        -e "/Requires-Dist: libclang/d" \
+        -e "/Requires-Dist: keras/d" \
+        -e "/Requires-Dist: tensorflow-io-gcs-filesystem/d"
     )
     wheel pack ./unpacked/tensorflow*
 
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/binary-hashes.nix b/nixpkgs/pkgs/development/python-modules/tensorflow/binary-hashes.nix
index 4485e2b61451..4b2f9d528407 100644
--- a/nixpkgs/pkgs/development/python-modules/tensorflow/binary-hashes.nix
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow/binary-hashes.nix
@@ -1,39 +1,39 @@
 {
-version = "2.4.0";
-linux_py_36_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.4.0-cp36-cp36m-manylinux2010_x86_64.whl";
-  sha256 = "0pn0cjf50q0xsv6k0vihrz22kr392anznvdhxv80gk52c6lcgmsc";
-};
+version = "2.7.0";
 linux_py_37_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.4.0-cp37-cp37m-manylinux2010_x86_64.whl";
-  sha256 = "0mdd83c0invqfy58qmpa3hk4yml5ic7wlwggyd5wpikadlv8vq89";
+  url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.7.0-cp37-cp37m-manylinux2010_x86_64.whl";
+  sha256 = "1irw4ri1fbxbj251cnjbr12gxsyj2k30asxjfxjpxhc9b0cchhx0";
 };
 linux_py_38_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.4.0-cp38-cp38-manylinux2010_x86_64.whl";
-  sha256 = "1mm1yz9aj3v6fxfpxh7wy37rvsncr0b5y6glqlcxmhr6mqfp8k6d";
+  url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.7.0-cp38-cp38-manylinux2010_x86_64.whl";
+  sha256 = "11a1rimr998lvvjdg03rqr8h2h7x6bbd4gyv74biwgaxmjczvjdj";
 };
-linux_py_36_gpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-2.4.0-cp36-cp36m-manylinux2010_x86_64.whl";
-  sha256 = "113iygiq2kmj97g0glhcqng6rhl3rrj1iqw5xj1d5hla8xjy8cfv";
+linux_py_39_cpu = {
+  url = "https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.7.0-cp39-cp39-manylinux2010_x86_64.whl";
+  sha256 = "0x1zzmgq7hl2k98p8870h0yhaik39nc1ckvxirjx8simpj8ghsbp";
 };
 linux_py_37_gpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-2.4.0-cp37-cp37m-manylinux2010_x86_64.whl";
-  sha256 = "19ap8xx2j5nbmnqv5rzf1ryfvw2fbs6bm0fxjqrvhc3jxys6yqqs";
+  url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-2.7.0-cp37-cp37m-manylinux2010_x86_64.whl";
+  sha256 = "1x5yyxzkly9gdyhcfq4x7w7sqqxh6cw5qnfwbvzj5349xwrm63wi";
 };
 linux_py_38_gpu = {
-  url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-2.4.0-cp38-cp38-manylinux2010_x86_64.whl";
-  sha256 = "0ly3cinzj6j3b547sw8bd3p774khn3b14cgrj7nvfrz668d3f89x";
+  url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-2.7.0-cp38-cp38-manylinux2010_x86_64.whl";
+  sha256 = "0prxa8yc6lbq62vnh8cw6dhcrnkdjih62kbg6pbw4gmgcbf6v6fg";
 };
-mac_py_36_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.4.0-cp36-cp36m-macosx_10_14_x86_64.whl";
-  sha256 = "1b5ld1wj48l1i5s3vk8db5m578zdg4xfl0m1lc8w5lx1vi4cwsjp";
+linux_py_39_gpu = {
+  url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-2.7.0-cp39-cp39-manylinux2010_x86_64.whl";
+  sha256 = "0jjv8vm20d0airml68bxhassp4yg09rcz2a39aa511cz8mavj0l6";
 };
 mac_py_37_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.4.0-cp37-cp37m-macosx_10_14_x86_64.whl";
-  sha256 = "1mgfyjgcwvx5jzawrpfnbch5sqw7kpnzp35rfxj22kwdsl28r47r";
+  url = "https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.7.0-cp37-cp37m-macosx_10_11_x86_64.whl";
+  sha256 = "1gr95ck0h4wzhdacjfhkzxdw4zglm85fc54swqhyzzv1f5n9vw8j";
 };
 mac_py_38_cpu = {
-  url = "https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.4.0-cp38-cp38-macosx_10_14_x86_64.whl";
-  sha256 = "034qh0nk786wxzma58179g086x479c3pd9vi8v8p26grs6f2fm0p";
+  url = "https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.7.0-cp38-cp38-macosx_10_11_x86_64.whl";
+  sha256 = "1h3qlvlrwyvxynh5flvyqk7grbvyqc21ljqhlvds436hpn2kqrgb";
+};
+mac_py_39_cpu = {
+  url = "https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-2.7.0-cp39-cp39-macosx_10_11_x86_64.whl";
+  sha256 = "0pyj1p2yik6ysdqn8n6cz1nqni0s9xx51ifmvdx4dl3hrzp86jz2";
 };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/default.nix b/nixpkgs/pkgs/development/python-modules/tensorflow/default.nix
index c077265bf632..776fbaa18019 100644
--- a/nixpkgs/pkgs/development/python-modules/tensorflow/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow/default.nix
@@ -1,18 +1,18 @@
 { stdenv, bazel_3, buildBazelPackage, isPy3k, lib, fetchFromGitHub, symlinkJoin
-, addOpenGLRunpath, fetchpatch
+, addOpenGLRunpath, fetchpatch, patchelfUnstable
 # Python deps
-, buildPythonPackage, pythonOlder, pythonAtLeast, python
+, buildPythonPackage, pythonOlder, python
 # Python libraries
-, numpy, tensorflow-tensorboard_2, absl-py
-, future, setuptools, wheel, keras-preprocessing, google-pasta
+, numpy, tensorflow-tensorboard, absl-py
+, setuptools, wheel, keras, keras-preprocessing, google-pasta
 , opt-einsum, astunparse, h5py
-, termcolor, grpcio, six, wrapt, protobuf, tensorflow-estimator_2
+, termcolor, grpcio, six, wrapt, protobuf-python, tensorflow-estimator
 , dill, flatbuffers-python, tblib, typing-extensions
 # Common deps
 , git, pybind11, which, binutils, glibcLocales, cython, perl
 # Common libraries
 , jemalloc, mpi, gast, grpc, sqlite, boringssl, jsoncpp
-, curl, snappy, flatbuffers-core, lmdb-core, icu, double-conversion, libpng, libjpeg_turbo, giflib
+, curl, snappy, flatbuffers-core, lmdb-core, icu, double-conversion, libpng, libjpeg_turbo, giflib, protobuf-core
 # Upsteam by default includes cuda support since tensorflow 1.15. We could do
 # that in nix as well. It would make some things easier and less confusing, but
 # it would also make the default tensorflow package unfree. See
@@ -28,7 +28,7 @@
 , avx2Support  ? stdenv.hostPlatform.avx2Support
 , fmaSupport   ? stdenv.hostPlatform.fmaSupport
 # Darwin deps
-, Foundation, Security
+, Foundation, Security, cctools, llvmPackages_11
 }:
 
 assert cudaSupport -> cudatoolkit != null
@@ -72,7 +72,7 @@ let
 
   tfFeature = x: if x then "1" else "0";
 
-  version = "2.4.2";
+  version = "2.7.0";
   variant = if cudaSupport then "-gpu" else "";
   pname = "tensorflow${variant}";
 
@@ -90,19 +90,94 @@ let
       keras-preprocessing
       numpy
       opt-einsum
-      protobuf
+      protobuf-python
       setuptools
       six
       tblib
-      tensorflow-estimator_2
-      tensorflow-tensorboard_2
+      tensorflow-estimator
+      tensorflow-tensorboard
       termcolor
       typing-extensions
       wheel
       wrapt
   ]);
 
-  bazel-build = buildBazelPackage {
+  rules_cc_darwin_patched = stdenv.mkDerivation {
+    name = "rules_cc-${pname}-${version}";
+
+    src = _bazel-build.deps;
+
+    prePatch = "pushd rules_cc";
+    patches = [
+      # https://github.com/bazelbuild/rules_cc/issues/122
+      (fetchpatch {
+        name = "tensorflow-rules_cc-libtool-path.patch";
+        url = "https://github.com/bazelbuild/rules_cc/commit/8c427ab30bf213630dc3bce9d2e9a0e29d1787db.diff";
+        sha256 = "sha256-C4v6HY5+jm0ACUZ58gBPVejCYCZfuzYKlHZ0m2qDHCk=";
+      })
+
+      # https://github.com/bazelbuild/rules_cc/pull/124
+      (fetchpatch {
+        name = "tensorflow-rules_cc-install_name_tool-path.patch";
+        url = "https://github.com/bazelbuild/rules_cc/commit/156497dc89100db8a3f57b23c63724759d431d05.diff";
+        sha256 = "sha256-NES1KeQmMiUJQVoV6dS4YGRxxkZEjOpFSCyOq9HZYO0=";
+      })
+    ];
+    postPatch = "popd";
+
+    dontConfigure = true;
+    dontBuild = true;
+
+    installPhase = ''
+      runHook preInstall
+
+      mv rules_cc/ "$out"
+
+      runHook postInstall
+    '';
+  };
+  llvm-raw_darwin_patched = stdenv.mkDerivation {
+    name = "llvm-raw-${pname}-${version}";
+
+    src = _bazel-build.deps;
+
+    prePatch = "pushd llvm-raw";
+    patches = [
+      # Fix a vendored config.h that requires the 10.13 SDK
+      ./llvm_bazel_fix_macos_10_12_sdk.patch
+    ];
+    postPatch = ''
+      touch {BUILD,WORKSPACE}
+      popd
+    '';
+
+    dontConfigure = true;
+    dontBuild = true;
+
+    installPhase = ''
+      runHook preInstall
+
+      mv llvm-raw/ "$out"
+
+      runHook postInstall
+    '';
+  };
+  bazel-build = if stdenv.isDarwin then _bazel-build.overrideAttrs (prev: {
+    bazelBuildFlags = prev.bazelBuildFlags ++ [
+      "--override_repository=rules_cc=${rules_cc_darwin_patched}"
+      "--override_repository=llvm-raw=${llvm-raw_darwin_patched}"
+    ];
+    preBuild = ''
+      export AR="${cctools}/bin/libtool"
+    '';
+  }) else _bazel-build;
+
+  _bazel-build = (buildBazelPackage.override (lib.optionalAttrs stdenv.isDarwin {
+    # clang 7 fails to emit a symbol for
+    # __ZN4llvm11SmallPtrSetIPKNS_10AllocaInstELj8EED1Ev in any of the
+    # translation units, so the build fails at link time
+    stdenv = llvmPackages_11.stdenv;
+  })) {
     name = "${pname}-${version}";
     bazel = bazel_3;
 
@@ -110,27 +185,19 @@ let
       owner = "tensorflow";
       repo = "tensorflow";
       rev = "v${version}";
-      sha256 = "07a2y05hixch1bjag5pzw3p1m7bdj3bq4gdvmsfk2xraz49b1pi8";
+      sha256 = "sha256-n7jRDPeXsyq4pEWSWmOCas4c8VsArIKlCuwvSU/Ro/c=";
     };
 
     patches = [
-      # included from 2.6.0 onwards
-      (fetchpatch {
-        name = "fix-numpy-1.20-notimplementederror.patch";
-        url = "https://github.com/tensorflow/tensorflow/commit/b258941525f496763d4277045b6513c815720e3a.patch";
-        sha256 = "19f9bzrcfsynk11s2hqvscin5c65zf7r6g3nb10jnimw79vafiry";
-      })
-      # Relax too strict Python packages versions dependencies.
-      ./relax-dependencies.patch
-      # Add missing `io_bazel_rules_docker` dependency.
-      ./workspace.patch
+      # Patch the sources to compile with protobuf >= 3.16.
+      ./system-protobuf.patch
     ];
 
     # On update, it can be useful to steal the changes from gentoo
     # https://gitweb.gentoo.org/repo/gentoo.git/tree/sci-libs/tensorflow
 
     nativeBuildInputs = [
-      which pythonEnv cython perl
+      which pythonEnv cython perl protobuf-core
     ] ++ lib.optional cudaSupport addOpenGLRunpath;
 
     buildInputs = [
@@ -179,12 +246,7 @@ let
       # "com_github_googleapis_googleapis"
       # "com_github_googlecloudplatform_google_cloud_cpp"
       "com_github_grpc_grpc"
-      # Multiple issues with custom protobuf.
-      # First `com_github_googleapis` fails to configure. Can be worked around by disabling `com_github_googleapis`
-      # and related functionality, but then the next error is about "dangling symbolic link", and in general
-      # looks like that's only the beginning: see
-      # https://stackoverflow.com/questions/55578884/how-to-build-tensorflow-1-13-1-with-custom-protobuf
-      # "com_google_protobuf"
+      "com_google_protobuf"
       # Fails with the error: external/org_tensorflow/tensorflow/core/profiler/utils/tf_op_utils.cc:46:49: error: no matching function for call to 're2::RE2::FullMatch(absl::lts_2020_02_25::string_view&, re2::RE2&)'
       # "com_googlesource_code_re2"
       "curl"
@@ -206,7 +268,6 @@ let
       "opt_einsum_archive"
       "org_sqlite"
       "pasta"
-      "pcre"
       "png"
       "pybind11"
       "six_archive"
@@ -220,6 +281,11 @@ let
 
     INCLUDEDIR = "${includes_joined}/include";
 
+    # This is needed for the Nix-provided protobuf dependency to work,
+    # as otherwise the rule `link_proto_files` tries to create the links
+    # to `/usr/include/...` which results in build failures.
+    PROTOBUF_INCLUDE_PATH = "${protobuf-core}/include";
+
     PYTHON_BIN_PATH = pythonEnv.interpreter;
 
     TF_NEED_GCP = true;
@@ -283,6 +349,7 @@ let
     bazelBuildFlags = [
       "--config=opt" # optimize using the flags set in the configure phase
     ]
+    ++ lib.optionals stdenv.cc.isClang [ "--cxxopt=-x" "--cxxopt=c++" "--host_cxxopt=-x" "--host_cxxopt=c++" ]
     ++ lib.optionals (mklSupport) [ "--config=mkl" ];
 
     bazelTarget = "//tensorflow/tools/pip_package:build_pip_package //tensorflow/tools/lib_package:libtensorflow";
@@ -294,9 +361,12 @@ let
     fetchAttrs = {
       # cudaSupport causes fetch of ncclArchive, resulting in different hashes
       sha256 = if cudaSupport then
-        "10m6qj3kchgxfgb6qh59vc51knm9r9pkng8bf90h00dnggvv8234"
+        "sha256-+szc2mRoImwijzbj3nw6HmZp3DeRjjPRU5yC+5AEbkg="
       else
-        "04a98yrp09nd0p17k0jbzkgjppxs0yma7m5zkfrwgvr4g0w71v68";
+        if stdenv.isDarwin then
+          "sha256-+bwIzp6t7gRJPcI8B5oyuf9z0AjCAyggUR7x+vv5kFs="
+        else
+          "sha256-5yOYmeGpJq4Chi55H7iblxyRXVktgnePtpYTPvBs538=";
     };
 
     buildAttrs = {
@@ -343,6 +413,7 @@ let
       license = licenses.asl20;
       maintainers = with maintainers; [ jyp abbradar ];
       platforms = with platforms; linux ++ darwin;
+      timeout = 86400; # 24 hours, needed for darwin
       broken = !(xlaSupport -> cudaSupport);
     };
   };
@@ -353,6 +424,18 @@ in buildPythonPackage {
 
   src = bazel-build.python;
 
+  # Adjust dependency requirements:
+  # - Relax gast version requirement that doesn't match what we have packaged
+  # - The purpose of python3Packages.libclang is not clear at the moment and we don't have it packaged yet
+  # - keras and tensorlow-io-gcs-filesystem will be considered as optional for now.
+  postPatch = ''
+    sed -i setup.py \
+      -e "s/'gast[^']*',/'gast',/" \
+      -e "/'libclang[^']*',/d" \
+      -e "/'keras[^']*',/d" \
+      -e "/'tensorflow-io-gcs-filesystem[^']*',/d"
+  '';
+
   # Upstream has a pip hack that results in bin/tensorboard being in both tensorflow
   # and the propagated input tensorflow-tensorboard, which causes environment collisions.
   # Another possibility would be to have tensorboard only in the buildInputs
@@ -376,18 +459,19 @@ in buildPythonPackage {
     keras-preprocessing
     numpy
     opt-einsum
-    protobuf
+    protobuf-python
     six
     tblib
-    tensorflow-estimator_2
+    tensorflow-estimator
     termcolor
     typing-extensions
     wrapt
   ] ++ lib.optionals withTensorboard [
-    tensorflow-tensorboard_2
+    tensorflow-tensorboard
   ];
 
-  nativeBuildInputs = lib.optional cudaSupport addOpenGLRunpath;
+  # remove patchelfUnstable once patchelf 0.14 with https://github.com/NixOS/patchelf/pull/256 becomes the default
+  nativeBuildInputs = lib.optional cudaSupport [ addOpenGLRunpath patchelfUnstable ];
 
   postFixup = lib.optionalString cudaSupport ''
     find $out -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do
@@ -400,6 +484,7 @@ in buildPythonPackage {
   # Actual tests are slow and impure.
   # TODO try to run them anyway
   # TODO better test (files in tensorflow/tools/ci_build/builds/*test)
+  checkInputs = [ keras ];
   checkPhase = ''
     ${python.interpreter} <<EOF
     # A simple "Hello world"
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/llvm_bazel_fix_macos_10_12_sdk.patch b/nixpkgs/pkgs/development/python-modules/tensorflow/llvm_bazel_fix_macos_10_12_sdk.patch
new file mode 100644
index 000000000000..6a858765c6a3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow/llvm_bazel_fix_macos_10_12_sdk.patch
@@ -0,0 +1,12 @@
+diff -ru a/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/config.h b/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/config.h
+--- a/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/config.h	2021-09-21 15:57:02.000000000 -0400
++++ b/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/config.h	2021-11-20 18:48:48.000000000 -0500
+@@ -102,7 +102,7 @@
+ /* #undef HAVE_FFI_H */
+ 
+ /* Define to 1 if you have the `futimens' function. */
+-#define HAVE_FUTIMENS 1
++/* #define HAVE_FUTIMENS 1 */
+ 
+ /* Define to 1 if you have the `futimes' function. */
+ #define HAVE_FUTIMES 1
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/prefetcher.sh b/nixpkgs/pkgs/development/python-modules/tensorflow/prefetcher.sh
index 8b22affa17a8..bb189bb06d65 100755
--- a/nixpkgs/pkgs/development/python-modules/tensorflow/prefetcher.sh
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow/prefetcher.sh
@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 
-version="2.4.0"
+version="2.7.0"
 
 bucket="https://storage.googleapis.com/tensorflow"
 
@@ -8,15 +8,15 @@ bucket="https://storage.googleapis.com/tensorflow"
 # on the following page:
 # https://www.tensorflow.org/install/pip?lang=python3#package-location
 url_and_key_list=(
-"linux_py_36_cpu $bucket/linux/cpu/tensorflow_cpu-${version}-cp36-cp36m-manylinux2010_x86_64.whl"
 "linux_py_37_cpu $bucket/linux/cpu/tensorflow_cpu-${version}-cp37-cp37m-manylinux2010_x86_64.whl"
 "linux_py_38_cpu $bucket/linux/cpu/tensorflow_cpu-${version}-cp38-cp38-manylinux2010_x86_64.whl"
-"linux_py_36_gpu $bucket/linux/gpu/tensorflow_gpu-${version}-cp36-cp36m-manylinux2010_x86_64.whl"
+"linux_py_39_cpu $bucket/linux/cpu/tensorflow_cpu-${version}-cp39-cp39-manylinux2010_x86_64.whl"
 "linux_py_37_gpu $bucket/linux/gpu/tensorflow_gpu-${version}-cp37-cp37m-manylinux2010_x86_64.whl"
 "linux_py_38_gpu $bucket/linux/gpu/tensorflow_gpu-${version}-cp38-cp38-manylinux2010_x86_64.whl"
-"mac_py_36_cpu $bucket/mac/cpu/tensorflow-${version}-cp36-cp36m-macosx_10_14_x86_64.whl"
-"mac_py_37_cpu $bucket/mac/cpu/tensorflow-${version}-cp37-cp37m-macosx_10_14_x86_64.whl"
-"mac_py_38_cpu $bucket/mac/cpu/tensorflow-${version}-cp38-cp38-macosx_10_14_x86_64.whl"
+"linux_py_39_gpu $bucket/linux/gpu/tensorflow_gpu-${version}-cp39-cp39-manylinux2010_x86_64.whl"
+"mac_py_37_cpu $bucket/mac/cpu/tensorflow-${version}-cp37-cp37m-macosx_10_11_x86_64.whl"
+"mac_py_38_cpu $bucket/mac/cpu/tensorflow-${version}-cp38-cp38-macosx_10_11_x86_64.whl"
+"mac_py_39_cpu $bucket/mac/cpu/tensorflow-${version}-cp39-cp39-macosx_10_11_x86_64.whl"
 )
 
 hashfile=binary-hashes.nix
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/relax-dependencies-metadata.patch b/nixpkgs/pkgs/development/python-modules/tensorflow/relax-dependencies-metadata.patch
deleted file mode 100644
index 1be4fd5bc7d5..000000000000
--- a/nixpkgs/pkgs/development/python-modules/tensorflow/relax-dependencies-metadata.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-diff -ur unpacked/tensorflow-2.4.0/tensorflow-2.4.0.dist-info/METADATA unpacked.new/tensorflow-2.4.0/tensorflow-2.4.0.dist-info/METADATA
---- unpacked/tensorflow-2.4.0/tensorflow-2.4.0.dist-info/METADATA	2021-05-06 23:51:40.298995191 -0700
-+++ unpacked.new/tensorflow-2.4.0/tensorflow-2.4.0.dist-info/METADATA	2021-05-07 00:03:49.856882153 -0700
-@@ -27,24 +27,24 @@
- Classifier: Topic :: Software Development :: Libraries
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
- Description-Content-Type: text/markdown
--Requires-Dist: absl-py (~=0.10)
--Requires-Dist: astunparse (~=1.6.3)
--Requires-Dist: flatbuffers (~=1.12.0)
--Requires-Dist: google-pasta (~=0.2)
--Requires-Dist: h5py (~=2.10.0)
--Requires-Dist: keras-preprocessing (~=1.1.2)
--Requires-Dist: numpy (~=1.19.2)
--Requires-Dist: opt-einsum (~=3.3.0)
--Requires-Dist: protobuf (>=3.9.2)
--Requires-Dist: six (~=1.15.0)
--Requires-Dist: termcolor (~=1.1.0)
--Requires-Dist: typing-extensions (~=3.7.4)
--Requires-Dist: wheel (~=0.35)
--Requires-Dist: wrapt (~=1.12.1)
--Requires-Dist: gast (==0.3.3)
--Requires-Dist: tensorboard (~=2.4)
--Requires-Dist: tensorflow-estimator (<2.5.0,>=2.4.0rc0)
--Requires-Dist: grpcio (~=1.32.0)
-+Requires-Dist: absl-py
-+Requires-Dist: astunparse
-+Requires-Dist: flatbuffers
-+Requires-Dist: google-pasta
-+Requires-Dist: h5py
-+Requires-Dist: keras-preprocessing
-+Requires-Dist: numpy
-+Requires-Dist: opt-einsum
-+Requires-Dist: protobuf
-+Requires-Dist: six
-+Requires-Dist: termcolor
-+Requires-Dist: typing-extensions
-+Requires-Dist: wheel
-+Requires-Dist: wrapt
-+Requires-Dist: gast
-+Requires-Dist: tensorboard
-+Requires-Dist: tensorflow-estimator
-+Requires-Dist: grpcio
- 
- [![Python](https://img.shields.io/pypi/pyversions/tensorflow.svg?style=plastic)](https://badge.fury.io/py/tensorflow)
- [![PyPI](https://badge.fury.io/py/tensorflow.svg)](https://badge.fury.io/py/tensorflow)
\ No newline at end of file
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/relax-dependencies.patch b/nixpkgs/pkgs/development/python-modules/tensorflow/relax-dependencies.patch
deleted file mode 100644
index b26c1e95a645..000000000000
--- a/nixpkgs/pkgs/development/python-modules/tensorflow/relax-dependencies.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-diff --git a/tensorflow/tools/pip_package/setup.py b/tensorflow/tools/pip_package/setup.py
-index 65133afdafe..8ef6364ff7e 100644
---- a/tensorflow/tools/pip_package/setup.py
-+++ b/tensorflow/tools/pip_package/setup.py
-@@ -75,23 +75,23 @@ if '--project_name' in sys.argv:
- # comment the versioning scheme.
- # NOTE: Please add test only packages to `TEST_PACKAGES` below.
- REQUIRED_PACKAGES = [
--    'absl-py ~= 0.10',
--    'astunparse ~= 1.6.3',
--    'flatbuffers ~= 1.12.0',
--    'google_pasta ~= 0.2',
--    'h5py ~= 2.10.0',
--    'keras_preprocessing ~= 1.1.2',
--    'numpy ~= 1.19.2',
--    'opt_einsum ~= 3.3.0',
-+    'absl-py >= 0.10',
-+    'astunparse >= 1.6.3',
-+    'flatbuffers >= 1.12.0',
-+    'google_pasta >= 0.2',
-+    'h5py >= 2.10.0',
-+    'keras_preprocessing >= 1.1.2',
-+    'numpy >= 1.19.1',
-+    'opt_einsum >= 3.3.0',
-     'protobuf >= 3.9.2',
--    'six ~= 1.15.0',
--    'termcolor ~= 1.1.0',
--    'typing_extensions ~= 3.7.4',
--    'wheel ~= 0.35',
--    'wrapt ~= 1.12.1',
-+    'six >= 1.15.0',
-+    'termcolor >= 1.1.0',
-+    'typing_extensions >= 3.7.4',
-+    'wheel >= 0.34.2',
-+    'wrapt >= 1.12.1',
-     # These packages needs to be pinned exactly as newer versions are
-     # incompatible with the rest of the ecosystem
--    'gast == 0.3.3',
-+    'gast >= 0.3.3',
-     # TensorFlow ecosystem packages that TF exposes API for
-     # These need to be in sync with the existing TF version
-     # They are updated during the release process
-@@ -118,7 +118,7 @@ if 'tf_nightly' in project_name:
- # BoringSSL support.
- # See https://github.com/tensorflow/tensorflow/issues/17882.
- if sys.byteorder == 'little':
--  REQUIRED_PACKAGES.append('grpcio ~= 1.32.0')
-+  REQUIRED_PACKAGES.append('grpcio >= 1.31.0')
- 
- 
- # Packages which are only needed for testing code.
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/system-protobuf.patch b/nixpkgs/pkgs/development/python-modules/tensorflow/system-protobuf.patch
new file mode 100644
index 000000000000..dce6df810464
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tensorflow/system-protobuf.patch
@@ -0,0 +1,13 @@
+diff --git a/tensorflow/core/kernels/example_parsing_ops.cc b/tensorflow/core/kernels/example_parsing_ops.cc
+index a1265cfb5c6..ada919bbd7b 100644
+--- a/tensorflow/core/kernels/example_parsing_ops.cc
++++ b/tensorflow/core/kernels/example_parsing_ops.cc
+@@ -1218,7 +1218,7 @@ class DecodeJSONExampleOp : public OpKernel {
+           resolver_.get(), "type.googleapis.com/tensorflow.Example", &in, &out);
+       OP_REQUIRES(ctx, status.ok(),
+                   errors::InvalidArgument("Error while parsing JSON: ",
+-                                          string(status.error_message())));
++                                          string(status.message())));
+     }
+   }
+ 
diff --git a/nixpkgs/pkgs/development/python-modules/tensorflow/workspace.patch b/nixpkgs/pkgs/development/python-modules/tensorflow/workspace.patch
deleted file mode 100644
index 15a527815ec3..000000000000
--- a/nixpkgs/pkgs/development/python-modules/tensorflow/workspace.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff --git a/WORKSPACE b/WORKSPACE
-index 9db1d9b80eb..c46f13f4ca4 100644
---- a/WORKSPACE
-+++ b/WORKSPACE
-@@ -12,6 +12,13 @@ http_archive(
-     ],
- )
- 
-+http_archive(
-+    name = "io_bazel_rules_docker",
-+    sha256 = "1698624e878b0607052ae6131aa216d45ebb63871ec497f26c67455b34119c80",
-+    strip_prefix = "rules_docker-0.15.0",
-+    urls = ["https://github.com/bazelbuild/rules_docker/releases/download/v0.15.0/rules_docker-v0.15.0.tar.gz"],
-+)
-+
- # Load tf_repositories() before loading dependencies for other repository so
- # that dependencies like com_google_protobuf won't be overridden.
- load("//tensorflow:workspace.bzl", "tf_repositories")
diff --git a/nixpkgs/pkgs/development/python-modules/terminado/default.nix b/nixpkgs/pkgs/development/python-modules/terminado/default.nix
index aff355d963ce..28b0eb09dbed 100644
--- a/nixpkgs/pkgs/development/python-modules/terminado/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/terminado/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "terminado";
-  version = "0.11.1";
+  version = "0.12.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "962b402edbb480718054dc37027bada293972ecadfb587b89f01e2b8660a2132";
+    sha256 = "b20fd93cc57c1678c799799d117874367cc07a3d2d55be95205b1a88fa08393f";
   };
 
   propagatedBuildInputs = [ ptyprocess tornado ];
diff --git a/nixpkgs/pkgs/development/python-modules/termplotlib/default.nix b/nixpkgs/pkgs/development/python-modules/termplotlib/default.nix
index 492d51dcb2ca..fde1080491e0 100644
--- a/nixpkgs/pkgs/development/python-modules/termplotlib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/termplotlib/default.nix
@@ -1,4 +1,5 @@
 { lib
+, substituteAll
 , buildPythonPackage
 , fetchFromGitHub
 , pytestCheckHook
@@ -9,23 +10,38 @@
 
 buildPythonPackage rec {
   pname = "termplotlib";
-  version = "0.3.8";
+  version = "0.3.9";
 
   src = fetchFromGitHub {
     owner = "nschloe";
     repo = pname;
     rev = "v${version}";
-    sha256 = "10k70pb7554cc2zwkcgxfak8nb7iqqw6njbnaqfdz07l4v9f6smm";
+    sha256 = "1qfrv2w7vb2bbjvd5lqfq57c23iqkry0pwmif1ha3asmz330rja1";
   };
 
   format = "pyproject";
-  checkInputs = [ pytestCheckHook numpy exdown gnuplot ];
+  checkInputs = [
+    pytestCheckHook
+    exdown
+  ];
   pythonImportsCheck = [ "termplotlib" ];
 
-  # there seems to be a newline in the very front of the output
-  # which causes the test to fail, since it apparently doesn't
-  # strip whitespace. might be a gnuplot choice? sigh...
-  disabledTests = [ "test_plot_lim" ];
+  propagatedBuildInputs = [ numpy ];
+
+  patches = [
+    (substituteAll {
+      src = ./gnuplot-subprocess.patch;
+      gnuplot = "${gnuplot.out}/bin/gnuplot";
+    })
+  ];
+
+  # The current gnuplot version renders slightly different test
+  # graphs, with emphasis on slightly. The plots are still correct.
+  # Tests pass on gnuplot 5.4.1, but fail on 5.4.2.
+  disabledTests = [
+    "test_plot"
+    "test_nolabel"
+  ];
 
   meta = with lib; {
     description = "matplotlib for your terminal";
diff --git a/nixpkgs/pkgs/development/python-modules/termplotlib/gnuplot-subprocess.patch b/nixpkgs/pkgs/development/python-modules/termplotlib/gnuplot-subprocess.patch
new file mode 100644
index 000000000000..5935dbda1265
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/termplotlib/gnuplot-subprocess.patch
@@ -0,0 +1,26 @@
+diff --git a/src/termplotlib/helpers.py b/src/termplotlib/helpers.py
+index 4b67fd0..38a2242 100644
+--- a/src/termplotlib/helpers.py
++++ b/src/termplotlib/helpers.py
+@@ -32,7 +32,7 @@ def is_unicode_standard_output():
+ 
+ 
+ def get_gnuplot_version():
+-    out = subprocess.check_output(["gnuplot", "--version"]).decode()
++    out = subprocess.check_output(["@gnuplot@", "--version"]).decode()
+     m = re.match("gnuplot (\\d).(\\d) patchlevel (\\d)\n", out)
+     if m is None:
+         raise RuntimeError("Couldn't get gnuplot version")
+diff --git a/src/termplotlib/plot.py b/src/termplotlib/plot.py
+index 0f46b87..1418fd1 100644
+--- a/src/termplotlib/plot.py
++++ b/src/termplotlib/plot.py
+@@ -17,7 +17,7 @@ def plot(
+     ticks_scale: int = 0,
+ ):
+     p = subprocess.Popen(
+-        ["gnuplot"],
++        ["@gnuplot@"],
+         stdout=subprocess.PIPE,
+         stdin=subprocess.PIPE,
+         stderr=subprocess.PIPE,
diff --git a/nixpkgs/pkgs/development/python-modules/tern/default.nix b/nixpkgs/pkgs/development/python-modules/tern/default.nix
index b8aee5ab9315..e49ff6401454 100644
--- a/nixpkgs/pkgs/development/python-modules/tern/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tern/default.nix
@@ -12,15 +12,16 @@
 , GitPython
 , prettytable
 , idna
+, packageurl-python
 }:
 
 buildPythonPackage rec {
   pname = "tern";
-  version = "2.7.0";
+  version = "2.9.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "cfd59431cafd6adf05ccb94be964098d9301f83a03bf715def7861811e4a4b74";
+    sha256 = "9cb509dba91718feecefd302388a89d4782454f6613e8f931ec8de87a6594de0";
   };
 
   preBuild = ''
@@ -42,6 +43,7 @@ buildPythonPackage rec {
     GitPython
     prettytable
     idna
+    packageurl-python
   ];
 
   # No tests
diff --git a/nixpkgs/pkgs/development/python-modules/tesla-wall-connector/default.nix b/nixpkgs/pkgs/development/python-modules/tesla-wall-connector/default.nix
new file mode 100644
index 000000000000..e814f01320e4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tesla-wall-connector/default.nix
@@ -0,0 +1,54 @@
+{ lib
+, aiohttp
+, aioresponses
+, aresponses
+, backoff
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "tesla-wall-connector";
+  version = "1.0.1";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "einarhauks";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-JBtlGd9aHY8ikhpJ5v7ZcNu3BfLdBmOBZCMa6C0s6gE=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    backoff
+  ];
+
+  checkInputs = [
+    aresponses
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+
+  pythonImportsCheck = [
+    "tesla_wall_connector"
+  ];
+
+  meta = with lib; {
+    description = "Python library for communicating with a Tesla Wall Connector";
+    homepage = "https://github.com/einarhauks/tesla-wall-connector";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/teslajsonpy/default.nix b/nixpkgs/pkgs/development/python-modules/teslajsonpy/default.nix
index 96017e364b3e..19e42e917dd3 100644
--- a/nixpkgs/pkgs/development/python-modules/teslajsonpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/teslajsonpy/default.nix
@@ -5,7 +5,6 @@
 , beautifulsoup4
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , httpx
 , poetry-core
 , pytest-asyncio
@@ -16,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "teslajsonpy";
-  version = "1.1.2";
+  version = "1.4.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -25,7 +24,7 @@ buildPythonPackage rec {
     owner = "zabuldon";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-i1p36qy3UF9dKzFBHaW5w0s75z/mgQ8tlYWe6qLxAKk=";
+    sha256 = "sha256-oablQoumBiqDk7bz1BUpUWddxExoqOofrZzX7y618Hw=";
   };
 
   nativeBuildInputs = [
@@ -46,7 +45,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "teslajsonpy" ];
+  pythonImportsCheck = [
+    "teslajsonpy"
+  ];
 
   meta = with lib; {
     description = "Python library to work with Tesla API";
diff --git a/nixpkgs/pkgs/development/python-modules/testfixtures/default.nix b/nixpkgs/pkgs/development/python-modules/testfixtures/default.nix
index be217a16b07a..99be9957a5ef 100644
--- a/nixpkgs/pkgs/development/python-modules/testfixtures/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/testfixtures/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, fetchpatch
 , fetchPypi
 , isPy27
 , mock
diff --git a/nixpkgs/pkgs/development/python-modules/testtools/default.nix b/nixpkgs/pkgs/development/python-modules/testtools/default.nix
index a07117a1e46d..e2dfdcbe3ece 100644
--- a/nixpkgs/pkgs/development/python-modules/testtools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/testtools/default.nix
@@ -2,7 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , pbr
-, python_mimeparse
+, python-mimeparse
 , extras
 , unittest2
 , traceback2
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     sha256 = "57c13433d94f9ffde3be6534177d10fb0c1507cc499319128958ca91a65cb23f";
   };
 
-  propagatedBuildInputs = [ pbr python_mimeparse extras unittest2 ];
+  propagatedBuildInputs = [ pbr python-mimeparse extras unittest2 ];
   buildInputs = [ traceback2 ];
 
   # testscenarios has a circular dependency on testtools
diff --git a/nixpkgs/pkgs/development/python-modules/textdistance/default.nix b/nixpkgs/pkgs/development/python-modules/textdistance/default.nix
index d4a71dd99628..314a9efd940c 100644
--- a/nixpkgs/pkgs/development/python-modules/textdistance/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/textdistance/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "textdistance";
-  version = "4.2.1";
+  version = "4.2.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "114j3ignw4y9yq1cp08p4bfw518vyr3p0h8ba2mikwy74qxxzy26";
+    sha256 = "a43bb6f71dcccd3fc2060065c9513a7927879680512889749fd1fd800c4bad8e";
   };
 
   # There aren't tests
@@ -18,6 +18,6 @@ buildPythonPackage rec {
     description = "Python library for comparing distance between two or more sequences";
     homepage = "https://github.com/life4/textdistance";
     license = licenses.mit;
-    maintainers = with maintainers; [ eduardosm ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/textfsm/default.nix b/nixpkgs/pkgs/development/python-modules/textfsm/default.nix
index fed2f7c3e3fe..ae9bda2b8b84 100644
--- a/nixpkgs/pkgs/development/python-modules/textfsm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/textfsm/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , six
 , future
 , pytestCheckHook
diff --git a/nixpkgs/pkgs/development/python-modules/thinc/default.nix b/nixpkgs/pkgs/development/python-modules/thinc/default.nix
index f2a70500a5fa..9524f7e44970 100644
--- a/nixpkgs/pkgs/development/python-modules/thinc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/thinc/default.nix
@@ -1,5 +1,5 @@
-{ stdenv
-, lib
+{ lib
+, stdenv
 , buildPythonPackage
 , fetchPypi
 , pytestCheckHook
@@ -7,6 +7,8 @@
 , catalogue
 , cymem
 , cython
+, contextvars
+, dataclasses
 , Accelerate
 , CoreFoundation
 , CoreGraphics
@@ -15,7 +17,6 @@
 , mock
 , murmurhash
 , numpy
-, pathlib
 , plac
 , pythonOlder
 , preshed
@@ -28,17 +29,19 @@
 
 buildPythonPackage rec {
   pname = "thinc";
-  version = "8.0.10";
+  version = "8.0.13";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-teTbjSTmvopfHkoXhUdyt5orVgIkUZ9Qoh85UcokAB8=";
+    sha256 = "sha256-R2YqOuM9RFp3tup7dyREgFx7uomR8SLjUNr3Le3IFxo=";
   };
 
-  buildInputs = [ cython ]
-    ++ lib.optionals stdenv.isDarwin [
+  buildInputs = [
+    cython
+  ] ++ lib.optionals stdenv.isDarwin [
     Accelerate
     CoreFoundation
     CoreGraphics
@@ -57,7 +60,12 @@ buildPythonPackage rec {
     tqdm
     pydantic
     wasabi
-  ] ++ lib.optional (pythonOlder "3.8") typing-extensions;
+  ] ++ lib.optional (pythonOlder "3.8") [
+    typing-extensions
+  ] ++ lib.optional (pythonOlder "3.7") [
+    contextvars
+    dataclasses
+  ];
 
   checkInputs = [
     hypothesis
@@ -72,7 +80,9 @@ buildPythonPackage rec {
     "thinc/tests"
   ];
 
-  pythonImportsCheck = [ "thinc" ];
+  pythonImportsCheck = [
+    "thinc"
+  ];
 
   meta = with lib; {
     description = "Practical Machine Learning for NLP in Python";
diff --git a/nixpkgs/pkgs/development/python-modules/threadloop/default.nix b/nixpkgs/pkgs/development/python-modules/threadloop/default.nix
new file mode 100644
index 000000000000..2fb8dd4420ef
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/threadloop/default.nix
@@ -0,0 +1,30 @@
+{ buildPythonPackage
+, fetchPypi
+, lib
+, tornado
+}:
+
+buildPythonPackage rec {
+  pname = "threadloop";
+  version = "1.0.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "8b180aac31013de13c2ad5c834819771992d350267bddb854613ae77ef571944";
+  };
+
+  propagatedBuildInputs = [
+    tornado
+  ];
+
+  doCheck = false; # ImportError: cannot import name 'ThreadLoop' from 'threadloop'
+
+  pythonImportsCheck = [ "threadloop" ];
+
+  meta = with lib; {
+    description = "A library to run tornado coroutines from synchronous Python";
+    homepage = "https://github.com/GoodPete/threadloop";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/threadpoolctl/default.nix b/nixpkgs/pkgs/development/python-modules/threadpoolctl/default.nix
index 7ba82aaec296..2c85c15ebdd3 100644
--- a/nixpkgs/pkgs/development/python-modules/threadpoolctl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/threadpoolctl/default.nix
@@ -1,6 +1,6 @@
 { lib
 , buildPythonPackage
-, isPy27
+, pythonOlder
 , fetchFromGitHub
 , flit
 , pytestCheckHook
@@ -10,19 +10,24 @@
 
 buildPythonPackage rec {
   pname = "threadpoolctl";
-  version = "2.2.0";
+  version = "3.0.0";
 
-  disabled = isPy27;
+  disabled = pythonOlder "3.6";
   format = "flit";
 
   src = fetchFromGitHub {
     owner = "joblib";
     repo = pname;
     rev = version;
-    sha256 = "7UUjbX1IpXtUAgN48Db43Zr1u360UETSUnIHD6rQRLs=";
+    sha256 = "02zccsiq4gvawy7q2fh3m3hvr40hl2ylmwwny6dv0lqsr2iwgnmn";
   };
 
   checkInputs = [ pytestCheckHook numpy scipy ];
+  disabledTests = [
+    # accepts a limited set of cpu models based on project
+    # developers' hardware
+    "test_architecture"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/joblib/threadpoolctl";
diff --git a/nixpkgs/pkgs/development/python-modules/thumbor/0001-Don-t-use-which-implementation-to-find-required-exec.patch b/nixpkgs/pkgs/development/python-modules/thumbor/0001-Don-t-use-which-implementation-to-find-required-exec.patch
deleted file mode 100644
index 4a2d9df06181..000000000000
--- a/nixpkgs/pkgs/development/python-modules/thumbor/0001-Don-t-use-which-implementation-to-find-required-exec.patch
+++ /dev/null
@@ -1,277 +0,0 @@
-From bd5a5b58b438ff34d27781e28cd7fab93bfc9f3f Mon Sep 17 00:00:00 2001
-From: Maximilian Bosch <maximilian@mbosch.me>
-Date: Sat, 9 Mar 2019 23:26:30 +0100
-Subject: [PATCH] Don't use `which` implementation to find required executables
-
-Nix specific patch.
-
-Rather than relying on a global state, we set an absolute store path for
-all external dependencies to ensure their functionality.
----
- integration_tests/__init__.py       |  4 ++--
- tests/engines/test_gif.py           |  2 +-
- tests/handlers/test_base_handler.py | 30 ++++++++++++++---------------
- tests/optimizers/test_gifv.py       |  2 +-
- tests/test_server.py                |  4 ++++
- tests/test_utils.py                 |  3 +++
- thumbor/server.py                   |  7 +------
- 7 files changed, 26 insertions(+), 26 deletions(-)
-
-diff --git a/integration_tests/__init__.py b/integration_tests/__init__.py
-index 9bdd0a3..7d9de8f 100644
---- a/integration_tests/__init__.py
-+++ b/integration_tests/__init__.py
-@@ -15,7 +15,7 @@ class EngineCase(AsyncHTTPTestCase):
-     def get_app(self):
-         cfg = Config(SECURITY_KEY='ACME-SEC')
-         server_params = ServerParameters(None, None, None, None, None, None)
--        server_params.gifsicle_path = which('gifsicle')
-+        server_params.gifsicle_path = '@gifsicle@'
- 
-         cfg.DETECTORS = [
-             'thumbor.detectors.face_detector',
-@@ -28,7 +28,7 @@ class EngineCase(AsyncHTTPTestCase):
-         cfg.FILE_LOADER_ROOT_PATH = os.path.join(os.path.dirname(__file__), 'imgs')
-         cfg.ENGINE = getattr(self, 'engine', None)
-         cfg.USE_GIFSICLE_ENGINE = True
--        cfg.FFMPEG_PATH = which('ffmpeg')
-+        cfg.FFMPEG_PATH = '@ffmpeg@'
-         cfg.ENGINE_THREADPOOL_SIZE = 10
-         cfg.OPTIMIZERS = [
-             'thumbor.optimizers.gifv',
-diff --git a/tests/engines/test_gif.py b/tests/engines/test_gif.py
-index c0c8430..ce0cc51 100644
---- a/tests/engines/test_gif.py
-+++ b/tests/engines/test_gif.py
-@@ -44,7 +44,7 @@ class GitEngineTestCase(TestCase):
-     def get_server(self):
-         server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
-         server.security_key = 'ACME-SEC'
--        server.gifsicle_path = which('gifsicle')
-+        server.gifsicle_path = '@gifsicle@'
-         return server
- 
-     def get_context(self, *args, **kwargs):
-diff --git a/tests/handlers/test_base_handler.py b/tests/handlers/test_base_handler.py
-index 69dc110..4493abe 100644
---- a/tests/handlers/test_base_handler.py
-+++ b/tests/handlers/test_base_handler.py
-@@ -557,7 +557,7 @@ class ImageOperationsWithAutoWebPTestCase(BaseImagingTestCase):
-         server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
-         server.security_key = 'ACME-SEC'
-         ctx = Context(server, cfg, importer)
--        ctx.server.gifsicle_path = which('gifsicle')
-+        ctx.server.gifsicle_path = '@gifsicle@'
-         return ctx
- 
-     def get_as_webp(self, url):
-@@ -657,7 +657,7 @@ class ImageOperationsWithAutoWebPWithResultStorageTestCase(BaseImagingTestCase):
-         server.security_key = 'ACME-SEC'
-         ctx = Context(server, cfg, importer)
-         ctx.request = self.get_request()
--        ctx.server.gifsicle_path = which('gifsicle')
-+        ctx.server.gifsicle_path = '@gifsicle@'
-         return ctx
- 
-     @property
-@@ -783,7 +783,7 @@ class ImageOperationsWithGifVTestCase(BaseImagingTestCase):
-         cfg = Config(SECURITY_KEY='ACME-SEC')
-         cfg.LOADER = "thumbor.loaders.file_loader"
-         cfg.FILE_LOADER_ROOT_PATH = self.loader_path
--        cfg.FFMPEG_PATH = which('ffmpeg')
-+        cfg.FFMPEG_PATH = '@ffmpeg@'
-         cfg.OPTIMIZERS = [
-             'thumbor.optimizers.gifv',
-         ]
-@@ -793,7 +793,7 @@ class ImageOperationsWithGifVTestCase(BaseImagingTestCase):
-         server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
-         server.security_key = 'ACME-SEC'
-         ctx = Context(server, cfg, importer)
--        ctx.server.gifsicle_path = which('gifsicle')
-+        ctx.server.gifsicle_path = '@gifsicle@'
-         return ctx
- 
-     def test_should_convert_animated_gif_to_mp4_when_filter_without_params(self):
-@@ -828,7 +828,7 @@ class ImageOperationsImageCoverTestCase(BaseImagingTestCase):
-         server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
-         server.security_key = 'ACME-SEC'
-         ctx = Context(server, cfg, importer)
--        ctx.server.gifsicle_path = which('gifsicle')
-+        ctx.server.gifsicle_path = '@gifsicle@'
-         return ctx
- 
-     def test_can_get_image_cover(self):
-@@ -849,7 +849,7 @@ class ImageOperationsWithResultStorageTestCase(BaseImagingTestCase):
-         cfg.RESULT_STORAGE_FILE_STORAGE_ROOT_PATH = self.root_path
- 
-         cfg.USE_GIFSICLE_ENGINE = True
--        cfg.FFMPEG_PATH = which('ffmpeg')
-+        cfg.FFMPEG_PATH = '@ffmpeg@'
-         cfg.AUTO_WEBP = True
-         cfg.OPTIMIZERS = [
-             'thumbor.optimizers.gifv',
-@@ -860,7 +860,7 @@ class ImageOperationsWithResultStorageTestCase(BaseImagingTestCase):
-         server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
-         server.security_key = 'ACME-SEC'
-         ctx = Context(server, cfg, importer)
--        ctx.server.gifsicle_path = which('gifsicle')
-+        ctx.server.gifsicle_path = '@gifsicle@'
- 
-         return ctx
- 
-@@ -891,7 +891,7 @@ class ImageOperationsResultStorageOnlyTestCase(BaseImagingTestCase):
-         cfg.RESULT_STORAGE = 'thumbor.result_storages.file_storage'
-         cfg.RESULT_STORAGE_EXPIRATION_SECONDS = 60
-         cfg.RESULT_STORAGE_FILE_STORAGE_ROOT_PATH = self.root_path
--        cfg.FFMPEG_PATH = which('ffmpeg')
-+        cfg.FFMPEG_PATH = '@ffmpeg@'
- 
-         cfg.USE_GIFSICLE_ENGINE = True
-         cfg.AUTO_WEBP = True
-@@ -904,7 +904,7 @@ class ImageOperationsResultStorageOnlyTestCase(BaseImagingTestCase):
-         server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
-         server.security_key = 'ACME-SEC'
-         ctx = Context(server, cfg, importer)
--        ctx.server.gifsicle_path = which('gifsicle')
-+        ctx.server.gifsicle_path = '@gifsicle@'
- 
-         return ctx
- 
-@@ -1040,7 +1040,7 @@ class ImageOperationsWithMaxPixels(BaseImagingTestCase):
-         server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
-         server.security_key = 'ACME-SEC'
-         ctx = Context(server, cfg, importer)
--        ctx.server.gifsicle_path = which('gifsicle')
-+        ctx.server.gifsicle_path = '@gifsicle@'
-         return ctx
- 
-     def test_should_error(self):
-@@ -1061,7 +1061,7 @@ class ImageOperationsWithRespectOrientation(BaseImagingTestCase):
-         server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
-         server.security_key = 'ACME-SEC'
-         self.context = Context(server, cfg, importer)
--        self.context.server.gifsicle_path = which('gifsicle')
-+        self.context.server.gifsicle_path = '@gifsicle@'
-         return self.context
- 
-     def test_should_be_ok_when_orientation_exif(self):
-@@ -1153,7 +1153,7 @@ class ImageOperationsWithJpegtranTestCase(BaseImagingTestCase):
-         cfg = Config(SECURITY_KEY='ACME-SEC')
-         cfg.LOADER = "thumbor.loaders.file_loader"
-         cfg.FILE_LOADER_ROOT_PATH = self.loader_path
--        cfg.JPEGTRAN_PATH = which('jpegtran')
-+        cfg.JPEGTRAN_PATH = '@jpegtran@'
-         cfg.PROGRESSIVE_JPEG = True,
-         cfg.RESULT_STORAGE_STORES_UNSAFE = True,
-         cfg.OPTIMIZERS = [
-@@ -1175,9 +1175,7 @@ class ImageOperationsWithJpegtranTestCase(BaseImagingTestCase):
-         f.write(response.body)
-         f.close()
- 
--        exiftool = which('exiftool')
--        if not exiftool:
--            raise AssertionError('exiftool was not found. Please install it to run thumbor\'s tests.')
-+        exiftool = '@exiftool@'
- 
-         command = [
-             exiftool,
-@@ -1221,7 +1219,7 @@ class ImageOperationsWithoutStorage(BaseImagingTestCase):
-         server = ServerParameters(8889, 'localhost', 'thumbor.conf', None, 'info', None)
-         server.security_key = 'ACME-SEC'
-         ctx = Context(server, cfg, importer)
--        ctx.server.gifsicle_path = which('gifsicle')
-+        ctx.server.gifsicle_path = '@gifsicle@'
-         return ctx
- 
-     def test_meta(self):
-diff --git a/tests/optimizers/test_gifv.py b/tests/optimizers/test_gifv.py
-index 229e9cd..066f2d5 100644
---- a/tests/optimizers/test_gifv.py
-+++ b/tests/optimizers/test_gifv.py
-@@ -31,7 +31,7 @@ class GifvOptimizerTest(TestCase):
-     def get_context(self):
-         conf = Config()
-         conf.STATSD_HOST = ''
--        conf.FFMPEG_PATH = which('ffmpeg')
-+        conf.FFMPEG_PATH = '@ffmpeg@'
-         ctx = Context(config=conf)
-         ctx.request = RequestParameters()
-         ctx.request.filters.append('gifv')
-diff --git a/tests/test_server.py b/tests/test_server.py
-index 5b31750..c2a65dc 100644
---- a/tests/test_server.py
-+++ b/tests/test_server.py
-@@ -11,6 +11,8 @@
- from unittest import TestCase
- import mock
- 
-+from nose.tools import nottest
-+
- from preggy import expect
- 
- from thumbor.app import ThumborServiceApp
-@@ -118,6 +120,7 @@ class ServerTestCase(TestCase):
-         expect(server_parameters.security_key).to_equal('something')
- 
-     @mock.patch.object(thumbor.server, 'which')
-+    @nottest
-     def test_validate_gifsicle_path(self, which_mock):
-         server_parameters = mock.Mock(security_key=None)
-         conf = Config(SECURITY_KEY='test', USE_GIFSICLE_ENGINE=True)
-@@ -128,6 +131,7 @@ class ServerTestCase(TestCase):
-         expect(server_parameters.gifsicle_path).to_equal('/usr/bin/gifsicle')
- 
-     @mock.patch.object(thumbor.server, 'which')
-+    @nottest
-     def test_validate_null_gifsicle_path(self, which_mock):
-         server_parameters = mock.Mock(security_key=None)
-         conf = Config(SECURITY_KEY='test', USE_GIFSICLE_ENGINE=True)
-diff --git a/tests/test_utils.py b/tests/test_utils.py
-index 38cd51b..7dd0b3e 100644
---- a/tests/test_utils.py
-+++ b/tests/test_utils.py
-@@ -10,6 +10,7 @@
- 
- from mock import Mock, patch
- from unittest import TestCase
-+from nose.tools import nottest
- import logging
- 
- from preggy import expect
-@@ -112,6 +113,7 @@ class UtilsTestCase(TestCase):
-             test_func()
-             mock_warn.assert_called_once_with('Deprecated function test_func: func2')
- 
-+    @nottest
-     def test_can_which_by_path(self):
-         result = which('/bin/ls')
-         expect(result).to_equal('/bin/ls')
-@@ -119,6 +121,7 @@ class UtilsTestCase(TestCase):
-         result = which('/tmp')
-         expect(result).to_be_null()
- 
-+    @nottest
-     def test_can_which_by_env(self):
-         result = which('ls')
-         expect(result).to_equal('/bin/ls')
-diff --git a/thumbor/server.py b/thumbor/server.py
-index c75a769..821163b 100644
---- a/thumbor/server.py
-+++ b/thumbor/server.py
-@@ -89,12 +89,7 @@ def validate_config(config, server_parameters):
-         warnings.simplefilter('error', Image.DecompressionBombWarning)
- 
-     if config.USE_GIFSICLE_ENGINE:
--        server_parameters.gifsicle_path = which('gifsicle')
--        if server_parameters.gifsicle_path is None:
--            raise RuntimeError(
--                'If using USE_GIFSICLE_ENGINE configuration to True, the `gifsicle` binary must be in the PATH '
--                'and must be an executable.'
--            )
-+        server_parameters.gifsicle_path = '@gifsicle@'
- 
- 
- def get_context(server_parameters, config, importer):
--- 
-2.18.1
-
diff --git a/nixpkgs/pkgs/development/python-modules/thumbor/default.nix b/nixpkgs/pkgs/development/python-modules/thumbor/default.nix
deleted file mode 100644
index 86a2dd200110..000000000000
--- a/nixpkgs/pkgs/development/python-modules/thumbor/default.nix
+++ /dev/null
@@ -1,90 +0,0 @@
-{ buildPythonPackage, python, tornado, pycrypto, pycurl, pytz
-, pillow, derpconf, python_magic, libthumbor, webcolors
-, piexif, futures, statsd, thumborPexif, fetchFromGitHub, isPy3k, lib
-, mock, raven, nose, yanc, remotecv, pyssim, cairosvg, preggy, opencv3
-, pkgs, coreutils, substituteAll
-}:
-
-buildPythonPackage rec {
-  pname = "thumbor";
-  version = "6.7.0";
-
-  disabled = isPy3k; # see https://github.com/thumbor/thumbor/issues/1004
-
-  # Tests aren't included in PyPI tarball so use GitHub instead
-  src = fetchFromGitHub {
-    owner = pname;
-    repo = pname;
-    rev = version;
-    sha256 = "1qv02jz7ivn38dsywp7nxrlflly86x9pm2pk3yqi8m8myhc7lipg";
-  };
-
-  patches = [
-    (substituteAll {
-      src = ./0001-Don-t-use-which-implementation-to-find-required-exec.patch;
-      gifsicle = "${pkgs.gifsicle}/bin/gifsicle";
-      exiftool = "${pkgs.exiftool}/bin/exiftool";
-      jpegtran = "${pkgs.libjpeg}/bin/jpegtran";
-      ffmpeg = "${pkgs.ffmpeg_3}/bin/ffmpeg";
-    })
-  ];
-
-  postPatch = ''
-    substituteInPlace "setup.py" \
-      --replace '"argparse",' "" ${lib.optionalString isPy3k ''--replace '"futures",' ""''}
-    sed -i setup.py \
-        -e 's/piexif[^"]*/piexif/;s/Pillow[^"]*/Pillow/'
-    substituteInPlace "tests/test_utils.py" \
-      --replace "/bin/ls" "${coreutils}/bin/ls"
-    substituteInPlace "tests/detectors/test_face_detector.py" \
-      --replace "./thumbor" "$out/lib/${python.libPrefix}/site-packages/thumbor"
-    substituteInPlace "tests/detectors/test_glasses_detector.py" \
-      --replace "./thumbor" "$out/lib/${python.libPrefix}/site-packages/thumbor"
-  '';
-
-  checkInputs = [
-    nose
-    pyssim
-    preggy
-    mock
-    yanc
-    remotecv
-    raven
-    pkgs.redis
-    pkgs.glibcLocales
-    pkgs.gifsicle
-  ];
-
-  propagatedBuildInputs = [
-    tornado
-    pycrypto
-    pycurl
-    pytz
-    pillow
-    derpconf
-    python_magic
-    libthumbor
-    opencv3
-    webcolors
-    piexif
-    statsd
-    cairosvg
-  ] ++ lib.optionals (!isPy3k) [ futures thumborPexif ];
-
-  # Remove the source tree before running nosetests because otherwise nosetests
-  # uses that instead of the installed package. Is there some other way to
-  # achieve this?
-  checkPhase = ''
-    redis-server --port 6668 --requirepass hey_you &
-    rm -r thumbor
-    export LC_ALL="en_US.UTF-8"
-    nosetests -v --with-yanc -s tests/ -e test_redeye_applied
-  '';
-
-  meta = with lib; {
-    description = "A smart imaging service";
-    homepage = "https://github.com/thumbor/thumbor/wiki";
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/tifffile/default.nix b/nixpkgs/pkgs/development/python-modules/tifffile/default.nix
index 236f3443ca6b..2e4676267215 100644
--- a/nixpkgs/pkgs/development/python-modules/tifffile/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tifffile/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "tifffile";
-  version = "2021.8.8";
+  version = "2021.11.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8260f31c4700143e8374ff6cde5cef7fe54fc9b7313afe88329f407881901dc5";
+    sha256 = "153e31fa1d892f482fabb2ae9f2561fa429ee42d01a6f67e58cee13637d9285b";
   };
 
   patches = lib.optional isPy27 ./python2-regex-compat.patch;
diff --git a/nixpkgs/pkgs/development/python-modules/time-machine/default.nix b/nixpkgs/pkgs/development/python-modules/time-machine/default.nix
index 9eabd929ae9e..240a8ac0c37e 100644
--- a/nixpkgs/pkgs/development/python-modules/time-machine/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/time-machine/default.nix
@@ -10,19 +10,21 @@
 
 buildPythonPackage rec {
   pname = "time-machine";
-  version = "2.4.0";
+  version = "2.5.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "adamchainz";
     repo = pname;
     rev = version;
-    sha256 = "sha256-1k8mGkgJw0MfydJ/Sm8qDvFNaIqoHR1fZkVrXxvc8Zk=";
+    sha256 = "sha256-U/OgkwRgZMdEkMIQuN9bWXWeeMHiduy1C1xOBUl8NsQ=";
   };
 
   propagatedBuildInputs = [
     python-dateutil
-  #] ++ lib.optionals (pythonOlder "3.9") [
+  ] ++ lib.optionals (pythonOlder "3.9") [
     backports-zoneinfo
   ];
 
@@ -32,8 +34,9 @@ buildPythonPackage rec {
 
   disabledTests = lib.optionals (pythonAtLeast "3.9") [
     # Assertion Errors related to Africa/Addis_Ababa
-    "test_destination_datetime_tzinfo_zoneinfo"
     "test_destination_datetime_tzinfo_zoneinfo_nested"
+    "test_destination_datetime_tzinfo_zoneinfo_no_orig_tz"
+    "test_destination_datetime_tzinfo_zoneinfo"
     "test_move_to_datetime_with_tzinfo_zoneinfo"
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/tinycss2/default.nix b/nixpkgs/pkgs/development/python-modules/tinycss2/default.nix
index 05ca81772d81..7e49433bc2f3 100644
--- a/nixpkgs/pkgs/development/python-modules/tinycss2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tinycss2/default.nix
@@ -1,44 +1,36 @@
 { lib
 , buildPythonPackage
 , pythonOlder
-, fetchPypi
-, fetchpatch
+, fetchFromGitHub
 , webencodings
-# Check inputs
-, pytest
-, pytest-runner
-, pytest-cov
-, pytest-flake8
-, pytest-isort
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "tinycss2";
-  version = "1.0.2";
+  version = "1.1.0";
   disabled = pythonOlder "3.5";
+  format = "flit";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1kw84y09lggji4krkc58jyhsfj31w8npwhznr7lf19d0zbix09v4";
+  src = fetchFromGitHub {
+    owner = "kozea";
+    repo = "tinycss2";
+    rev = "v${version}";
+    # for tests
+    fetchSubmodules = true;
+    sha256 = "sha256-WA88EYolL76WqeA1UKR3Sfw11j8NuOGOxPezujYizH8=";
   };
 
-  patches = [
-    (
-      fetchpatch {
-        name = "tinycss2-fix-pytest-flake8-fail.patch";
-        url = "https://github.com/Kozea/tinycss2/commit/6556604fb98c2153412384d6f0f705db2da1aa60.patch";
-        sha256 = "1srvdzg1bak65fawd611rlskcgn5abmwmyjnk8qrrrasr554bc59";
-      }
-    )
-  ];
-
   propagatedBuildInputs = [ webencodings ];
 
-  checkInputs = [ pytest pytest-runner pytest-cov pytest-flake8 pytest-isort ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  # https://github.com/PyCQA/pycodestyle/issues/598
-  preCheck = ''
-    printf "[flake8]\nignore=W504,E741,E126" >> setup.cfg
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "'pytest-cov', 'pytest-flake8', 'pytest-isort', 'coverage[toml]'" "" \
+      --replace "--isort --flake8 --cov" ""
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/tld/default.nix b/nixpkgs/pkgs/development/python-modules/tld/default.nix
index 875ab959a783..178ce54c8846 100644
--- a/nixpkgs/pkgs/development/python-modules/tld/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tld/default.nix
@@ -5,7 +5,6 @@
 , fetchPypi
 , pytest-cov
 , pytestCheckHook
-, six
 , tox
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/tmdb3/default.nix b/nixpkgs/pkgs/development/python-modules/tmdb3/default.nix
deleted file mode 100644
index 36a88ea22e49..000000000000
--- a/nixpkgs/pkgs/development/python-modules/tmdb3/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k }:
-
-buildPythonPackage rec {
-  pname = "tmdb3";
-  version = "0.7.2";
-  disabled = isPy3k; # Upstream has not received any updates since 2015, and importing from python3 does not work.
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "9b6e043b8a65d159e7fc8f720badc7ffee5109296e38676c107454e03a895983";
-  };
-
-  # no tests implemented
-  doCheck = false;
-
-  pythonImportsCheck = [ "tmdb3" ];
-
-  meta = with lib; {
-    description = "Python implementation of the v3 API for TheMovieDB.org, allowing access to movie and cast information";
-    homepage = "https://pypi.python.org/pypi/tmdb3";
-    license = licenses.bsd3;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/todoist/default.nix b/nixpkgs/pkgs/development/python-modules/todoist/default.nix
index 397d21a83854..d4797bdfad35 100644
--- a/nixpkgs/pkgs/development/python-modules/todoist/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/todoist/default.nix
@@ -1,5 +1,5 @@
 { lib, fetchPypi, buildPythonPackage
-, requests, fetchpatch, pythonOlder, typing
+, requests, pythonOlder, typing
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/toggl-cli/default.nix b/nixpkgs/pkgs/development/python-modules/toggl-cli/default.nix
index fb39831a0d18..1bbac9ce9da1 100644
--- a/nixpkgs/pkgs/development/python-modules/toggl-cli/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/toggl-cli/default.nix
@@ -1,12 +1,29 @@
-{ lib, buildPythonPackage, fetchPypi, pythonAtLeast, pythonOlder, click
-, click-completion, factory_boy, faker, inquirer, notify-py, pbr, pendulum
-, ptable, pytestCheckHook, pytest-cov, pytest-mock, requests, twine
-, validate-email }:
+{ lib
+, buildPythonPackage
+, click
+, click-completion
+, factory_boy
+, faker
+, fetchPypi
+, inquirer
+, notify-py
+, pbr
+, pendulum
+, ptable
+, pytest-mock
+, pytestCheckHook
+, pythonOlder
+, requests
+, twine
+, validate-email
+}:
 
 buildPythonPackage rec {
   pname = "toggl-cli";
   version = "2.4.2";
-  disabled = pythonOlder "3.5";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     pname = "togglCli";
@@ -14,14 +31,39 @@ buildPythonPackage rec {
     sha256 = "1wgh231r16jyvaj1ch1pajvl9szflb4srs505pfdwdlqvz7rzww8";
   };
 
+  nativeBuildInputs = [
+    pbr
+    twine
+  ];
+
+  propagatedBuildInputs = [
+    click
+    click-completion
+    inquirer
+    notify-py
+    pbr
+    pendulum
+    ptable
+    requests
+    validate-email
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    pytest-mock
+    faker
+    factory_boy
+  ];
+
   postPatch = ''
     substituteInPlace requirements.txt \
-      --replace "notify-py==0.3.1" "notify-py>=0.3.1"
+      --replace "notify-py==0.3.1" "notify-py>=0.3.1" \
+      --replace "click==7.1.2" "click>=7.1.2" \
+      --replace "pbr==5.5.1" "pbr>=5.5.1"
+    substituteInPlace pytest.ini \
+      --replace ' --cov toggl -m "not premium"' ""
   '';
 
-  nativeBuildInputs = [ pbr twine ];
-  checkInputs = [ pbr pytestCheckHook pytest-cov pytest-mock faker factory_boy ];
-
   preCheck = ''
     export TOGGL_API_TOKEN=your_api_token
     export TOGGL_PASSWORD=toggl_password
@@ -36,22 +78,14 @@ buildPythonPackage rec {
     "test_now"
   ];
 
-  propagatedBuildInputs = [
-    click
-    click-completion
-    inquirer
-    notify-py
-    pendulum
-    ptable
-    requests
-    pbr
-    validate-email
+  pythonImportsCheck = [
+    "toggl"
   ];
 
   meta = with lib; {
-    homepage = "https://toggl.uhlir.dev/";
     description = "Command line tool and set of Python wrapper classes for interacting with toggl's API";
+    homepage = "https://toggl.uhlir.dev/";
     license = licenses.mit;
-    maintainers = [ maintainers.mmahut ];
+    maintainers = with maintainers; [ mmahut ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/tokenize-rt/default.nix b/nixpkgs/pkgs/development/python-modules/tokenize-rt/default.nix
index 7aee895c6cb6..556c35c30705 100644
--- a/nixpkgs/pkgs/development/python-modules/tokenize-rt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tokenize-rt/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "tokenize-rt";
-  version = "4.1.0";
+  version = "4.2.1";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "asottile";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-9qamHk2IZRmgGNFlYkSRks6mRVNlYfetpK/7rsfK9tc=";
+    sha256 = "sha256-YNt4YwkuA3DVq4EjJaIES9V3A6ENa3k6/qVKisjA5Pc=";
   };
 
   checkInputs = [ pytestCheckHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/tokenizers/default.nix b/nixpkgs/pkgs/development/python-modules/tokenizers/default.nix
index d5d26050eeeb..55928d4fcc8e 100644
--- a/nixpkgs/pkgs/development/python-modules/tokenizers/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tokenizers/default.nix
@@ -1,9 +1,11 @@
 { lib
+, stdenv
 , fetchFromGitHub
 , fetchurl
 , buildPythonPackage
 , rustPlatform
 , setuptools-rust
+, libiconv
 , numpy
 , datasets
 , pytestCheckHook
@@ -72,6 +74,10 @@ in buildPythonPackage rec {
     rust.rustc
   ]);
 
+  buildInputs = lib.optionals stdenv.isDarwin [
+    libiconv
+  ];
+
   propagatedBuildInputs = [
     numpy
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/tokenserver/default.nix b/nixpkgs/pkgs/development/python-modules/tokenserver/default.nix
deleted file mode 100644
index 6d3c7e2be054..000000000000
--- a/nixpkgs/pkgs/development/python-modules/tokenserver/default.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, alembic, boto, cornice, hawkauthlib, mozsvc, paste, pybrowserid, pyfxa
-, pymysql, pymysqlsa, sqlalchemy, testfixtures, tokenlib, umemcache
-, mock, nose, unittest2, webtest
-}:
-
-buildPythonPackage rec {
-  pname = "tokenserver";
-  version = "1.3.1";
-
-  src = fetchFromGitHub {
-    owner = "mozilla-services";
-    repo = pname;
-    rev = version;
-    sha256 = "04z0r8xzrmhvh04y8ggdz9gs8qa8lv3qr7kasf6lm63fixsfgrlp";
-  };
-
-  propagatedBuildInputs = [
-    alembic boto cornice hawkauthlib mozsvc paste pybrowserid pyfxa
-    pymysql pymysqlsa sqlalchemy testfixtures tokenlib umemcache
-  ];
-
-  checkInputs = [
-    mock nose unittest2 webtest
-  ];
-
-  # Requires virtualenv, MySQL, ...
-  doCheck = false;
-
-  meta = with lib; {
-    description = "The Mozilla Token Server";
-    homepage = "https://github.com/mozilla-services/tokenserver";
-    license = licenses.mpl20;
-    maintainers = with maintainers; [ nadrieril ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/tololib/default.nix b/nixpkgs/pkgs/development/python-modules/tololib/default.nix
new file mode 100644
index 000000000000..63720359dabd
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tololib/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitLab
+, fetchpatch
+, pytestCheckHook
+, pythonOlder
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "tololib";
+  version = "0.1.0b3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitLab {
+    owner = "MatthiasLohr";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "qkdMy6/ZuBksbBTbDhPyCPWMjubQODjdMsqHTJ7QvQI=";
+  };
+
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Test requires network access
+    "test_discovery"
+  ];
+
+  pythonImportsCheck = [
+    "tololib"
+  ];
+
+  meta = with lib; {
+    description = "Python Library for Controlling TOLO Sauna/Steam Bath Devices";
+    homepage = "https://gitlab.com/MatthiasLohr/tololib";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/tomli/default.nix b/nixpkgs/pkgs/development/python-modules/tomli/default.nix
index 79cd5a4f500c..c593e1e4cb19 100644
--- a/nixpkgs/pkgs/development/python-modules/tomli/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tomli/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "tomli";
-  version = "1.1.0";
+  version = "1.2.2";
   format = "pyproject";
 
   outputs = [
@@ -19,9 +19,14 @@ buildPythonPackage rec {
     owner = "hukkin";
     repo = pname;
     rev = version;
-    sha256 = "1cj6iil9sii1zl0l4pw7h4alcnhwdbxinpph2f0rm5rghrp6prjm";
+    sha256 = "sha256-oDjpNzWxTaCC1+WyBKrkR6kp90ZomcZQfyW+xKddDoM=";
   };
 
+  patches = [
+    # required for mypy
+    ./fix-backwards-compatibility-load.patch
+  ];
+
   nativeBuildInputs = [ flit-core ];
 
   postInstall = ''
diff --git a/nixpkgs/pkgs/development/python-modules/tomli/fix-backwards-compatibility-load.patch b/nixpkgs/pkgs/development/python-modules/tomli/fix-backwards-compatibility-load.patch
new file mode 100644
index 000000000000..edfc2f383495
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/tomli/fix-backwards-compatibility-load.patch
@@ -0,0 +1,21 @@
+diff --git a/tomli/_parser.py b/tomli/_parser.py
+index 89e81c3..6fb1bfd 100644
+--- a/tomli/_parser.py
++++ b/tomli/_parser.py
+@@ -1,6 +1,6 @@
+ import string
+ from types import MappingProxyType
+-from typing import Any, BinaryIO, Dict, FrozenSet, Iterable, NamedTuple, Optional, Tuple
++from typing import IO, Union, Any, BinaryIO, Dict, FrozenSet, Iterable, NamedTuple, Optional, Tuple
+ import warnings
+ 
+ from tomli._re import (
+@@ -48,7 +48,7 @@ class TOMLDecodeError(ValueError):
+     """An error raised if a document is not valid TOML."""
+ 
+ 
+-def load(fp: BinaryIO, *, parse_float: ParseFloat = float) -> Dict[str, Any]:
++def load(fp: Union[IO, BinaryIO], *, parse_float: ParseFloat = float) -> Dict[str, Any]:
+     """Parse TOML from a binary file object."""
+     s_bytes = fp.read()
+     try:
diff --git a/nixpkgs/pkgs/development/python-modules/toolz/2.nix b/nixpkgs/pkgs/development/python-modules/toolz/2.nix
deleted file mode 100644
index 8c8a64db3a5e..000000000000
--- a/nixpkgs/pkgs/development/python-modules/toolz/2.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-}:
-
-buildPythonPackage rec {
-  pname = "toolz";
-  version = "0.10.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "08fdd5ef7c96480ad11c12d472de21acd32359996f69a5259299b540feba4560";
-  };
-
-  checkInputs = [ nose ];
-
-  checkPhase = ''
-    nosetests toolz/tests
-  '';
-
-  meta = with lib; {
-    homepage = "https://github.com/pytoolz/toolz";
-    description = "List processing tools and functional utilities";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ fridh ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/toolz/default.nix b/nixpkgs/pkgs/development/python-modules/toolz/default.nix
index 6100d2a7c53d..234cb471e46d 100644
--- a/nixpkgs/pkgs/development/python-modules/toolz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/toolz/default.nix
@@ -1,23 +1,19 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, nose
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "toolz";
-  version = "0.11.1";
+  version = "0.11.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1grz3zvw5ixwqqlbv0n7j11mlcxb66cirh5i9x9zw8kqy0hpk967";
+    sha256 = "6b312d5e15138552f1bda8a4e66c30e236c831b612b2bf0005f8a1df10a4bc33";
   };
 
-  checkInputs = [ nose ];
-
-  checkPhase = ''
-    nosetests toolz/tests
-  '';
+  checkInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     homepage = "https://github.com/pytoolz/toolz";
diff --git a/nixpkgs/pkgs/development/python-modules/torchaudio/bin.nix b/nixpkgs/pkgs/development/python-modules/torchaudio/bin.nix
new file mode 100644
index 000000000000..1f6ae80b0329
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/torchaudio/bin.nix
@@ -0,0 +1,52 @@
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchurl
+, python
+, pytorch-bin
+, pythonOlder
+, pythonAtLeast
+}:
+
+buildPythonPackage rec {
+  pname = "torchaudio";
+  version = "0.10.0";
+  format = "wheel";
+
+  src =
+    let pyVerNoDot = lib.replaceStrings [ "." ] [ "" ] python.pythonVersion;
+        unsupported = throw "Unsupported system";
+        srcs = (import ./binary-hashes.nix version)."${stdenv.system}-${pyVerNoDot}" or unsupported;
+    in fetchurl srcs;
+
+  disabled = ! (pythonAtLeast "3.7" && pythonOlder "3.10");
+
+  propagatedBuildInputs = [
+    pytorch-bin
+  ];
+
+  # The wheel-binary is not stripped to avoid the error of `ImportError: libtorch_cuda_cpp.so: ELF load command address/offset not properly aligned.`.
+  dontStrip = true;
+
+  pythonImportsCheck = [ "torchaudio" ];
+
+  postFixup = ''
+    # Note: after patchelf'ing, libcudart can still not be found. However, this should
+    #       not be an issue, because PyTorch is loaded before torchvision and brings
+    #       in the necessary symbols.
+    patchelf --set-rpath "${lib.makeLibraryPath [ stdenv.cc.cc.lib ]}:${pytorch-bin}/${python.sitePackages}/torch/lib:" \
+      "$out/${python.sitePackages}/torchaudio/_torchaudio.so"
+  '';
+
+  meta = with lib; {
+    description = "PyTorch audio library";
+    homepage = "https://pytorch.org/";
+    changelog = "https://github.com/pytorch/audio/releases/tag/v${version}";
+    # Includes CUDA and Intel MKL, but redistributions of the binary are not limited.
+    # https://docs.nvidia.com/cuda/eula/index.html
+    # https://www.intel.com/content/www/us/en/developer/articles/license/onemkl-license-faq.html
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+    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
new file mode 100644
index 000000000000..764b9db426b9
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/torchaudio/binary-hashes.nix
@@ -0,0 +1,26 @@
+# Warning: Need to update at the same time as pytorch-bin
+#
+# Precompiled wheels can be found at:
+# https://download.pytorch.org/whl/torch_stable.html
+
+# To add a new version, run "prefetch.sh 'new-version'" to paste the generated file as follows.
+
+version : builtins.getAttr version {
+  "0.10.0" = {
+    x86_64-linux-37 = {
+      name = "torchaudio-0.10.0-cp37-cp37m-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu113/torchaudio-0.10.0%2Bcu113-cp37-cp37m-linux_x86_64.whl";
+      hash = "sha256-FspXTTODdkO0nPUJcJm8+vLIvckUa8gRfBPBT9LcKPw=";
+    };
+    x86_64-linux-38 = {
+      name = "torchaudio-0.10.0-cp38-cp38-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu113/torchaudio-0.10.0%2Bcu113-cp38-cp38-linux_x86_64.whl";
+      hash = "sha256-Mf7QdXBSIIWRfT7ACthEwFA1V2ieid8legbMnRQnzqI=";
+    };
+    x86_64-linux-39 = {
+      name = "torchaudio-0.10.0-cp39-cp39-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu113/torchaudio-0.10.0%2Bcu113-cp39-cp39-linux_x86_64.whl";
+      hash = "sha256-LMSGNdmku1iHRy1jCRTTOYcQlRL+Oc9jjZC1nx++skA=";
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/torchaudio/prefetch.sh b/nixpkgs/pkgs/development/python-modules/torchaudio/prefetch.sh
new file mode 100755
index 000000000000..4e62ab4ed359
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/torchaudio/prefetch.sh
@@ -0,0 +1,37 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p nix-prefetch-scripts
+
+set -eou pipefail
+
+version=$1
+
+bucket="https://download.pytorch.org/whl/cu113"
+
+url_and_key_list=(
+  "x86_64-linux-37 $bucket/torchaudio-${version}%2Bcu113-cp37-cp37m-linux_x86_64.whl torchaudio-${version}-cp37-cp37m-linux_x86_64.whl"
+  "x86_64-linux-38 $bucket/torchaudio-${version}%2Bcu113-cp38-cp38-linux_x86_64.whl torchaudio-${version}-cp38-cp38-linux_x86_64.whl"
+  "x86_64-linux-39 $bucket/torchaudio-${version}%2Bcu113-cp39-cp39-linux_x86_64.whl torchaudio-${version}-cp39-cp39-linux_x86_64.whl"
+)
+
+hashfile=binary-hashes-"$version".nix
+echo "  \"$version\" = {" >> $hashfile
+
+for url_and_key in "${url_and_key_list[@]}"; do
+  key=$(echo "$url_and_key" | cut -d' ' -f1)
+  url=$(echo "$url_and_key" | cut -d' ' -f2)
+  name=$(echo "$url_and_key" | cut -d' ' -f3)
+
+  echo "prefetching ${url}..."
+  hash=$(nix hash to-sri --type sha256 `nix-prefetch-url "$url" --name "$name"`)
+
+  echo "    $key = {" >> $hashfile
+  echo "      name = \"$name\";" >> $hashfile
+  echo "      url = \"$url\";" >> $hashfile
+  echo "      hash = \"$hash\";" >> $hashfile
+  echo "    };" >> $hashfile
+
+  echo
+done
+
+echo "  };" >> $hashfile
+echo "done."
diff --git a/nixpkgs/pkgs/development/python-modules/torchvision/bin.nix b/nixpkgs/pkgs/development/python-modules/torchvision/bin.nix
index a69531f2d062..f7041dbb519d 100644
--- a/nixpkgs/pkgs/development/python-modules/torchvision/bin.nix
+++ b/nixpkgs/pkgs/development/python-modules/torchvision/bin.nix
@@ -15,7 +15,7 @@ let
   pyVerNoDot = builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion;
   srcs = import ./binary-hashes.nix version;
   unsupported = throw "Unsupported system";
-  version = "0.10.1";
+  version = "0.11.1";
 in buildPythonPackage {
   inherit version;
 
@@ -36,6 +36,9 @@ in buildPythonPackage {
     pytorch-bin
   ];
 
+  # The wheel-binary is not stripped to avoid the error of `ImportError: libtorch_cuda_cpp.so: ELF load command address/offset not properly aligned.`.
+  dontStrip = true;
+
   pythonImportsCheck = [ "torchvision" ];
 
   postFixup = let
@@ -52,6 +55,9 @@ in buildPythonPackage {
     description = "PyTorch vision library";
     homepage = "https://pytorch.org/";
     changelog = "https://github.com/pytorch/vision/releases/tag/v${version}";
+    # Includes CUDA and Intel MKL, but redistributions of the binary are not limited.
+    # https://docs.nvidia.com/cuda/eula/index.html
+    # https://www.intel.com/content/www/us/en/developer/articles/license/onemkl-license-faq.html
     license = licenses.bsd3;
     platforms = platforms.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 239db8bdb864..b608bab24409 100644
--- a/nixpkgs/pkgs/development/python-modules/torchvision/binary-hashes.nix
+++ b/nixpkgs/pkgs/development/python-modules/torchvision/binary-hashes.nix
@@ -6,21 +6,21 @@
 # To add a new version, run "prefetch.sh 'new-version'" to paste the generated file as follows.
 
 version : builtins.getAttr version {
-  "0.10.1" = {
+  "0.11.1" = {
     x86_64-linux-37 = {
-      name = "torchvision-0.10.1-cp37-cp37m-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu111/torchvision-0.10.1%2Bcu111-cp37-cp37m-linux_x86_64.whl";
-      hash = "sha256-1MdsCrOLGkYpfbtv011/b6QG+yKaE+O0jUKeUVj2BJY=";
+      name = "torchvision-0.11.1-cp37-cp37m-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu113/torchvision-0.11.1%2Bcu113-cp37-cp37m-linux_x86_64.whl";
+      hash = "sha256-2xKWqWNKqmOMyVJnPfbtF+B9PQ7z4S66J1T3P8EvM0I=";
     };
     x86_64-linux-38 = {
-      name = "torchvision-0.10.1-cp38-cp38-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu111/torchvision-0.10.1%2Bcu111-cp38-cp38-linux_x86_64.whl";
-      hash = "sha256-LtmsnNSa9g3tCdjW1jhu7AZlGgfyYIVh5/2R+WwcxSo=";
+      name = "torchvision-0.11.1-cp38-cp38-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu113/torchvision-0.11.1%2Bcu113-cp38-cp38-linux_x86_64.whl";
+      hash = "sha256-bFxvJaNEomytXXANHng+oU8YSLGkuO/TSzkoDskkaIE=";
     };
     x86_64-linux-39 = {
-      name = "torchvision-0.10.1-cp39-cp39-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu111/torchvision-0.10.1%2Bcu111-cp39-cp39-linux_x86_64.whl";
-      hash = "sha256-ZOC/angyiLeOhe+7dAs0W6XlQRKK00T/iI+aBgFNpA0=";
+      name = "torchvision-0.11.1-cp39-cp39-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu113/torchvision-0.11.1%2Bcu113-cp39-cp39-linux_x86_64.whl";
+      hash = "sha256-ysN3LmSKR+FVKYGnCGQJqa8lVApVT5rPMO+NHmmazAc=";
     };
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/torchvision/default.nix b/nixpkgs/pkgs/development/python-modules/torchvision/default.nix
index fc9905881cb6..4774e09f0b6e 100644
--- a/nixpkgs/pkgs/development/python-modules/torchvision/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/torchvision/default.nix
@@ -24,13 +24,13 @@ let
   cudaArchStr = lib.optionalString cudaSupport lib.strings.concatStringsSep ";" pytorch.cudaArchList;
 in buildPythonPackage rec {
   pname = "torchvision";
-  version = "0.10.0";
+  version = "0.11.2";
 
   src = fetchFromGitHub {
     owner = "pytorch";
     repo = "vision";
     rev = "v${version}";
-    sha256 = "13j04ij0jmi58nhav1p69xrm8dg7jisg23268i3n6lnms37n02kc";
+    sha256 = "136w9pqyfdsxxc7337q3x42gsr17gs0i0af2swfhzqhz6hd5139i";
   };
 
   nativeBuildInputs = [ libpng ninja which ]
diff --git a/nixpkgs/pkgs/development/python-modules/torchvision/prefetch.sh b/nixpkgs/pkgs/development/python-modules/torchvision/prefetch.sh
index f57ac96bdb63..686d1b3e6200 100755
--- a/nixpkgs/pkgs/development/python-modules/torchvision/prefetch.sh
+++ b/nixpkgs/pkgs/development/python-modules/torchvision/prefetch.sh
@@ -1,18 +1,19 @@
 #!/usr/bin/env nix-shell
 #!nix-shell -i bash -p nix-prefetch-scripts
 
+set -eou pipefail
+
 version=$1
 
-bucket="https://download.pytorch.org/whl/cu111"
+bucket="https://download.pytorch.org/whl/cu113"
 
 url_and_key_list=(
-"x86_64-linux-37 $bucket/torchvision-${version}%2Bcu111-cp37-cp37m-linux_x86_64.whl torchvision-${version}-cp37-cp37m-linux_x86_64.whl"
-"x86_64-linux-38 $bucket/torchvision-${version}%2Bcu111-cp38-cp38-linux_x86_64.whl torchvision-${version}-cp38-cp38-linux_x86_64.whl"
-"x86_64-linux-39 $bucket/torchvision-${version}%2Bcu111-cp39-cp39-linux_x86_64.whl torchvision-${version}-cp39-cp39-linux_x86_64.whl"
+  "x86_64-linux-37 $bucket/torchvision-${version}%2Bcu113-cp37-cp37m-linux_x86_64.whl torchvision-${version}-cp37-cp37m-linux_x86_64.whl"
+  "x86_64-linux-38 $bucket/torchvision-${version}%2Bcu113-cp38-cp38-linux_x86_64.whl torchvision-${version}-cp38-cp38-linux_x86_64.whl"
+  "x86_64-linux-39 $bucket/torchvision-${version}%2Bcu113-cp39-cp39-linux_x86_64.whl torchvision-${version}-cp39-cp39-linux_x86_64.whl"
 )
 
-hashfile=binary-hashes-"$version".nix
-rm -f $hashfile
+hashfile="binary-hashes-$version.nix"
 echo "  \"$version\" = {" >> $hashfile
 
 for url_and_key in "${url_and_key_list[@]}"; do
diff --git a/nixpkgs/pkgs/development/python-modules/tornado/4.nix b/nixpkgs/pkgs/development/python-modules/tornado/4.nix
index da86c7037b92..b4343b5d5ff6 100644
--- a/nixpkgs/pkgs/development/python-modules/tornado/4.nix
+++ b/nixpkgs/pkgs/development/python-modules/tornado/4.nix
@@ -2,19 +2,13 @@
 , python
 , buildPythonPackage
 , fetchPypi
-, backports_abc ? null
-, backports_ssl_match_hostname ? null
-, certifi ? null
-, singledispatch ? null
-, futures ? null
 , isPy27
 }:
 
 buildPythonPackage rec {
   pname = "tornado";
   version = "4.5.3";
-
-  propagatedBuildInputs = lib.optionals isPy27 [ backports_abc certifi singledispatch backports_ssl_match_hostname futures ];
+  disabled = isPy27;
 
   # We specify the name of the test files to prevent
   # https://github.com/NixOS/nixpkgs/issues/14634
diff --git a/nixpkgs/pkgs/development/python-modules/tornado/5.nix b/nixpkgs/pkgs/development/python-modules/tornado/5.nix
index 2905f89dc0cc..2f3ba5c1c2aa 100644
--- a/nixpkgs/pkgs/development/python-modules/tornado/5.nix
+++ b/nixpkgs/pkgs/development/python-modules/tornado/5.nix
@@ -2,19 +2,13 @@
 , python
 , buildPythonPackage
 , fetchPypi
-, backports_abc ? null
-, backports_ssl_match_hostname ? null
-, certifi ? null
-, singledispatch ? null
-, futures ? null
 , isPy27
 }:
 
 buildPythonPackage rec {
   pname = "tornado";
   version = "5.1.1";
-
-  propagatedBuildInputs = lib.optionals isPy27 [ backports_abc certifi singledispatch backports_ssl_match_hostname futures ];
+  disabled = isPy27;
 
   # We specify the name of the test files to prevent
   # https://github.com/NixOS/nixpkgs/issues/14634
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 4463b9fcc9f3..2c71d0a17828 100644
--- a/nixpkgs/pkgs/development/python-modules/total-connect-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/total-connect-client/default.nix
@@ -1,19 +1,23 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, zeep
 , pytestCheckHook
+, pythonOlder
+, zeep
 }:
 
 buildPythonPackage rec {
   pname = "total-connect-client";
-  version = "2021.8.3";
+  version = "2021.12";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "craigjmidwinter";
     repo = "total-connect-client";
     rev = version;
-    sha256 = "sha256-2iTH/Him4iMZadkmBR8Rwlt3RCqDXzR6ZqNHciNiHIk=";
+    hash = "sha256-cgs6wIMSO8t8CPn6aR35sNcgfDaXDyFBldNEBOr850s=";
   };
 
   propagatedBuildInputs = [
@@ -24,17 +28,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  preCheck = ''
-    export PYTHONPATH="total_connect_client:$PYTHONPATH"
-  '';
-
-  disabledTests = [
-    # Tests require network access
-    "tests_request"
+  pythonImportsCheck = [
+    "total_connect_client"
   ];
 
-  pythonImportsCheck = [ "total_connect_client" ];
-
   meta = with lib; {
     description = "Interact with Total Connect 2 alarm systems";
     homepage = "https://github.com/craigjmidwinter/total-connect-client";
diff --git a/nixpkgs/pkgs/development/python-modules/tox/default.nix b/nixpkgs/pkgs/development/python-modules/tox/default.nix
index c660327ad72e..8940a57196ac 100644
--- a/nixpkgs/pkgs/development/python-modules/tox/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tox/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "tox";
-  version = "3.24.3";
+  version = "3.24.4";
 
   buildInputs = [ setuptools-scm ];
   propagatedBuildInputs = [ packaging pluggy py six virtualenv toml filelock ];
@@ -22,7 +22,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c6c4e77705ada004283610fd6d9ba4f77bc85d235447f875df9f0ba1bc23b634";
+    sha256 = "c30b57fa2477f1fb7c36aa1d83292d5c2336cd0018119e1b1c17340e2c2708ca";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/tqdm/default.nix b/nixpkgs/pkgs/development/python-modules/tqdm/default.nix
index babea4357a79..606308f88967 100644
--- a/nixpkgs/pkgs/development/python-modules/tqdm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tqdm/default.nix
@@ -14,11 +14,11 @@
 
 buildPythonPackage rec {
   pname = "tqdm";
-  version = "4.62.2";
+  version = "4.62.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a4d6d112e507ef98513ac119ead1159d286deab17dffedd96921412c2d236ff5";
+    sha256 = "d359de7217506c9851b7869f3708d8ee53ed70a1b8edbba4dbcb47442592920d";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/traitlets/4.nix b/nixpkgs/pkgs/development/python-modules/traitlets/4.nix
deleted file mode 100644
index bffd7c790bea..000000000000
--- a/nixpkgs/pkgs/development/python-modules/traitlets/4.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, glibcLocales
-, pytest
-, mock
-, ipython_genutils
-, decorator
-, enum34
-, pythonOlder
-, six
-}:
-
-buildPythonPackage rec {
-  pname = "traitlets";
-  version = "4.3.3";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "d023ee369ddd2763310e4c3eae1ff649689440d4ae59d7485eb4cfbbe3e359f7";
-  };
-
-  checkInputs = [ glibcLocales pytest mock ];
-  propagatedBuildInputs = [ ipython_genutils decorator six ] ++ lib.optional (pythonOlder "3.4") enum34;
-
-  checkPhase = ''
-    LC_ALL="en_US.UTF-8" py.test
-  '';
-
-  meta = {
-    description = "Traitlets Python config system";
-    homepage = "http://ipython.org/";
-    license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/traitlets/default.nix b/nixpkgs/pkgs/development/python-modules/traitlets/default.nix
index 23412d0a6940..0b96ba37c156 100644
--- a/nixpkgs/pkgs/development/python-modules/traitlets/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/traitlets/default.nix
@@ -6,19 +6,18 @@
 , mock
 , ipython_genutils
 , decorator
-, enum34
 , pythonOlder
 , six
 }:
 
 buildPythonPackage rec {
   pname = "traitlets";
-  version = "5.1.0";
+  version = "5.1.1";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bd382d7ea181fbbcce157c133db9a829ce06edffe097bcf3ab945b435452b46d";
+    sha256 = "sha256-BZ9FbFp8HIK5jC6MeZ85ybgSj20NRpQe4RjarOnrcMc=";
   };
 
   checkInputs = [ glibcLocales pytest mock ];
diff --git a/nixpkgs/pkgs/development/python-modules/traits/default.nix b/nixpkgs/pkgs/development/python-modules/traits/default.nix
index e4e82db9e446..4e93f1369dd3 100644
--- a/nixpkgs/pkgs/development/python-modules/traits/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/traits/default.nix
@@ -3,28 +3,21 @@
 , fetchPypi
 , isPy27
 , python
-, pytest
 , numpy
 }:
 
 buildPythonPackage rec {
   pname = "traits";
-  version = "6.2.0";
-  disabled = isPy27; # setup.py no longer py3 compat
+  version = "6.3.2";
+  disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "16fa1518b0778fd53bf0547e6a562b1787bf68c8f6b7995a13bd1902529fdb0c";
+    sha256 = "4520ef4a675181f38be4a5bab1b1d5472691597fe2cfe4faf91023e89407e2c6";
   };
 
-  # Use pytest because its easier to discover tests
-  buildInputs = [ pytest ];
   propagatedBuildInputs = [ numpy ];
 
-  checkPhase = ''
-    py.test $out/${python.sitePackages}
-  '';
-
   # Test suite is broken for 3.x on latest release
   # https://github.com/enthought/traits/issues/187
   # https://github.com/enthought/traits/pull/188
@@ -34,7 +27,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Explicitly typed attributes for Python";
     homepage = "https://pypi.python.org/pypi/traits";
-    license = "BSD";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/transformers/default.nix b/nixpkgs/pkgs/development/python-modules/transformers/default.nix
index 9c9490bd8853..5479a0b12258 100644
--- a/nixpkgs/pkgs/development/python-modules/transformers/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/transformers/default.nix
@@ -4,12 +4,14 @@
 , pythonOlder
 , cookiecutter
 , filelock
+, huggingface-hub
 , importlib-metadata
 , regex
 , requests
 , numpy
 , packaging
 , protobuf
+, pyyaml
 , sacremoses
 , tokenizers
 , tqdm
@@ -17,13 +19,13 @@
 
 buildPythonPackage rec {
   pname = "transformers";
-  version = "4.4.2";
+  version = "4.12.5";
 
   src = fetchFromGitHub {
     owner = "huggingface";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-kl1Z2FBo+yqVXUqLaUtet6IycmdcAtfydNTI4MNNrkc=";
+    sha256 = "07v72fyhm1s3bzg2kvaff15d7d8na39nlqpf5gyxaqvp3hglc3qy";
   };
 
   nativeBuildInputs = [ packaging ];
@@ -31,8 +33,10 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     cookiecutter
     filelock
+    huggingface-hub
     numpy
     protobuf
+    pyyaml
     regex
     requests
     sacremoses
diff --git a/nixpkgs/pkgs/development/python-modules/translatepy/default.nix b/nixpkgs/pkgs/development/python-modules/translatepy/default.nix
index b472042dd65a..986a16db702b 100644
--- a/nixpkgs/pkgs/development/python-modules/translatepy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/translatepy/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "translatepy";
-  version = "2.1";
+  version = "2.2";
 
   src = fetchFromGitHub {
     owner = "Animenosekai";
     repo = "translate";
     rev = "v${version}";
-    sha256 = "0xj97s6zglvq2894wpq3xbjxgfkrfk2414vmcszap8h9j2zxz8gf";
+    sha256 = "rnt4nmDgQXSgzwNCcsZwbQn2bv83DFhL86kebeiSosc=";
   };
 
   propagatedBuildInputs = [
@@ -29,6 +29,7 @@ buildPythonPackage rec {
   checkInputs = [ pytestCheckHook ];
   disabledTestPaths = [
     # Requires network connection
+    "tests/test_translate.py"
     "tests/test_translators.py"
   ];
   pythonImportsCheck = [ "translatepy" ];
diff --git a/nixpkgs/pkgs/development/python-modules/treeo/default.nix b/nixpkgs/pkgs/development/python-modules/treeo/default.nix
new file mode 100644
index 000000000000..3629b47e8a29
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/treeo/default.nix
@@ -0,0 +1,41 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, jax
+, jaxlib
+, lib
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "treeo";
+  version = "0.0.9";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "cgarciae";
+    repo = pname;
+    rev = version;
+    sha256 = "0jfqj5150braj4ybnifc6b8mp0w2j93li6bm20lcd7a19qs0lkk2";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  # These deps are not needed for the wheel, but required during the import.
+  propagatedBuildInputs = [
+    jax
+    jaxlib
+  ];
+
+  pythonImportsCheck = [
+    "treeo"
+  ];
+
+  meta = with lib; {
+    description = "A small library for creating and manipulating custom JAX Pytree classes.";
+    homepage = "https://github.com/cgarciae/treeo";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ndl ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/trezor/default.nix b/nixpkgs/pkgs/development/python-modules/trezor/default.nix
index 137d67124458..f58c24e5008c 100644
--- a/nixpkgs/pkgs/development/python-modules/trezor/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/trezor/default.nix
@@ -19,18 +19,18 @@
 , shamir-mnemonic
 , typing-extensions
 , trezor-udev-rules
-, pytest
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "trezor";
-  version = "0.12.4";
+  version = "0.13.0";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3e180d9f9f8b69176b5ef36311b6161f5b793b538eb2dfd4babbb4d3fb1e374e";
+    sha256 = "4571aa09dbfe88b31eb2f16c7c359b4809621b75a04b7b5bc9dbffe17046c99a";
   };
 
   nativeBuildInputs = [ installShellFiles ];
@@ -54,16 +54,11 @@ buildPythonPackage rec {
     trezor-udev-rules
   ];
 
-  checkInputs = [
-    pytest
-  ];
+  checkInputs = [ pytestCheckHook ];
 
-  # disable test_tx_api.py as it requires being online
-  checkPhase = ''
-    runHook preCheck
-    pytest --pyargs tests --ignore tests/test_tx_api.py
-    runHook postCheck
-  '';
+  disabledTestPaths = [
+    "tests/test_stellar.py" # requires stellar-sdk
+  ];
 
   postFixup = ''
     mkdir completions
diff --git a/nixpkgs/pkgs/development/python-modules/trezor_agent/default.nix b/nixpkgs/pkgs/development/python-modules/trezor_agent/default.nix
index cef74c8636b7..41ae2e276185 100644
--- a/nixpkgs/pkgs/development/python-modules/trezor_agent/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/trezor_agent/default.nix
@@ -24,6 +24,12 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ setuptools trezor libagent ecdsa ed25519 mnemonic keepkey semver wheel pinentry ];
 
+  # relax dependency constraint
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "trezor[hidapi]>=0.12.0,<0.13" "trezor[hidapi]>=0.12.0,<0.14"
+  '';
+
   doCheck = false;
   pythonImportsCheck = [ "libagent" ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/trimesh/default.nix b/nixpkgs/pkgs/development/python-modules/trimesh/default.nix
index 1da8a14e43bf..e2ccb99da682 100644
--- a/nixpkgs/pkgs/development/python-modules/trimesh/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/trimesh/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "trimesh";
-  version = "3.9.31";
+  version = "3.9.36";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "cdb7e5b996a2ea180a53b283ac8fac4a8978ae31c860b55c14a205fc772144c2";
+    sha256 = "f01e8edab14d1999700c980c21a1546f37417216ad915a53be649d263130181e";
   };
 
   propagatedBuildInputs = [ numpy ];
diff --git a/nixpkgs/pkgs/development/python-modules/trio-asyncio/default.nix b/nixpkgs/pkgs/development/python-modules/trio-asyncio/default.nix
new file mode 100644
index 000000000000..f6feb789690d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/trio-asyncio/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, trio
+, outcome
+, sniffio
+, pytest-trio
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "trio-asyncio";
+  version = "0.12.0";
+
+  src = fetchPypi {
+    pname = "trio_asyncio";
+    inherit version;
+    sha256 = "824be23b0c678c0df942816cdb57b92a8b94f264fffa89f04626b0ba2d009768";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "'pytest-runner'" ""
+  '';
+
+  propagatedBuildInputs = [
+    trio
+    outcome
+    sniffio
+  ];
+
+  checkInputs = [
+    pytest-trio
+    pytestCheckHook
+  ];
+
+  disabledTestPaths = [
+    "tests/python" # tries to import internal API test.test_asyncio
+  ];
+
+  meta = with lib; {
+    description = "Re-implementation of the asyncio mainloop on top of Trio";
+    homepage = "https://github.com/python-trio/trio-asyncio";
+    license = with licenses; [ asl20 /* or */ mit ];
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/trio/default.nix b/nixpkgs/pkgs/development/python-modules/trio/default.nix
index acd7c7acfb47..0e95da38eaea 100644
--- a/nixpkgs/pkgs/development/python-modules/trio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/trio/default.nix
@@ -11,7 +11,6 @@
 , sniffio
 , stdenv
 , jedi
-, pylint
 , astor
 , yapf
 }:
@@ -26,7 +25,7 @@ buildPythonPackage rec {
     sha256 = "895e318e5ec5e8cea9f60b473b6edb95b215e82d99556a03eb2d20c5e027efe1";
   };
 
-  checkInputs = [ astor pytestCheckHook pyopenssl trustme jedi pylint yapf ];
+  checkInputs = [ astor pytestCheckHook pyopenssl trustme jedi yapf ];
   # It appears that the build sandbox doesn't include /etc/services, and these tests try to use it.
   disabledTests = [
     "getnameinfo"
diff --git a/nixpkgs/pkgs/development/python-modules/trytond/default.nix b/nixpkgs/pkgs/development/python-modules/trytond/default.nix
index 75e1ee68e4b3..8ee48d938e38 100644
--- a/nixpkgs/pkgs/development/python-modules/trytond/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/trytond/default.nix
@@ -12,6 +12,7 @@
 , werkzeug
 , wrapt
 , passlib
+, pillow
 , bcrypt
 , pydot
 , python-Levenshtein
@@ -23,12 +24,14 @@
 
 buildPythonApplication rec {
   pname = "trytond";
-  version = "6.0.5";
-  disabled = pythonOlder "3.5";
+  version = "6.2.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3ccb98dbf905d99991ed0151e13c91cd9267e4aa104fa40097df4e02580dadfc";
+    sha256 = "418f16c45b7130555447af901639b92bb188d39f46ce7fe4dfcd941c5959ed7e";
   };
 
   # Tells the tests which database to use
@@ -37,6 +40,7 @@ buildPythonApplication rec {
   buildInputs = [
     mock
   ];
+
   propagatedBuildInputs = [
     lxml
     relatorio
@@ -46,6 +50,7 @@ buildPythonApplication rec {
     python-sql
     werkzeug
     wrapt
+    pillow
     passlib
 
     # extra dependencies
diff --git a/nixpkgs/pkgs/development/python-modules/ttystatus/default.nix b/nixpkgs/pkgs/development/python-modules/ttystatus/default.nix
deleted file mode 100644
index f32045ce9cde..000000000000
--- a/nixpkgs/pkgs/development/python-modules/ttystatus/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, sphinx
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "ttystatus";
-  version = "0.23";
-  disabled = isPy3k;
-
-  src = fetchurl {
-    url = "http://code.liw.fi/debian/pool/main/p/python-ttystatus/python-ttystatus_${version}.orig.tar.gz";
-    sha256 = "0ymimviyjyh2iizqilg88g4p26f5vpq1zm3cvg7dr7q4y3gmik8y";
-  };
-
-  buildInputs = [ sphinx ];
-
-  # error: invalid command 'test'
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://liw.fi/ttystatus/";
-    description = "Progress and status updates on terminals for Python";
-    license = licenses.gpl3;
-    maintainers = [];
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/tubeup/default.nix b/nixpkgs/pkgs/development/python-modules/tubeup/default.nix
index c8e5db2680d4..65553dc18834 100644
--- a/nixpkgs/pkgs/development/python-modules/tubeup/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tubeup/default.nix
@@ -2,27 +2,29 @@
 , buildPythonPackage
 , internetarchive
 , fetchPypi
-, youtube-dl
+, yt-dlp
 , docopt
 , isPy27
 }:
 
 buildPythonPackage rec {
   pname = "tubeup";
-  version = "0.0.26";
+  version = "0.0.27";
 
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "842bc03c354d8f952436109264db6cd9146f26cee281d1540d5d7c3aa7371bcc";
+    sha256 = "77affb4105fc319d82c56aa5706151a4976b8b504dd252fe3db01443e27cba50";
   };
 
   postPatch = ''
-    substituteInPlace setup.py --replace "docopt==0.6.2" "docopt"
+    substituteInPlace setup.py \
+      --replace "docopt==0.6.2" "docopt" \
+      --replace "internetarchive==2.0.3" "internetarchive"
   '';
 
-  propagatedBuildInputs = [ internetarchive docopt youtube-dl ];
+  propagatedBuildInputs = [ internetarchive docopt yt-dlp ];
 
   pythonImportsCheck = [ "tubeup" ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/tumpa/default.nix b/nixpkgs/pkgs/development/python-modules/tumpa/default.nix
index 6d953740eb80..236cfbb7ba0c 100644
--- a/nixpkgs/pkgs/development/python-modules/tumpa/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tumpa/default.nix
@@ -5,6 +5,7 @@
 , pyside2
 , johnnycanencrypt
 , pythonOlder
+, wrapQtAppsHook
 }:
 
 buildPythonPackage rec {
@@ -25,6 +26,15 @@ buildPythonPackage rec {
     pyside2
   ];
 
+  nativeBuildInputs = [
+    wrapQtAppsHook
+  ];
+
+  dontWrapQtApps = true;
+  preFixup = ''
+    makeWrapperArgs+=("''${qtWrapperArgs[@]}")
+  '';
+
   doCheck = false;
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/tuya-iot-py-sdk/default.nix b/nixpkgs/pkgs/development/python-modules/tuya-iot-py-sdk/default.nix
index 16dddbf50cfe..89db0e84f9e1 100644
--- a/nixpkgs/pkgs/development/python-modules/tuya-iot-py-sdk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tuya-iot-py-sdk/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "tuya-iot-py-sdk";
-  version = "0.5.0";
+  version = "0.6.6";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "tuya";
     repo = "tuya-iot-python-sdk";
     rev = "v${version}";
-    sha256 = "1qfjq4h62phsrmrfb11xwd6gjc28vhs90g3mmx7d8ikgsgnqlvza";
+    sha256 = "sha256-KmSVa71CM/kNhzE4GznaxISGmIaV+UcTSn3v+fmxmrQ=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/tweedledum/default.nix b/nixpkgs/pkgs/development/python-modules/tweedledum/default.nix
index 4b24b3ff4efa..69b126481d3e 100644
--- a/nixpkgs/pkgs/development/python-modules/tweedledum/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tweedledum/default.nix
@@ -1,21 +1,24 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fetchFromGitHub
 , cmake
 , ninja
 , scikit-build
+  # Check Inputs
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "tweedledum";
-  version = "1.0.0";
+  version = "1.1.1";
   format = "pyproject";
 
   src = fetchFromGitHub{
     owner = "boschmitt";
     repo = "tweedledum";
     rev = "v${version}";
-    hash = "sha256-59lJzdw9HLJ9ADxp/a3KW4v5aU/dYm27NSYoz9D49i4=";
+    sha256 = "sha256-wgrY5ajaMYxznyNvlD0ul1PFr3W8oV9I/OVsStlZEBM=";
   };
 
   nativeBuildInputs = [ cmake ninja scikit-build ];
@@ -23,10 +26,8 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "tweedledum" ];
 
-  # TODO: use pytest, but had issues with finding the correct directories
-  checkPhase = ''
-    python -m unittest discover -s ./python/test -t .
-  '';
+  checkInputs = [ pytestCheckHook ];
+  pytestFlagsArray = [ "python/test" ];
 
   meta = with lib; {
     description = "A library for synthesizing and manipulating quantum circuits";
diff --git a/nixpkgs/pkgs/development/python-modules/tweepy/default.nix b/nixpkgs/pkgs/development/python-modules/tweepy/default.nix
index dd11e60aff6c..a98911da58d5 100644
--- a/nixpkgs/pkgs/development/python-modules/tweepy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tweepy/default.nix
@@ -1,20 +1,48 @@
-{ lib, buildPythonPackage, fetchPypi, requests, six, requests_oauthlib }:
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, oauthlib
+, requests
+, pythonOlder
+, vcrpy
+, pytestCheckHook
+, requests_oauthlib
+}:
 
 buildPythonPackage rec {
   pname = "tweepy";
-  version = "3.10.0";
+  version = "4.4.0";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "76e6954b806ca470dda877f57db8792fff06a0beba0ed43efc3805771e39f06a";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-GUo8uvShyIOWWcO5T1JvV7DMC1W70YILx/hvHIGQg0o=";
   };
 
-  doCheck = false;
-  propagatedBuildInputs = [ requests six requests_oauthlib ];
+  propagatedBuildInputs = [
+    aiohttp
+    oauthlib
+    requests
+    requests_oauthlib
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    vcrpy
+  ];
+
+  pythonImportsCheck = [
+    "tweepy"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/tweepy/tweepy";
-    description = "Twitter library for python";
+    description = "Twitter library for Python";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/twentemilieu/default.nix b/nixpkgs/pkgs/development/python-modules/twentemilieu/default.nix
index fb5617321747..a8a0fd0c99a6 100644
--- a/nixpkgs/pkgs/development/python-modules/twentemilieu/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/twentemilieu/default.nix
@@ -5,22 +5,34 @@
 , aiohttp
 , yarl
 , aresponses
+, poetry-core
 , pytest-asyncio
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "twentemilieu";
-  version = "0.3.0";
-  disabled = pythonOlder "3.7";
+  version = "0.5.0";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "frenck";
     repo = "python-twentemilieu";
     rev = "v${version}";
-    sha256 = "1ff35sh73m2s7fh4d8p2pjwdbfljswr8b8lpcjybz8nsh0286xph";
+    sha256 = "sha256-7HQ0+h8oiyY+TacQdX84K0r994rH0AMZAvZz8PUvQl0=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "--cov" ""
+  '';
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
   propagatedBuildInputs = [
     aiohttp
     yarl
diff --git a/nixpkgs/pkgs/development/python-modules/twilio/default.nix b/nixpkgs/pkgs/development/python-modules/twilio/default.nix
index d441e97feea1..12859fae86cc 100644
--- a/nixpkgs/pkgs/development/python-modules/twilio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/twilio/default.nix
@@ -4,30 +4,29 @@
 , mock
 , nose
 , pyjwt
-, pysocks
+, pythonOlder
 , pytz
 , requests
-, six
 }:
 
 buildPythonPackage rec {
   pname = "twilio";
-  version = "7.1.0";
+  version = "7.4.0";
+  format = "setuptools";
 
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "twilio";
     repo = "twilio-python";
     rev = version;
-    sha256 = "sha256-pagqetDQ8/1xDCxZJVTZc9T0dmFA1opd7tMDR11wlVs=";
+    sha256 = "sha256-gN9cVBhiO34uj2ZGqXrnlvOlSaGxry0tMxaTK4SYhjM=";
   };
 
   propagatedBuildInputs = [
     pyjwt
-    pysocks
     pytz
     requests
-    six
   ];
 
   checkInputs = [
@@ -35,7 +34,9 @@ buildPythonPackage rec {
     nose
   ];
 
-  pythonImportsCheck = [ "twilio" ];
+  pythonImportsCheck = [
+    "twilio"
+  ];
 
   meta = with lib; {
     description = "Twilio API client and TwiML generator";
diff --git a/nixpkgs/pkgs/development/python-modules/twill/default.nix b/nixpkgs/pkgs/development/python-modules/twill/default.nix
index 36a7edcf7de8..2ae36cd5408d 100644
--- a/nixpkgs/pkgs/development/python-modules/twill/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/twill/default.nix
@@ -1,15 +1,15 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, nose
+{ lib, buildPythonPackage, fetchPypi, nose
 , lxml
 , requests
 , pyparsing
 }:
 buildPythonPackage rec {
   pname = "twill";
-  version = "3.0";
+  version = "3.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "01770eddb34f5fe6ee59992b84619968885d359ad3d6d9191e8ba8eec93482aa";
+    sha256 = "57cde4c3a2265f1a14d80007aa4f66c2135d509555499e9b156d2b4cf5048c2c";
   };
 
   checkInputs = [ nose ];
diff --git a/nixpkgs/pkgs/development/python-modules/twitterapi/default.nix b/nixpkgs/pkgs/development/python-modules/twitterapi/default.nix
index cf3ec977d0ea..31caed5ebd94 100644
--- a/nixpkgs/pkgs/development/python-modules/twitterapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/twitterapi/default.nix
@@ -7,13 +7,14 @@
 
 buildPythonPackage rec {
   pname = "twitterapi";
-  version = "2.7.5";
+  version = "2.7.10";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "geduldig";
     repo = "TwitterAPI";
     rev = "v${version}";
-    sha256 = "1s5q3gzd69syk8khlyy7ap8gpymvhgqrlv3vp6vdmwnaafjvvyy3";
+    sha256 = "sha256-NWvoamSSyMssV4yJpMZtnCwQ5zBpqbgyUA7sJa9854U=";
   };
 
   propagatedBuildInputs = [
@@ -23,7 +24,10 @@ buildPythonPackage rec {
 
   # Tests are interacting with the Twitter API
   doCheck = false;
-  pythonImportsCheck = [ "TwitterAPI" ];
+
+  pythonImportsCheck = [
+    "TwitterAPI"
+  ];
 
   meta = with lib; {
     description = "Python wrapper for Twitter's REST and Streaming APIs";
diff --git a/nixpkgs/pkgs/development/python-modules/txtorcon/default.nix b/nixpkgs/pkgs/development/python-modules/txtorcon/default.nix
index 23fa4735ef70..42568bbca111 100644
--- a/nixpkgs/pkgs/development/python-modules/txtorcon/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/txtorcon/default.nix
@@ -1,6 +1,6 @@
 { lib, python, buildPythonPackage, pythonOlder, fetchPypi, isPy3k, incremental, ipaddress, twisted
 , automat, zope_interface, idna, pyopenssl, service-identity, pytest, mock, lsof
-, GeoIP, isPy27}:
+, GeoIP}:
 
 buildPythonPackage rec {
   pname = "txtorcon";
diff --git a/nixpkgs/pkgs/development/python-modules/typecode/default.nix b/nixpkgs/pkgs/development/python-modules/typecode/default.nix
index fbd907365c22..16ee927e849b 100644
--- a/nixpkgs/pkgs/development/python-modules/typecode/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/typecode/default.nix
@@ -15,6 +15,7 @@
 buildPythonPackage rec {
   pname = "typecode";
   version = "21.6.1";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
@@ -43,6 +44,8 @@ buildPythonPackage rec {
 
   disabledTests = [
     "TestFileTypesDataDriven"
+    # AssertionError: assert 'application/x-bytecode.python'...
+    "test_compiled_python_1"
   ];
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/typecode/libmagic.nix b/nixpkgs/pkgs/development/python-modules/typecode/libmagic.nix
index 9b652e664e52..5668b62e200f 100644
--- a/nixpkgs/pkgs/development/python-modules/typecode/libmagic.nix
+++ b/nixpkgs/pkgs/development/python-modules/typecode/libmagic.nix
@@ -4,7 +4,6 @@
 , plugincode
 , file
 , zlib
-, pytest
 }:
 buildPythonPackage rec {
   pname = "typecode-libmagic";
diff --git a/nixpkgs/pkgs/development/python-modules/typed-ast/default.nix b/nixpkgs/pkgs/development/python-modules/typed-ast/default.nix
index d5c190e1c41f..c4977ab08292 100644
--- a/nixpkgs/pkgs/development/python-modules/typed-ast/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/typed-ast/default.nix
@@ -1,26 +1,28 @@
-{ buildPythonPackage, fetchFromGitHub, lib, pythonOlder, pytest }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, pythonOlder
+}:
+
 buildPythonPackage rec {
   pname = "typed-ast";
-  version = "1.4.3";
+  version = "1.5.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
   src = fetchFromGitHub {
     owner = "python";
     repo = "typed_ast";
     rev = version;
-    sha256 = "16mn9snwik5n2ib65sw2xcaqdm02j8ps21zgjxf8kyy7qnx2mx4w";
+    hash = "sha256-qfXMT+rSf/WcWHpkg4VZXZMYj/5IKQWAKRsxQ0TRzPU=";
   };
-  # Only works with Python 3.3 and newer;
-  disabled = pythonOlder "3.3";
-
-  pythonImportsCheck = [
-    "typed_ast"
-    "typed_ast.ast27"
-    "typed_ast.ast3"
-    "typed_ast.conversions"
-  ];
 
   checkInputs = [
     pytest
   ];
+
   checkPhase = ''
     runHook preCheck
 
@@ -32,9 +34,17 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  meta = {
+  pythonImportsCheck = [
+    "typed_ast"
+    "typed_ast.ast27"
+    "typed_ast.ast3"
+    "typed_ast.conversions"
+  ];
+
+  meta = with lib; {
+    description = "Python AST modules with type comment support";
     homepage = "https://github.com/python/typed_ast";
-    description = "Python 2 and 3 ast modules with type comment support";
-    license = lib.licenses.asl20;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/typed-settings/default.nix b/nixpkgs/pkgs/development/python-modules/typed-settings/default.nix
index 47c98ad9531e..ea5092cb2ae8 100644
--- a/nixpkgs/pkgs/development/python-modules/typed-settings/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/typed-settings/default.nix
@@ -1,8 +1,10 @@
 { lib
 , buildPythonPackage
+, pythonOlder
 , fetchPypi
 , setuptoolsBuildHook
 , attrs
+, cattrs
 , toml
 , pytestCheckHook
 , click
@@ -10,28 +12,43 @@
 
 buildPythonPackage rec {
   pname = "typed-settings";
-  version = "0.10.0";
+  version = "0.11.1";
   format = "pyproject";
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1fr6qkq3ldlp5i5l4b891w9ail9lfhaxlar3yij912slq5w0s8aw";
+    sha256 = "sha256-gcyOeUyRAwU5s+XoQO/yM0tx7QHjDsBeyoe5HRZHtIs=";
   };
 
   nativeBuildInputs = [
     setuptoolsBuildHook
-    pytestCheckHook
   ];
 
   propagatedBuildInputs = [
     attrs
+    cattrs
     toml
   ];
 
+  preCheck = ''
+    pushd tests
+  '';
+
   checkInputs = [
     click
+    pytestCheckHook
   ];
 
+  disabledTests = [
+    # mismatches in click help output
+    "test_help"
+  ];
+
+  postCheck = ''
+    popd
+  '';
+
   meta = {
     description = "Typed settings based on attrs classes";
     homepage = "https://gitlab.com/sscherfke/typed-settings";
diff --git a/nixpkgs/pkgs/development/python-modules/typeguard/default.nix b/nixpkgs/pkgs/development/python-modules/typeguard/default.nix
index 0385bd707068..63e1502226d9 100644
--- a/nixpkgs/pkgs/development/python-modules/typeguard/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/typeguard/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "typeguard";
-  version = "2.12.1";
+  version = "2.13.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c2af8b9bdd7657f4bd27b45336e7930171aead796711bc4cfc99b4731bb9d051";
+    sha256 = "7e50071590ab997509aa0977609eb5cf9d73d84c1f416cb4fab78b77a9d15326";
   };
 
   buildInputs = [ setuptools-scm ];
diff --git a/nixpkgs/pkgs/development/python-modules/typer/default.nix b/nixpkgs/pkgs/development/python-modules/typer/default.nix
index bc55e3ab8ff7..17008eafc1ba 100644
--- a/nixpkgs/pkgs/development/python-modules/typer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/typer/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fetchPypi
 , click
@@ -42,6 +43,11 @@ buildPythonPackage rec {
   preCheck = ''
     export HOME=$(mktemp -d);
   '';
+  disabledTests = lib.optionals stdenv.isDarwin [
+    # likely related to https://github.com/sarugaku/shellingham/issues/35
+    "test_show_completion"
+    "test_install_completion"
+  ];
 
   pythonImportsCheck = [ "typer" ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/types-decorator/default.nix b/nixpkgs/pkgs/development/python-modules/types-decorator/default.nix
index 631d4836d7f3..4436c5a2a6a4 100644
--- a/nixpkgs/pkgs/development/python-modules/types-decorator/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-decorator/default.nix
@@ -5,17 +5,20 @@
 
 buildPythonPackage rec {
   pname = "types-decorator";
-  version = "5.1.0";
+  version = "5.1.2";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-mavQDGFOVOde4I2IeZiGrMKRjMiJBeymR0upF7Mncps=";
+    sha256 = "b3dd9027af1131b4e55ccd09248b7accc7a02d567139e2009ed20db13cf90600";
   };
 
   # Modules doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [ "decorator-stubs" ];
+  pythonImportsCheck = [
+    "decorator-stubs"
+  ];
 
   meta = with lib; {
     description = "Typing stubs for decorator";
diff --git a/nixpkgs/pkgs/development/python-modules/types-protobuf/default.nix b/nixpkgs/pkgs/development/python-modules/types-protobuf/default.nix
index b3e38c864070..382bd3111741 100644
--- a/nixpkgs/pkgs/development/python-modules/types-protobuf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-protobuf/default.nix
@@ -1,15 +1,29 @@
-{ buildPythonPackage, fetchPypi, lib, types-futures }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, types-futures
+}:
 
 buildPythonPackage rec {
   pname = "types-protobuf";
-  version = "3.18.0";
+  version = "3.18.2";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a391d1a9138fe53fe08aeb6aa15ca7f1a188659b9a6c12af5313c55730eccd6c";
+    sha256 = "sha256-yiHe3+d1msvrDNj1xyp0/zxAmuDAe8HZTv9RI6wPojw=";
   };
 
-  propagatedBuildInputs = [ types-futures ];
+  propagatedBuildInputs = [
+    types-futures
+  ];
+
+  # Module doesn't have tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "google-stubs"
+  ];
 
   meta = with lib; {
     description = "Typing stubs for protobuf";
diff --git a/nixpkgs/pkgs/development/python-modules/types-pytz/default.nix b/nixpkgs/pkgs/development/python-modules/types-pytz/default.nix
index a6139eb9c9b2..b9d0abc25b11 100644
--- a/nixpkgs/pkgs/development/python-modules/types-pytz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-pytz/default.nix
@@ -5,17 +5,20 @@
 
 buildPythonPackage rec {
   pname = "types-pytz";
-  version = "2021.3.0";
+  version = "2021.3.3";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-hqYZZ4NNzuqvmLaQLtg1fv3SYruK/K9LyMzs90hZJ3g=";
+    sha256 = "sha256-9tIdZoeTWhYV20ZLHh34ANGVAsNrwEhvQ759/SxASUc=";
   };
 
   # Modules doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [ "pytz-stubs" ];
+  pythonImportsCheck = [
+    "pytz-stubs"
+  ];
 
   meta = with lib; {
     description = "Typing stubs for pytz";
diff --git a/nixpkgs/pkgs/development/python-modules/types-requests/default.nix b/nixpkgs/pkgs/development/python-modules/types-requests/default.nix
index 05fb1b2b9f43..3006c2c5e99e 100644
--- a/nixpkgs/pkgs/development/python-modules/types-requests/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-requests/default.nix
@@ -5,17 +5,20 @@
 
 buildPythonPackage rec {
   pname = "types-requests";
-  version = "2.25.11";
+  version = "2.26.3";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-snkoTlH2aOOO4S2WZeTXiQifUy3CoL5KFQjKDv2Yup4=";
+    sha256 = "sha256-1j+mF4Rtzv/1qi1Z5Hq0/9gG5LsFZxFfetu15DgwL+Q=";
   };
 
-  # Modules doesn't have tests
+  # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [ "requests-stubs" ];
+  pythonImportsCheck = [
+    "requests-stubs"
+  ];
 
   meta = with lib; {
     description = "Typing stubs for requests";
diff --git a/nixpkgs/pkgs/development/python-modules/types-setuptools/default.nix b/nixpkgs/pkgs/development/python-modules/types-setuptools/default.nix
new file mode 100644
index 000000000000..b88dc5b0260b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/types-setuptools/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "types-setuptools";
+  version = "57.4.5";
+  format = "setuptools";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-pGAO/cpoozIErZwIP9mWbWOu5hp9AH6RK2r8b/V9bgI=";
+  };
+
+  # Module doesn't have tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "setuptools-stubs"
+  ];
+
+  meta = with lib; {
+    description = "Typing stubs for setuptools";
+    homepage = "https://github.com/python/typeshed";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/types-toml/default.nix b/nixpkgs/pkgs/development/python-modules/types-toml/default.nix
new file mode 100644
index 000000000000..d87528c20324
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/types-toml/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "types-toml";
+  version = "0.10.1";
+  format = "setuptools";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1jqh0vki1hccj391gnxpblim429sj56npgq2z749f8v9ay6qy7sw";
+  };
+
+  # Module doesn't have tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "toml-stubs" ];
+
+  meta = with lib; {
+    description = "Typing stubs for toml";
+    homepage = "https://github.com/python/typeshed";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/types-typed-ast/default.nix b/nixpkgs/pkgs/development/python-modules/types-typed-ast/default.nix
new file mode 100644
index 000000000000..4962f2d02e3a
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/types-typed-ast/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "types-typed-ast";
+  version = "1.5.1";
+  format = "setuptools";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-UQ876qlUkrNUTWfoFYGvopA8dktwiJ/82yhubGJn0pc=";
+  };
+
+  # Module doesn't have tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "typed_ast-stubs"
+  ];
+
+  meta = with lib; {
+    description = "Typing stubs for typed-ast";
+    homepage = "https://github.com/python/typeshed";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 veehaitch ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/typical/default.nix b/nixpkgs/pkgs/development/python-modules/typical/default.nix
new file mode 100644
index 000000000000..ee815fa15e1f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/typical/default.nix
@@ -0,0 +1,80 @@
+{ lib
+, buildPythonPackage
+, fastjsonschema
+, fetchFromGitHub
+, future-typing
+, inflection
+, mypy
+, orjson
+, pandas
+, pendulum
+, poetry-core
+, pydantic
+, pytestCheckHook
+, pythonOlder
+, sqlalchemy
+, typing-extensions
+}:
+
+buildPythonPackage rec {
+  pname = "typical";
+  version = "2.7.9";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "seandstewart";
+    repo = "typical";
+    rev = "v${version}";
+    sha256 = "sha256-ITIsSM92zftnvqLiVGFl//IbBb8N3ffkkqohzOx2JO4=";
+  };
+
+  patches = [
+    ./use-poetry-core.patch
+  ];
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    inflection
+    pendulum
+    fastjsonschema
+    orjson
+    future-typing
+  ] ++ lib.optionals (pythonOlder "3.10") [
+    typing-extensions
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    mypy
+    pydantic
+    sqlalchemy
+    pandas
+  ];
+
+  disabledTests = [
+    # We use orjson
+    "test_ujson"
+    # ConstraintValueError: Given value <{'key...
+    "test_tagged_union_validate"
+  ];
+
+  disabledTestPaths = [
+    "benchmark/"
+  ];
+
+  pythonImportsCheck = [
+    "typic"
+  ];
+
+  meta = with lib; {
+    description = "Python library for runtime analysis, inference and validation of Python types";
+    homepage = "https://python-typical.org/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ kfollesdal ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/typical/use-poetry-core.patch b/nixpkgs/pkgs/development/python-modules/typical/use-poetry-core.patch
new file mode 100644
index 000000000000..f3c32e621aea
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/typical/use-poetry-core.patch
@@ -0,0 +1,13 @@
+diff --git a/pyproject.toml b/pyproject.toml
+index a588a0d..43da394 100644
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -154,7 +154,7 @@ exclude = '''
+ 
+ [build-system]
+ requires = ["poetry>=0.12"]
+-build-backend = "poetry.masonry.api"
++build-backend = "poetry.core.masonry.api"
+ 
+ [bumpver]
+ current_version = "v2.7.5"
diff --git a/nixpkgs/pkgs/development/python-modules/typing-inspect/default.nix b/nixpkgs/pkgs/development/python-modules/typing-inspect/default.nix
index 4f09d6002d5c..1e5303b7b09e 100644
--- a/nixpkgs/pkgs/development/python-modules/typing-inspect/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/typing-inspect/default.nix
@@ -3,7 +3,6 @@
 , fetchPypi
 , typing-extensions
 , mypy-extensions
-, isPy39
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/tzlocal/default.nix b/nixpkgs/pkgs/development/python-modules/tzlocal/default.nix
index 363e1d12a55e..7079392e4f66 100644
--- a/nixpkgs/pkgs/development/python-modules/tzlocal/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tzlocal/default.nix
@@ -1,19 +1,38 @@
-{ lib, buildPythonPackage, fetchPypi
-, pytz }:
+{ lib
+, stdenv
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, pytz-deprecation-shim
+, pytest-mock
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "tzlocal";
-  version = "2.1"; # version needs to be compatible with APScheduler
+  version = "4.1"; # version needs to be compatible with APScheduler
 
-  propagatedBuildInputs = [ pytz ];
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "643c97c5294aedc737780a49d9df30889321cbe1204eac2c2ec6134035a92e44";
+    sha256 = "sha256-DygBWsaKXAZyEEAKkZf8XTa6m8P46vHaPL1ZrN/tngk=";
   };
 
-  # test fail (timezone test fail)
-  doCheck = false;
+  propagatedBuildInputs = [
+    pytz-deprecation-shim
+  ];
+
+  checkInputs = [
+    pytest-mock
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    "test_conflicting"
+    "test_noconflict"
+    "test_symlink_localtime"
+  ] ++ lib.optional stdenv.isDarwin "test_assert_tz_offset";
 
   pythonImportsCheck = [ "tzlocal" ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/uamqp/default.nix b/nixpkgs/pkgs/development/python-modules/uamqp/default.nix
index b038eb5316a5..15f098d90e48 100644
--- a/nixpkgs/pkgs/development/python-modules/uamqp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/uamqp/default.nix
@@ -1,28 +1,46 @@
-{ stdenv
-, lib
+{ lib
+, stdenv
 , buildPythonPackage
-, fetchPypi
-, fetchpatch
-, isPy3k
 , certifi
+, CFNetwork
 , cmake
+, CoreFoundation
 , enum34
+, fetchpatch
+, fetchPypi
+, isPy3k
 , openssl
-, six
-, CFNetwork
-, CoreFoundation
 , Security
+, six
 }:
 
 buildPythonPackage rec {
   pname = "uamqp";
-  version = "1.4.1";
+  version = "1.4.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-JNGlpu2HvwTGV77WnAQFyvJImHesE2R+ZwMAlhlyk2U=";
+    sha256 = "sha256-L4IQWnxRRL3yopNT91Mk8KKdph9Vg2PHkGH+86uDu7c=";
   };
 
+  nativeBuildInputs = [
+    cmake
+  ];
+
+  buildInputs = lib.optionals stdenv.isDarwin [
+    CoreFoundation
+    CFNetwork
+    Security
+  ];
+
+  propagatedBuildInputs = [
+    certifi
+    openssl
+    six
+  ] ++ lib.optionals (!isPy3k) [
+    enum34
+  ];
+
   patches = [
     (fetchpatch {
       url = "https://github.com/Azure/azure-c-shared-utility/commit/52ab2095649b5951e6af77f68954209473296983.patch";
@@ -32,27 +50,15 @@ buildPythonPackage rec {
     })
   ];
 
-  buildInputs = [
-    openssl
-    certifi
-    six
-  ] ++ lib.optionals (!isPy3k) [
-    enum34
-  ] ++ lib.optionals stdenv.isDarwin [
-    CoreFoundation
-    CFNetwork
-    Security
-  ];
-
   dontUseCmakeConfigure = true;
 
-  nativeBuildInputs = [
-    cmake
-  ];
-
-  # has no tests
+  # Project has no tests
   doCheck = false;
 
+  pythonImportsCheck = [
+    "uamqp"
+  ];
+
   meta = with lib; {
     description = "An AMQP 1.0 client library for Python";
     homepage = "https://github.com/Azure/azure-uamqp-python";
diff --git a/nixpkgs/pkgs/development/python-modules/ufonormalizer/default.nix b/nixpkgs/pkgs/development/python-modules/ufonormalizer/default.nix
index 5d0af719a39b..dbc02750de9a 100644
--- a/nixpkgs/pkgs/development/python-modules/ufonormalizer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ufonormalizer/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "ufonormalizer";
-  version = "0.6.0";
+  version = "0.6.1";
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0w44qlvg4xks7jb0lf3lhsbylagq956x0wkcal9ix34bz3p7vdxd";
+    sha256 = "e61110e75a500083f265385b1354b578610f9542e3bbbeedb98a2a6155e4aa6c";
     extension = "zip";
   };
 
diff --git a/nixpkgs/pkgs/development/python-modules/ujson/2.nix b/nixpkgs/pkgs/development/python-modules/ujson/2.nix
deleted file mode 100644
index d9ec65c2392e..000000000000
--- a/nixpkgs/pkgs/development/python-modules/ujson/2.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, pytestCheckHook
-}:
-
-buildPythonPackage rec {
-  pname = "ujson";
-  version = "2.0.3";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "18z9gb9ggy1r464b9q1gqs078mqgrkj6dys5a47529rqk3yfybdx";
-  };
-
-  nativeBuildInputs = [ setuptools-scm ];
-
-  checkInputs = [
-    pytestCheckHook
-  ];
-
-  meta = with lib; {
-    homepage = "https://pypi.python.org/pypi/ujson";
-    description = "Ultra fast JSON encoder and decoder for Python";
-    license = licenses.bsd3;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/ujson/default.nix b/nixpkgs/pkgs/development/python-modules/ujson/default.nix
index 7b0a1f37deae..4d12af0689d8 100644
--- a/nixpkgs/pkgs/development/python-modules/ujson/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ujson/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "ujson";
-  version = "4.1.0";
+  version = "4.3.0";
   disabled = isPyPy || pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-IrY+xECfDS8sTJ1aozGZfgJHC3oVoyM/PMMvL5uS1Yw=";
+    sha256 = "baee56eca35cb5fbe02c28bd9c0936be41a96fa5c0812d9d4b7edeb5c3d568a0";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/ukkonen/default.nix b/nixpkgs/pkgs/development/python-modules/ukkonen/default.nix
new file mode 100644
index 000000000000..dfdcf3515220
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/ukkonen/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, cffi
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "ukkonen";
+  version = "1.0.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "asottile";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "jG6VP/P5sadrdrmneH36/ExSld9blyMAAG963QS9+p0=";
+  };
+
+  nativeBuildInputs = [
+    cffi
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "ukkonen"
+  ];
+
+  meta = with lib; {
+    description = "Python implementation of bounded Levenshtein distance (Ukkonen)";
+    homepage = "https://github.com/asottile/ukkonen";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/umap-learn/default.nix b/nixpkgs/pkgs/development/python-modules/umap-learn/default.nix
index fcf96a715f15..81d70b0afc0d 100644
--- a/nixpkgs/pkgs/development/python-modules/umap-learn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/umap-learn/default.nix
@@ -8,18 +8,20 @@
 , numba
 , pynndescent
 , tensorflow
+, tqdm
 , pytestCheckHook
+, keras
 }:
 
 buildPythonPackage rec {
   pname = "umap-learn";
-  version = "0.5.1";
+  version = "0.5.2";
 
   src = fetchFromGitHub {
     owner = "lmcinnes";
     repo = "umap";
     rev = version;
-    sha256 = "0favphngcz5jvyqs06x07hk552lvl9qx3vka8r4x0xmv88gsg349";
+    sha256 = "sha256-JfYuuE1BP+HdiEl7l01sZ/XXlEwHyAsLjK9nqhRd/3o=";
   };
 
   propagatedBuildInputs = [
@@ -28,12 +30,14 @@ buildPythonPackage rec {
     scipy
     numba
     pynndescent
+    tqdm
   ];
 
   checkInputs = [
     nose
     tensorflow
     pytestCheckHook
+    keras
   ];
 
   preCheck = ''
diff --git a/nixpkgs/pkgs/development/python-modules/umemcache/default.nix b/nixpkgs/pkgs/development/python-modules/umemcache/default.nix
deleted file mode 100644
index 26f8ba02756c..000000000000
--- a/nixpkgs/pkgs/development/python-modules/umemcache/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ lib, buildPythonPackage, isPy3k, fetchurl }:
-
-buildPythonPackage rec {
-  pname = "umemcache";
-  version = "1.6.3";
-  disabled = isPy3k;
-
-  src = fetchurl {
-    url = "mirror://pypi/u/umemcache/${pname}-${version}.zip";
-    sha256 = "211031a03576b7796bf277dbc9c9e3e754ba066bbb7fb601ab5c6291b8ec1918";
-  };
-
-  hardeningDisable = [ "format" ];
-
-  meta = with lib; {
-    description = "Ultra fast memcache client written in highly optimized C++ with Python bindings";
-    homepage = "https://github.com/esnme/ultramemcache";
-    license = licenses.bsdOriginal;
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/uncompyle6/default.nix b/nixpkgs/pkgs/development/python-modules/uncompyle6/default.nix
index 31095fcd50e6..15c7322fb3c3 100644
--- a/nixpkgs/pkgs/development/python-modules/uncompyle6/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/uncompyle6/default.nix
@@ -12,12 +12,12 @@
 
 buildPythonPackage rec {
   pname = "uncompyle6";
-  version = "3.7.4";
+  version = "3.8.0";
   disabled = pythonAtLeast "3.9"; # See: https://github.com/rocky/python-uncompyle6/issues/331
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "af8330861bf940e7a3ae0f06d129b8e645191a36bf73ca15ff51997a837d41f8";
+    sha256 = "sha256-YgYzYY9t/B8+eBh+Igk014/8Y5wOOdrsofxTWquBcBQ=";
   };
 
   checkInputs = [ nose pytest hypothesis six ];
diff --git a/nixpkgs/pkgs/development/python-modules/unicode-slugify/default.nix b/nixpkgs/pkgs/development/python-modules/unicode-slugify/default.nix
index a0574f948f0d..102af56618b8 100644
--- a/nixpkgs/pkgs/development/python-modules/unicode-slugify/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/unicode-slugify/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "unicode-slugify";
-  version = "0.1.3";
+  version = "0.1.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0l7nphfdq9rgiczbl8n3mra9gx7pxap0xz540pkyz034zbz3mkrl";
+    sha256 = "25f424258317e4cb41093e2953374b3af1f23097297664731cdb3ae46f6bd6c3";
   };
 
   propagatedBuildInputs = [ six unidecode ];
diff --git a/nixpkgs/pkgs/development/python-modules/unicorn/default.nix b/nixpkgs/pkgs/development/python-modules/unicorn/default.nix
index 484f422adf3e..1f2876bdc693 100644
--- a/nixpkgs/pkgs/development/python-modules/unicorn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/unicorn/default.nix
@@ -1,10 +1,17 @@
-{ lib, stdenv, buildPythonPackage, setuptools, unicorn-emu }:
+{ lib
+, stdenv
+, buildPythonPackage
+, setuptools
+, unicorn-emu
+}:
 
 buildPythonPackage rec {
   pname = "unicorn";
   version = lib.getVersion unicorn-emu;
+  format = "setuptools";
 
   src = unicorn-emu.src;
+
   sourceRoot = "source/bindings/python";
 
   prePatch = ''
@@ -12,12 +19,31 @@ buildPythonPackage rec {
     ln -s ${unicorn-emu}/lib/libunicorn.a prebuilt/
   '';
 
-  propagatedBuildInputs = [ setuptools ];
+  # needed on non-x86 linux
+  setupPyBuildFlags = lib.optionals stdenv.isLinux [ "--plat-name" "linux" ];
+
+  propagatedBuildInputs = [
+    setuptools
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+
+    mv unicorn unicorn.hidden
+    patchShebangs sample_*.py shellcode.py
+    sh -e sample_all.sh
+
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [
+    "unicorn"
+  ];
 
   meta = with lib; {
     description = "Python bindings for Unicorn CPU emulator engine";
     homepage = "https://www.unicorn-engine.org/";
-    license = [ licenses.gpl2 ];
+    license = licenses.gpl2Plus;
     maintainers = with maintainers; [ bennofs ris ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/unidecode/default.nix b/nixpkgs/pkgs/development/python-modules/unidecode/default.nix
index 694f10ba0875..f16fec644db0 100644
--- a/nixpkgs/pkgs/development/python-modules/unidecode/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/unidecode/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "unidecode";
-  version = "1.3.1";
+  version = "1.3.2";
 
   disabled = pythonOlder "3.5";
 
@@ -22,7 +22,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "unidecode" ];
+  pythonImportsCheck = [
+    "unidecode"
+  ];
 
   meta = with lib; {
     homepage = "https://pypi.python.org/pypi/Unidecode/";
diff --git a/nixpkgs/pkgs/development/python-modules/unrardll/default.nix b/nixpkgs/pkgs/development/python-modules/unrardll/default.nix
index 49e070b84631..4feb29a09016 100644
--- a/nixpkgs/pkgs/development/python-modules/unrardll/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/unrardll/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "unrardll";
-  version = "0.1.4";
+  version = "0.1.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4149c0729cf96a0bae80360e7d94dc40af1088c8da7f6eb8d10e09b8632e92ad";
+    sha256 = "8bebb480b96cd49d4290d814914f39cff75cf0fa0514c4790bb32b1757227c78";
   };
 
   buildInputs = [ unrar ];
diff --git a/nixpkgs/pkgs/development/python-modules/uonet-request-signer-hebe/default.nix b/nixpkgs/pkgs/development/python-modules/uonet-request-signer-hebe/default.nix
new file mode 100644
index 000000000000..19d4bba0b974
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uonet-request-signer-hebe/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, pyopenssl
+}:
+
+buildPythonPackage rec {
+  pname = "uonet-request-signer-hebe";
+  version = "0.1.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "fidopnpAt5CXPsLbx+V8wrJCQQ/WIO6AqxpsYLDv8qM=";
+  };
+
+  propagatedBuildInputs = [
+    pyopenssl
+  ];
+
+  # Source is not tagged
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "uonet_request_signer_hebe"
+  ];
+
+  meta = with lib; {
+    description = "UONET+ (hebe) request signer for Python";
+    homepage = "https://github.com/wulkanowy/uonet-request-signer";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/upass/default.nix b/nixpkgs/pkgs/development/python-modules/upass/default.nix
index 61197c7219da..342cd79e6837 100644
--- a/nixpkgs/pkgs/development/python-modules/upass/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/upass/default.nix
@@ -1,27 +1,43 @@
 { lib
 , buildPythonPackage
-, fetchurl
+, fetchFromGitHub
 , pyperclip
 , urwid
 }:
 
 buildPythonPackage rec {
-  version = "0.1.4";
   pname = "upass";
+  version = "0.2.1";
+  format = "setuptools";
 
-  src = fetchurl {
-    url = "https://github.com/Kwpolska/upass/archive/v${version}.tar.gz";
-    sha256 = "0f2lyi7xhvb60pvzx82dpc13ksdj5k92ww09czclkdz8k0dxa7hb";
+  src = fetchFromGitHub {
+    owner = "Kwpolska";
+    repo = "upass";
+    rev = "v${version}";
+    sha256 = "0bgplq07dmlld3lp6jag1w055glqislfgwwq2k7cb2bzjgvysdnj";
   };
 
-  propagatedBuildInputs = [ pyperclip urwid ];
+  propagatedBuildInputs = [
+    pyperclip
+    urwid
+  ];
 
+  # Projec thas no tests
   doCheck = false;
 
+  postInstall = ''
+    export HOME=$(mktemp -d);
+    mkdir $HOME/.config
+  '';
+
+  pythonImportsCheck = [
+    "upass"
+  ];
+
   meta = with lib; {
     description = "Console UI for pass";
     homepage = "https://github.com/Kwpolska/upass";
     license = licenses.bsd3;
+    maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/uproot/default.nix b/nixpkgs/pkgs/development/python-modules/uproot/default.nix
index 120a0fc436fd..ef262e057e24 100644
--- a/nixpkgs/pkgs/development/python-modules/uproot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/uproot/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "uproot";
-  version = "4.1.1";
+  version = "4.1.5";
 
   # fetch from github for tests
   src = fetchFromGitHub {
     owner = "scikit-hep";
     repo = "uproot4";
     rev = version;
-    sha256 = "sha256-qh/rtZDE6L1IQJjzE+ns0eSG1BKbES7s3A/35hc+tXg=";
+    sha256 = "sha256-zsmAdqoWvFhRRRw4fdbRhhKkDV5oP/eYsfpA0AVqAnI=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/uptime-kuma-monitor/default.nix b/nixpkgs/pkgs/development/python-modules/uptime-kuma-monitor/default.nix
new file mode 100644
index 000000000000..f689942abf93
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/uptime-kuma-monitor/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, requests
+, buildPythonPackage
+, fetchPypi
+, prometheus-client
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "uptime-kuma-monitor";
+  version = "1.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    pname = "uptime_kuma_monitor";
+    inherit version;
+    sha256 = "0zi4856hj5ar4yidh7366kx3xnh8qzydw9z8vlalcn98jf3jlnk9";
+  };
+
+  propagatedBuildInputs = [
+    requests
+    prometheus-client
+  ];
+
+  # Project has no test
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "uptime_kuma_monitor"
+  ];
+
+  meta = with lib; {
+    description = "Python wrapper around UptimeKuma /metrics endpoint";
+    homepage = "https://github.com/meichthys/utptime_kuma_monitor";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/uranium/default.nix b/nixpkgs/pkgs/development/python-modules/uranium/default.nix
index a8ce6713f2c0..58b96b5cd7a4 100644
--- a/nixpkgs/pkgs/development/python-modules/uranium/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/uranium/default.nix
@@ -2,7 +2,7 @@
 , pyqt5, numpy, scipy, shapely, libarcus, cryptography, doxygen, gettext, pythonOlder }:
 
 buildPythonPackage rec {
-  version = "4.10.0";
+  version = "4.12.0";
   pname = "uranium";
   format = "other";
 
@@ -10,7 +10,7 @@ buildPythonPackage rec {
     owner = "Ultimaker";
     repo = "Uranium";
     rev = version;
-    sha256 = "0bxbkqc4ajs52vmalmhvvqvl1aw2ss6yf7nclwx8nc2g5vchd4ng";
+    sha256 = "sha256-SE9xqrloPXIRTJiiqUdRKFmb4c0OjmJK5CMn6VXMFmk=";
   };
 
   disabled = pythonOlder "3.5.0";
diff --git a/nixpkgs/pkgs/development/python-modules/uritools/default.nix b/nixpkgs/pkgs/development/python-modules/uritools/default.nix
index 1d9150428084..3d1b274d0690 100644
--- a/nixpkgs/pkgs/development/python-modules/uritools/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/uritools/default.nix
@@ -1,18 +1,29 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27 }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "uritools";
-  version = "3.0.2";
-  disabled = isPy27;
+  version = "4.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "28ffef82ce3b2793237d36e45aa7cde28dae6502f6a93fdbd05ede401520e279";
+    sha256 = "420d94c1ff4bf90c678fca9c17b8314243bbcaa992c400a95e327f7f622e1edf";
   };
 
+  pythonImportsCheck = [
+    "uritools"
+  ];
+
   meta = with lib; {
     description = "RFC 3986 compliant, Unicode-aware, scheme-agnostic replacement for urlparse";
+    homepage = "https://github.com/tkem/uritools/";
     license = licenses.mit;
-    maintainers = [ maintainers.rvolosatovs ];
+    maintainers = with maintainers; [ rvolosatovs ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/urllib3/2.nix b/nixpkgs/pkgs/development/python-modules/urllib3/2.nix
index f1eea4c31d8d..a52e68eac5e3 100644
--- a/nixpkgs/pkgs/development/python-modules/urllib3/2.nix
+++ b/nixpkgs/pkgs/development/python-modules/urllib3/2.nix
@@ -13,7 +13,6 @@
 , pytest-freezegun
 , pytest-timeout
 , pytestCheckHook
-, pythonOlder
 , tornado
 , trustme
 }:
diff --git a/nixpkgs/pkgs/development/python-modules/urllib3/default.nix b/nixpkgs/pkgs/development/python-modules/urllib3/default.nix
index 1c25612a16d9..91bc6e68eb36 100644
--- a/nixpkgs/pkgs/development/python-modules/urllib3/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/urllib3/default.nix
@@ -12,18 +12,17 @@
 , pytest-freezegun
 , pytest-timeout
 , pytestCheckHook
-, pythonOlder
 , tornado
 , trustme
 }:
 
 buildPythonPackage rec {
   pname = "urllib3";
-  version = "1.26.6";
+  version = "1.26.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-9XtMFsYvonYLfj2Xw1slVRL7a1miWXMPNroyzp+ONC8=";
+    sha256 = "sha256-SYfGVVT3otvzDBj9SHeO8SSvb6t3GjdxA9oFheIzbs4=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/usbtmc/default.nix b/nixpkgs/pkgs/development/python-modules/usbtmc/default.nix
index 6dbb6ce184ff..6c8b3ede8088 100644
--- a/nixpkgs/pkgs/development/python-modules/usbtmc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/usbtmc/default.nix
@@ -1,12 +1,14 @@
-{ lib, fetchurl, buildPythonPackage, pyusb }:
+{ lib, fetchFromGitHub, buildPythonPackage, pyusb }:
 
 buildPythonPackage rec {
   pname = "usbtmc";
   version = "0.8";
 
-  src = fetchurl {
-    url = "https://github.com/python-ivi/python-usbtmc/archive/v${version}.tar.gz";
-    sha256 = "14f4j77ljr45crnjwlp1dqbxwa45s20y2fpq5rg59r60w15al4yw";
+  src = fetchFromGitHub {
+    owner = "python-ivi";
+    repo = "python-usbtmc";
+    rev = "v${version}";
+    sha256 = "sha256-69kqBTqnVqdWC2mqlXylzb9VkdhwTGZI0Ykf6lqbypI=";
   };
 
   propagatedBuildInputs = [ pyusb ];
diff --git a/nixpkgs/pkgs/development/python-modules/uvicorn/default.nix b/nixpkgs/pkgs/development/python-modules/uvicorn/default.nix
index 22e291c4b598..57c6bf925357 100644
--- a/nixpkgs/pkgs/development/python-modules/uvicorn/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/uvicorn/default.nix
@@ -9,7 +9,6 @@
 , httptools
 , python-dotenv
 , pyyaml
-, requests
 , typing-extensions
 , uvloop
 , watchgod
diff --git a/nixpkgs/pkgs/development/python-modules/uvloop/default.nix b/nixpkgs/pkgs/development/python-modules/uvloop/default.nix
index c7e11ab6c258..41a0972a3155 100644
--- a/nixpkgs/pkgs/development/python-modules/uvloop/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/uvloop/default.nix
@@ -38,6 +38,8 @@ buildPythonPackage rec {
     psutil
   ];
 
+  LIBUV_CONFIGURE_HOST = stdenv.hostPlatform.config;
+
   pytestFlagsArray = [
     # from pytest.ini, these are NECESSARY to prevent failures
     "--capture=no"
diff --git a/nixpkgs/pkgs/development/python-modules/validators/default.nix b/nixpkgs/pkgs/development/python-modules/validators/default.nix
index 37f00b734800..29ec9cd73d73 100644
--- a/nixpkgs/pkgs/development/python-modules/validators/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/validators/default.nix
@@ -2,11 +2,8 @@
 , buildPythonPackage
 , fetchPypi
 , isPy27
-, six
 , decorator
 , pytestCheckHook
-, isort
-, flake8
 }:
 
 buildPythonPackage rec {
@@ -20,18 +17,13 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [
-    six
     decorator
   ];
 
   checkInputs = [
     pytestCheckHook
-    flake8
-    isort
   ];
 
-  disabledTests = lib.optionals isPy27 [ "url" ];
-
   meta = with lib; {
     description = "Python Data Validation for Humans™";
     homepage = "https://github.com/kvesteri/validators";
diff --git a/nixpkgs/pkgs/development/python-modules/variants/default.nix b/nixpkgs/pkgs/development/python-modules/variants/default.nix
index 2055a4813447..e23407ab06b3 100644
--- a/nixpkgs/pkgs/development/python-modules/variants/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/variants/default.nix
@@ -3,8 +3,7 @@
 , fetchPypi
 , pytest-runner
 , setuptools-scm
-, singledispatch ? null
-, pytest
+, pytestCheckHook
 , lib
 }:
 
@@ -23,8 +22,8 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    pytest
-  ] ++ lib.optionals isPy27 [ singledispatch ];
+    pytestCheckHook
+  ];
 
   meta = with lib; {
     description = "Library providing syntactic sugar for creating variant forms of a canonical function";
diff --git a/nixpkgs/pkgs/development/python-modules/vcver/default.nix b/nixpkgs/pkgs/development/python-modules/vcver/default.nix
index a328cb104bc1..503a8f7df7e0 100644
--- a/nixpkgs/pkgs/development/python-modules/vcver/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/vcver/default.nix
@@ -1,10 +1,12 @@
-{ lib, buildPythonPackage, fetchFromGitHub
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
 , packaging
-, fetchurl, python }:
+}:
 
 buildPythonPackage rec {
   pname = "vcver";
-  version = "0.2.10";
+  version = "0.2.12";
 
   src = fetchFromGitHub {
     owner = "toumorokoshi";
diff --git a/nixpkgs/pkgs/development/python-modules/vdirsyncer/default.nix b/nixpkgs/pkgs/development/python-modules/vdirsyncer/default.nix
index cdd8ff02b97e..edb61ccb7034 100644
--- a/nixpkgs/pkgs/development/python-modules/vdirsyncer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/vdirsyncer/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , pythonOlder
 , click
 , click-log
diff --git a/nixpkgs/pkgs/development/python-modules/vehicle/default.nix b/nixpkgs/pkgs/development/python-modules/vehicle/default.nix
new file mode 100644
index 000000000000..a56cc4ca8b43
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vehicle/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, aiohttp
+, aresponses
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pydantic
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, yarl
+}:
+
+buildPythonPackage rec {
+  pname = "vehicle";
+  version = "0.3.1";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "frenck";
+    repo = "python-vehicle";
+    rev = "v${version}";
+    sha256 = "04xcs5bfjd49j870gyyznc8hkaadsa9gm9pz0w9qvzlphnxvv5h4";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    pydantic
+    yarl
+  ];
+
+  checkInputs = [
+    aresponses
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    # Upstream doesn't set a version for the pyproject.toml
+    substituteInPlace pyproject.toml \
+      --replace "0.0.0" "${version}" \
+      --replace "--cov" ""
+  '';
+
+  pythonImportsCheck = [
+    "vehicle"
+  ];
+
+  meta = with lib; {
+    description = "Python client providing RDW vehicle information";
+    homepage = "https://github.com/frenck/python-vehicle";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/velbus-aio/default.nix b/nixpkgs/pkgs/development/python-modules/velbus-aio/default.nix
index 17ed9f4eb02f..e871912adf7a 100644
--- a/nixpkgs/pkgs/development/python-modules/velbus-aio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/velbus-aio/default.nix
@@ -3,13 +3,15 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pythonOlder
+, pyserial
 , pyserial-asyncio
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "velbus-aio";
-  version = "2021.10.2";
+  version = "2021.11.7";
+  format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
@@ -17,11 +19,13 @@ buildPythonPackage rec {
     owner = "Cereal2nd";
     repo = pname;
     rev = version;
-    sha256 = "sha256-zamFDlahHQGo5g0dlGF6uWG53K/IkEjP0dA8cWYrhtI=";
+    sha256 = "0i1vfyhyvn908vz55agmfds3zwp6qpbpip055d995nx79ysxz0j9";
+    fetchSubmodules = true;
   };
 
   propagatedBuildInputs = [
     backoff
+    pyserial
     pyserial-asyncio
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/venstarcolortouch/default.nix b/nixpkgs/pkgs/development/python-modules/venstarcolortouch/default.nix
index 85634d168498..f2ac0266ce19 100644
--- a/nixpkgs/pkgs/development/python-modules/venstarcolortouch/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/venstarcolortouch/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "venstarcolortouch";
-  version = "0.14";
+  version = "0.15";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-wrsu1SffD4/RvDiE6yABfZN/oSDH8Ao/RJK7yL2QKy8=";
+    sha256 = "sha256-7JUqXHk/yL+/EvfQoGLaKmPPy4DkljT9olqK0a/Nmkk=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/vilfo-api-client/default.nix b/nixpkgs/pkgs/development/python-modules/vilfo-api-client/default.nix
index cdc01d93a856..05ce50199708 100644
--- a/nixpkgs/pkgs/development/python-modules/vilfo-api-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/vilfo-api-client/default.nix
@@ -4,19 +4,20 @@
 , setuptools-scm
 , getmac
 , requests
+, semver
 , pytestCheckHook
 , responses
 }:
 
 buildPythonPackage rec {
   pname = "vilfo-api-client";
-  version = "0.3.3";
+  version = "0.4.1";
 
   src = fetchFromGitHub {
     owner = "ManneW";
     repo = "vilfo-api-client-python";
-    rev = "v${version}";
-    sha256 = "1gy5gpsg99rcm1cc3m30232za00r9i46sp74zpd12p3vzz1wyyqf";
+    rev = version;
+    sha256 = "sha256-j06Bbv0hWSmrlCv8RfgvfGTyOF+vSX+zZnX3AvG5Hys=";
   };
 
   postPatch = ''
@@ -33,6 +34,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     getmac
     requests
+    semver
   ];
 
   checkInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/virtualenv-clone/default.nix b/nixpkgs/pkgs/development/python-modules/virtualenv-clone/default.nix
index 0cd5d6a7fe22..6d407d7ea24b 100644
--- a/nixpkgs/pkgs/development/python-modules/virtualenv-clone/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/virtualenv-clone/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "virtualenv-clone";
-  version = "0.5.6";
+  version = "0.5.7";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "edwardgeorge";
     repo = pname;
     rev = version;
-    sha256 = "0xb20fhl99dw5vnyb43sjpj9628nbdnwp5g7m8f2id7w8kpwzvfw";
+    sha256 = "sha256-qrN74IwLRqiVPxU8gVhdiM34yBmiS/5ot07uroYPDVw=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/virtualenv/default.nix b/nixpkgs/pkgs/development/python-modules/virtualenv/default.nix
index 10e1ebbc87bc..d51b3d783796 100644
--- a/nixpkgs/pkgs/development/python-modules/virtualenv/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/virtualenv/default.nix
@@ -23,11 +23,11 @@
 
 buildPythonPackage rec {
   pname = "virtualenv";
-  version = "20.7.2";
+  version = "20.10.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9ef4e8ee4710826e98ff3075c9a4739e2cb1040de6a2a8d35db0055840dc96a0";
+    sha256 = "576d05b46eace16a9c348085f7d0dc8ef28713a2cabaa1cf0aea41e8f12c9218";
   };
 
   nativeBuildInputs = [
@@ -72,9 +72,9 @@ buildPythonPackage rec {
   ];
 
   disabledTests = [
-    "test_can_build_c_extensions"
-    "test_xonsh" # imports xonsh, which is not in pythonPackages
-    # tests search `python3`, fail on python2, pypy
+    # Permission Error
+    "test_bad_exe_py_info_no_raise"
+  ] ++ lib.optionals isPy27 [
     "test_python_via_env_var"
     "test_python_multi_value_prefer_newline_via_env_var"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/vispy/default.nix b/nixpkgs/pkgs/development/python-modules/vispy/default.nix
index fd52f141ff84..5967b9b9abb7 100644
--- a/nixpkgs/pkgs/development/python-modules/vispy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/vispy/default.nix
@@ -16,11 +16,11 @@
 
 buildPythonPackage rec {
   pname = "vispy";
-  version = "0.9.0";
+  version = "0.9.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "41a6836aa78462370fe15efaade94cbe3344586412f8d7f12689c49c299ff41b";
+    sha256 = "8561e41bbcca5fadce4a8d974ca2f96cbe7710d835bfed6a55ed6d10900ef5d5";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/vivisect/default.nix b/nixpkgs/pkgs/development/python-modules/vivisect/default.nix
index 5dc8bc2254d4..d664cf1d27fe 100644
--- a/nixpkgs/pkgs/development/python-modules/vivisect/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/vivisect/default.nix
@@ -10,12 +10,12 @@
 }:
 buildPythonPackage rec {
   pname = "vivisect";
-  version = "1.0.4";
+  version = "1.0.5";
   disabled = isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bd47b2cf5874cd2f74e6c36b8a97bf301785bacf9ac0297bbe78ec1b8c86c755";
+    sha256 = "f629dc0143656b06b64e2da1772deda67d37a3e048e74bd728de4a4f24bf877b";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/volkszaehler/default.nix b/nixpkgs/pkgs/development/python-modules/volkszaehler/default.nix
index 6bd509d7cd40..cbc51d024a6e 100644
--- a/nixpkgs/pkgs/development/python-modules/volkszaehler/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/volkszaehler/default.nix
@@ -1,17 +1,23 @@
 { lib
-, buildPythonPackage
-, fetchPypi
 , aiohttp
 , async-timeout
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "volkszaehler";
-  version = "0.2.2";
+  version = "0.3.2";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-1oqzhC3Yq2V30F3ilr80vKFnTmI/CdIVLuzMlIr40xI=";
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "home-assistant-ecosystem";
+    repo = "python-volkszaehler";
+    rev = version;
+    sha256 = "sha256-EiruMlhXvbUhCaDtHc3qCLbpp/KHp9rVpk2FmbR4A/k=";
   };
 
   propagatedBuildInputs = [
@@ -22,10 +28,12 @@ buildPythonPackage rec {
   # no tests are present
   doCheck = false;
 
-  pythonImportsCheck = [ "volkszaehler" ];
+  pythonImportsCheck = [
+    "volkszaehler"
+  ];
 
   meta = with lib; {
-    description = "Python Wrapper for interacting with the Volkszahler API";
+    description = "Python module for interacting with the Volkszahler API";
     homepage = "https://github.com/home-assistant-ecosystem/python-volkszaehler";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/nixpkgs/pkgs/development/python-modules/voluptuous-serialize/default.nix b/nixpkgs/pkgs/development/python-modules/voluptuous-serialize/default.nix
index 4c31b5f758a4..97cd40fbc694 100644
--- a/nixpkgs/pkgs/development/python-modules/voluptuous-serialize/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/voluptuous-serialize/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec  {
   pname = "voluptuous-serialize";
-  version = "2.4.0";
+  version = "2.5.0";
 
   disabled = !isPy3k;
 
@@ -16,7 +16,7 @@ buildPythonPackage rec  {
     owner = "home-assistant-libs";
     repo = pname;
     rev = version;
-    sha256 = "1km2y1xaagkdvsy3bmi1sc040x5yyfdw6llmwdv9z8nz67m9v1ya";
+    sha256 = "sha256-8rWMz8tBanxHdU/F4HhBxxz3ltqbdRoP4JED2dmZfTk=";
   };
 
   propagatedBuildInputs = [ voluptuous ];
diff --git a/nixpkgs/pkgs/development/python-modules/vowpalwabbit/default.nix b/nixpkgs/pkgs/development/python-modules/vowpalwabbit/default.nix
index 1a1c6a33acb3..2f950ecd6c44 100644
--- a/nixpkgs/pkgs/development/python-modules/vowpalwabbit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/vowpalwabbit/default.nix
@@ -6,12 +6,15 @@
 , python
 , zlib
 , ncurses
-, pytest
 , docutils
 , pygments
 , numpy
 , scipy
-, scikit-learn }:
+, scikit-learn
+, spdlog
+, fmt
+, rapidjson
+}:
 
 buildPythonPackage rec {
   pname = "vowpalwabbit";
@@ -32,8 +35,15 @@ buildPythonPackage rec {
     pygments
     python.pkgs.boost
     zlib.dev
+    spdlog
+    fmt
+    rapidjson
   ];
 
+  # As we disable configure via cmake, pass explicit global options to enable
+  # spdlog and fmt packages
+  setupPyGlobalFlags = [ "--cmake-options=\"-DSPDLOG_SYS_DEP=ON;-DFMT_SYS_DEP=ON\"" ];
+
   propagatedBuildInputs = [
     numpy
     scikit-learn
diff --git a/nixpkgs/pkgs/development/python-modules/vpk/default.nix b/nixpkgs/pkgs/development/python-modules/vpk/default.nix
new file mode 100644
index 000000000000..a39f0a47dfa8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vpk/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "vpk";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "ValvePython";
+    repo = "vpk";
+    rev = "v${version}";
+    hash = "sha256-SPkPb8kveAR2cN9kd2plS+TjmBYBCfa6pJ0c22l69M0=";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    description = "Library for working with Valve Pak files";
+    homepage = "https://github.com/ValvePython/vpk";
+    license = licenses.mit;
+    maintainers = with maintainers; [ joshuafern ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/vsts-cd-manager/default.nix b/nixpkgs/pkgs/development/python-modules/vsts-cd-manager/default.nix
index 5946fec05b75..b1de4105668a 100644
--- a/nixpkgs/pkgs/development/python-modules/vsts-cd-manager/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/vsts-cd-manager/default.nix
@@ -1,5 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, msrest
+{ lib, buildPythonPackage, fetchPypi, msrest
 , mock
 }:
 
diff --git a/nixpkgs/pkgs/development/python-modules/vt-py/default.nix b/nixpkgs/pkgs/development/python-modules/vt-py/default.nix
index 1542a447a1bc..80c297fe773c 100644
--- a/nixpkgs/pkgs/development/python-modules/vt-py/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/vt-py/default.nix
@@ -10,15 +10,16 @@
 
 buildPythonPackage rec {
   pname = "vt-py";
-  version = "0.7.6";
+  version = "0.11.0";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "VirusTotal";
     repo = pname;
-    rev = version;
-    sha256 = "sha256-Gf3hNCXioaLiQ0fZWPe9PO2YQeId4ZLmWsSZ5WvjSk0=";
+    rev = "v${version}";
+    sha256 = "sha256-PpgN9adGNZOorOUigsBVOb//ZafUaYHfo/Fv1IZf/XA=";
   };
 
   propagatedBuildInputs = [
@@ -36,7 +37,9 @@ buildPythonPackage rec {
       --replace "'pytest-runner'" ""
   '';
 
-  pythonImportsCheck = [ "vt" ];
+  pythonImportsCheck = [
+    "vt"
+  ];
 
   meta = with lib; {
     description = "Python client library for VirusTotal";
diff --git a/nixpkgs/pkgs/development/python-modules/vulcan-api/default.nix b/nixpkgs/pkgs/development/python-modules/vulcan-api/default.nix
new file mode 100644
index 000000000000..6355e37bd64d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/vulcan-api/default.nix
@@ -0,0 +1,57 @@
+{ lib
+, aenum
+, aiodns
+, aiohttp
+, buildPythonPackage
+, cchardet
+, fetchFromGitHub
+, pyopenssl
+, pythonOlder
+, pytz
+, related
+, requests
+, uonet-request-signer-hebe
+, yarl
+}:
+
+buildPythonPackage rec {
+  pname = "vulcan-api";
+  version = "2.0.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "kapi2289";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "YLt9yufOBlWRyo+le7HcaFD/s7V5WpvhMUrHJqyC3pY=";
+  };
+
+  propagatedBuildInputs = [
+    aenum
+    aiodns
+    aiohttp
+    cchardet
+    pyopenssl
+    pytz
+    related
+    requests
+    uonet-request-signer-hebe
+    yarl
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "vulcan"
+  ];
+
+  meta = with lib; {
+    description = "Python library for UONET+ e-register API";
+    homepage = "https://vulcan-api.readthedocs.io/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wakeonlan/default.nix b/nixpkgs/pkgs/development/python-modules/wakeonlan/default.nix
index 9499254ae4c2..699af4120158 100644
--- a/nixpkgs/pkgs/development/python-modules/wakeonlan/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wakeonlan/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "wakeonlan";
-  version = "2.0.1";
+  version = "2.1.0";
   disabled = pythonOlder "3.6";
   format = "pyproject";
 
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "remcohaszing";
     repo = "pywakeonlan";
     rev = version;
-    sha256 = "sha256-WgoL8ntfEaHcvVbJjdewe0wE31Lq7WBj8Bppeq1uJx8=";
+    sha256 = "sha256-5ri4bXc0EMNntzmcUZYpRIfaXoex4s5M6psf/9ta17Y=";
   };
 
   nativeBuildInputs = [
@@ -27,12 +27,16 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [ "test_wakeonlan.py" ];
+  pytestFlagsArray = [
+    "test_wakeonlan.py"
+  ];
 
-  pythonImportsCheck = [ "wakeonlan" ];
+  pythonImportsCheck = [
+    "wakeonlan"
+  ];
 
   meta = with lib; {
-    description = "A small python module for wake on lan";
+    description = "Python module for wake on lan";
     homepage = "https://github.com/remcohaszing/pywakeonlan";
     license = licenses.mit;
     maintainers = with maintainers; [ peterhoeg ];
diff --git a/nixpkgs/pkgs/development/python-modules/wasabi/default.nix b/nixpkgs/pkgs/development/python-modules/wasabi/default.nix
index f58574014ed2..fca3f5480dcf 100644
--- a/nixpkgs/pkgs/development/python-modules/wasabi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wasabi/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "wasabi";
-  version = "0.8.2";
+  version = "0.9.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b4a36aaa9ca3a151f0c558f269d442afbb3526f0160fd541acd8a0d5e5712054";
+    sha256 = "152245d892030a3a7b511038e9472acff6d0e237cfe4123fef0d147f2d3274fc";
   };
 
   checkInputs = [ pytestCheckHook ];
diff --git a/nixpkgs/pkgs/development/python-modules/watchdog/default.nix b/nixpkgs/pkgs/development/python-modules/watchdog/default.nix
index 7dab01b3ca09..9fba5785c447 100644
--- a/nixpkgs/pkgs/development/python-modules/watchdog/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/watchdog/default.nix
@@ -2,7 +2,6 @@
 , stdenv
 , buildPythonPackage
 , fetchPypi
-, argh
 , pathtools
 , pyyaml
 , flaky
@@ -13,17 +12,17 @@
 
 buildPythonPackage rec {
   pname = "watchdog";
-  version = "2.1.5";
+  version = "2.1.6";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5563b005907613430ef3d4aaac9c78600dd5704e84764cb6deda4b3d72807f09";
+    sha256 = "sha256-o25132x2fL9G9hqRxws7pxgR36CspKMk2UB6Bqi3ouc=";
   };
 
   buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
 
   propagatedBuildInputs = [
-    argh
     pathtools
     pyyaml
   ];
@@ -40,7 +39,14 @@ buildPythonPackage rec {
       --replace "--cov-report=term-missing" ""
   '';
 
-  pythonImportsCheck = [ "watchdog" ];
+  disabledTestPaths = [
+    # Tests are flaky
+    "tests/test_inotify_buffer.py"
+  ];
+
+  pythonImportsCheck = [
+    "watchdog"
+  ];
 
   meta = with lib; {
     description = "Python API and shell utilities to monitor file system events";
@@ -48,6 +54,7 @@ buildPythonPackage rec {
     license = licenses.asl20;
     maintainers = with maintainers; [ goibhniu ];
     # error: use of undeclared identifier 'kFSEventStreamEventFlagItemCloned'
-    broken = stdenv.isDarwin;
+    # builds fine on aarch64-darwin
+    broken = stdenv.isDarwin && !stdenv.isAarch64;
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/watermark/default.nix b/nixpkgs/pkgs/development/python-modules/watermark/default.nix
new file mode 100644
index 000000000000..2bbb281f081b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/watermark/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, importlib-metadata
+, ipython
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "watermark";
+  version = "2.2.0";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "rasbt";
+    repo = pname;
+    rev = "d3553b68dd30ac5b0951a6fae6083236e4c7f3bd";
+    sha256 = "0w2mzi344x1mrv8d9jca67bhig34jissr9sqrk68gpg5n10alblb";
+  };
+
+  propagatedBuildInputs = [
+    ipython
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
+
+  checkInputs =  [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "watermark" ];
+
+  meta = with lib; {
+    description = "IPython extension for printing date and time stamps, version numbers, and hardware information.";
+    homepage = "https://github.com/rasbt/watermark";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ nphilou ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wavefile/default.nix b/nixpkgs/pkgs/development/python-modules/wavefile/default.nix
new file mode 100644
index 000000000000..3090ee815440
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wavefile/default.nix
@@ -0,0 +1,64 @@
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, pyaudio
+, numpy
+, libsndfile
+, substituteAll
+}:
+
+buildPythonPackage rec {
+  pname = "wavefile";
+  version = "1.5";
+
+  src = fetchFromGitHub {
+    owner = "vokimon";
+    repo = "python-wavefile";
+    rev = "python-wavefile-${version}";
+    sha256 = "9sHj1gb93mCVpejRGSdLJzeFDCeTflZctE7kMWfqFrE=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  buildInputs = [
+    pyaudio
+    libsndfile
+  ];
+
+  propagatedBuildInputs = [
+    numpy
+  ];
+
+  checkInputs = [
+    pyaudio
+    numpy
+    libsndfile
+  ];
+
+  patches = [
+    # Fix check error
+    # OSError: libsndfile.so.1: cannot open shared object file: No such file or directory
+    (substituteAll {
+      src = ./libsndfile.py.patch;
+      libsndfile = "${lib.getLib libsndfile}/lib/libsndfile${stdenv.hostPlatform.extensions.sharedLibrary}";
+    })
+  ];
+
+  doCheck = false; # all test files (test/wavefileTest.py) are failing
+
+  pythonImportsCheck = [
+    "wavefile"
+  ];
+
+  meta = with lib; {
+    description = "Pythonic libsndfile wrapper to read and write audio files";
+    homepage = "https://github.com/vokimon/python-wavefile";
+    changelog = "https://github.com/vokimon/python-wavefile#version-history";
+    maintainers = with maintainers; [ yuu ];
+    license = licenses.gpl3Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wavefile/libsndfile.py.patch b/nixpkgs/pkgs/development/python-modules/wavefile/libsndfile.py.patch
new file mode 100644
index 000000000000..6e10e6b6c03c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wavefile/libsndfile.py.patch
@@ -0,0 +1,18 @@
+diff --git a/wavefile/libsndfile.py b/wavefile/libsndfile.py
+index 67f0a46..ce066ee 100644
+--- a/wavefile/libsndfile.py
++++ b/wavefile/libsndfile.py
+@@ -19,11 +19,11 @@ import numpy as np
+ if sys.platform == "win32":
+     dllName = 'libsndfile-1'
+ elif "linux" in sys.platform:
+-    dllName = 'libsndfile.so.1'
++    dllName = '@libsndfile@'
+ elif "cygwin" in sys.platform:
+     dllName = 'libsndfile-1.dll'
+ elif "darwin" in sys.platform:
+-    dllName = 'libsndfile.dylib'
++    dllName = '@libsndfile@'
+ else:
+     dllName = 'libsndfile'
+ 
diff --git a/nixpkgs/pkgs/development/python-modules/wavinsentio/default.nix b/nixpkgs/pkgs/development/python-modules/wavinsentio/default.nix
new file mode 100644
index 000000000000..21dbe7b8ae82
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wavinsentio/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "wavinsentio";
+  version = "0.3.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-3mzK+YBRhLDqcEJDyMK43Le6eCH3B89unXpuu8nIe1g=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  # Project has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "wavinsentio"
+  ];
+
+  meta = with lib; {
+    description = "Python module to interact with the Wavin Sentio underfloor heating system";
+    homepage = "https://github.com/djerik/wavinsentio";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wcmatch/default.nix b/nixpkgs/pkgs/development/python-modules/wcmatch/default.nix
index 0cc08a9bf2ce..55cb45b712c3 100644
--- a/nixpkgs/pkgs/development/python-modules/wcmatch/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wcmatch/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "wcmatch";
-  version = "8.2";
+  version = "8.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4d54ddb506c90b5a5bba3a96a1cfb0bb07127909e19046a71d689ddfb18c3617";
+    sha256 = "371072912398af61d1e4e78609e18801c6faecd3cb36c54c82556a60abc965db";
   };
 
   propagatedBuildInputs = [ bracex ];
diff --git a/nixpkgs/pkgs/development/python-modules/weasyprint/default.nix b/nixpkgs/pkgs/development/python-modules/weasyprint/default.nix
index ecc13b1d6377..f43fd2d5462b 100644
--- a/nixpkgs/pkgs/development/python-modules/weasyprint/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/weasyprint/default.nix
@@ -1,57 +1,72 @@
-{ buildPythonPackage,
-  fetchPypi,
-  fetchpatch,
-  cairosvg,
-  pyphen,
-  cffi,
-  cssselect,
-  lxml,
-  html5lib,
-  tinycss,
-  glib,
-  pango,
-  fontconfig,
-  lib, stdenv,
-  pytest,
-  pytest-runner,
-  pytest-isort,
-  pytest-flake8,
-  pytest-cov,
-  isPy3k,
-  substituteAll
+{ buildPythonPackage
+, fetchPypi
+, fetchpatch
+, pytestCheckHook
+, brotli
+, cairosvg
+, fonttools
+, pydyf
+, pyphen
+, cffi
+, cssselect
+, lxml
+, html5lib
+, tinycss
+, zopfli
+, glib
+, harfbuzz
+, pango
+, fontconfig
+, lib
+, stdenv
+, ghostscript
+, isPy3k
+, substituteAll
 }:
 
 buildPythonPackage rec {
   pname = "weasyprint";
-  version = "52";
+  version = "53.4";
   disabled = !isPy3k;
 
-  # excluded test needs the Ahem font
-  checkPhase = ''
-    runHook preCheck
-    pytest -k 'not test_font_stretch'
-    runHook postCheck
-  '';
+  src = fetchPypi {
+    inherit version;
+    pname = "weasyprint";
+    sha256 = "sha256-EMyxfVXHMJa98e3T7+WMuFWwfkwwfZutTryaPxP/RYA=";
+  };
 
-  # ignore failing flake8-test
-  prePatch = ''
-    substituteInPlace setup.cfg \
-        --replace '[tool:pytest]' '[tool:pytest]\nflake8-ignore = E501'
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "--isort --flake8 --cov --no-cov-on-fail" ""
   '';
 
-  checkInputs = [ pytest pytest-runner pytest-isort pytest-flake8 pytest-cov ];
+  disabledTests = [
+    # needs the Ahem font (fails on macOS)
+    "test_font_stretch"
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    ghostscript
+  ];
 
   FONTCONFIG_FILE = "${fontconfig.out}/etc/fonts/fonts.conf";
 
-  propagatedBuildInputs = [ cairosvg pyphen cffi cssselect lxml html5lib tinycss ];
+  propagatedBuildInputs = [
+    brotli
+    cairosvg
+    cffi
+    cssselect
+    fonttools
+    html5lib
+    lxml
+    pydyf
+    pyphen
+    tinycss
+    zopfli
+  ];
 
-  # 47043a1fd7e50a892b9836466f521df85d597c4.patch can be removed after next release of weasyprint, see:
-  # https://github.com/Kozea/WeasyPrint/issues/1333#issuecomment-818062970
   patches = [
-    (fetchpatch {
-      url = "https://github.com/Kozea/WeasyPrint/commit/47043a1fd7e50a892b9836466f521df85d597c44.patch";
-      sha256 = "0l9z0hrav3bcdajlg3vbzljq0lkw7hlj8ppzrq3v21hbj1il1nsb";
-    })
     (substituteAll {
       src = ./library-paths.patch;
       fontconfig = "${fontconfig.lib}/lib/libfontconfig${stdenv.hostPlatform.extensions.sharedLibrary}";
@@ -59,15 +74,10 @@ buildPythonPackage rec {
       gobject = "${glib.out}/lib/libgobject-2.0${stdenv.hostPlatform.extensions.sharedLibrary}";
       pango = "${pango.out}/lib/libpango-1.0${stdenv.hostPlatform.extensions.sharedLibrary}";
       pangocairo = "${pango.out}/lib/libpangocairo-1.0${stdenv.hostPlatform.extensions.sharedLibrary}";
+      harfbuzz = "${harfbuzz.out}/lib/libharfbuzz${stdenv.hostPlatform.extensions.sharedLibrary}";
     })
   ];
 
-  src = fetchPypi {
-    inherit version;
-    pname = "WeasyPrint";
-    sha256 = "0rwf43111ws74m8b1alkkxzz57g0np3vmd8as74adwnxslfcg4gs";
-  };
-
   meta = with lib; {
     homepage = "https://weasyprint.org/";
     description = "Converts web documents to PDF";
diff --git a/nixpkgs/pkgs/development/python-modules/weasyprint/library-paths.patch b/nixpkgs/pkgs/development/python-modules/weasyprint/library-paths.patch
index c6eb87c94585..9a10990fd43f 100644
--- a/nixpkgs/pkgs/development/python-modules/weasyprint/library-paths.patch
+++ b/nixpkgs/pkgs/development/python-modules/weasyprint/library-paths.patch
@@ -1,38 +1,31 @@
-diff --git a/weasyprint/fonts.py b/weasyprint/fonts.py
-index 79e3b5b..4438eb4 100644
---- a/weasyprint/fonts.py
-+++ b/weasyprint/fonts.py
-@@ -45,11 +45,8 @@ else:
-     # with OSError: dlopen() failed to load a library: cairo / cairo-2
-     # So let's hope we find the same file as cairo already did ;)
-     # Same applies to pangocairo requiring pangoft2
--    fontconfig = dlopen(ffi, 'fontconfig', 'libfontconfig',
--                        'libfontconfig-1.dll',
--                        'libfontconfig.so.1', 'libfontconfig-1.dylib')
--    pangoft2 = dlopen(ffi, 'pangoft2-1.0', 'libpangoft2-1.0-0',
--                      'libpangoft2-1.0.so.0', 'libpangoft2-1.0.dylib')
-+    fontconfig = dlopen(ffi, '@fontconfig@')
-+    pangoft2 = dlopen(ffi, '@pangoft2@')
- 
-     ffi.cdef('''
-         // FontConfig
-diff --git a/weasyprint/text.py b/weasyprint/text.py
-index 1dc5e4d..b070bad 100644
---- a/weasyprint/text.py
-+++ b/weasyprint/text.py
-@@ -255,12 +255,9 @@ def dlopen(ffi, *names):
+diff --git a/weasyprint/text/ffi.py b/weasyprint/text/ffi.py
+index 0734cbea..22e31a5e 100644
+--- a/weasyprint/text/ffi.py
++++ b/weasyprint/text/ffi.py
+@@ -387,21 +387,11 @@ def _dlopen(ffi, *names):
      return ffi.dlopen(names[0])  # pragma: no cover
  
  
--gobject = dlopen(ffi, 'gobject-2.0', 'libgobject-2.0-0', 'libgobject-2.0.so.0',
--                 'libgobject-2.0.dylib')
--pango = dlopen(ffi, 'pango-1.0', 'libpango-1.0-0', 'libpango-1.0.so.0',
--               'libpango-1.0.dylib')
--pangocairo = dlopen(ffi, 'pangocairo-1.0', 'libpangocairo-1.0-0',
--                    'libpangocairo-1.0.so.0', 'libpangocairo-1.0.dylib')
-+gobject = dlopen(ffi, '@gobject@')
-+pango = dlopen(ffi, '@pango@')
-+pangocairo = dlopen(ffi, '@pangocairo@')
+-gobject = _dlopen(
+-    ffi, 'gobject-2.0-0', 'gobject-2.0', 'libgobject-2.0-0',
+-    'libgobject-2.0.so.0', 'libgobject-2.0.dylib')
+-pango = _dlopen(
+-    ffi, 'pango-1.0-0', 'pango-1.0', 'libpango-1.0-0', 'libpango-1.0.so.0',
+-    'libpango-1.0.dylib')
+-harfbuzz = _dlopen(
+-    ffi, 'harfbuzz', 'harfbuzz-0.0', 'libharfbuzz-0',
+-    'libharfbuzz.so.0', 'libharfbuzz.so.0', 'libharfbuzz.0.dylib')
+-fontconfig = _dlopen(
+-    ffi, 'fontconfig-1', 'fontconfig', 'libfontconfig', 'libfontconfig-1.dll',
+-    'libfontconfig.so.1', 'libfontconfig-1.dylib')
+-pangoft2 = _dlopen(
+-    ffi, 'pangoft2-1.0-0', 'pangoft2-1.0', 'libpangoft2-1.0-0',
+-    'libpangoft2-1.0.so.0', 'libpangoft2-1.0.dylib')
++gobject = _dlopen(ffi, '@gobject@')
++pango = _dlopen(ffi, '@pango@')
++harfbuzz = _dlopen(ffi, '@harfbuzz@')
++fontconfig = _dlopen(ffi, '@fontconfig@')
++pangoft2 = _dlopen(ffi, '@pangoft2@')
  
  gobject.g_type_init()
- 
+
diff --git a/nixpkgs/pkgs/development/python-modules/webargs/default.nix b/nixpkgs/pkgs/development/python-modules/webargs/default.nix
index 63ad60c9f084..e92b47d20933 100644
--- a/nixpkgs/pkgs/development/python-modules/webargs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/webargs/default.nix
@@ -16,8 +16,8 @@ buildPythonPackage rec {
     "webargs"
   ];
 
-
   propagatedBuildInputs = [ marshmallow ];
+
   checkInputs = [
     pytestCheckHook
     pytest-aiohttp
diff --git a/nixpkgs/pkgs/development/python-modules/websockets/default.nix b/nixpkgs/pkgs/development/python-modules/websockets/default.nix
index 51df6c70235d..2e13d95c3825 100644
--- a/nixpkgs/pkgs/development/python-modules/websockets/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/websockets/default.nix
@@ -1,21 +1,23 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fetchFromGitHub
 , python
 , pythonOlder
-, stdenv
 }:
 
 buildPythonPackage rec {
   pname = "websockets";
-  version = "9.1";
+  version = "10.1";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "aaugustin";
     repo = pname;
     rev = version;
-    sha256 = "sha256-7Y12IUG+ulD4+CTRlY+NE6qYZyI9gCPDydwpt+uyYZk=";
+    sha256 = "sha256-FFaoqxa+TmKJ+P6T7HrwodjbVCir+2qJSfZsoj6deJU=";
   };
 
   # Tests fail on Darwin with `OSError: AF_UNIX path too long`
@@ -34,7 +36,9 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  pythonImportsCheck = [ "websockets" ];
+  pythonImportsCheck = [
+    "websockets"
+  ];
 
   meta = with lib; {
     description = "WebSocket implementation in Python";
diff --git a/nixpkgs/pkgs/development/python-modules/webssh/default.nix b/nixpkgs/pkgs/development/python-modules/webssh/default.nix
index 00aff794372d..49b7097549d6 100644
--- a/nixpkgs/pkgs/development/python-modules/webssh/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/webssh/default.nix
@@ -1,21 +1,37 @@
-{ lib, buildPythonPackage, fetchPypi, tornado, paramiko }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, paramiko
+, pytestCheckHook
+, tornado
+}:
 
 buildPythonPackage rec {
   pname = "webssh";
   version = "1.5.3";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-Au6PE8jYm8LkEp0B1ymW//ZkrkcV0BauwufQmrHLEU4=";
   };
 
-  propagatedBuildInputs = [ tornado paramiko ];
+  propagatedBuildInputs = [
+    paramiko
+    tornado
+  ];
 
-  pythonImportsCheck = [ "webssh" ];
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "webssh"
+  ];
 
   meta = with lib; {
+    description = "Web based SSH client";
     homepage = "https://github.com/huashengdun/webssh/";
-    description = "Web based ssh client";
     license = licenses.mit;
     maintainers = with maintainers; [ davidtwco ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/weconnect-mqtt/default.nix b/nixpkgs/pkgs/development/python-modules/weconnect-mqtt/default.nix
new file mode 100644
index 000000000000..0e00a08145e6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/weconnect-mqtt/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+, paho-mqtt
+, weconnect
+}:
+
+buildPythonPackage rec {
+  pname = "weconnect-mqtt";
+  version = "0.21.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "tillsteinbach";
+    repo = "WeConnect-mqtt";
+    rev = "v${version}";
+    sha256 = "sha256-wagFjVXTjYFryaUiVeqU+T9ya+NzUFMX3uPlRZGe1v0=";
+  };
+
+  propagatedBuildInputs = [
+    paho-mqtt
+    weconnect
+  ];
+
+  postPatch = ''
+    substituteInPlace weconnect_mqtt/__version.py \
+      --replace "develop" "${version}"
+    substituteInPlace pytest.ini \
+      --replace "--cov=weconnect_mqtt --cov-config=.coveragerc --cov-report html" "" \
+      --replace "pytest-cov" ""
+  '';
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "weconnect_mqtt"
+  ];
+
+  meta = with lib; {
+    description = "Python client that publishes data from Volkswagen WeConnect";
+    homepage = "https://github.com/tillsteinbach/WeConnect-mqtt";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/weconnect/default.nix b/nixpkgs/pkgs/development/python-modules/weconnect/default.nix
new file mode 100644
index 000000000000..70da78edb603
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/weconnect/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, ascii-magic
+, buildPythonPackage
+, fetchFromGitHub
+, pillow
+, pytest-httpserver
+, pytestCheckHook
+, pythonOlder
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "weconnect";
+  version = "0.28.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "tillsteinbach";
+    repo = "WeConnect-python";
+    rev = "v${version}";
+    sha256 = "sha256-J7T62L6wT9rkl/Ukf2y5kBbJEdzh2XnGgCgedkxVEmA=";
+  };
+
+  propagatedBuildInputs = [
+    ascii-magic
+    pillow
+    requests
+  ];
+
+  checkInputs = [
+    pytest-httpserver
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace weconnect/__version.py \
+      --replace "develop" "${version}"
+    substituteInPlace setup.py \
+      --replace "setup_requires=SETUP_REQUIRED," "setup_requires=[]," \
+      --replace "tests_require=TEST_REQUIRED," "tests_require=[],"
+    substituteInPlace pytest.ini \
+      --replace "--cov=weconnect --cov-config=.coveragerc --cov-report html" "" \
+      --replace "pytest-cov" ""
+  '';
+
+  pythonImportsCheck = [
+    "weconnect"
+  ];
+
+  meta = with lib; {
+    description = "Python client for the Volkswagen WeConnect Services";
+    homepage = "https://github.com/tillsteinbach/WeConnect-python";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/werkzeug/1.nix b/nixpkgs/pkgs/development/python-modules/werkzeug/1.nix
index ae4df6ae939c..c03cc6935d2f 100644
--- a/nixpkgs/pkgs/development/python-modules/werkzeug/1.nix
+++ b/nixpkgs/pkgs/development/python-modules/werkzeug/1.nix
@@ -2,7 +2,6 @@
 , itsdangerous, hypothesis
 , pytestCheckHook, requests
 , pytest-timeout
-, isPy3k
  }:
 
 buildPythonPackage rec {
@@ -17,6 +16,11 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ itsdangerous ];
   checkInputs = [ pytestCheckHook requests hypothesis pytest-timeout ];
 
+  postPatch = ''
+    # ResourceWarning causes tests to fail
+    rm tests/test_routing.py
+  '';
+
   disabledTests = [
     "test_save_to_pathlib_dst"
     "test_cookie_maxsize"
@@ -38,6 +42,9 @@ buildPythonPackage rec {
     # E   File "/nix/store/cwv8aj4vsqvimzljw5dxsxy663vjgibj-python3.9-Werkzeug-1.0.1/lib/python3.9/site-packages/werkzeug/formparser.py", line 318, in parse_multipart_headers
     # E     return Headers(result)
     # E ResourceWarning: unclosed file <_io.FileIO name=11 mode='rb+' closefd=True>
+    "test_basic_routing"
+    "test_merge_slashes_match"
+    "test_merge_slashes_build"
     "TestMultiPart"
     "TestHTTPUtility"
   ] ++ lib.optionals stdenv.isDarwin [
diff --git a/nixpkgs/pkgs/development/python-modules/werkzeug/default.nix b/nixpkgs/pkgs/development/python-modules/werkzeug/default.nix
index 898fa4556ec3..c75c59ac1c9c 100644
--- a/nixpkgs/pkgs/development/python-modules/werkzeug/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/werkzeug/default.nix
@@ -12,13 +12,15 @@
 
 buildPythonPackage rec {
   pname = "werkzeug";
-  version = "2.0.1";
+  version = "2.0.2";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     pname = "Werkzeug";
     inherit version;
-    sha256 = "0hlwawnn8c41f254qify5jnjj8xb97n294h09bqimzqhs0qdpq8x";
+    sha256 = "sha256-qiu2/I3ujWxQTArB5/X33FgQqZA+eTtvcVqfAVva25o=";
   };
 
   propagatedBuildInputs = lib.optionals (!stdenv.isDarwin) [
@@ -54,5 +56,6 @@ buildPythonPackage rec {
       utility libraries.
     '';
     license = licenses.bsd3;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/west/default.nix b/nixpkgs/pkgs/development/python-modules/west/default.nix
index 680e37e7a8f5..1f9aad67f19d 100644
--- a/nixpkgs/pkgs/development/python-modules/west/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/west/default.nix
@@ -3,14 +3,14 @@
 }:
 
 buildPythonPackage rec {
-  version = "0.11.1";
+  version = "0.12.0";
   pname = "west";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "30771f3ec2a4281cd05c277a90f7dc94ded97d6dc1e1decdf4fe452dbbacc283";
+    sha256 = "d7ce0d719fd218fee5983442fe93a33a21a6be6a736915a7ffbe75369714e9ce";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/wfuzz/default.nix b/nixpkgs/pkgs/development/python-modules/wfuzz/default.nix
index f42df0054952..e037757691c7 100644
--- a/nixpkgs/pkgs/development/python-modules/wfuzz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wfuzz/default.nix
@@ -1,14 +1,12 @@
 { buildPythonPackage
 , chardet
 , colorama
-, configparser
 , fetchFromGitHub
 , future
 , isPy27
 , lib
 , mock
 , netaddr
-, pkgs
 , pycurl
 , pyparsing
 , pytest
diff --git a/nixpkgs/pkgs/development/python-modules/wheel-filename/default.nix b/nixpkgs/pkgs/development/python-modules/wheel-filename/default.nix
new file mode 100644
index 000000000000..351bc86686a3
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wheel-filename/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchurl
+, attrs
+}:
+
+buildPythonPackage rec {
+  pname = "wheel-filename";
+  version = "1.3.0";
+  format = "wheel";
+
+  src = fetchurl {
+    url = "https://github.com/jwodder/wheel-filename/releases/download/v1.1.0/wheel_filename-1.1.0-py3-none-any.whl";
+    sha256 = "0aee45553f34e3a1b8a5db64aa832326f13c138b7f925a53daf96f984f9e6a38";
+  };
+
+  buildInputs = [
+    attrs
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/jwodder/wheel-filename";
+    description = "Parse wheel filenames";
+    license = with licenses; [ mit ];
+    maintainers = with lib.maintainers; [ ayazhafiz ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wheel-inspect/default.nix b/nixpkgs/pkgs/development/python-modules/wheel-inspect/default.nix
new file mode 100644
index 000000000000..88fd592da8fb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wheel-inspect/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, buildPythonPackage
+, fetchurl
+, bleach, docutils, pygments, six
+, attrs, entry-points-txt, headerparser, packaging, wheel-filename
+}:
+
+# wheel-filename is stuck on readme_renderer~=24.0.0, but the upstream is at a
+# future version.
+let readme_renderer_24 = buildPythonPackage rec {
+  pname = "readme_renderer";
+  version = "24.0.0";
+  format = "wheel";
+
+  src = fetchurl {
+    url = "https://files.pythonhosted.org/packages/c3/7e/d1aae793900f36b097cbfcc5e70eef82b5b56423a6c52a36dce51fedd8f0/readme_renderer-24.0-py2.py3-none-any.whl";
+    sha256 = "c8532b79afc0375a85f10433eca157d6b50f7d6990f337fa498c96cd4bfc203d";
+  };
+
+  doCheck = false;
+
+  buildInputs = [
+    bleach
+    docutils
+    pygments
+    six
+  ];
+
+  meta = with lib; {
+    description = "Python library for rendering readme descriptions";
+    homepage = "https://github.com/pypa/readme_renderer";
+    license = with licenses; [ asl20 ];
+    maintainers = with lib.maintainers; [ ayazhafiz ];
+  };
+};
+
+in buildPythonPackage rec {
+  version = "1.7.0";
+  pname = "wheel-inspect";
+  format = "wheel";
+
+  src = fetchurl {
+    url = "https://github.com/jwodder/wheel-inspect/releases/download/v1.7.0/wheel_inspect-1.7.0-py3-none-any.whl";
+    sha256 = "69b34de1f4464ddfc76280c4563e4afc644de2c88e3ae6882f030afdad3d73e4";
+  };
+
+  propagatedBuildInputs = [
+    attrs
+    bleach
+    docutils
+    entry-points-txt
+    headerparser
+    packaging
+    pygments
+    readme_renderer_24
+    wheel-filename
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/jwodder/wheel-inspect";
+    description = "Extract information from wheels";
+    license = with licenses; [ mit ];
+    maintainers = with lib.maintainers; [ ayazhafiz ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/wheel/0001-tests-Rename-a-a-o-_-.py-_-.py.patch b/nixpkgs/pkgs/development/python-modules/wheel/0001-tests-Rename-a-a-o-_-.py-_-.py.patch
new file mode 100644
index 000000000000..93db54b0c6e6
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/wheel/0001-tests-Rename-a-a-o-_-.py-_-.py.patch
@@ -0,0 +1,37 @@
+From 5879a4bbc34d1eb25e160b15b2f5a4f10eac6bd2 Mon Sep 17 00:00:00 2001
+From: toonn <toonn@toonn.io>
+Date: Mon, 13 Sep 2021 18:07:26 +0200
+Subject: [PATCH] =?UTF-8?q?tests:=20Rename=20a=CC=8Aa=CC=88o=CC=88=5F?=
+ =?UTF-8?q?=E6=97=A5=E6=9C=AC=E8=AA=9E.py=20=3D>=20=C3=A6=C9=90=C3=B8=5F?=
+ =?UTF-8?q?=E6=97=A5=E6=9C=AC=E5=83=B9.py?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+`åäö_日本語.py` normalizes differently in NFC and NFD normal forms. This
+means a hash generated for the source directory can differ depending on
+whether or not the filesystem is normalizing and which normal form it
+uses.
+
+By renaming the file to `æɐø_日本價.py` we avoid this issue by using a
+name that has the same encoding in each normal form.
+---
+ tests/test_bdist_wheel.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/test_bdist_wheel.py b/tests/test_bdist_wheel.py
+index 651c034..9b94ac8 100644
+--- a/tests/test_bdist_wheel.py
++++ b/tests/test_bdist_wheel.py
+@@ -58,7 +58,7 @@ def test_unicode_record(wheel_paths):
+     with ZipFile(path) as zf:
+         record = zf.read('unicode.dist-0.1.dist-info/RECORD')
+ 
+-    assert u'åäö_日本語.py'.encode('utf-8') in record
++    assert u'æɐø_日本價.py'.encode('utf-8') in record
+ 
+ 
+ def test_licenses_default(dummy_dist, monkeypatch, tmpdir):
+-- 
+2.17.2 (Apple Git-113)
+
diff --git a/nixpkgs/pkgs/development/python-modules/wheel/default.nix b/nixpkgs/pkgs/development/python-modules/wheel/default.nix
index 60398998380a..1b899b59897f 100644
--- a/nixpkgs/pkgs/development/python-modules/wheel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wheel/default.nix
@@ -14,8 +14,14 @@ buildPythonPackage rec {
     owner = "pypa";
     repo = pname;
     rev = version;
-    sha256 = "sha256-8lK2UvqBIxUYm6IOuT+Jk71wYbEEjvI7typS3749N9g=";
+    sha256 = "13bj49psan1s1fxfrq613dm2l7jvrg2dpgb36lz81z3b1h7zig6j";
     name = "${pname}-${version}-source";
+    extraPostFetch = ''
+      cd $out
+      mv tests/testdata/unicode.dist/unicodedist/åäö_日本語.py \
+        tests/testdata/unicode.dist/unicodedist/æɐø_日本價.py
+      patch -p1 < ${./0001-tests-Rename-a-a-o-_-.py-_-.py.patch}
+    '';
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/widgetsnbextension/default.nix b/nixpkgs/pkgs/development/python-modules/widgetsnbextension/default.nix
index bb8f1ab3b4d5..8f6cb6ad1867 100644
--- a/nixpkgs/pkgs/development/python-modules/widgetsnbextension/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/widgetsnbextension/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "widgetsnbextension";
-  version = "3.5.1";
+  version = "3.5.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "079f87d87270bce047512400efd70238820751a11d2d8cb137a5a5bdbaf255c7";
+    sha256 = "e0731a60ba540cd19bbbefe771a9076dcd2dde90713a8f87f27f53f2d1db7727";
   };
 
   propagatedBuildInputs = [ notebook ];
diff --git a/nixpkgs/pkgs/development/python-modules/wiffi/default.nix b/nixpkgs/pkgs/development/python-modules/wiffi/default.nix
index a3da3f2f027e..80738318433d 100644
--- a/nixpkgs/pkgs/development/python-modules/wiffi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wiffi/default.nix
@@ -7,21 +7,28 @@
 
 buildPythonPackage rec {
   pname = "wiffi";
-  version = "1.0.1";
+  version = "1.1.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "mampfes";
     repo = "python-wiffi";
     rev = version;
-    sha256 = "1bsx8dcmbkajh7hdgxg6wdnyxz4bfnd45piiy3yzyvszfdyvxw0f";
+    sha256 = "sha256-uB4M3etW1DCE//V2pcmsLZbORmrL00pbPADMQD5y3CY=";
   };
 
-  propagatedBuildInputs = [ aiohttp ];
+  propagatedBuildInputs = [
+    aiohttp
+  ];
 
   # Project has no tests
   doCheck = false;
-  pythonImportsCheck = [ "wiffi" ];
+
+  pythonImportsCheck = [
+    "wiffi"
+  ];
 
   meta = with lib; {
     description = "Python module to interface with STALL WIFFI devices";
diff --git a/nixpkgs/pkgs/development/python-modules/winacl/default.nix b/nixpkgs/pkgs/development/python-modules/winacl/default.nix
index 9aca67e2ed8d..76d6d71c0b63 100644
--- a/nixpkgs/pkgs/development/python-modules/winacl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/winacl/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "winacl";
-  version = "0.1.1";
+  version = "0.1.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-V+W0WRtL4rJD1LeYgr0PtiKdWTDQYv2ulB1divaqKe4=";
+    sha256 = "187b4394ef247806f50e1d8320bdb9e33ad1f759d9e61e2e391b97b9adf5f58a";
   };
 
   # Project doesn't have tests
diff --git a/nixpkgs/pkgs/development/python-modules/winsspi/default.nix b/nixpkgs/pkgs/development/python-modules/winsspi/default.nix
index 02156ba17e50..ea880234c0bf 100644
--- a/nixpkgs/pkgs/development/python-modules/winsspi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/winsspi/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , minikerberos
-, pythonAtLeast
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/wled/default.nix b/nixpkgs/pkgs/development/python-modules/wled/default.nix
index cb6ec2b606d5..886ffea60b79 100644
--- a/nixpkgs/pkgs/development/python-modules/wled/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wled/default.nix
@@ -1,28 +1,30 @@
 { lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
 , aiohttp
+, awesomeversion
 , backoff
+, buildPythonPackage
+, cachetools
+, fetchFromGitHub
 , poetry-core
-, packaging
 , yarl
 , aresponses
 , pytest-asyncio
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "wled";
-  version = "0.8.0";
-  disabled = pythonOlder "3.8";
+  version = "0.10.2";
   format = "pyproject";
 
+  disabled = pythonOlder "3.8";
+
   src = fetchFromGitHub {
     owner = "frenck";
     repo = "python-wled";
     rev = "v${version}";
-    sha256 = "1jhykilb81sp1srxk91222qglwdlr993ssvgfnl837nbcx6ws1hw";
+    sha256 = "sha256-tqR/edkBFseldSXGoekfRmw//h6Z/Xcg1W0HXJvLhtk=";
   };
 
   nativeBuildInputs = [
@@ -31,8 +33,9 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     aiohttp
+    awesomeversion
     backoff
-    packaging
+    cachetools
     yarl
   ];
 
@@ -49,7 +52,9 @@ buildPythonPackage rec {
       --replace "--cov" ""
   '';
 
-  pythonImportsCheck = [ "wled" ];
+  pythonImportsCheck = [
+    "wled"
+  ];
 
   meta = with lib; {
     description = "Asynchronous Python client for WLED";
diff --git a/nixpkgs/pkgs/development/python-modules/worldengine/default.nix b/nixpkgs/pkgs/development/python-modules/worldengine/default.nix
index 13ce4bc873d6..fed9a3c9007f 100644
--- a/nixpkgs/pkgs/development/python-modules/worldengine/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/worldengine/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, pythonOlder
 , isPy27
 , fetchFromGitHub
 , noise
diff --git a/nixpkgs/pkgs/development/python-modules/wptserve/default.nix b/nixpkgs/pkgs/development/python-modules/wptserve/default.nix
deleted file mode 100644
index 7caf36fa6b2b..000000000000
--- a/nixpkgs/pkgs/development/python-modules/wptserve/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six, h2
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "wptserve";
-  version = "3.0";
-
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "11990a92b07e4535c2723c34a88bd905c66acec9cda6efa7a7b61371bfe8d87a";
-  };
-
-  postPatch = ''
-    substituteInPlace setup.py --replace "h2==" "h2>="
-  '';
-
-  propagatedBuildInputs = [ six h2 ];
-
-  meta = {
-    description = "A webserver intended for web browser testing";
-    homepage =  "https://wptserve.readthedocs.org/";
-    license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ raskin ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/wrapt/default.nix b/nixpkgs/pkgs/development/python-modules/wrapt/default.nix
index 0d5376e10047..e567a8a672ef 100644
--- a/nixpkgs/pkgs/development/python-modules/wrapt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wrapt/default.nix
@@ -5,14 +5,14 @@
 
 buildPythonPackage rec {
   pname = "wrapt";
-  version = "1.12.1";
+  version = "1.13.3";
 
   # No tests in archive
   doCheck = false;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7";
+    sha256 = "1fea9cd438686e6682271d36f3481a9f3636195578bab9ca3382e2f5f01fc185";
   };
 
   meta = {
diff --git a/nixpkgs/pkgs/development/python-modules/wsgiproxy/default.nix b/nixpkgs/pkgs/development/python-modules/wsgiproxy/default.nix
deleted file mode 100644
index e2cc26ff143e..000000000000
--- a/nixpkgs/pkgs/development/python-modules/wsgiproxy/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, paste
-, six
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "WSGIProxy";
-  version = "0.2.2";
-  disabled = isPy3k; # Judging from SyntaxError
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0wqz1q8cvb81a37gb4kkxxpv4w7k8192a08qzyz67rn68ln2wcig";
-  };
-
-  propagatedBuildInputs = [ paste six ];
-
-  meta = with lib; {
-    description = "WSGIProxy gives tools to proxy arbitrary(ish) WSGI requests to other";
-    homepage = "http://pythonpaste.org/wsgiproxy/";
-    license = licenses.mit;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/wtf-peewee/default.nix b/nixpkgs/pkgs/development/python-modules/wtf-peewee/default.nix
index 69db4e50f675..6fd356e69ed6 100644
--- a/nixpkgs/pkgs/development/python-modules/wtf-peewee/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wtf-peewee/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "wtf-peewee";
-  version = "3.0.2";
+  version = "3.0.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "03qs6np5s9r0nmsryfzll29ajcqk27b18kcbgd9plf80ys3nb6kd";
+    sha256 = "faa953fe3f705d4f2b48f3c1a81c5c5a6a38f9ed1378c9a830e6efc1b0fccb15";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/xapp/default.nix b/nixpkgs/pkgs/development/python-modules/xapp/default.nix
index 72f386b36272..7cb664d77fcd 100644
--- a/nixpkgs/pkgs/development/python-modules/xapp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xapp/default.nix
@@ -11,13 +11,13 @@
 
 buildPythonPackage rec {
   pname = "xapp";
-  version = "2.0.2";
+  version = "2.2.1";
 
   src = fetchFromGitHub {
     owner = "linuxmint";
     repo = "python-xapp";
     rev = version;
-    sha256 = "1zgh4k96i939w4scikajmlriayk1zg3md16f8fckjvqbphpxrysl";
+    hash = "sha256-UC+0nbf+SRQsF5R0LcrPpmNbaoRM14DC82JccSpsKsY=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/xarray/default.nix b/nixpkgs/pkgs/development/python-modules/xarray/default.nix
index ee07adeb9d5b..602bbac89aec 100644
--- a/nixpkgs/pkgs/development/python-modules/xarray/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xarray/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "xarray";
-  version = "0.19.0";
+  version = "0.20.1";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3a365ce09127fc841ba88baa63f37ca61376ffe389a6c5e66d52f2c88c23a62b";
+    sha256 = "9c0bffd8b55fdef277f8f6c817153eb51fa4e58653a7ad92eaed9984164b7bdb";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/nixpkgs/pkgs/development/python-modules/xattr/default.nix b/nixpkgs/pkgs/development/python-modules/xattr/default.nix
index a39c3532f4b8..28b9f809dd00 100644
--- a/nixpkgs/pkgs/development/python-modules/xattr/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xattr/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "xattr";
-  version = "0.9.7";
+  version = "0.9.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b0bbca828e04ef2d484a6522ae7b3a7ccad5e43fa1c6f54d78e24bb870f49d44";
+    sha256 = "09cb7e1efb3aa1b4991d6be4eb25b73dc518b4fe894f0915f5b0dcede972f346";
   };
 
   propagatedBuildInputs = [ cffi ];
diff --git a/nixpkgs/pkgs/development/python-modules/xcaplib/default.nix b/nixpkgs/pkgs/development/python-modules/xcaplib/default.nix
deleted file mode 100644
index 086eaf1e3488..000000000000
--- a/nixpkgs/pkgs/development/python-modules/xcaplib/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchdarcs
-, isPy3k
-, eventlib
-, application
-}:
-
-buildPythonPackage rec {
-  pname = "python-xcaplib";
-  version = "1.2.1";
-  disabled = isPy3k;
-
-  src = fetchdarcs {
-    url = "http://devel.ag-projects.com/repositories/${pname}";
-    rev = "release-${version}";
-    sha256 = "15ww8f0a9zh37mypw5s4q1qk44cwf7jlhc9q1z4vjlpvnzimg54v";
-  };
-
-  propagatedBuildInputs = [ eventlib application ];
-
-  meta = with lib; {
-    homepage = "https://github.com/AGProjects/python-xcaplib";
-    description = "XCAP (RFC4825) client library";
-    license = licenses.gpl2;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/xcffib/default.nix b/nixpkgs/pkgs/development/python-modules/xcffib/default.nix
index 59a2c8d7c1bc..cb9e1ddf921c 100644
--- a/nixpkgs/pkgs/development/python-modules/xcffib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xcffib/default.nix
@@ -23,6 +23,8 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ cffi six ];
 
+  propagatedNativeBuildInputs = [ cffi ];
+
   checkInputs = [ nose ];
 
   pythonImportsCheck = [ "xcffib" ];
diff --git a/nixpkgs/pkgs/development/python-modules/xdg/default.nix b/nixpkgs/pkgs/development/python-modules/xdg/default.nix
index 2ea4e5bedf8b..ddf66a741758 100644
--- a/nixpkgs/pkgs/development/python-modules/xdg/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xdg/default.nix
@@ -5,7 +5,7 @@
 }:
 
 buildPythonPackage rec {
-  version = "5.0.2";
+  version = "5.1.1";
   pname = "xdg";
   disabled = isPy27;
   format = "pyproject";
@@ -14,7 +14,7 @@ buildPythonPackage rec {
     owner = "srstevenson";
     repo = pname;
     rev = version;
-    sha256 = "sha256-wZfihMrq83Bye5CE5p7bTlI9Z7CsCkSd8Art5ws4vsY=";
+    sha256 = "sha256-z/Zvo2WGw9qA+M3Pt9r35DuxtuhL7/I75LlFEdDOJcc=";
   };
 
   nativeBuildInputs = [ poetry-core ];
diff --git a/nixpkgs/pkgs/development/python-modules/xdis/default.nix b/nixpkgs/pkgs/development/python-modules/xdis/default.nix
index 81b8e146d9bb..c916f8d7ec2a 100644
--- a/nixpkgs/pkgs/development/python-modules/xdis/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xdis/default.nix
@@ -6,14 +6,14 @@
 
 buildPythonPackage rec {
   pname = "xdis";
-  version = "5.0.11";
+  version = "6.0.2";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "rocky";
     repo = "python-xdis";
     rev = version;
-    sha256 = "sha256-KTPu0+bERLRCVESqJgBPtcftlniWl2+C9GDcf84ssiA=";
+    sha256 = "sha256-P8mUkAO3usFCE+E9cna2x1iA2uyHVPX9FHDpX+kTFWQ=";
   };
 
   checkInputs = [ pytest ];
diff --git a/nixpkgs/pkgs/development/python-modules/xdot/default.nix b/nixpkgs/pkgs/development/python-modules/xdot/default.nix
index e28deaf07d64..fa24256b6a00 100644
--- a/nixpkgs/pkgs/development/python-modules/xdot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xdot/default.nix
@@ -15,6 +15,10 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ gobject-introspection pygobject3 graphviz gtk3 numpy ];
   checkInputs = [ xvfb-run ];
 
+  postInstall = ''
+    wrapProgram "$out/bin/xdot" --prefix PATH : "${lib.makeBinPath [ graphviz ]}"
+  '';
+
   checkPhase = ''
     xvfb-run -s '-screen 0 800x600x24' ${python3.interpreter} nix_run_setup test
   '';
diff --git a/nixpkgs/pkgs/development/python-modules/xgboost/default.nix b/nixpkgs/pkgs/development/python-modules/xgboost/default.nix
index 1045b86a4441..3717ca2473c3 100644
--- a/nixpkgs/pkgs/development/python-modules/xgboost/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xgboost/default.nix
@@ -6,7 +6,6 @@
 , scikit-learn
 , stdenv
 , xgboost
-, substituteAll
 , pandas
 , matplotlib
 , graphviz
diff --git a/nixpkgs/pkgs/development/python-modules/xkbcommon/default.nix b/nixpkgs/pkgs/development/python-modules/xkbcommon/default.nix
new file mode 100644
index 000000000000..580ad3921905
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xkbcommon/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+, cffi
+, pkg-config
+, libxkbcommon
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "xkbcommon";
+  version = "0.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "V5LMaX5TPhk9x4ZA4MGFzDhUiC6NKPo4uTbW6Q7mdVw=";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+  propagatedNativeBuildInputs = [ cffi ];
+  buildInputs = [ libxkbcommon ];
+  propagatedBuildInputs = [ cffi ];
+  checkInputs = [ pytestCheckHook ];
+
+  postBuild = ''
+    ${python.interpreter} xkbcommon/ffi_build.py
+  '';
+
+  pythonImportsCheck = [ "xkbcommon" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/sde1000/python-xkbcommon";
+    description = "Python bindings for libxkbcommon using cffi";
+    license = licenses.mit;
+    maintainers = with maintainers; [ chvp ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xknx/default.nix b/nixpkgs/pkgs/development/python-modules/xknx/default.nix
index 336d39e3c956..781f59fa3cf7 100644
--- a/nixpkgs/pkgs/development/python-modules/xknx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xknx/default.nix
@@ -11,14 +11,16 @@
 
 buildPythonPackage rec {
   pname = "xknx";
-  version = "0.18.9";
-  disabled = pythonOlder "3.7";
+  version = "0.18.15";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "XKNX";
     repo = pname;
     rev = version;
-    sha256 = "1dw1dqhd790wsa6v7bpcv921zf1y544ry7drwcfdcmprsm7hs42j";
+    sha256 = "sha256-k/fLUuBjXScTvlvoBLZIVPEqNGIPI04FBeTBadp5uiY=";
   };
 
   propagatedBuildInputs = [
@@ -32,7 +34,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "xknx" ];
+  pythonImportsCheck = [
+    "xknx"
+  ];
 
   meta = with lib; {
     description = "KNX Library Written in Python";
diff --git a/nixpkgs/pkgs/development/python-modules/xmind/default.nix b/nixpkgs/pkgs/development/python-modules/xmind/default.nix
new file mode 100644
index 000000000000..ab12f26a72df
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/xmind/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "xmind";
+  version = "1.2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "zhuifengshen";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "xC1WpHz2eHb5+xShM/QUQAIYnJNyK1EKWbTXJKhDwbQ=";
+  };
+
+  # Projec thas no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "xmind"
+  ];
+
+  meta = with lib; {
+    description = "Python module to create mindmaps";
+    homepage = "https://github.com/zhuifengshen/xmind";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/xml2rfc/default.nix b/nixpkgs/pkgs/development/python-modules/xml2rfc/default.nix
index de17aa849227..26b51d1a4ac3 100644
--- a/nixpkgs/pkgs/development/python-modules/xml2rfc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xml2rfc/default.nix
@@ -22,13 +22,13 @@
 
 buildPythonPackage rec {
   pname = "xml2rfc";
-  version = "3.10.0";
+  version = "3.12.0";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-DJjGQAYFhXjAiJhWzxpQ0jRUSrnsNCcNz1KfPEjBoKE=";
+    sha256 = "25deadb9ee95f0dc71376a60e9c1e34636b5016c1952ad5597a6246495e34464";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/xmlschema/default.nix b/nixpkgs/pkgs/development/python-modules/xmlschema/default.nix
index 0232092c4873..1687b113b42f 100644
--- a/nixpkgs/pkgs/development/python-modules/xmlschema/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xmlschema/default.nix
@@ -8,7 +8,7 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.8.0";
+  version = "1.9.2";
   pname = "xmlschema";
 
   disabled = pythonOlder "3.6";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "sissaschool";
     repo = "xmlschema";
     rev = "v${version}";
-    sha256 = "1k41zzffg9srhgnvi1s1akaqpwz2z003xbvig8axwlkm7z0d4xiz";
+    sha256 = "1d18x150g0jz3nw5al5dygizwkjgzdnmd5kf46v8ribfz48iirr6";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/xpybutil/default.nix b/nixpkgs/pkgs/development/python-modules/xpybutil/default.nix
index 07cfc96e7fdd..cc574c582418 100644
--- a/nixpkgs/pkgs/development/python-modules/xpybutil/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xpybutil/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, xcffib, pillow, nose }:
+{ lib, buildPythonPackage, fetchFromGitHub, xcffib, pillow }:
 
 buildPythonPackage rec {
   pname = "xpybutil";
@@ -13,9 +13,16 @@ buildPythonPackage rec {
   };
 
   # pillow is a dependency in image.py which is not listed in setup.py
-  propagatedBuildInputs = [ xcffib pillow ];
+  propagatedBuildInputs = [ pillow xcffib ];
 
-  checkInputs = [ nose ];
+  propagatedNativeBuildInputs = [ xcffib ];
+
+  # no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "xpybutil"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/BurntSushi/xpybutil";
diff --git a/nixpkgs/pkgs/development/python-modules/xstatic-jquery-ui/default.nix b/nixpkgs/pkgs/development/python-modules/xstatic-jquery-ui/default.nix
index 8c872d0bbd19..f5509676d114 100644
--- a/nixpkgs/pkgs/development/python-modules/xstatic-jquery-ui/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xstatic-jquery-ui/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "XStatic-jquery-ui";
-  version = "1.12.1.1";
+  version = "1.13.0.1";
 
   src = fetchPypi {
     inherit version pname;
-    sha256 = "d6ba48bb474420a8bcb2be02eef6ae96281ec24eff6befa54f04ebc9e4cc8910";
+    sha256 = "3697e5f0ef355b8f4a1c724221592683c2db031935cbb57b46224eef474bd294";
   };
 
   # no tests implemented
diff --git a/nixpkgs/pkgs/development/python-modules/yalexs/default.nix b/nixpkgs/pkgs/development/python-modules/yalexs/default.nix
index a97ebe947af9..9b9ef513f70d 100644
--- a/nixpkgs/pkgs/development/python-modules/yalexs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/yalexs/default.nix
@@ -16,14 +16,16 @@
 
 buildPythonPackage rec {
   pname = "yalexs";
-  version = "1.1.13";
+  version = "1.1.15";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "bdraco";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0938540n60xv7kxam3azszn3nj0mnhhgh5p4hgbfxj43bkwpqz4n";
+    sha256 = "sha256-EK9jmbU3A2rNx/H8WOsZiGA7tqzg/XJkW/DV5s+2Y3U=";
   };
 
   propagatedBuildInputs = [
@@ -44,10 +46,13 @@ buildPythonPackage rec {
 
   postPatch = ''
     # Not used requirement
-    substituteInPlace setup.py --replace '"vol",' ""
+    substituteInPlace setup.py \
+      --replace '"vol",' ""
   '';
 
-  pythonImportsCheck = [ "yalexs" ];
+  pythonImportsCheck = [
+    "yalexs"
+  ];
 
   meta = with lib; {
     description = "Python API for Yale Access (formerly August) Smart Lock and Doorbell";
diff --git a/nixpkgs/pkgs/development/python-modules/yamale/default.nix b/nixpkgs/pkgs/development/python-modules/yamale/default.nix
index f590e8d896c0..670e46f98055 100644
--- a/nixpkgs/pkgs/development/python-modules/yamale/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/yamale/default.nix
@@ -4,12 +4,13 @@
 , pythonOlder
 , pytestCheckHook
 , pyyaml
-, ruamel_yaml
+, ruamel-yaml
 }:
 
 buildPythonPackage rec {
   pname = "yamale";
-  version = "3.0.8";
+  version = "4.0.2";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
@@ -17,19 +18,21 @@ buildPythonPackage rec {
     owner = "23andMe";
     repo = pname;
     rev = version;
-    sha256 = "0bn0himn5fwndaxn205s55bdc4np7lhd940i0lkv0m7ybhbw7dap";
+    sha256 = "sha256-hFBU3o3HpL0Schgzcx3oYq0IAUVGKThIfEteYcFbLnk=";
   };
 
   propagatedBuildInputs = [
     pyyaml
-    ruamel_yaml
+    ruamel-yaml
   ];
 
   checkInputs = [
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "yamale" ];
+  pythonImportsCheck = [
+    "yamale"
+  ];
 
   meta = with lib; {
     description = "A schema and validator for YAML";
diff --git a/nixpkgs/pkgs/development/python-modules/yamlfix/default.nix b/nixpkgs/pkgs/development/python-modules/yamlfix/default.nix
new file mode 100644
index 000000000000..f0203d58dffb
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/yamlfix/default.nix
@@ -0,0 +1,55 @@
+{ lib
+, buildPythonPackage
+, click
+, fetchFromGitHub
+, pytest-xdist
+, pytestCheckHook
+, pythonOlder
+, ruyaml
+}:
+
+buildPythonPackage rec {
+  pname = "yamlfix";
+  version = "0.8.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "lyz-code";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-Gkq80YMeiPy7xxLauA/nloW4znMV2tfE+e24HyZgUaQ=";
+  };
+
+  propagatedBuildInputs = [
+    click
+    ruyaml
+  ];
+
+  checkInputs = [
+    pytest-xdist
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'python_paths = "."' ""
+  '';
+
+  pytestFlagsArray = [
+    "-n"
+    "$NIX_BUILD_CORES"
+  ];
+
+  pythonImportsCheck = [
+    "yamlfix"
+  ];
+
+  meta = with lib; {
+    description = "Python YAML formatter that keeps your comments";
+    homepage = "https://github.com/lyz-code/yamlfix";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ koozz ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/yappi/default.nix b/nixpkgs/pkgs/development/python-modules/yappi/default.nix
index b96d4efd44b8..af650f6db3b8 100644
--- a/nixpkgs/pkgs/development/python-modules/yappi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/yappi/default.nix
@@ -1,23 +1,38 @@
-{ lib, buildPythonPackage, fetchFromGitHub, gevent, isPy27, python }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, gevent
+, isPy27
+, python
+}:
 
 buildPythonPackage rec {
   pname = "yappi";
-  version = "1.3.0";
+  version = "1.3.2";
+
   disabled = isPy27; # invalid syntax
 
   src = fetchFromGitHub {
     owner = "sumerc";
     repo = pname;
-    rev = "30f94024a0e2e4fa21c220de6a0dc97b4cb2c319";
-    sha256 = "1kvwl3y3c2hivf9y2x1q1s8a2y724iwqd1krq6ryvsbg3inyh8qw";
+    rev = "8bf7a650066f104f59c3cae4a189ec15e7d51c8c";
+    sha256 = "1q8lr9n0lny2g3mssy3mksbl9m4k1kqn1a4yv1hfqsahxdvpw2dp";
   };
 
   patches = [ ./tests.patch ];
-  checkInputs = [ gevent ];
+
+  checkInputs = [
+    gevent
+  ];
+
   checkPhase = ''
     ${python.interpreter} run_tests.py
   '';
 
+  pythonImportsCheck = [
+    "yappi"
+  ];
+
   meta = with lib; {
     homepage = "https://github.com/sumerc/yappi";
     description = "Python profiler that supports multithreading and measuring CPU time";
diff --git a/nixpkgs/pkgs/development/python-modules/yara-python/default.nix b/nixpkgs/pkgs/development/python-modules/yara-python/default.nix
index 050ee7315908..e29ff3b12de7 100644
--- a/nixpkgs/pkgs/development/python-modules/yara-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/yara-python/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "yara-python";
-  version = "4.1.2";
+  version = "4.1.3";
 
   src = fetchFromGitHub {
     owner = "VirusTotal";
     repo = "yara-python";
     rev = "v${version}";
-    sha256 = "1sg7ghb43qajziiym1y584rk0wfflyfc9fx507wrh4iahq5xp622";
+    sha256 = "sha256-lOP+OVnMgpP8S+Q3jGRNEAFXAohXgX5Nvl+l4EK5ebs=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/yarl/default.nix b/nixpkgs/pkgs/development/python-modules/yarl/default.nix
index 66d219f9348e..08866ac39074 100644
--- a/nixpkgs/pkgs/development/python-modules/yarl/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/yarl/default.nix
@@ -1,32 +1,51 @@
 { lib
-, fetchPypi
 , buildPythonPackage
+, fetchPypi
 , pythonOlder
+, idna
 , multidict
-, pytest-runner
-, pytest
 , typing-extensions
-, idna
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "yarl";
-  version = "1.6.3";
+  version = "1.7.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8a9066529240171b68893d60dca86a763eae2139dd42f42106b03cf4b426bf10";
+    sha256 = "sha256-RTmbRtYMJTMnpGDpmFZ1IAn87l9dPICy98DK4cONVt0=";
   };
 
-  checkInputs = [ pytest pytest-runner ];
-  propagatedBuildInputs = [ multidict idna ]
-    ++ lib.optionals (pythonOlder "3.8") [
-      typing-extensions
-    ];
+  postPatch = ''
+    sed -i '/^addopts/d' setup.cfg
+  '';
+
+  propagatedBuildInputs = [
+    idna
+    multidict
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    typing-extensions
+  ];
+
+  preCheck = ''
+    # don't import yarl from ./ so the C extension is available
+    pushd tests
+  '';
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  postCheck = ''
+    popd
+  '';
+
+  pythonImportsCheck = [ "yarl" ];
 
   meta = with lib; {
     description = "Yet another URL library";
-    homepage = "https://github.com/aio-libs/yarl/";
+    homepage = "https://github.com/aio-libs/yarl";
     license = licenses.asl20;
     maintainers = with maintainers; [ dotlambda ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/yenc/default.nix b/nixpkgs/pkgs/development/python-modules/yenc/default.nix
deleted file mode 100644
index 453f3113853b..000000000000
--- a/nixpkgs/pkgs/development/python-modules/yenc/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ fetchurl
-, lib
-, buildPythonPackage
-, python
-, isPyPy
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "yenc";
-  version = "0.4.0";
-  src = fetchurl {
-    url = "https://bitbucket.org/dual75/yenc/get/${version}.tar.gz";
-    sha256 = "0zkyzxgq30mbrzpnqam4md0cb09d5falh06m0npc81nnlhcghkp7";
-  };
-
-  checkPhase = ''
-    ${python.interpreter} -m unittest discover -s test
-  '';
-
-  disabled = isPy3k || isPyPy;
-
-  meta = {
-    description = "Encoding and decoding yEnc";
-    license = lib.licenses.lgpl21;
-    homepage = "https://bitbucket.org/dual75/yenc";
-    maintainers = with lib.maintainers; [ fridh ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/yfinance/default.nix b/nixpkgs/pkgs/development/python-modules/yfinance/default.nix
index 7a7a005efed0..059316f7a99c 100644
--- a/nixpkgs/pkgs/development/python-modules/yfinance/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/yfinance/default.nix
@@ -1,20 +1,22 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , multitasking
 , numpy
 , pandas
 , requests
+, lxml
 }:
 
 buildPythonPackage rec {
   pname = "yfinance";
-  version = "0.1.63";
+  version = "0.1.67";
 
-  # GitHub source releases aren't tagged
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0k1saz0wknxv31vpqcfyi35mzi68c75hlqpw8lf83xqw9zllydhi";
+  src = fetchFromGitHub {
+    owner = "ranaroussi";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-QwWShXelEBgLUvCwPqB7z5DjS1JsW/krPrsS3VkyaJg=";
   };
 
   propagatedBuildInputs = [
@@ -22,6 +24,7 @@ buildPythonPackage rec {
     numpy
     pandas
     requests
+    lxml
   ];
 
   doCheck = false;  # Tests require internet access
diff --git a/nixpkgs/pkgs/development/python-modules/youless-api/default.nix b/nixpkgs/pkgs/development/python-modules/youless-api/default.nix
index da90c3c2a74d..94580fbebbfd 100644
--- a/nixpkgs/pkgs/development/python-modules/youless-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/youless-api/default.nix
@@ -13,7 +13,8 @@
 
 buildPythonPackage rec {
   pname = "youless-api";
-  version = "0.14";
+  version = "0.16";
+  format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
@@ -21,7 +22,7 @@ buildPythonPackage rec {
     owner = "jongsoftdev";
     repo = "youless-python-bridge";
     rev = version;
-    sha256 = "sha256-ZHDQ+4Urv0ZxKFASsgDG12mpfRiCN2DwU6Rgc9ye5qY=";
+    sha256 = "sha256-8pJeb3eWchMRrk8KLSI/EbHs1wQDqBoqlAQXm9ulyqs=";
   };
 
   propagatedBuildInputs = [
@@ -37,7 +38,9 @@ buildPythonPackage rec {
     nose
   ];
 
-  pythonImportsCheck = [ "youless_api" ];
+  pythonImportsCheck = [
+    "youless_api"
+  ];
 
   meta = with lib; {
     description = "Python library for YouLess sensors";
diff --git a/nixpkgs/pkgs/development/python-modules/youtube-search-python/default.nix b/nixpkgs/pkgs/development/python-modules/youtube-search-python/default.nix
index 8c1010552206..ad23a6cc169d 100644
--- a/nixpkgs/pkgs/development/python-modules/youtube-search-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/youtube-search-python/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "youtube-search-python";
-  version = "1.4.9";
+  version = "1.5.2";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9c75540d41f6dcfd19f2f70fbe8346406e026a016aae56b87c207a0b4ff571e0";
+    sha256 = "33f0d58f4803b0b2badf860cd31fb83d3f7edecdd2c01dd09cd6511abbf0e6b9";
   };
 
   propagatedBuildInputs = [ httpx ];
diff --git a/nixpkgs/pkgs/development/python-modules/youtube-transcript-api/default.nix b/nixpkgs/pkgs/development/python-modules/youtube-transcript-api/default.nix
index 6829df668b2f..088ee476e3f0 100644
--- a/nixpkgs/pkgs/development/python-modules/youtube-transcript-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/youtube-transcript-api/default.nix
@@ -2,14 +2,14 @@
 
 buildPythonPackage rec {
   pname = "youtube-transcript-api";
-  version = "0.4.1";
+  version = "0.4.3";
 
   # PyPI tarball is missing some test files
   src = fetchFromGitHub {
     owner = "jdepoix";
     repo = "youtube-transcript-api";
     rev = "v${version}";
-    sha256 = "1gpk13j1n2bifwsg951gmrfnq8kfxjr15rq46dxn1bhyk9hr1zql";
+    sha256 = "1krak5j2faj6951cl13h7hg9i3kyp6nslcbi608k8hxlbd80hc5h";
   };
 
   propagatedBuildInputs = [ requests ];
diff --git a/nixpkgs/pkgs/development/python-modules/yq/default.nix b/nixpkgs/pkgs/development/python-modules/yq/default.nix
index 922276e38894..b87982b20b65 100644
--- a/nixpkgs/pkgs/development/python-modules/yq/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/yq/default.nix
@@ -1,5 +1,4 @@
 { lib
-, nixosTests
 , buildPythonPackage
 , fetchPypi
 , substituteAll
@@ -12,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "yq";
-  version = "2.12.2";
+  version = "2.13.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2f156d0724b61487ac8752ed4eaa702a5737b804d5afa46fa55866951cd106d2";
+    sha256 = "sha256-/RMf2x9WcWrY1EzZ6q99OyLTm6iGHqZKQJzD9K4mPbg=";
   };
 
   patches = [
@@ -45,7 +44,10 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "yq" ];
 
-  passthru.tests = { inherit (nixosTests) yq; };
+  doInstallCheck = true;
+  installCheckPhase = ''
+    echo '{"hello":{"foo":"bar"}}' | $out/bin/yq -y . | grep 'foo: bar'
+  '';
 
   meta = with lib; {
     description = "Command-line YAML processor - jq wrapper for YAML documents";
diff --git a/nixpkgs/pkgs/development/python-modules/yt/default.nix b/nixpkgs/pkgs/development/python-modules/yt/default.nix
deleted file mode 100644
index 9611b2722295..000000000000
--- a/nixpkgs/pkgs/development/python-modules/yt/default.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, matplotlib
-, setuptools
-, sympy
-, numpy
-, ipython
-, hdf5
-, nose
-, cython
-, python
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "yt";
-  version = "4.0.1";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "6219cbf971871320a13679a57722c0363e50db5e6d4d64ea9d197461b2a7f70f";
-  };
-
-  buildInputs = [
-    cython
-  ];
-
-  propagatedBuildInputs = [
-    matplotlib
-    setuptools
-    sympy
-    numpy
-    ipython
-    hdf5
-  ];
-
-  checkInputs = [
-    nose
-  ];
-
-  checkPhase = ''
-    cd $out/${python.sitePackages}
-    HOME=$(mktemp -d) nosetests yt
-  '';
-
-  meta = with lib; {
-    description = "An analysis and visualization toolkit for volumetric data";
-    homepage = "https://github.com/yt-project/yt";
-    license = licenses.bsd3;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/nixpkgs/pkgs/development/python-modules/ytmusicapi/default.nix b/nixpkgs/pkgs/development/python-modules/ytmusicapi/default.nix
index 8bf781ef3a42..b19aed0c6fdc 100644
--- a/nixpkgs/pkgs/development/python-modules/ytmusicapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ytmusicapi/default.nix
@@ -1,19 +1,20 @@
 { lib
 , buildPythonPackage
-, isPy27
 , fetchPypi
+, pythonOlder
 , requests
 }:
 
 buildPythonPackage rec {
   pname = "ytmusicapi";
-  version = "0.19.3";
+  version = "0.19.5";
+  format = "setuptools";
 
-  disabled = isPy27;
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "dfd0271f7177173cea9c255730151a10a2fe4a32f9accd2fe31e7645936c90c5";
+    sha256 = "sha256-haZe5afwkU8wD8s2lrmHJuVo6TO3CcQ/0TuJbHPmqvU=";
   };
 
   propagatedBuildInputs = [
@@ -22,10 +23,12 @@ buildPythonPackage rec {
 
   doCheck = false; # requires network access
 
-  pythonImportsCheck = [ "ytmusicapi" ];
+  pythonImportsCheck = [
+    "ytmusicapi"
+  ];
 
   meta = with lib; {
-    description = "Unofficial API for YouTube Music";
+    description = "Python API for YouTube Music";
     homepage = "https://github.com/sigma67/ytmusicapi";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/nixpkgs/pkgs/development/python-modules/z3c-checkversions/default.nix b/nixpkgs/pkgs/development/python-modules/z3c-checkversions/default.nix
index 8610306ea6f2..26898ff2cd2c 100644
--- a/nixpkgs/pkgs/development/python-modules/z3c-checkversions/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/z3c-checkversions/default.nix
@@ -2,21 +2,21 @@
 , buildPythonPackage
 , fetchPypi
 , python
-, zc_buildout
+, zc-buildout
 , zope_testrunner
 }:
 
 buildPythonPackage rec {
   pname = "z3c-checkversions";
-  version = "1.1";
+  version = "1.2";
 
   src = fetchPypi {
     inherit version;
     pname = "z3c.checkversions";
-    sha256 = "b45bd22ae01ed60933694fb5abede1ff71fe8ffa79b37082b2fcf38a2f0dec9d";
+    sha256 = "94c7ab0810ee6fdb66a4689b48e537b57e2dbee277cb1de2ece7a7f4d8c83001";
   };
 
-  propagatedBuildInputs = [ zc_buildout ];
+  propagatedBuildInputs = [ zc-buildout ];
   checkInputs = [ zope_testrunner ];
   doCheck = !python.pkgs.isPy27;
   checkPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/zarr/default.nix b/nixpkgs/pkgs/development/python-modules/zarr/default.nix
index cc47fe9e5ac1..11c6f84850bd 100644
--- a/nixpkgs/pkgs/development/python-modules/zarr/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zarr/default.nix
@@ -12,12 +12,12 @@
 
 buildPythonPackage rec {
   pname = "zarr";
-  version = "2.10.0";
+  version = "2.10.3";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8ca8e505cadb4f7f97aab4e4193bb302b6338bf54593c98fe7581bf574ed864c";
+    sha256 = "76932665c2146ebdf15f6dba254f9e0030552fbfcf9322dea822bff96fbce693";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/zbase32/default.nix b/nixpkgs/pkgs/development/python-modules/zbase32/default.nix
deleted file mode 100644
index 715da719bbbc..000000000000
--- a/nixpkgs/pkgs/development/python-modules/zbase32/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptoolsDarcs
-, pyutil
-}:
-
-buildPythonPackage rec {
-  pname = "zbase32";
-  version = "1.1.5";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "9b25c34ba586cbbad4517af516e723599a6f38fc560f4797855a5f3051e6422f";
-  };
-
-  # Tests require `pyutil' so disable them to avoid circular references.
-  doCheck = false;
-
-  propagatedBuildInputs = [ setuptoolsDarcs pyutil ];
-
-  meta = with lib; {
-    description = "zbase32, a base32 encoder/decoder";
-    homepage = "https://pypi.python.org/pypi/zbase32";
-    license = licenses.bsd0;
-  };
-
-}
diff --git a/nixpkgs/pkgs/development/python-modules/zeroconf/default.nix b/nixpkgs/pkgs/development/python-modules/zeroconf/default.nix
index 650f09558cbc..12e0279eb3de 100644
--- a/nixpkgs/pkgs/development/python-modules/zeroconf/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zeroconf/default.nix
@@ -10,16 +10,16 @@
 
 buildPythonPackage rec {
   pname = "zeroconf";
-  version = "0.36.8";
+  version = "0.38.1";
   format = "setuptools";
-  disabled = pythonOlder "3.6";
 
-  # no tests in pypi sdist
+  disabled = pythonOlder "3.7";
+
   src = fetchFromGitHub {
     owner = "jstasiak";
     repo = "python-zeroconf";
     rev = version;
-    sha256 = "sha256-lsvrttfyUtQneUkQlWFpmQ99BSJp/YiVYUKY7AWh0rs=";
+    sha256 = "sha256-8bJEH+m+83rkKdN5GjD4THs1CUy/wstoBFiXR7kHKtw=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/zeversolarlocal/default.nix b/nixpkgs/pkgs/development/python-modules/zeversolarlocal/default.nix
new file mode 100644
index 000000000000..feb56c384dc1
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/zeversolarlocal/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, flit-core
+, httpx
+, pytest-asyncio
+, pytest-mock
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "zeversolarlocal";
+  version = "1.1.0";
+  format = "flit";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "ExZy5k5RE7k+D0lGmuIkGWrWQ+m24K2oqbUEg4BAVuY=";
+  };
+
+  nativeBuildInputs = [
+    flit-core
+  ];
+
+  propagatedBuildInputs = [
+    httpx
+  ];
+
+  checkInputs = [
+    pytest-asyncio
+    pytest-mock
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "--cov zeversolarlocal --cov-report xml:cov.xml --cov-report term-missing -vv" ""
+  '';
+
+  disabledTests = [
+    # Test requires network access
+    "test_httpx_timeout"
+  ];
+
+  pythonImportsCheck = [
+    "zeversolarlocal"
+  ];
+
+  meta = with lib; {
+    description = "Python module to interact with Zeversolar inverters";
+    homepage = "https://github.com/sander76/zeversolarlocal";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/zfec/default.nix b/nixpkgs/pkgs/development/python-modules/zfec/default.nix
index 391e1656749a..1cb2780cc948 100644
--- a/nixpkgs/pkgs/development/python-modules/zfec/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zfec/default.nix
@@ -24,6 +24,8 @@ buildPythonPackage rec {
     sed -i -e '/argparse/d' setup.py
   '';
 
+  pythonImportsCheck = [ "zfec" ];
+
   meta = with lib; {
     homepage = "https://github.com/tahoe-lafs/zfec";
     description = "Zfec, a fast erasure codec which can be used with the command-line, C, Python, or Haskell";
diff --git a/nixpkgs/pkgs/development/python-modules/zha-quirks/default.nix b/nixpkgs/pkgs/development/python-modules/zha-quirks/default.nix
index ee0afa02733b..c1d4328106ae 100644
--- a/nixpkgs/pkgs/development/python-modules/zha-quirks/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zha-quirks/default.nix
@@ -9,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "zha-quirks";
-  version = "0.0.62";
+  version = "0.0.65";
 
   src = fetchFromGitHub {
     owner = "zigpy";
     repo = "zha-device-handlers";
     rev = version;
-    sha256 = "sha256-wXXdxE69EABrvJA8utrhLW4+8ixcyCraWHx2M3uE8mw=";
+    sha256 = "sha256-3Lcmc95KotFMlL44zDugIQkHtplMMlyWjSb+SLehaqs=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/zigpy-deconz/default.nix b/nixpkgs/pkgs/development/python-modules/zigpy-deconz/default.nix
index 466026556e0a..e1c08f069e8c 100644
--- a/nixpkgs/pkgs/development/python-modules/zigpy-deconz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zigpy-deconz/default.nix
@@ -1,27 +1,41 @@
 { lib
+, asynctest
 , buildPythonPackage
 , fetchFromGitHub
 , pyserial
 , pyserial-asyncio
-, zigpy
-, pytestCheckHook
 , pytest-asyncio
-, asynctest
+, pytestCheckHook
+, zigpy
 }:
 
 buildPythonPackage rec {
   pname = "zigpy-deconz";
-  version = "0.13.0";
+  version = "0.14.0";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "zigpy";
     repo = pname;
     rev = version;
-    sha256 = "sha256-9rxdnY5tMtPJLE/lRaphNR1L1vdhAxnIDoh8xCHmzjc=";
+    sha256 = "sha256-PctS09twk8SRK3pTJvQU8drsqhmrPnMge2WO+VY84U8=";
   };
 
-  propagatedBuildInputs = [ pyserial pyserial-asyncio zigpy ];
-  checkInputs = [ pytestCheckHook pytest-asyncio asynctest ];
+  propagatedBuildInputs = [
+    pyserial
+    pyserial-asyncio
+    zigpy
+  ];
+
+  checkInputs = [
+    asynctest
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "zigpy_deconz"
+  ];
 
   meta = with lib; {
     description = "Library which communicates with Deconz radios for zigpy";
diff --git a/nixpkgs/pkgs/development/python-modules/zigpy-znp/default.nix b/nixpkgs/pkgs/development/python-modules/zigpy-znp/default.nix
index f8413d9aa17f..8a3bd0e41fd2 100644
--- a/nixpkgs/pkgs/development/python-modules/zigpy-znp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zigpy-znp/default.nix
@@ -18,13 +18,16 @@
 
 buildPythonPackage rec {
   pname = "zigpy-znp";
-  version = "0.5.4";
+  version = "0.6.4";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "zigpy";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0jki9qmjazh0by02c0w17dyaz0nl3gzjiy064mj6pi502d175831";
+    sha256 = "0hz483wqzpdaap96gbjasisxd4wy8f4lslnspcvzqcf4dy1mxln6";
   };
 
   propagatedBuildInputs = [
@@ -46,7 +49,9 @@ buildPythonPackage rec {
     asynctest
   ];
 
-  pythonImportsCheck = [ "zigpy_znp" ];
+  pythonImportsCheck = [
+    "zigpy_znp"
+  ];
 
   meta = with lib; {
     description = "Python library for zigpy which communicates with TI ZNP radios";
diff --git a/nixpkgs/pkgs/development/python-modules/zigpy/default.nix b/nixpkgs/pkgs/development/python-modules/zigpy/default.nix
index 38b843d57786..01751219d400 100644
--- a/nixpkgs/pkgs/development/python-modules/zigpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zigpy/default.nix
@@ -15,13 +15,16 @@
 
 buildPythonPackage rec {
   pname = "zigpy";
-  version = "0.38.0";
+  version = "0.42.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "zigpy";
     repo = "zigpy";
     rev = version;
-    sha256 = "sha256-3iS2VMaicbgtsiKUPe6GjFJQV8xKjs+dC8+IeprMa9I=";
+    sha256 = "sha256-kSUFcN3QOZWFBgDrOopkYuUyBE9asO6MXf0H9CMjFlc=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/zipp/1.nix b/nixpkgs/pkgs/development/python-modules/zipp/1.nix
index ab9603926770..82f100aaa0d1 100644
--- a/nixpkgs/pkgs/development/python-modules/zipp/1.nix
+++ b/nixpkgs/pkgs/development/python-modules/zipp/1.nix
@@ -5,7 +5,6 @@
 , pytest
 , pytest-flake8
 , more-itertools
-, toml
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/zipp/default.nix b/nixpkgs/pkgs/development/python-modules/zipp/default.nix
index c070e2327772..dc30128c9ead 100644
--- a/nixpkgs/pkgs/development/python-modules/zipp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zipp/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "zipp";
-  version = "3.5.0";
+  version = "3.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f5812b1e007e48cff63449a5e9f4e7ebea716b4111f9c4f9a645f91d579bf0c4";
+    sha256 = "71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/nixpkgs/pkgs/development/python-modules/zope_lifecycleevent/default.nix b/nixpkgs/pkgs/development/python-modules/zope_lifecycleevent/default.nix
index 809d8252cb2e..1b3e288ba255 100644
--- a/nixpkgs/pkgs/development/python-modules/zope_lifecycleevent/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zope_lifecycleevent/default.nix
@@ -4,7 +4,6 @@
 , isPy3k
 , zope_event
 , zope_component
-, zope_interface
 }:
 
 buildPythonPackage rec {
diff --git a/nixpkgs/pkgs/development/python-modules/zope_proxy/default.nix b/nixpkgs/pkgs/development/python-modules/zope_proxy/default.nix
index 2d1a5880d0de..70e329cce9e9 100644
--- a/nixpkgs/pkgs/development/python-modules/zope_proxy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zope_proxy/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "zope.proxy";
-  version = "4.4.0";
+  version = "4.5.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b244904c5148067c3f1899d29a2c1a28faca747b143192c0f825e6bf3170a347";
+    sha256 = "1329846261cf6c552b05579f3cfad199b2d178510d0b4703eb5f7cdd6ebad01a";
   };
 
   propagatedBuildInputs = [ zope_interface ];
diff --git a/nixpkgs/pkgs/development/python-modules/zope_schema/default.nix b/nixpkgs/pkgs/development/python-modules/zope_schema/default.nix
index 00defd161509..9472000f15d1 100644
--- a/nixpkgs/pkgs/development/python-modules/zope_schema/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zope_schema/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "zope.schema";
-  version = "6.1.0";
+  version = "6.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9fa04d95e8e7e9056091eed9819da6e65dde68de39c2b93617d361d1eb8a7c0c";
+    sha256 = "2201aef8ad75ee5a881284d7a6acd384661d6dca7bde5e80a22839a77124595b";
   };
 
   propagatedBuildInputs = [ zope_location zope_event zope_interface zope_testing ];
diff --git a/nixpkgs/pkgs/development/python-modules/zope_testrunner/default.nix b/nixpkgs/pkgs/development/python-modules/zope_testrunner/default.nix
index c3bc0d0bff4d..2638d4314784 100644
--- a/nixpkgs/pkgs/development/python-modules/zope_testrunner/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zope_testrunner/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "zope.testrunner";
-  version = "5.3.0";
+  version = "5.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "39a5ba631830703ea011383447135063db6d182794487dda9b8c1f515bb70b0f";
+    sha256 = "4869229fc909e4aa8e76665a718f90dc88f73858b32ca5fa3dea6840e9210fb4";
   };
 
   propagatedBuildInputs = [ zope_interface zope_exceptions zope_testing six ];
diff --git a/nixpkgs/pkgs/development/python-modules/zopfli/default.nix b/nixpkgs/pkgs/development/python-modules/zopfli/default.nix
index 9d6757793511..d7e9cf507f03 100644
--- a/nixpkgs/pkgs/development/python-modules/zopfli/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zopfli/default.nix
@@ -1,15 +1,20 @@
-{ lib, buildPythonPackage, fetchPypi, pytest }:
+{ lib, buildPythonPackage, fetchPypi, setuptools-scm, zopfli, pytest }:
 
 buildPythonPackage rec {
   pname = "zopfli";
-  version = "0.1.8";
+  version = "0.1.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8b977dc07e3797907ab59e08096583bcd0b7e6c739849fbbeec09263f6356623";
+    sha256 = "78de3cc08a8efaa8013d61528907d91ac4d6cc014ffd8a41cc10ee75e9e60d7b";
     extension = "zip";
   };
 
+  nativeBuildInputs = [ setuptools-scm ];
+
+  buildInputs = [ zopfli ];
+  USE_SYSTEM_ZOPFLI = "True";
+
   # doesn't work with pytestCheckHook
   checkInputs = [ pytest ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/zstandard/default.nix b/nixpkgs/pkgs/development/python-modules/zstandard/default.nix
index 724a5d9d6794..5d2066f45f21 100755
--- a/nixpkgs/pkgs/development/python-modules/zstandard/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zstandard/default.nix
@@ -7,13 +7,15 @@
 
 buildPythonPackage rec {
   pname = "zstandard";
-  version = "0.15.2";
+  version = "0.16.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "52de08355fd5cfb3ef4533891092bb96229d43c2069703d4aff04fdbedf9c92f";
+    sha256 = "eaae2d3e8fdf8bfe269628385087e4b648beef85bb0c187644e7df4fb0fe9046";
   };
 
+  propagatedNativeBuildInputs = [ cffi ];
+
   propagatedBuildInputs = [ cffi ];
 
   checkInputs = [ hypothesis ];
diff --git a/nixpkgs/pkgs/development/python-modules/zulip/default.nix b/nixpkgs/pkgs/development/python-modules/zulip/default.nix
index 66033fcce311..55f2180ebf44 100644
--- a/nixpkgs/pkgs/development/python-modules/zulip/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zulip/default.nix
@@ -5,6 +5,7 @@
 , requests
 , matrix-client
 , distro
+, click
 , cryptography
 , pyopenssl
 , pytestCheckHook
@@ -12,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "zulip";
-  version = "0.8.0";
+  version = "0.8.1";
 
   disabled = !isPy3k;
 
@@ -21,14 +22,15 @@ buildPythonPackage rec {
     owner = "zulip";
     repo = "python-zulip-api";
     rev = version;
-    sha256 = "sha256-gJ+YRJC6wmQzPakApOqytyPy34cS/jjzEZhRIvWUBIQ=";
+    sha256 = "sha256-vYeZEz8nuZYL1stHLa595IbhyNbqqxH4mx7ISbqRAlA=";
   };
-  sourceRoot = "source/zulip";
+  sourceRoot = "${src.name}/zulip";
 
   propagatedBuildInputs = [
     requests
     matrix-client
     distro
+    click
 
     # from requests[security]
     cryptography
diff --git a/nixpkgs/pkgs/development/python-modules/zwave-js-server-python/default.nix b/nixpkgs/pkgs/development/python-modules/zwave-js-server-python/default.nix
index feed2f73ca17..5b18c09f15a8 100644
--- a/nixpkgs/pkgs/development/python-modules/zwave-js-server-python/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/zwave-js-server-python/default.nix
@@ -9,15 +9,16 @@
 
 buildPythonPackage rec {
   pname = "zwave-js-server-python";
-  version = "0.31.3";
-  disabled = pythonOlder "3.8";
+  version = "0.33.0";
+  format = "setuptools";
 
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "home-assistant-libs";
     repo = pname;
     rev = version;
-    sha256 = "sha256-mOcaxt8pc+d7qBoDtwCsDWoVs3Hw17v5WDKgzIW1WzY=";
+    sha256 = "sha256-0hAksizQSIOg+hbSq/OZqFqlBBdpa0bSf+puWfD9TSg=";
   };
 
   propagatedBuildInputs = [
@@ -29,7 +30,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "zwave_js_server" ];
+  pythonImportsCheck = [
+    "zwave_js_server"
+  ];
 
   meta = with lib; {
     description = "Python wrapper for zwave-js-server";