about summary refs log tree commit diff
path: root/pkgs/development/python-modules
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules')
-rw-r--r--pkgs/development/python-modules/APScheduler/default.nix54
-rw-r--r--pkgs/development/python-modules/GitPython/default.nix4
-rw-r--r--pkgs/development/python-modules/Markups/default.nix29
-rw-r--r--pkgs/development/python-modules/Pygments/2_5.nix37
-rw-r--r--pkgs/development/python-modules/Pygments/default.nix4
-rw-r--r--pkgs/development/python-modules/TurboCheetah/default.nix26
-rw-r--r--pkgs/development/python-modules/absl-py/default.nix4
-rw-r--r--pkgs/development/python-modules/adafruit-platformdetect/default.nix4
-rw-r--r--pkgs/development/python-modules/adal/default.nix42
-rw-r--r--pkgs/development/python-modules/adax-local/default.nix43
-rw-r--r--pkgs/development/python-modules/adb-shell/default.nix16
-rw-r--r--pkgs/development/python-modules/adguardhome/default.nix17
-rw-r--r--pkgs/development/python-modules/adjusttext/default.nix4
-rw-r--r--pkgs/development/python-modules/advantage-air/default.nix26
-rw-r--r--pkgs/development/python-modules/aenum/default.nix4
-rw-r--r--pkgs/development/python-modules/afdko/default.nix11
-rw-r--r--pkgs/development/python-modules/affinity/default.nix20
-rw-r--r--pkgs/development/python-modules/afsapi/default.nix15
-rw-r--r--pkgs/development/python-modules/ailment/default.nix11
-rw-r--r--pkgs/development/python-modules/aio-geojson-client/default.nix12
-rw-r--r--pkgs/development/python-modules/aio-geojson-geonetnz-quakes/default.nix12
-rw-r--r--pkgs/development/python-modules/aio-geojson-geonetnz-volcano/default.nix12
-rw-r--r--pkgs/development/python-modules/aio-geojson-nsw-rfs-incidents/default.nix12
-rw-r--r--pkgs/development/python-modules/aio-georss-client/default.nix10
-rw-r--r--pkgs/development/python-modules/aio-georss-gdacs/default.nix6
-rw-r--r--pkgs/development/python-modules/aioapns/default.nix4
-rw-r--r--pkgs/development/python-modules/aioaseko/default.nix39
-rw-r--r--pkgs/development/python-modules/aiobotocore/default.nix6
-rw-r--r--pkgs/development/python-modules/aioconsole/default.nix16
-rw-r--r--pkgs/development/python-modules/aiocurrencylayer/default.nix4
-rw-r--r--pkgs/development/python-modules/aiodiscover/default.nix12
-rw-r--r--pkgs/development/python-modules/aioesphomeapi/default.nix4
-rw-r--r--pkgs/development/python-modules/aioftp/default.nix2
-rw-r--r--pkgs/development/python-modules/aiogithubapi/default.nix23
-rw-r--r--pkgs/development/python-modules/aioharmony/default.nix4
-rw-r--r--pkgs/development/python-modules/aiohomekit/default.nix4
-rw-r--r--pkgs/development/python-modules/aiohttp-apispec/default.nix58
-rw-r--r--pkgs/development/python-modules/aiohttp-apispec/unstable.nix37
-rw-r--r--pkgs/development/python-modules/aiohttp-remotes/default.nix8
-rw-r--r--pkgs/development/python-modules/aiohttp-retry/default.nix43
-rw-r--r--pkgs/development/python-modules/aiohttp-socks/default.nix2
-rw-r--r--pkgs/development/python-modules/aiohue/default.nix8
-rw-r--r--pkgs/development/python-modules/aiohwenergy/default.nix4
-rw-r--r--pkgs/development/python-modules/aioitertools/default.nix40
-rw-r--r--pkgs/development/python-modules/aiolookin/default.nix4
-rw-r--r--pkgs/development/python-modules/aiomusiccast/default.nix6
-rw-r--r--pkgs/development/python-modules/aionanoleaf/default.nix4
-rw-r--r--pkgs/development/python-modules/aiooncue/default.nix44
-rw-r--r--pkgs/development/python-modules/aiopvpc/default.nix3
-rw-r--r--pkgs/development/python-modules/aiopyarr/default.nix45
-rw-r--r--pkgs/development/python-modules/aioredis/default.nix4
-rw-r--r--pkgs/development/python-modules/aioresponses/default.nix10
-rw-r--r--pkgs/development/python-modules/aioridwell/default.nix4
-rw-r--r--pkgs/development/python-modules/aiorun/default.nix11
-rw-r--r--pkgs/development/python-modules/aiosenseme/default.nix39
-rw-r--r--pkgs/development/python-modules/aioshelly/default.nix4
-rw-r--r--pkgs/development/python-modules/aiosignal/default.nix4
-rw-r--r--pkgs/development/python-modules/aiosmtpd/default.nix3
-rw-r--r--pkgs/development/python-modules/aiosteamist/default.nix51
-rw-r--r--pkgs/development/python-modules/aioswitcher/default.nix4
-rw-r--r--pkgs/development/python-modules/aiounifi/default.nix8
-rw-r--r--pkgs/development/python-modules/aiowebostv/default.nix39
-rw-r--r--pkgs/development/python-modules/aladdin-connect/default.nix4
-rw-r--r--pkgs/development/python-modules/algebraic-data-types/default.nix29
-rw-r--r--pkgs/development/python-modules/alot/default.nix71
-rw-r--r--pkgs/development/python-modules/altair/default.nix16
-rw-r--r--pkgs/development/python-modules/amaranth-boards/default.nix38
-rw-r--r--pkgs/development/python-modules/amaranth-soc/default.nix35
-rw-r--r--pkgs/development/python-modules/amaranth/default.nix (renamed from pkgs/development/python-modules/nmigen/default.nix)22
-rw-r--r--pkgs/development/python-modules/amcrest/default.nix4
-rw-r--r--pkgs/development/python-modules/amqp/default.nix36
-rw-r--r--pkgs/development/python-modules/amqtt/default.nix36
-rw-r--r--pkgs/development/python-modules/androidtv/default.nix29
-rw-r--r--pkgs/development/python-modules/angr/default.nix19
-rw-r--r--pkgs/development/python-modules/angrcli/default.nix2
-rw-r--r--pkgs/development/python-modules/angrop/default.nix11
-rw-r--r--pkgs/development/python-modules/annexremote/default.nix26
-rw-r--r--pkgs/development/python-modules/anonip/default.nix35
-rw-r--r--pkgs/development/python-modules/ansible-kernel/default.nix4
-rw-r--r--pkgs/development/python-modules/ansible-lint/default.nix4
-rw-r--r--pkgs/development/python-modules/ansible-runner/default.nix61
-rw-r--r--pkgs/development/python-modules/ansible/core.nix8
-rw-r--r--pkgs/development/python-modules/ansimarkup/default.nix31
-rw-r--r--pkgs/development/python-modules/antlr4-python2-runtime/default.nix21
-rw-r--r--pkgs/development/python-modules/anyjson/default.nix22
-rw-r--r--pkgs/development/python-modules/apache-airflow/default.nix68
-rw-r--r--pkgs/development/python-modules/apache-beam/default.nix154
-rw-r--r--pkgs/development/python-modules/apache-beam/fix-cython.patch41
-rw-r--r--pkgs/development/python-modules/apache-beam/relax-deps.patch20
-rw-r--r--pkgs/development/python-modules/apipkg/default.nix4
-rw-r--r--pkgs/development/python-modules/apispec/3.nix47
-rw-r--r--pkgs/development/python-modules/application/default.nix26
-rw-r--r--pkgs/development/python-modules/apprise/default.nix60
-rw-r--r--pkgs/development/python-modules/approvaltests/default.nix23
-rw-r--r--pkgs/development/python-modules/appthreat-vulnerability-db/default.nix68
-rw-r--r--pkgs/development/python-modules/apptools/default.nix38
-rw-r--r--pkgs/development/python-modules/apsw/default.nix4
-rw-r--r--pkgs/development/python-modules/apycula/default.nix4
-rw-r--r--pkgs/development/python-modules/archinfo/default.nix12
-rw-r--r--pkgs/development/python-modules/aresponses/default.nix18
-rw-r--r--pkgs/development/python-modules/argcomplete/default.nix4
-rw-r--r--pkgs/development/python-modules/argon2-cffi-bindings/default.nix35
-rw-r--r--pkgs/development/python-modules/argon2_cffi/default.nix11
-rw-r--r--pkgs/development/python-modules/arrow/2.nix40
-rw-r--r--pkgs/development/python-modules/arviz/default.nix35
-rw-r--r--pkgs/development/python-modules/asdf/default.nix4
-rw-r--r--pkgs/development/python-modules/ase/3.17.nix36
-rw-r--r--pkgs/development/python-modules/asgineer/default.nix32
-rw-r--r--pkgs/development/python-modules/aspell-python/default.nix44
-rw-r--r--pkgs/development/python-modules/asterisk-mbox/default.nix27
-rw-r--r--pkgs/development/python-modules/asteval/default.nix4
-rw-r--r--pkgs/development/python-modules/astroid/1.6.nix39
-rw-r--r--pkgs/development/python-modules/astroid/default.nix4
-rw-r--r--pkgs/development/python-modules/astropy-extension-helpers/default.nix13
-rw-r--r--pkgs/development/python-modules/astropy/default.nix64
-rw-r--r--pkgs/development/python-modules/astroquery/default.nix4
-rw-r--r--pkgs/development/python-modules/async-upnp-client/default.nix12
-rw-r--r--pkgs/development/python-modules/async_generator/default.nix10
-rw-r--r--pkgs/development/python-modules/async_timeout/default.nix4
-rw-r--r--pkgs/development/python-modules/asyncio-dgram/default.nix30
-rw-r--r--pkgs/development/python-modules/asyncio_mqtt/default.nix4
-rw-r--r--pkgs/development/python-modules/asyncpg/default.nix23
-rw-r--r--pkgs/development/python-modules/asyncssh/default.nix24
-rw-r--r--pkgs/development/python-modules/asyncstdlib/default.nix4
-rw-r--r--pkgs/development/python-modules/asyncwhois/default.nix22
-rw-r--r--pkgs/development/python-modules/asysocks/default.nix18
-rwxr-xr-xpkgs/development/python-modules/atlassian-python-api/default.nix22
-rw-r--r--pkgs/development/python-modules/atpublic/default.nix14
-rw-r--r--pkgs/development/python-modules/attrdict/default.nix43
-rw-r--r--pkgs/development/python-modules/attrs/default.nix14
-rw-r--r--pkgs/development/python-modules/aurorapy/default.nix43
-rw-r--r--pkgs/development/python-modules/autarco/default.nix59
-rw-r--r--pkgs/development/python-modules/autopage/default.nix4
-rw-r--r--pkgs/development/python-modules/awesomeversion/default.nix4
-rw-r--r--pkgs/development/python-modules/aws-lambda-builders/default.nix4
-rw-r--r--pkgs/development/python-modules/aws-sam-translator/default.nix17
-rw-r--r--pkgs/development/python-modules/aws-xray-sdk/default.nix4
-rw-r--r--pkgs/development/python-modules/awscrt/default.nix52
-rw-r--r--pkgs/development/python-modules/awsiotpythonsdk/default.nix15
-rw-r--r--pkgs/development/python-modules/azure-applicationinsights/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-batch/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-core/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-eventhub/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-apimanagement/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-applicationinsights/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-compute/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-consumption/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-datafactory/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-imagebuilder/default.nix18
-rw-r--r--pkgs/development/python-modules/azure-mgmt-iothub/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-netapp/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-notificationhubs/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-resource/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-subscription/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-web/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-servicebus/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-servicefabric/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-synapse-artifacts/default.nix4
-rw-r--r--pkgs/development/python-modules/backports-entry-points-selectable/default.nix4
-rw-r--r--pkgs/development/python-modules/backports_lzma/default.nix35
-rw-r--r--pkgs/development/python-modules/backports_os/default.nix35
-rw-r--r--pkgs/development/python-modules/bandit/default.nix4
-rw-r--r--pkgs/development/python-modules/base58check/default.nix36
-rw-r--r--pkgs/development/python-modules/basemap/default.nix6
-rw-r--r--pkgs/development/python-modules/batchgenerators/default.nix46
-rw-r--r--pkgs/development/python-modules/bbox/default.nix30
-rw-r--r--pkgs/development/python-modules/bc-python-hcl2/default.nix8
-rw-r--r--pkgs/development/python-modules/bcrypt/3_1.nix23
-rw-r--r--pkgs/development/python-modules/beancount/default.nix2
-rw-r--r--pkgs/development/python-modules/bibtexparser/default.nix44
-rw-r--r--pkgs/development/python-modules/billiard/default.nix13
-rw-r--r--pkgs/development/python-modules/bimmer-connected/default.nix4
-rw-r--r--pkgs/development/python-modules/bip_utils/default.nix4
-rw-r--r--pkgs/development/python-modules/bitarray/default.nix4
-rw-r--r--pkgs/development/python-modules/bitbucket-api/default.nix23
-rw-r--r--pkgs/development/python-modules/bitbucket-cli/default.nix24
-rw-r--r--pkgs/development/python-modules/bitcoin-utils-fork-minimal/default.nix45
-rw-r--r--pkgs/development/python-modules/bitcoinrpc/default.nix45
-rw-r--r--pkgs/development/python-modules/black/default.nix6
-rw-r--r--pkgs/development/python-modules/bleak/default.nix4
-rw-r--r--pkgs/development/python-modules/blis/default.nix4
-rw-r--r--pkgs/development/python-modules/blist/default.nix39
-rw-r--r--pkgs/development/python-modules/blivet/default.nix42
-rw-r--r--pkgs/development/python-modules/block-io/default.nix24
-rw-r--r--pkgs/development/python-modules/blocksat-cli/default.nix4
-rw-r--r--pkgs/development/python-modules/bme280spi/default.nix32
-rw-r--r--pkgs/development/python-modules/boltons/default.nix35
-rw-r--r--pkgs/development/python-modules/bond-api/default.nix4
-rw-r--r--pkgs/development/python-modules/boost-histogram/default.nix10
-rw-r--r--pkgs/development/python-modules/bootstrapped-pip/2.nix66
-rw-r--r--pkgs/development/python-modules/boschshcpy/default.nix4
-rw-r--r--pkgs/development/python-modules/boto3/1_17.nix50
-rw-r--r--pkgs/development/python-modules/boto3/default.nix4
-rw-r--r--pkgs/development/python-modules/botocore/1_20.nix48
-rw-r--r--pkgs/development/python-modules/botocore/default.nix4
-rw-r--r--pkgs/development/python-modules/box2d/default.nix36
-rw-r--r--pkgs/development/python-modules/boxx/default.nix57
-rw-r--r--pkgs/development/python-modules/bpycv/bpycv-test.py76
-rw-r--r--pkgs/development/python-modules/bpycv/default.nix62
-rw-r--r--pkgs/development/python-modules/braintree/default.nix43
-rw-r--r--pkgs/development/python-modules/breathe/default.nix44
-rw-r--r--pkgs/development/python-modules/brotli/default.nix4
-rw-r--r--pkgs/development/python-modules/browsermob-proxy/default.nix28
-rw-r--r--pkgs/development/python-modules/bsblan/default.nix12
-rw-r--r--pkgs/development/python-modules/build/default.nix2
-rw-r--r--pkgs/development/python-modules/cachelib/default.nix4
-rw-r--r--pkgs/development/python-modules/cachetools/default.nix6
-rw-r--r--pkgs/development/python-modules/cachey/default.nix30
-rw-r--r--pkgs/development/python-modules/cairocffi/0_9.nix26
-rw-r--r--pkgs/development/python-modules/cairocffi/default.nix67
-rw-r--r--pkgs/development/python-modules/cairocffi/dlopen-paths-0.9.patch47
-rw-r--r--pkgs/development/python-modules/cairocffi/generic.nix63
-rw-r--r--pkgs/development/python-modules/cairosvg/1_x.nix37
-rw-r--r--pkgs/development/python-modules/can/default.nix80
-rw-r--r--pkgs/development/python-modules/canmatrix/default.nix4
-rw-r--r--pkgs/development/python-modules/canopen/default.nix12
-rw-r--r--pkgs/development/python-modules/capstone/default.nix2
-rw-r--r--pkgs/development/python-modules/carrot/default.nix22
-rw-r--r--pkgs/development/python-modules/cart/default.nix2
-rw-r--r--pkgs/development/python-modules/cartopy/default.nix19
-rw-r--r--pkgs/development/python-modules/casa-formats-io/default.nix5
-rw-r--r--pkgs/development/python-modules/casbin/default.nix4
-rw-r--r--pkgs/development/python-modules/case/default.nix28
-rw-r--r--pkgs/development/python-modules/catalogue/default.nix18
-rw-r--r--pkgs/development/python-modules/cattrs/default.nix23
-rw-r--r--pkgs/development/python-modules/cchardet/default.nix20
-rw-r--r--pkgs/development/python-modules/cdcs/default.nix4
-rw-r--r--pkgs/development/python-modules/cddb/default.nix25
-rw-r--r--pkgs/development/python-modules/cdecimal/default.nix23
-rw-r--r--pkgs/development/python-modules/celery/default.nix13
-rw-r--r--pkgs/development/python-modules/censys/default.nix7
-rw-r--r--pkgs/development/python-modules/cepa/default.nix32
-rw-r--r--pkgs/development/python-modules/certifi/python2.nix34
-rw-r--r--pkgs/development/python-modules/cffsubr/default.nix40
-rw-r--r--pkgs/development/python-modules/cfn-flip/default.nix48
-rw-r--r--pkgs/development/python-modules/cfn-lint/default.nix15
-rw-r--r--pkgs/development/python-modules/cftime/default.nix42
-rw-r--r--pkgs/development/python-modules/chainer/default.nix4
-rw-r--r--pkgs/development/python-modules/chalice/default.nix7
-rw-r--r--pkgs/development/python-modules/chardet/2.nix29
-rw-r--r--pkgs/development/python-modules/charset-normalizer/default.nix12
-rw-r--r--pkgs/development/python-modules/chart-studio/default.nix4
-rw-r--r--pkgs/development/python-modules/cheetah/default.nix33
-rw-r--r--pkgs/development/python-modules/cheroot/default.nix30
-rw-r--r--pkgs/development/python-modules/cherrypy/17.nix36
-rw-r--r--pkgs/development/python-modules/cherrypy/default.nix106
-rw-r--r--pkgs/development/python-modules/chex/default.nix50
-rw-r--r--pkgs/development/python-modules/chiabip158/default.nix4
-rw-r--r--pkgs/development/python-modules/chiapos/default.nix6
-rw-r--r--pkgs/development/python-modules/chiapos/dont_fetch_dependencies.patch12
-rw-r--r--pkgs/development/python-modules/chiavdf/default.nix4
-rw-r--r--pkgs/development/python-modules/chirpstack-api/default.nix25
-rw-r--r--pkgs/development/python-modules/chispa/default.nix27
-rw-r--r--pkgs/development/python-modules/circuit-webhook/default.nix32
-rw-r--r--pkgs/development/python-modules/cirq-google/default.nix7
-rw-r--r--pkgs/development/python-modules/cirq-rigetti/default.nix12
-rw-r--r--pkgs/development/python-modules/cjson/default.nix18
-rw-r--r--pkgs/development/python-modules/ckcc-protocol/default.nix4
-rw-r--r--pkgs/development/python-modules/claripy/default.nix21
-rw-r--r--pkgs/development/python-modules/cle/default.nix6
-rw-r--r--pkgs/development/python-modules/cli-helpers/default.nix4
-rw-r--r--pkgs/development/python-modules/cliapp/default.nix31
-rw-r--r--pkgs/development/python-modules/click-completion/default.nix28
-rw-r--r--pkgs/development/python-modules/click-configfile/default.nix15
-rw-r--r--pkgs/development/python-modules/click/7.nix28
-rw-r--r--pkgs/development/python-modules/clickhouse-cli/default.nix4
-rw-r--r--pkgs/development/python-modules/cliff/default.nix18
-rw-r--r--pkgs/development/python-modules/clint/default.nix10
-rw-r--r--pkgs/development/python-modules/clize/default.nix5
-rw-r--r--pkgs/development/python-modules/closure-linter/default.nix33
-rw-r--r--pkgs/development/python-modules/cloudflare/default.nix2
-rw-r--r--pkgs/development/python-modules/cloudpickle/default.nix4
-rw-r--r--pkgs/development/python-modules/cloudsplaining/default.nix5
-rw-r--r--pkgs/development/python-modules/cmarkgfm/default.nix24
-rw-r--r--pkgs/development/python-modules/cmd2/default.nix4
-rw-r--r--pkgs/development/python-modules/cmdtest/default.nix32
-rw-r--r--pkgs/development/python-modules/co2signal/default.nix29
-rw-r--r--pkgs/development/python-modules/cocotb-bus/default.nix4
-rw-r--r--pkgs/development/python-modules/cocotb/default.nix9
-rw-r--r--pkgs/development/python-modules/cogapp/default.nix2
-rw-r--r--pkgs/development/python-modules/coilmq/default.nix25
-rw-r--r--pkgs/development/python-modules/commentjson/default.nix6
-rw-r--r--pkgs/development/python-modules/commoncode/default.nix8
-rw-r--r--pkgs/development/python-modules/compreffor/default.nix45
-rw-r--r--pkgs/development/python-modules/concurrent-log-handler/default.nix6
-rw-r--r--pkgs/development/python-modules/configargparse/default.nix6
-rw-r--r--pkgs/development/python-modules/configparser/4.nix26
-rw-r--r--pkgs/development/python-modules/configparser/default.nix4
-rw-r--r--pkgs/development/python-modules/configshell/default.nix29
-rw-r--r--pkgs/development/python-modules/confluent-kafka/default.nix4
-rw-r--r--pkgs/development/python-modules/confuse/default.nix23
-rw-r--r--pkgs/development/python-modules/connexion/default.nix27
-rw-r--r--pkgs/development/python-modules/consonance/default.nix46
-rw-r--r--pkgs/development/python-modules/construct/2.10.54.nix40
-rw-r--r--pkgs/development/python-modules/construct/default.nix6
-rw-r--r--pkgs/development/python-modules/contextlib2/0.nix23
-rw-r--r--pkgs/development/python-modules/contextlib2/default.nix23
-rw-r--r--pkgs/development/python-modules/convertdate/2.2.x.nix36
-rw-r--r--pkgs/development/python-modules/cornice/default.nix4
-rw-r--r--pkgs/development/python-modules/cot/default.nix61
-rw-r--r--pkgs/development/python-modules/coverage/default.nix9
-rw-r--r--pkgs/development/python-modules/cozy/default.nix62
-rw-r--r--pkgs/development/python-modules/croniter/default.nix15
-rw-r--r--pkgs/development/python-modules/crownstone-uart/default.nix4
-rw-r--r--pkgs/development/python-modules/cryptography/3.3.nix81
-rw-r--r--pkgs/development/python-modules/cryptography/default.nix6
-rw-r--r--pkgs/development/python-modules/cryptography/vectors-3.3.nix23
-rw-r--r--pkgs/development/python-modules/cryptography/vectors.nix2
-rw-r--r--pkgs/development/python-modules/css-parser/default.nix14
-rw-r--r--pkgs/development/python-modules/cssutils/default.nix10
-rw-r--r--pkgs/development/python-modules/csvw/default.nix23
-rw-r--r--pkgs/development/python-modules/cupy/default.nix4
-rw-r--r--pkgs/development/python-modules/cwcwidth/default.nix4
-rw-r--r--pkgs/development/python-modules/cx_freeze/default.nix6
-rw-r--r--pkgs/development/python-modules/cyclonedx-python-lib/default.nix16
-rw-r--r--pkgs/development/python-modules/dacite/default.nix12
-rw-r--r--pkgs/development/python-modules/darcsver/default.nix29
-rw-r--r--pkgs/development/python-modules/dash/default.nix8
-rw-r--r--pkgs/development/python-modules/dask-ml/default.nix4
-rw-r--r--pkgs/development/python-modules/dask/default.nix17
-rw-r--r--pkgs/development/python-modules/databases/default.nix5
-rw-r--r--pkgs/development/python-modules/databricks-cli/default.nix4
-rw-r--r--pkgs/development/python-modules/databricks-connect/default.nix16
-rw-r--r--pkgs/development/python-modules/datadog/default.nix4
-rw-r--r--pkgs/development/python-modules/datafusion/Cargo.lock.patch78
-rw-r--r--pkgs/development/python-modules/datafusion/default.nix90
-rw-r--r--pkgs/development/python-modules/dataset/default.nix35
-rw-r--r--pkgs/development/python-modules/datasets/default.nix4
-rw-r--r--pkgs/development/python-modules/datasette/default.nix9
-rw-r--r--pkgs/development/python-modules/datashader/default.nix28
-rw-r--r--pkgs/development/python-modules/dateparser/0.x.nix55
-rw-r--r--pkgs/development/python-modules/dbus/default.nix4
-rw-r--r--pkgs/development/python-modules/dbutils/default.nix16
-rw-r--r--pkgs/development/python-modules/deap/default.nix10
-rw-r--r--pkgs/development/python-modules/debian/default.nix14
-rw-r--r--pkgs/development/python-modules/debtcollector/default.nix4
-rw-r--r--pkgs/development/python-modules/debugpy/default.nix23
-rw-r--r--pkgs/development/python-modules/decli/default.nix23
-rw-r--r--pkgs/development/python-modules/decopatch/default.nix25
-rw-r--r--pkgs/development/python-modules/decorator/4.nix21
-rw-r--r--pkgs/development/python-modules/decorator/default.nix4
-rw-r--r--pkgs/development/python-modules/deemix/default.nix14
-rw-r--r--pkgs/development/python-modules/deep-translator/default.nix4
-rw-r--r--pkgs/development/python-modules/deezer-py/default.nix4
-rw-r--r--pkgs/development/python-modules/deezer-python/default.nix4
-rw-r--r--pkgs/development/python-modules/demjson/default.nix25
-rw-r--r--pkgs/development/python-modules/dendropy/default.nix12
-rw-r--r--pkgs/development/python-modules/denonavr/default.nix10
-rw-r--r--pkgs/development/python-modules/deprecation/default.nix24
-rw-r--r--pkgs/development/python-modules/deskcon/default.nix43
-rw-r--r--pkgs/development/python-modules/devolo-home-control-api/default.nix14
-rw-r--r--pkgs/development/python-modules/devolo-plc-api/default.nix8
-rw-r--r--pkgs/development/python-modules/devtools/default.nix2
-rw-r--r--pkgs/development/python-modules/diagrams/default.nix4
-rw-r--r--pkgs/development/python-modules/diceware/default.nix4
-rw-r--r--pkgs/development/python-modules/dict2xml/default.nix19
-rw-r--r--pkgs/development/python-modules/dictdiffer/default.nix50
-rw-r--r--pkgs/development/python-modules/diff-cover/default.nix22
-rw-r--r--pkgs/development/python-modules/diofant/default.nix5
-rw-r--r--pkgs/development/python-modules/discogs-client/default.nix11
-rw-r--r--pkgs/development/python-modules/discovery30303/default.nix49
-rw-r--r--pkgs/development/python-modules/diskcache/default.nix44
-rw-r--r--pkgs/development/python-modules/distlib/default.nix4
-rw-r--r--pkgs/development/python-modules/distributed/default.nix4
-rw-r--r--pkgs/development/python-modules/dj-email-url/default.nix4
-rw-r--r--pkgs/development/python-modules/django-allauth/default.nix4
-rw-r--r--pkgs/development/python-modules/django-anymail/default.nix4
-rw-r--r--pkgs/development/python-modules/django-auth-ldap/default.nix42
-rw-r--r--pkgs/development/python-modules/django-cleanup/default.nix4
-rw-r--r--pkgs/development/python-modules/django-debug-toolbar/default.nix4
-rw-r--r--pkgs/development/python-modules/django-extensions/default.nix47
-rw-r--r--pkgs/development/python-modules/django-maintenance-mode/default.nix4
-rw-r--r--pkgs/development/python-modules/django-oauth-toolkit/default.nix50
-rw-r--r--pkgs/development/python-modules/django-redis/default.nix9
-rw-r--r--pkgs/development/python-modules/django-taggit/default.nix4
-rw-r--r--pkgs/development/python-modules/django-timezone-field/default.nix4
-rw-r--r--pkgs/development/python-modules/django-widget-tweaks/default.nix4
-rw-r--r--pkgs/development/python-modules/django/2.nix4
-rw-r--r--pkgs/development/python-modules/django/3.nix4
-rw-r--r--pkgs/development/python-modules/django/4.nix107
-rw-r--r--pkgs/development/python-modules/django/django_4_set_geos_gdal_lib.patch26
-rw-r--r--pkgs/development/python-modules/django_classytags/default.nix4
-rw-r--r--pkgs/development/python-modules/django_evolution/default.nix27
-rw-r--r--pkgs/development/python-modules/django_guardian/default.nix4
-rw-r--r--pkgs/development/python-modules/django_reversion/default.nix4
-rw-r--r--pkgs/development/python-modules/djangoql/default.nix4
-rw-r--r--pkgs/development/python-modules/dm-haiku/default.nix61
-rw-r--r--pkgs/development/python-modules/dm-sonnet/default.nix1
-rw-r--r--pkgs/development/python-modules/dm-tree/cmake.patch141
-rw-r--r--pkgs/development/python-modules/dm-tree/default.nix71
-rw-r--r--pkgs/development/python-modules/dnslib/default.nix4
-rw-r--r--pkgs/development/python-modules/dnspython/1.nix25
-rw-r--r--pkgs/development/python-modules/dnspython/default.nix26
-rw-r--r--pkgs/development/python-modules/doc8/default.nix5
-rw-r--r--pkgs/development/python-modules/docstring-parser/default.nix27
-rw-r--r--pkgs/development/python-modules/dogpile-cache/default.nix4
-rw-r--r--pkgs/development/python-modules/doit/default.nix4
-rw-r--r--pkgs/development/python-modules/downloader-cli/default.nix4
-rw-r--r--pkgs/development/python-modules/dpath/default.nix4
-rw-r--r--pkgs/development/python-modules/dragonfly/default.nix6
-rw-r--r--pkgs/development/python-modules/drf-jwt/default.nix4
-rw-r--r--pkgs/development/python-modules/drms/default.nix5
-rw-r--r--pkgs/development/python-modules/dropbox/default.nix37
-rw-r--r--pkgs/development/python-modules/dsmr-parser/default.nix4
-rw-r--r--pkgs/development/python-modules/dtopt/default.nix24
-rw-r--r--pkgs/development/python-modules/duckdb/default.nix21
-rw-r--r--pkgs/development/python-modules/dufte/default.nix13
-rw-r--r--pkgs/development/python-modules/dulwich/0_19.nix30
-rw-r--r--pkgs/development/python-modules/dulwich/default.nix12
-rw-r--r--pkgs/development/python-modules/dwdwfsapi/default.nix4
-rw-r--r--pkgs/development/python-modules/dynalite-devices/default.nix38
-rw-r--r--pkgs/development/python-modules/easy-thumbnails/default.nix4
-rw-r--r--pkgs/development/python-modules/eebrightbox/default.nix58
-rw-r--r--pkgs/development/python-modules/einops/default.nix5
-rw-r--r--pkgs/development/python-modules/eiswarnung/default.nix58
-rw-r--r--pkgs/development/python-modules/elasticsearch/default.nix4
-rw-r--r--pkgs/development/python-modules/elegy/default.nix78
-rw-r--r--pkgs/development/python-modules/elgato/default.nix6
-rw-r--r--pkgs/development/python-modules/emoji/default.nix4
-rw-r--r--pkgs/development/python-modules/empty-files/default.nix33
-rw-r--r--pkgs/development/python-modules/emv/default.nix4
-rw-r--r--pkgs/development/python-modules/enaml/default.nix4
-rw-r--r--pkgs/development/python-modules/enamlx/default.nix4
-rw-r--r--pkgs/development/python-modules/enlighten/default.nix4
-rw-r--r--pkgs/development/python-modules/enrich/default.nix4
-rw-r--r--pkgs/development/python-modules/entrypoint2/default.nix22
-rw-r--r--pkgs/development/python-modules/enturclient/default.nix4
-rw-r--r--pkgs/development/python-modules/enum/default.nix26
-rw-r--r--pkgs/development/python-modules/env-canada/default.nix4
-rw-r--r--pkgs/development/python-modules/environs/default.nix4
-rw-r--r--pkgs/development/python-modules/envisage/default.nix34
-rw-r--r--pkgs/development/python-modules/envoy-reader/default.nix25
-rw-r--r--pkgs/development/python-modules/ephem/default.nix4
-rw-r--r--pkgs/development/python-modules/eth-typing/default.nix4
-rw-r--r--pkgs/development/python-modules/eth-utils/default.nix4
-rw-r--r--pkgs/development/python-modules/ev3dev2/default.nix2
-rw-r--r--pkgs/development/python-modules/eventlet/default.nix72
-rw-r--r--pkgs/development/python-modules/eventlib/default.nix30
-rw-r--r--pkgs/development/python-modules/exchangelib/default.nix9
-rw-r--r--pkgs/development/python-modules/faker/default.nix4
-rw-r--r--pkgs/development/python-modules/fakeredis/default.nix28
-rw-r--r--pkgs/development/python-modules/faraday-plugins/default.nix4
-rw-r--r--pkgs/development/python-modules/fastapi/default.nix38
-rw-r--r--pkgs/development/python-modules/fastavro/default.nix4
-rw-r--r--pkgs/development/python-modules/fastjsonschema/default.nix31
-rw-r--r--pkgs/development/python-modules/fastnumbers/default.nix5
-rw-r--r--pkgs/development/python-modules/faulthandler/default.nix27
-rw-r--r--pkgs/development/python-modules/fdint/default.nix36
-rw-r--r--pkgs/development/python-modules/feedgenerator/default.nix8
-rw-r--r--pkgs/development/python-modules/feedparser/5.nix24
-rw-r--r--pkgs/development/python-modules/feedparser/default.nix16
-rw-r--r--pkgs/development/python-modules/file-read-backwards/default.nix22
-rw-r--r--pkgs/development/python-modules/filebrowser_safe/default.nix24
-rw-r--r--pkgs/development/python-modules/filelock/3.2.nix22
-rw-r--r--pkgs/development/python-modules/filelock/default.nix4
-rw-r--r--pkgs/development/python-modules/filetype/default.nix4
-rw-r--r--pkgs/development/python-modules/findimports/default.nix38
-rw-r--r--pkgs/development/python-modules/fiona/default.nix4
-rw-r--r--pkgs/development/python-modules/fixtures/default.nix2
-rw-r--r--pkgs/development/python-modules/flake8-bugbear/default.nix44
-rw-r--r--pkgs/development/python-modules/flake8-docstrings/default.nix27
-rw-r--r--pkgs/development/python-modules/flake8-length/default.nix4
-rw-r--r--pkgs/development/python-modules/flashtext/default.nix2
-rw-r--r--pkgs/development/python-modules/flask-admin/default.nix5
-rw-r--r--pkgs/development/python-modules/flask-appbuilder/default.nix33
-rw-r--r--pkgs/development/python-modules/flask-gravatar/default.nix47
-rw-r--r--pkgs/development/python-modules/flask-ldap-login/default.nix37
-rw-r--r--pkgs/development/python-modules/flask-login/default.nix44
-rw-r--r--pkgs/development/python-modules/flask-paginate/default.nix4
-rw-r--r--pkgs/development/python-modules/flask-paranoid/default.nix40
-rw-r--r--pkgs/development/python-modules/flask-security-too/default.nix76
-rw-r--r--pkgs/development/python-modules/flask/1.nix28
-rw-r--r--pkgs/development/python-modules/flask/default.nix5
-rw-r--r--pkgs/development/python-modules/flatten-dict/default.nix46
-rw-r--r--pkgs/development/python-modules/flax/default.nix63
-rw-r--r--pkgs/development/python-modules/flexmock/default.nix32
-rw-r--r--pkgs/development/python-modules/flit-core/default.nix7
-rw-r--r--pkgs/development/python-modules/flit/default.nix14
-rw-r--r--pkgs/development/python-modules/flowlogs_reader/default.nix50
-rw-r--r--pkgs/development/python-modules/flufl/i18n.nix11
-rw-r--r--pkgs/development/python-modules/flufl/lock.nix7
-rw-r--r--pkgs/development/python-modules/flup/default.nix23
-rw-r--r--pkgs/development/python-modules/flux-led/default.nix4
-rw-r--r--pkgs/development/python-modules/folium/default.nix57
-rw-r--r--pkgs/development/python-modules/fontmath/default.nix4
-rw-r--r--pkgs/development/python-modules/fontparts/default.nix4
-rw-r--r--pkgs/development/python-modules/fonttools/default.nix4
-rw-r--r--pkgs/development/python-modules/forecast-solar/default.nix2
-rw-r--r--pkgs/development/python-modules/formbox/default.nix6
-rw-r--r--pkgs/development/python-modules/fountains/default.nix2
-rw-r--r--pkgs/development/python-modules/fpylll/default.nix19
-rw-r--r--pkgs/development/python-modules/freezegun/0.3.nix29
-rw-r--r--pkgs/development/python-modules/fritzconnection/default.nix4
-rw-r--r--pkgs/development/python-modules/frozendict/default.nix29
-rw-r--r--pkgs/development/python-modules/ftputil/default.nix45
-rw-r--r--pkgs/development/python-modules/fudge/default.nix31
-rw-r--r--pkgs/development/python-modules/funcsigs/default.nix9
-rw-r--r--pkgs/development/python-modules/furo/default.nix21
-rw-r--r--pkgs/development/python-modules/futures/default.nix27
-rw-r--r--pkgs/development/python-modules/gamble/default.nix32
-rw-r--r--pkgs/development/python-modules/gaphas/default.nix4
-rw-r--r--pkgs/development/python-modules/garages-amsterdam/default.nix19
-rw-r--r--pkgs/development/python-modules/garminconnect-aio/default.nix10
-rw-r--r--pkgs/development/python-modules/garminconnect/default.nix (renamed from pkgs/development/python-modules/garminconnect-ha/default.nix)22
-rw-r--r--pkgs/development/python-modules/gast/default.nix26
-rw-r--r--pkgs/development/python-modules/gateone/default.nix35
-rw-r--r--pkgs/development/python-modules/gcsfs/default.nix6
-rw-r--r--pkgs/development/python-modules/gdown/default.nix4
-rw-r--r--pkgs/development/python-modules/gdrivefs/default.nix50
-rw-r--r--pkgs/development/python-modules/gdtoolkit/default.nix46
-rw-r--r--pkgs/development/python-modules/gehomesdk/default.nix4
-rw-r--r--pkgs/development/python-modules/genanki/default.nix4
-rw-r--r--pkgs/development/python-modules/geniushub-client/default.nix31
-rw-r--r--pkgs/development/python-modules/geoalchemy2/default.nix4
-rw-r--r--pkgs/development/python-modules/geometric/default.nix33
-rw-r--r--pkgs/development/python-modules/geopy/2.nix28
-rw-r--r--pkgs/development/python-modules/georss-client/default.nix10
-rw-r--r--pkgs/development/python-modules/georss-ign-sismologia-client/default.nix10
-rw-r--r--pkgs/development/python-modules/georss-ingv-centro-nazionale-terremoti-client/default.nix10
-rw-r--r--pkgs/development/python-modules/georss-nrcan-earthquakes-client/default.nix10
-rw-r--r--pkgs/development/python-modules/georss-qld-bushfire-alert-client/default.nix8
-rw-r--r--pkgs/development/python-modules/georss-tfs-incidents-client/default.nix8
-rw-r--r--pkgs/development/python-modules/georss-wa-dfes-client/default.nix8
-rw-r--r--pkgs/development/python-modules/getmac/default.nix9
-rw-r--r--pkgs/development/python-modules/gevent-socketio/default.nix35
-rw-r--r--pkgs/development/python-modules/gevent-websocket/default.nix20
-rw-r--r--pkgs/development/python-modules/gevent/default.nix37
-rw-r--r--pkgs/development/python-modules/geventhttpclient/default.nix23
-rw-r--r--pkgs/development/python-modules/gigalixir/default.nix43
-rw-r--r--pkgs/development/python-modules/gipc/default.nix4
-rw-r--r--pkgs/development/python-modules/git-revise/default.nix9
-rw-r--r--pkgs/development/python-modules/glances-api/default.nix9
-rw-r--r--pkgs/development/python-modules/glasgow/default.nix14
-rw-r--r--pkgs/development/python-modules/glcontext/default.nix4
-rw-r--r--pkgs/development/python-modules/glean-parser/default.nix4
-rw-r--r--pkgs/development/python-modules/glean-sdk/default.nix12
-rw-r--r--pkgs/development/python-modules/glean-sdk/fix-spawned-process-environment.patch20
-rw-r--r--pkgs/development/python-modules/globus-sdk/default.nix30
-rw-r--r--pkgs/development/python-modules/glom/default.nix37
-rw-r--r--pkgs/development/python-modules/gmpy2/default.nix6
-rw-r--r--pkgs/development/python-modules/gnutls/default.nix31
-rw-r--r--pkgs/development/python-modules/goodwe/default.nix4
-rw-r--r--pkgs/development/python-modules/google-api-core/default.nix4
-rw-r--r--pkgs/development/python-modules/google-api-python-client/default.nix4
-rw-r--r--pkgs/development/python-modules/google-apputils/default.nix41
-rw-r--r--pkgs/development/python-modules/google-auth/default.nix9
-rw-r--r--pkgs/development/python-modules/google-cloud-automl/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-bigquery/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-bigtable/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-container/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-core/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-datacatalog/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-dataproc/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-dlp/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-error-reporting/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-kms/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-language/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-logging/default.nix6
-rw-r--r--pkgs/development/python-modules/google-cloud-redis/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-securitycenter/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-spanner/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-speech/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-storage/default.nix5
-rw-r--r--pkgs/development/python-modules/google-cloud-tasks/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-testutils/default.nix4
-rw-r--r--pkgs/development/python-modules/google-cloud-texttospeech/default.nix4
-rw-r--r--pkgs/development/python-modules/google-nest-sdm/default.nix21
-rw-r--r--pkgs/development/python-modules/google-re2/default.nix4
-rw-r--r--pkgs/development/python-modules/google-resumable-media/default.nix4
-rw-r--r--pkgs/development/python-modules/googleapis-common-protos/default.nix4
-rw-r--r--pkgs/development/python-modules/googlemaps/default.nix4
-rw-r--r--pkgs/development/python-modules/gphoto2/default.nix4
-rw-r--r--pkgs/development/python-modules/gpxpy/default.nix8
-rw-r--r--pkgs/development/python-modules/gql/default.nix77
-rw-r--r--pkgs/development/python-modules/gradient-utils/default.nix30
-rw-r--r--pkgs/development/python-modules/gradient/default.nix19
-rw-r--r--pkgs/development/python-modules/grandalf/default.nix32
-rw-r--r--pkgs/development/python-modules/graph-tool/default.nix (renamed from pkgs/development/python-modules/graph-tool/2.x.x.nix)0
-rw-r--r--pkgs/development/python-modules/grapheme/default.nix33
-rw-r--r--pkgs/development/python-modules/graphene/default.nix20
-rw-r--r--pkgs/development/python-modules/graphql-core/default.nix4
-rw-r--r--pkgs/development/python-modules/grappelli_safe/default.nix4
-rw-r--r--pkgs/development/python-modules/greeclimate/default.nix4
-rw-r--r--pkgs/development/python-modules/green/default.nix4
-rw-r--r--pkgs/development/python-modules/groestlcoin_hash/default.nix26
-rw-r--r--pkgs/development/python-modules/growattserver/default.nix4
-rw-r--r--pkgs/development/python-modules/gruut/default.nix9
-rw-r--r--pkgs/development/python-modules/gsd/1.7.nix27
-rw-r--r--pkgs/development/python-modules/gssapi/default.nix2
-rw-r--r--pkgs/development/python-modules/gst-python/default.nix4
-rw-r--r--pkgs/development/python-modules/gunicorn/19.nix39
-rw-r--r--pkgs/development/python-modules/gvm-tools/default.nix3
-rw-r--r--pkgs/development/python-modules/gym/default.nix6
-rw-r--r--pkgs/development/python-modules/h2/default.nix18
-rw-r--r--pkgs/development/python-modules/h5py/default.nix3
-rw-r--r--pkgs/development/python-modules/ha-av/default.nix4
-rw-r--r--pkgs/development/python-modules/habanero/default.nix16
-rw-r--r--pkgs/development/python-modules/hahomematic/default.nix19
-rw-r--r--pkgs/development/python-modules/halohome/default.nix5
-rw-r--r--pkgs/development/python-modules/hangups/default.nix7
-rw-r--r--pkgs/development/python-modules/hap-python/default.nix4
-rw-r--r--pkgs/development/python-modules/hass-nabucasa/default.nix4
-rw-r--r--pkgs/development/python-modules/hdlparse/default.nix22
-rw-r--r--pkgs/development/python-modules/heatzypy/default.nix6
-rw-r--r--pkgs/development/python-modules/hg-git/0.8.nix36
-rw-r--r--pkgs/development/python-modules/hgsvn/default.nix32
-rw-r--r--pkgs/development/python-modules/hijri-converter/default.nix16
-rw-r--r--pkgs/development/python-modules/hiredis/default.nix11
-rw-r--r--pkgs/development/python-modules/holidays/default.nix4
-rw-r--r--pkgs/development/python-modules/holoviews/default.nix4
-rw-r--r--pkgs/development/python-modules/homematicip/default.nix25
-rw-r--r--pkgs/development/python-modules/hsaudiotag/default.nix26
-rw-r--r--pkgs/development/python-modules/html-sanitizer/default.nix16
-rw-r--r--pkgs/development/python-modules/html2text/2018.nix21
-rw-r--r--pkgs/development/python-modules/html5lib/default.nix16
-rw-r--r--pkgs/development/python-modules/http_signature/default.nix26
-rw-r--r--pkgs/development/python-modules/httpagentparser/default.nix26
-rw-r--r--pkgs/development/python-modules/httpbin/default.nix48
-rw-r--r--pkgs/development/python-modules/httpcore/default.nix4
-rw-r--r--pkgs/development/python-modules/httplib2/default.nix6
-rw-r--r--pkgs/development/python-modules/httpretty/0.nix52
-rw-r--r--pkgs/development/python-modules/httpx-ntlm/default.nix16
-rw-r--r--pkgs/development/python-modules/httpx-socks/default.nix10
-rw-r--r--pkgs/development/python-modules/httpx/default.nix25
-rw-r--r--pkgs/development/python-modules/huey/default.nix4
-rw-r--r--pkgs/development/python-modules/humanfriendly/default.nix4
-rw-r--r--pkgs/development/python-modules/hwi/default.nix18
-rw-r--r--pkgs/development/python-modules/hydra/default.nix43
-rw-r--r--pkgs/development/python-modules/hypercorn/default.nix10
-rw-r--r--pkgs/development/python-modules/hyperion-py/default.nix5
-rw-r--r--pkgs/development/python-modules/hypothesis/2.nix45
-rw-r--r--pkgs/development/python-modules/hypothesis/default.nix28
-rw-r--r--pkgs/development/python-modules/hypothesmith/default.nix4
-rw-r--r--pkgs/development/python-modules/i-pi/default.nix2
-rw-r--r--pkgs/development/python-modules/i2csense/default.nix35
-rw-r--r--pkgs/development/python-modules/ibis-framework/default.nix141
-rw-r--r--pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix4
-rw-r--r--pkgs/development/python-modules/ibm-watson/default.nix26
-rw-r--r--pkgs/development/python-modules/icecream/default.nix4
-rw-r--r--pkgs/development/python-modules/icmplib/default.nix4
-rw-r--r--pkgs/development/python-modules/ics/default.nix2
-rw-r--r--pkgs/development/python-modules/idasen/default.nix4
-rw-r--r--pkgs/development/python-modules/identify/default.nix4
-rw-r--r--pkgs/development/python-modules/idna/2.nix23
-rw-r--r--pkgs/development/python-modules/ignite/default.nix4
-rw-r--r--pkgs/development/python-modules/igraph/default.nix4
-rw-r--r--pkgs/development/python-modules/ihatemoney/default.nix72
-rw-r--r--pkgs/development/python-modules/ilua/default.nix40
-rw-r--r--pkgs/development/python-modules/imageio-ffmpeg/default.nix6
-rw-r--r--pkgs/development/python-modules/imageio/default.nix5
-rw-r--r--pkgs/development/python-modules/imbalanced-learn/0.4.nix29
-rw-r--r--pkgs/development/python-modules/imbalanced-learn/default.nix4
-rw-r--r--pkgs/development/python-modules/img2pdf/default.nix57
-rw-r--r--pkgs/development/python-modules/iminuit/default.nix4
-rw-r--r--pkgs/development/python-modules/importlab/default.nix33
-rw-r--r--pkgs/development/python-modules/importlib-metadata/2.nix37
-rw-r--r--pkgs/development/python-modules/importlib-metadata/default.nix6
-rw-r--r--pkgs/development/python-modules/importlib-resources/2.nix38
-rw-r--r--pkgs/development/python-modules/importlib-resources/default.nix5
-rw-r--r--pkgs/development/python-modules/inflect/default.nix4
-rw-r--r--pkgs/development/python-modules/influxdb-client/default.nix4
-rw-r--r--pkgs/development/python-modules/influxdb/default.nix20
-rw-r--r--pkgs/development/python-modules/inquirer/default.nix50
-rw-r--r--pkgs/development/python-modules/installer/default.nix35
-rw-r--r--pkgs/development/python-modules/intellifire4py/default.nix50
-rw-r--r--pkgs/development/python-modules/intensity-normalization/default.nix33
-rw-r--r--pkgs/development/python-modules/internetarchive/default.nix4
-rw-r--r--pkgs/development/python-modules/ipaddr/default.nix23
-rw-r--r--pkgs/development/python-modules/ipwhl/default.nix28
-rw-r--r--pkgs/development/python-modules/ipykernel/4.nix41
-rw-r--r--pkgs/development/python-modules/ipykernel/default.nix4
-rw-r--r--pkgs/development/python-modules/ipympl/default.nix4
-rw-r--r--pkgs/development/python-modules/ipyparallel/default.nix4
-rw-r--r--pkgs/development/python-modules/ipython/5.nix72
-rw-r--r--pkgs/development/python-modules/ipython/7.16.nix69
-rw-r--r--pkgs/development/python-modules/ipython/default.nix70
-rw-r--r--pkgs/development/python-modules/ipyvuetify/default.nix4
-rw-r--r--pkgs/development/python-modules/irc/default.nix4
-rw-r--r--pkgs/development/python-modules/irctokens/default.nix4
-rw-r--r--pkgs/development/python-modules/iso4217/default.nix6
-rw-r--r--pkgs/development/python-modules/iso8601/default.nix20
-rw-r--r--pkgs/development/python-modules/isort/4.nix43
-rw-r--r--pkgs/development/python-modules/isort/default.nix5
-rw-r--r--pkgs/development/python-modules/itanium_demangler/default.nix30
-rw-r--r--pkgs/development/python-modules/itemdb/default.nix26
-rw-r--r--pkgs/development/python-modules/itsdangerous/1.nix21
-rw-r--r--pkgs/development/python-modules/janus/default.nix4
-rw-r--r--pkgs/development/python-modules/jaraco_collections/default.nix4
-rw-r--r--pkgs/development/python-modules/jaraco_functools/2.nix25
-rw-r--r--pkgs/development/python-modules/jaraco_functools/default.nix4
-rw-r--r--pkgs/development/python-modules/jaraco_stream/2.nix13
-rw-r--r--pkgs/development/python-modules/jax/default.nix7
-rw-r--r--pkgs/development/python-modules/jaxlib/bin.nix46
-rw-r--r--pkgs/development/python-modules/jaxlib/default.nix17
-rw-r--r--pkgs/development/python-modules/jc/default.nix4
-rw-r--r--pkgs/development/python-modules/jdatetime/default.nix27
-rw-r--r--pkgs/development/python-modules/jedi-language-server/default.nix4
-rw-r--r--pkgs/development/python-modules/jedi/default.nix4
-rw-r--r--pkgs/development/python-modules/jellyfish/default.nix4
-rw-r--r--pkgs/development/python-modules/jenkins-job-builder/default.nix7
-rw-r--r--pkgs/development/python-modules/jinja2/2.nix42
-rw-r--r--pkgs/development/python-modules/jira/default.nix4
-rw-r--r--pkgs/development/python-modules/jmp/default.nix42
-rw-r--r--pkgs/development/python-modules/johnnycanencrypt/default.nix6
-rw-r--r--pkgs/development/python-modules/josepy/default.nix33
-rw-r--r--pkgs/development/python-modules/jpylyzer/default.nix4
-rw-r--r--pkgs/development/python-modules/jq/default.nix4
-rw-r--r--pkgs/development/python-modules/jsmin/default.nix27
-rw-r--r--pkgs/development/python-modules/json-schema-for-humans/default.nix10
-rw-r--r--pkgs/development/python-modules/json-tricks/default.nix33
-rw-r--r--pkgs/development/python-modules/jsonlines/default.nix4
-rw-r--r--pkgs/development/python-modules/jsonrpclib/default.nix27
-rw-r--r--pkgs/development/python-modules/jsonschema/default.nix53
-rw-r--r--pkgs/development/python-modules/jupyter-client/5.nix40
-rw-r--r--pkgs/development/python-modules/jupyter-packaging/default.nix4
-rw-r--r--pkgs/development/python-modules/jupyter-repo2docker/default.nix4
-rw-r--r--pkgs/development/python-modules/jupyter-server-mathjax/default.nix2
-rw-r--r--pkgs/development/python-modules/jupyter_console/5.nix38
-rw-r--r--pkgs/development/python-modules/jupyterhub/default.nix2
-rw-r--r--pkgs/development/python-modules/jupyterlab-git/default.nix4
-rw-r--r--pkgs/development/python-modules/jupyterlab-pygments/default.nix2
-rw-r--r--pkgs/development/python-modules/jupyterlab-widgets/default.nix4
-rw-r--r--pkgs/development/python-modules/jupyterlab/default.nix28
-rw-r--r--pkgs/development/python-modules/jupyterlab_server/default.nix19
-rw-r--r--pkgs/development/python-modules/jupytext/default.nix10
-rw-r--r--pkgs/development/python-modules/kaldi-active-grammar/default.nix4
-rw-r--r--pkgs/development/python-modules/kaptan/default.nix2
-rw-r--r--pkgs/development/python-modules/keyring/default.nix6
-rw-r--r--pkgs/development/python-modules/kiwisolver/1_1.nix28
-rw-r--r--pkgs/development/python-modules/koji/default.nix32
-rw-r--r--pkgs/development/python-modules/kombu/default.nix28
-rw-r--r--pkgs/development/python-modules/konfig/default.nix48
-rw-r--r--pkgs/development/python-modules/labelbox/default.nix4
-rw-r--r--pkgs/development/python-modules/labmath/default.nix9
-rw-r--r--pkgs/development/python-modules/larch/default.nix32
-rw-r--r--pkgs/development/python-modules/lark/default.nix (renamed from pkgs/development/python-modules/lark-parser/default.nix)13
-rw-r--r--pkgs/development/python-modules/lasagne/default.nix31
-rw-r--r--pkgs/development/python-modules/launchpadlib/default.nix4
-rw-r--r--pkgs/development/python-modules/lazy-object-proxy/default.nix4
-rw-r--r--pkgs/development/python-modules/ldaptor/19.nix35
-rw-r--r--pkgs/development/python-modules/le/default.nix32
-rw-r--r--pkgs/development/python-modules/lektor/default.nix4
-rw-r--r--pkgs/development/python-modules/levenshtein/default.nix4
-rw-r--r--pkgs/development/python-modules/libagent/default.nix12
-rw-r--r--pkgs/development/python-modules/libarchive-c/default.nix4
-rw-r--r--pkgs/development/python-modules/libcloud/2.nix39
-rw-r--r--pkgs/development/python-modules/librosa/default.nix4
-rw-r--r--pkgs/development/python-modules/libtmux/default.nix33
-rw-r--r--pkgs/development/python-modules/libusb1/default.nix4
-rw-r--r--pkgs/development/python-modules/libvirt/5.9.0.nix31
-rw-r--r--pkgs/development/python-modules/libvirt/default.nix4
-rw-r--r--pkgs/development/python-modules/lightblue/default.nix27
-rw-r--r--pkgs/development/python-modules/lightgbm/default.nix4
-rw-r--r--pkgs/development/python-modules/lightwave/default.nix32
-rw-r--r--pkgs/development/python-modules/lightwave2/default.nix4
-rw-r--r--pkgs/development/python-modules/limiter/default.nix16
-rw-r--r--pkgs/development/python-modules/limits/default.nix4
-rw-r--r--pkgs/development/python-modules/limnoria/default.nix54
-rw-r--r--pkgs/development/python-modules/liquidctl/default.nix4
-rw-r--r--pkgs/development/python-modules/llvmlite/default.nix4
-rw-r--r--pkgs/development/python-modules/lmdb/default.nix4
-rw-r--r--pkgs/development/python-modules/locationsharinglib/default.nix3
-rw-r--r--pkgs/development/python-modules/logfury/default.nix8
-rw-r--r--pkgs/development/python-modules/loguru/default.nix55
-rw-r--r--pkgs/development/python-modules/loo-py/default.nix4
-rw-r--r--pkgs/development/python-modules/losant-rest/default.nix4
-rw-r--r--pkgs/development/python-modules/lpod/default.nix31
-rw-r--r--pkgs/development/python-modules/lsi/default.nix29
-rw-r--r--pkgs/development/python-modules/luddite/default.nix2
-rw-r--r--pkgs/development/python-modules/luftdaten/default.nix4
-rw-r--r--pkgs/development/python-modules/lupupy/default.nix4
-rw-r--r--pkgs/development/python-modules/luxtronik/default.nix4
-rw-r--r--pkgs/development/python-modules/lxc/default.nix29
-rw-r--r--pkgs/development/python-modules/lxml/default.nix4
-rw-r--r--pkgs/development/python-modules/lz4/default.nix69
-rw-r--r--pkgs/development/python-modules/magicgui/default.nix33
-rw-r--r--pkgs/development/python-modules/mailchecker/default.nix32
-rw-r--r--pkgs/development/python-modules/mailman-rss/default.nix25
-rw-r--r--pkgs/development/python-modules/makefun/default.nix4
-rw-r--r--pkgs/development/python-modules/manimpango/default.nix8
-rw-r--r--pkgs/development/python-modules/mapsplotlib/default.nix32
-rw-r--r--pkgs/development/python-modules/marionette-harness/default.nix33
-rw-r--r--pkgs/development/python-modules/marionette-harness/marionette_driver.nix27
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozcrash.nix25
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozdevice.nix27
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozfile.nix27
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozhttpd.nix24
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozinfo.nix27
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozlog.nix32
-rw-r--r--pkgs/development/python-modules/marionette-harness/moznetwork.nix25
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozprocess.nix24
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozprofile.nix29
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozrunner.nix31
-rw-r--r--pkgs/development/python-modules/marionette-harness/moztest.nix24
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozversion.nix25
-rw-r--r--pkgs/development/python-modules/marisa/default.nix29
-rw-r--r--pkgs/development/python-modules/markdown-it-py/default.nix4
-rw-r--r--pkgs/development/python-modules/markdown/3_1.nix33
-rw-r--r--pkgs/development/python-modules/markdown/default.nix4
-rw-r--r--pkgs/development/python-modules/markups/default.nix58
-rw-r--r--pkgs/development/python-modules/markupsafe/1.nix22
-rw-r--r--pkgs/development/python-modules/marshmallow-dataclass/default.nix16
-rw-r--r--pkgs/development/python-modules/marshmallow-sqlalchemy/default.nix4
-rw-r--r--pkgs/development/python-modules/mat2/default.nix15
-rw-r--r--pkgs/development/python-modules/mat2/fix_poppler.patch14
-rw-r--r--pkgs/development/python-modules/mat2/paths.patch24
-rw-r--r--pkgs/development/python-modules/matplotlib-inline/default.nix2
-rw-r--r--pkgs/development/python-modules/matplotlib/2.nix80
-rw-r--r--pkgs/development/python-modules/matrix-common/default.nix27
-rw-r--r--pkgs/development/python-modules/matrix-nio/default.nix11
-rw-r--r--pkgs/development/python-modules/mattermostdriver/default.nix4
-rw-r--r--pkgs/development/python-modules/mautrix/default.nix4
-rw-r--r--pkgs/development/python-modules/mayavi/default.nix40
-rw-r--r--pkgs/development/python-modules/mcstatus/default.nix5
-rw-r--r--pkgs/development/python-modules/md-toc/default.nix4
-rw-r--r--pkgs/development/python-modules/md2gemini/default.nix4
-rw-r--r--pkgs/development/python-modules/mdformat/default.nix4
-rw-r--r--pkgs/development/python-modules/meliae/default.nix41
-rw-r--r--pkgs/development/python-modules/memcached/default.nix2
-rw-r--r--pkgs/development/python-modules/meross-iot/default.nix4
-rw-r--r--pkgs/development/python-modules/meshio/default.nix4
-rw-r--r--pkgs/development/python-modules/meshtastic/default.nix6
-rw-r--r--pkgs/development/python-modules/metakernel/default.nix4
-rw-r--r--pkgs/development/python-modules/metaphone/default.nix23
-rw-r--r--pkgs/development/python-modules/metar/default.nix4
-rw-r--r--pkgs/development/python-modules/mezzanine/default.nix4
-rw-r--r--pkgs/development/python-modules/micloud/default.nix6
-rw-r--r--pkgs/development/python-modules/mill-local/default.nix4
-rw-r--r--pkgs/development/python-modules/minexr/default.nix31
-rw-r--r--pkgs/development/python-modules/miniaudio/default.nix4
-rw-r--r--pkgs/development/python-modules/minikerberos/default.nix12
-rw-r--r--pkgs/development/python-modules/mistletoe/default.nix4
-rw-r--r--pkgs/development/python-modules/mistune/common.nix4
-rw-r--r--pkgs/development/python-modules/mistune/default.nix5
-rw-r--r--pkgs/development/python-modules/mitogen/default.nix12
-rw-r--r--pkgs/development/python-modules/mizani/default.nix31
-rw-r--r--pkgs/development/python-modules/mkdocs/default.nix90
-rw-r--r--pkgs/development/python-modules/mlflow/default.nix21
-rw-r--r--pkgs/development/python-modules/mlxtend/default.nix4
-rw-r--r--pkgs/development/python-modules/mock/2.nix44
-rw-r--r--pkgs/development/python-modules/mocket/default.nix6
-rw-r--r--pkgs/development/python-modules/moderngl_window/default.nix4
-rw-r--r--pkgs/development/python-modules/mongomock/default.nix40
-rw-r--r--pkgs/development/python-modules/monty/default.nix4
-rw-r--r--pkgs/development/python-modules/moonraker-api/default.nix6
-rw-r--r--pkgs/development/python-modules/more-itertools/2.7.nix31
-rw-r--r--pkgs/development/python-modules/motionblinds/default.nix4
-rw-r--r--pkgs/development/python-modules/moto/default.nix48
-rw-r--r--pkgs/development/python-modules/mozsvc/default.nix29
-rw-r--r--pkgs/development/python-modules/mozterm/default.nix21
-rw-r--r--pkgs/development/python-modules/mpd/default.nix23
-rw-r--r--pkgs/development/python-modules/mpd2/default.nix4
-rw-r--r--pkgs/development/python-modules/mpi4py/default.nix10
-rw-r--r--pkgs/development/python-modules/mrbob/default.nix29
-rw-r--r--pkgs/development/python-modules/msal-extensions/default.nix4
-rw-r--r--pkgs/development/python-modules/msal/default.nix4
-rw-r--r--pkgs/development/python-modules/msoffcrypto-tool/default.nix4
-rw-r--r--pkgs/development/python-modules/msrplib/default.nix27
-rw-r--r--pkgs/development/python-modules/multiset/default.nix4
-rw-r--r--pkgs/development/python-modules/mutagen/1.43.nix34
-rw-r--r--pkgs/development/python-modules/mutmut/default.nix44
-rw-r--r--pkgs/development/python-modules/muttils/default.nix26
-rw-r--r--pkgs/development/python-modules/mwlib-ext/default.nix24
-rw-r--r--pkgs/development/python-modules/mwlib-rl/default.nix27
-rw-r--r--pkgs/development/python-modules/mwlib/default.nix55
-rw-r--r--pkgs/development/python-modules/mypy-boto3-builder/default.nix4
-rw-r--r--pkgs/development/python-modules/mypy-boto3-s3/default.nix5
-rw-r--r--pkgs/development/python-modules/mypy-protobuf/default.nix4
-rw-r--r--pkgs/development/python-modules/mypy/default.nix11
-rw-r--r--pkgs/development/python-modules/nagiosplugin/default.nix40
-rw-r--r--pkgs/development/python-modules/namebench/default.nix49
-rw-r--r--pkgs/development/python-modules/nameparser/default.nix4
-rw-r--r--pkgs/development/python-modules/napari-console/default.nix33
-rw-r--r--pkgs/development/python-modules/napari-plugin-engine/default.nix26
-rw-r--r--pkgs/development/python-modules/napari-svg/default.nix30
-rw-r--r--pkgs/development/python-modules/napari/default.nix75
-rw-r--r--pkgs/development/python-modules/nats-py/default.nix (renamed from pkgs/development/python-modules/asyncio-nats-client/default.nix)30
-rw-r--r--pkgs/development/python-modules/natsort/default.nix4
-rw-r--r--pkgs/development/python-modules/nbclassic/default.nix14
-rw-r--r--pkgs/development/python-modules/nbclient/default.nix6
-rw-r--r--pkgs/development/python-modules/nbconvert/default.nix4
-rw-r--r--pkgs/development/python-modules/nbformat/2.nix41
-rw-r--r--pkgs/development/python-modules/nbsmoke/default.nix4
-rw-r--r--pkgs/development/python-modules/nbsphinx/default.nix4
-rw-r--r--pkgs/development/python-modules/ncclient/default.nix1
-rw-r--r--pkgs/development/python-modules/nengo/default.nix4
-rw-r--r--pkgs/development/python-modules/nest-asyncio/default.nix4
-rw-r--r--pkgs/development/python-modules/net2grid/default.nix58
-rw-r--r--pkgs/development/python-modules/netdata/default.nix4
-rw-r--r--pkgs/development/python-modules/netio/default.nix45
-rw-r--r--pkgs/development/python-modules/networkx/2.2.nix28
-rw-r--r--pkgs/development/python-modules/nexia/default.nix13
-rw-r--r--pkgs/development/python-modules/nibabel/default.nix4
-rw-r--r--pkgs/development/python-modules/nidaqmx/default.nix4
-rw-r--r--pkgs/development/python-modules/nix-prefetch-github/default.nix22
-rw-r--r--pkgs/development/python-modules/nkdfu/default.nix31
-rw-r--r--pkgs/development/python-modules/nltk/default.nix24
-rw-r--r--pkgs/development/python-modules/nmapthon2/default.nix23
-rw-r--r--pkgs/development/python-modules/nmigen-boards/default.nix38
-rw-r--r--pkgs/development/python-modules/nmigen-soc/default.nix35
-rw-r--r--pkgs/development/python-modules/nose-focus/default.nix35
-rw-r--r--pkgs/development/python-modules/nose-of-yeti/default.nix30
-rw-r--r--pkgs/development/python-modules/nose/default.nix13
-rw-r--r--pkgs/development/python-modules/nose2/default.nix19
-rw-r--r--pkgs/development/python-modules/notebook/2.nix76
-rw-r--r--pkgs/development/python-modules/notebook/default.nix4
-rw-r--r--pkgs/development/python-modules/notify/default.nix41
-rw-r--r--pkgs/development/python-modules/notmuch/2.nix27
-rw-r--r--pkgs/development/python-modules/numba/default.nix4
-rw-r--r--pkgs/development/python-modules/numexpr/default.nix31
-rw-r--r--pkgs/development/python-modules/numpy/1.16.nix99
-rw-r--r--pkgs/development/python-modules/numpy/default.nix9
-rw-r--r--pkgs/development/python-modules/numpy/numpy-distutils-C++_1.16.patch30
-rw-r--r--pkgs/development/python-modules/nunavut/default.nix4
-rw-r--r--pkgs/development/python-modules/nvchecker/default.nix8
-rw-r--r--pkgs/development/python-modules/nxt-python/default.nix36
-rw-r--r--pkgs/development/python-modules/oauthlib/3.1.nix33
-rw-r--r--pkgs/development/python-modules/oauthlib/default.nix31
-rw-r--r--pkgs/development/python-modules/objax/default.nix17
-rw-r--r--pkgs/development/python-modules/oci/default.nix37
-rw-r--r--pkgs/development/python-modules/ocrmypdf/default.nix4
-rw-r--r--pkgs/development/python-modules/od/default.nix10
-rw-r--r--pkgs/development/python-modules/olefile/default.nix22
-rw-r--r--pkgs/development/python-modules/oletools/default.nix5
-rw-r--r--pkgs/development/python-modules/omnikinverter/default.nix6
-rw-r--r--pkgs/development/python-modules/online-judge-api-client/default.nix60
-rw-r--r--pkgs/development/python-modules/online-judge-api-client/fix-paths.patch39
-rw-r--r--pkgs/development/python-modules/online-judge-tools/default.nix31
-rw-r--r--pkgs/development/python-modules/onnx/default.nix2
-rw-r--r--pkgs/development/python-modules/onvif-zeep-async/default.nix39
-rw-r--r--pkgs/development/python-modules/oocsi/default.nix4
-rw-r--r--pkgs/development/python-modules/openai/default.nix4
-rw-r--r--pkgs/development/python-modules/openapi-core/default.nix2
-rw-r--r--pkgs/development/python-modules/openapi-schema-validator/default.nix18
-rw-r--r--pkgs/development/python-modules/openevsewifi/default.nix65
-rw-r--r--pkgs/development/python-modules/openpyxl/2.nix38
-rw-r--r--pkgs/development/python-modules/openrazer/daemon.nix6
-rw-r--r--pkgs/development/python-modules/opensimplex/default.nix17
-rw-r--r--pkgs/development/python-modules/openstackdocstheme/default.nix37
-rw-r--r--pkgs/development/python-modules/openstacksdk/default.nix4
-rw-r--r--pkgs/development/python-modules/opt-einsum/2.nix30
-rw-r--r--pkgs/development/python-modules/opt-einsum/default.nix34
-rw-r--r--pkgs/development/python-modules/optax/default.nix56
-rw-r--r--pkgs/development/python-modules/orjson/default.nix6
-rw-r--r--pkgs/development/python-modules/orm/default.nix39
-rw-r--r--pkgs/development/python-modules/ormar/default.nix92
-rw-r--r--pkgs/development/python-modules/osc-lib/default.nix4
-rw-r--r--pkgs/development/python-modules/oscrypto/default.nix3
-rw-r--r--pkgs/development/python-modules/oslo-config/default.nix4
-rw-r--r--pkgs/development/python-modules/oslo-log/default.nix11
-rw-r--r--pkgs/development/python-modules/oslo-serialization/default.nix4
-rw-r--r--pkgs/development/python-modules/oslo-utils/default.nix4
-rw-r--r--pkgs/development/python-modules/osqp/default.nix9
-rw-r--r--pkgs/development/python-modules/ovoenergy/default.nix10
-rw-r--r--pkgs/development/python-modules/oyaml/default.nix36
-rw-r--r--pkgs/development/python-modules/p1monitor/default.nix26
-rw-r--r--pkgs/development/python-modules/pa-ringbuffer/default.nix4
-rw-r--r--pkgs/development/python-modules/packageurl-python/default.nix4
-rw-r--r--pkgs/development/python-modules/packaging/2.nix39
-rw-r--r--pkgs/development/python-modules/packaging/default.nix4
-rw-r--r--pkgs/development/python-modules/pagerduty/default.nix23
-rw-r--r--pkgs/development/python-modules/pamqp/default.nix4
-rw-r--r--pkgs/development/python-modules/pandas/2.nix119
-rw-r--r--pkgs/development/python-modules/pandas/default.nix4
-rw-r--r--pkgs/development/python-modules/panflute/default.nix18
-rw-r--r--pkgs/development/python-modules/papermill/default.nix4
-rw-r--r--pkgs/development/python-modules/papis/default.nix121
-rw-r--r--pkgs/development/python-modules/paramiko/default.nix47
-rw-r--r--pkgs/development/python-modules/parfive/default.nix4
-rw-r--r--pkgs/development/python-modules/parso/default.nix19
-rw-r--r--pkgs/development/python-modules/parsy/default.nix32
-rw-r--r--pkgs/development/python-modules/path.py/2.nix42
-rw-r--r--pkgs/development/python-modules/patrowl4py/default.nix4
-rw-r--r--pkgs/development/python-modules/pdm-pep517/default.nix38
-rw-r--r--pkgs/development/python-modules/pebble/default.nix4
-rw-r--r--pkgs/development/python-modules/pecan/default.nix42
-rw-r--r--pkgs/development/python-modules/pelican/default.nix4
-rw-r--r--pkgs/development/python-modules/pep257/default.nix4
-rw-r--r--pkgs/development/python-modules/pep517/default.nix15
-rw-r--r--pkgs/development/python-modules/perfplot/default.nix14
-rw-r--r--pkgs/development/python-modules/pex/default.nix4
-rw-r--r--pkgs/development/python-modules/pg8000/1_12.nix27
-rw-r--r--pkgs/development/python-modules/pg8000/default.nix4
-rw-r--r--pkgs/development/python-modules/pgpy/default.nix3
-rw-r--r--pkgs/development/python-modules/phonemizer/default.nix4
-rw-r--r--pkgs/development/python-modules/phonenumbers/default.nix4
-rw-r--r--pkgs/development/python-modules/phonopy/default.nix4
-rw-r--r--pkgs/development/python-modules/pi1wire/default.nix36
-rw-r--r--pkgs/development/python-modules/pijuice/default.nix65
-rw-r--r--pkgs/development/python-modules/pijuice/patch-shebang.diff9
-rw-r--r--pkgs/development/python-modules/pikepdf/default.nix4
-rw-r--r--pkgs/development/python-modules/pillow/6.nix47
-rw-r--r--pkgs/development/python-modules/pillow/default.nix4
-rw-r--r--pkgs/development/python-modules/pip-tools/default.nix4
-rw-r--r--pkgs/development/python-modules/pip/20.nix41
-rw-r--r--pkgs/development/python-modules/pip/default.nix9
-rw-r--r--pkgs/development/python-modules/pipenv-poetry-migrate/default.nix42
-rw-r--r--pkgs/development/python-modules/pipx/default.nix6
-rw-r--r--pkgs/development/python-modules/pivy/default.nix4
-rw-r--r--pkgs/development/python-modules/pixelmatch/default.nix32
-rw-r--r--pkgs/development/python-modules/pkuseg/default.nix3
-rw-r--r--pkgs/development/python-modules/plaid-python/default.nix4
-rw-r--r--pkgs/development/python-modules/platformdirs/default.nix12
-rw-r--r--pkgs/development/python-modules/plexapi/default.nix4
-rw-r--r--pkgs/development/python-modules/plotly/default.nix4
-rw-r--r--pkgs/development/python-modules/pluggy/0.nix34
-rw-r--r--pkgs/development/python-modules/plugwise/default.nix4
-rw-r--r--pkgs/development/python-modules/plumbum/default.nix60
-rw-r--r--pkgs/development/python-modules/poetry/default.nix58
-rw-r--r--pkgs/development/python-modules/policy-sentry/default.nix4
-rw-r--r--pkgs/development/python-modules/policyuniverse/default.nix4
-rw-r--r--pkgs/development/python-modules/pontos/default.nix15
-rw-r--r--pkgs/development/python-modules/pony/default.nix41
-rw-r--r--pkgs/development/python-modules/portalocker/default.nix4
-rw-r--r--pkgs/development/python-modules/portend/default.nix4
-rw-r--r--pkgs/development/python-modules/portpicker/default.nix4
-rw-r--r--pkgs/development/python-modules/pot/default.nix4
-rw-r--r--pkgs/development/python-modules/ppscore/default.nix26
-rw-r--r--pkgs/development/python-modules/prance/default.nix9
-rw-r--r--pkgs/development/python-modules/praw/6.3.nix53
-rw-r--r--pkgs/development/python-modules/precis-i18n/default.nix22
-rw-r--r--pkgs/development/python-modules/prettytable/1.nix37
-rw-r--r--pkgs/development/python-modules/prettytable/default.nix4
-rw-r--r--pkgs/development/python-modules/primecountpy/default.nix33
-rw-r--r--pkgs/development/python-modules/privacyidea-ldap-proxy/default.nix4
-rw-r--r--pkgs/development/python-modules/progressbar2/default.nix4
-rw-r--r--pkgs/development/python-modules/progressbar231/default.nix23
-rw-r--r--pkgs/development/python-modules/prompt-toolkit/default.nix4
-rw-r--r--pkgs/development/python-modules/protego/default.nix4
-rw-r--r--pkgs/development/python-modules/proton-client/default.nix4
-rw-r--r--pkgs/development/python-modules/protonvpn-nm-lib/default.nix4
-rw-r--r--pkgs/development/python-modules/pscript/default.nix39
-rw-r--r--pkgs/development/python-modules/psutil/default.nix4
-rw-r--r--pkgs/development/python-modules/psycopg2/default.nix4
-rw-r--r--pkgs/development/python-modules/psygnal/default.nix35
-rw-r--r--pkgs/development/python-modules/pubnub/default.nix21
-rw-r--r--pkgs/development/python-modules/pudb/default.nix4
-rw-r--r--pkgs/development/python-modules/pulsectl/default.nix4
-rw-r--r--pkgs/development/python-modules/puremagic/default.nix16
-rw-r--r--pkgs/development/python-modules/pvo/default.nix4
-rw-r--r--pkgs/development/python-modules/py-nightscout/default.nix4
-rw-r--r--pkgs/development/python-modules/py-synologydsm-api/default.nix4
-rw-r--r--pkgs/development/python-modules/py-tes/default.nix49
-rw-r--r--pkgs/development/python-modules/pyTelegramBotAPI/default.nix8
-rw-r--r--pkgs/development/python-modules/py_scrypt/default.nix4
-rw-r--r--pkgs/development/python-modules/pyamf/default.nix22
-rw-r--r--pkgs/development/python-modules/pyamg/default.nix4
-rw-r--r--pkgs/development/python-modules/pyasn/default.nix22
-rw-r--r--pkgs/development/python-modules/pyatag/default.nix4
-rw-r--r--pkgs/development/python-modules/pyathena/default.nix22
-rw-r--r--pkgs/development/python-modules/pyatmo/default.nix4
-rw-r--r--pkgs/development/python-modules/pyatv/default.nix22
-rw-r--r--pkgs/development/python-modules/pyaussiebb/default.nix53
-rw-r--r--pkgs/development/python-modules/pybind11/default.nix24
-rw-r--r--pkgs/development/python-modules/pyblosxom/default.nix31
-rw-r--r--pkgs/development/python-modules/pybotvac/default.nix4
-rw-r--r--pkgs/development/python-modules/pycairo/1.18.nix52
-rw-r--r--pkgs/development/python-modules/pycallgraph/default.nix28
-rw-r--r--pkgs/development/python-modules/pycarddav/default.nix31
-rw-r--r--pkgs/development/python-modules/pycassa/default.nix38
-rw-r--r--pkgs/development/python-modules/pycfmodel/default.nix51
-rw-r--r--pkgs/development/python-modules/pychromecast/default.nix4
-rw-r--r--pkgs/development/python-modules/pycm/default.nix53
-rw-r--r--pkgs/development/python-modules/pycocotools/default.nix6
-rw-r--r--pkgs/development/python-modules/pycognito/default.nix4
-rw-r--r--pkgs/development/python-modules/pycountry/default.nix4
-rw-r--r--pkgs/development/python-modules/pycryptodome-test-vectors/default.nix30
-rw-r--r--pkgs/development/python-modules/pycryptodome/default.nix20
-rw-r--r--pkgs/development/python-modules/pycryptodomex/default.nix13
-rw-r--r--pkgs/development/python-modules/pycryptopp/default.nix44
-rw-r--r--pkgs/development/python-modules/pycurl2/default.nix34
-rw-r--r--pkgs/development/python-modules/pydaikin/default.nix6
-rw-r--r--pkgs/development/python-modules/pydal/default.nix17
-rw-r--r--pkgs/development/python-modules/pydantic/default.nix13
-rw-r--r--pkgs/development/python-modules/pydash/default.nix37
-rw-r--r--pkgs/development/python-modules/pydeconz/default.nix10
-rw-r--r--pkgs/development/python-modules/pydelijn/default.nix4
-rw-r--r--pkgs/development/python-modules/pydevccu/default.nix34
-rw-r--r--pkgs/development/python-modules/pydmd/default.nix41
-rw-r--r--pkgs/development/python-modules/pydns/default.nix23
-rw-r--r--pkgs/development/python-modules/pydot/default.nix44
-rw-r--r--pkgs/development/python-modules/pydrive2/default.nix39
-rw-r--r--pkgs/development/python-modules/pydub/default.nix37
-rw-r--r--pkgs/development/python-modules/pydy/default.nix4
-rw-r--r--pkgs/development/python-modules/pyebus/default.nix4
-rw-r--r--pkgs/development/python-modules/pyeconet/default.nix13
-rw-r--r--pkgs/development/python-modules/pyeight/default.nix17
-rw-r--r--pkgs/development/python-modules/pyenvisalink/default.nix13
-rw-r--r--pkgs/development/python-modules/pyerfa/default.nix4
-rw-r--r--pkgs/development/python-modules/pyexcel-io/default.nix4
-rw-r--r--pkgs/development/python-modules/pyexcel/default.nix4
-rw-r--r--pkgs/development/python-modules/pyexcelerator/default.nix28
-rw-r--r--pkgs/development/python-modules/pyexiv2/default.nix28
-rw-r--r--pkgs/development/python-modules/pyezviz/default.nix4
-rw-r--r--pkgs/development/python-modules/pyface/default.nix4
-rw-r--r--pkgs/development/python-modules/pyfakefs/default.nix4
-rw-r--r--pkgs/development/python-modules/pyfakewebcam/default.nix2
-rw-r--r--pkgs/development/python-modules/pyfcm/default.nix4
-rw-r--r--pkgs/development/python-modules/pyfftw/default.nix4
-rw-r--r--pkgs/development/python-modules/pyflunearyou/default.nix5
-rw-r--r--pkgs/development/python-modules/pyfritzhome/default.nix14
-rw-r--r--pkgs/development/python-modules/pygal/default.nix12
-rw-r--r--pkgs/development/python-modules/pygame-gui/default.nix14
-rw-r--r--pkgs/development/python-modules/pygame/default.nix6
-rw-r--r--pkgs/development/python-modules/pygeos/default.nix48
-rw-r--r--pkgs/development/python-modules/pygit2/default.nix17
-rw-r--r--pkgs/development/python-modules/pygls/default.nix6
-rw-r--r--pkgs/development/python-modules/pygobject/3.36.nix33
-rw-r--r--pkgs/development/python-modules/pygraphviz/default.nix8
-rw-r--r--pkgs/development/python-modules/pygtk/default.nix74
-rw-r--r--pkgs/development/python-modules/pygtksourceview/codegendir.patch25
-rw-r--r--pkgs/development/python-modules/pygtksourceview/default.nix21
-rw-r--r--pkgs/development/python-modules/pyhamcrest/1.nix27
-rw-r--r--pkgs/development/python-modules/pyhamcrest/default.nix4
-rw-r--r--pkgs/development/python-modules/pyhiveapi/default.nix4
-rw-r--r--pkgs/development/python-modules/pyhocon/default.nix4
-rw-r--r--pkgs/development/python-modules/pyhomematic/default.nix4
-rw-r--r--pkgs/development/python-modules/pyhumps/default.nix51
-rw-r--r--pkgs/development/python-modules/pyinsteon/default.nix24
-rw-r--r--pkgs/development/python-modules/pyisy/default.nix4
-rw-r--r--pkgs/development/python-modules/pyjwt/1.nix44
-rw-r--r--pkgs/development/python-modules/pyjwt/default.nix4
-rw-r--r--pkgs/development/python-modules/pykeyatome/default.nix6
-rw-r--r--pkgs/development/python-modules/pykickstart/default.nix38
-rw-r--r--pkgs/development/python-modules/pykrakenapi/default.nix4
-rw-r--r--pkgs/development/python-modules/pylast/default.nix4
-rw-r--r--pkgs/development/python-modules/pylaunches/default.nix4
-rw-r--r--pkgs/development/python-modules/pylgnetcast/default.nix4
-rw-r--r--pkgs/development/python-modules/pylibacl/0.5.nix26
-rw-r--r--pkgs/development/python-modules/pylibftdi/default.nix16
-rw-r--r--pkgs/development/python-modules/pylint-django/default.nix4
-rw-r--r--pkgs/development/python-modules/pylint/1.9.nix51
-rw-r--r--pkgs/development/python-modules/pylitterbot/default.nix4
-rw-r--r--pkgs/development/python-modules/pylsp-mypy/default.nix4
-rw-r--r--pkgs/development/python-modules/pylutron-caseta/default.nix12
-rw-r--r--pkgs/development/python-modules/pylxd/default.nix4
-rw-r--r--pkgs/development/python-modules/pymatgen/default.nix21
-rw-r--r--pkgs/development/python-modules/pymavlink/default.nix4
-rw-r--r--pkgs/development/python-modules/pymazda/default.nix11
-rw-r--r--pkgs/development/python-modules/pymc3/default.nix3
-rw-r--r--pkgs/development/python-modules/pymdown-extensions/default.nix77
-rw-r--r--pkgs/development/python-modules/pymelcloud/default.nix45
-rw-r--r--pkgs/development/python-modules/pymongo/default.nix4
-rw-r--r--pkgs/development/python-modules/pymsteams/default.nix17
-rw-r--r--pkgs/development/python-modules/pymunk/default.nix2
-rw-r--r--pkgs/development/python-modules/pymupdf/default.nix4
-rw-r--r--pkgs/development/python-modules/pymysensors/default.nix4
-rw-r--r--pkgs/development/python-modules/pynacl/default.nix15
-rw-r--r--pkgs/development/python-modules/pynamodb/default.nix4
-rw-r--r--pkgs/development/python-modules/pynetbox/default.nix4
-rw-r--r--pkgs/development/python-modules/pynetdicom/default.nix3
-rw-r--r--pkgs/development/python-modules/pynetgear/default.nix40
-rw-r--r--pkgs/development/python-modules/pynina/default.nix13
-rw-r--r--pkgs/development/python-modules/pynndescent/default.nix11
-rw-r--r--pkgs/development/python-modules/pynput/default.nix4
-rw-r--r--pkgs/development/python-modules/pynuki/default.nix21
-rw-r--r--pkgs/development/python-modules/pynut2/default.nix33
-rw-r--r--pkgs/development/python-modules/pyobjc/default.nix22
-rw-r--r--pkgs/development/python-modules/pyomo/default.nix21
-rw-r--r--pkgs/development/python-modules/pyopencl/default.nix32
-rw-r--r--pkgs/development/python-modules/pyopengl/default.nix4
-rw-r--r--pkgs/development/python-modules/pyopenssl/default.nix6
-rw-r--r--pkgs/development/python-modules/pyoverkiz/default.nix58
-rw-r--r--pkgs/development/python-modules/pyowm/default.nix18
-rw-r--r--pkgs/development/python-modules/pyownet/default.nix28
-rw-r--r--pkgs/development/python-modules/pyparsing/default.nix63
-rw-r--r--pkgs/development/python-modules/pypck/default.nix12
-rw-r--r--pkgs/development/python-modules/pypdf/default.nix25
-rw-r--r--pkgs/development/python-modules/pyphen/default.nix10
-rw-r--r--pkgs/development/python-modules/pypinyin/default.nix4
-rw-r--r--pkgs/development/python-modules/pypoint/default.nix4
-rw-r--r--pkgs/development/python-modules/pypoppler/default.nix41
-rw-r--r--pkgs/development/python-modules/pypoppler/pypoppler-0.39.0.patch23
-rw-r--r--pkgs/development/python-modules/pypoppler/pypoppler-poppler.c.patch12
-rw-r--r--pkgs/development/python-modules/pyproj/default.nix4
-rw-r--r--pkgs/development/python-modules/pypugjs/default.nix4
-rw-r--r--pkgs/development/python-modules/pypytools/default.nix53
-rw-r--r--pkgs/development/python-modules/pyqt-builder/default.nix4
-rw-r--r--pkgs/development/python-modules/pyqt/5.x.nix23
-rw-r--r--pkgs/development/python-modules/pyqt/sip.nix28
-rw-r--r--pkgs/development/python-modules/pyquaternion/default.nix34
-rw-r--r--pkgs/development/python-modules/pyquil/default.nix26
-rw-r--r--pkgs/development/python-modules/pyqvrpro/default.nix47
-rw-r--r--pkgs/development/python-modules/pyradios/default.nix17
-rw-r--r--pkgs/development/python-modules/pyreport/default.nix26
-rw-r--r--pkgs/development/python-modules/pyrfxtrx/default.nix9
-rw-r--r--pkgs/development/python-modules/pyrmvtransport/default.nix10
-rw-r--r--pkgs/development/python-modules/pyro4/default.nix25
-rw-r--r--pkgs/development/python-modules/pyrogram/default.nix15
-rw-r--r--pkgs/development/python-modules/pyroma/2.nix26
-rw-r--r--pkgs/development/python-modules/pysatochip/default.nix4
-rw-r--r--pkgs/development/python-modules/pysdl2/default.nix4
-rw-r--r--pkgs/development/python-modules/pyshp/default.nix4
-rw-r--r--pkgs/development/python-modules/pysiaalarm/default.nix7
-rw-r--r--pkgs/development/python-modules/pyside/apiextractor.nix10
-rw-r--r--pkgs/development/python-modules/pyside/generatorrunner.nix13
-rw-r--r--pkgs/development/python-modules/pysimplegui/default.nix24
-rw-r--r--pkgs/development/python-modules/pyskyqremote/default.nix4
-rw-r--r--pkgs/development/python-modules/pysma/default.nix4
-rw-r--r--pkgs/development/python-modules/pysml/default.nix10
-rw-r--r--pkgs/development/python-modules/pysnooper/default.nix4
-rw-r--r--pkgs/development/python-modules/pyspnego/default.nix2
-rw-r--r--pkgs/development/python-modules/pysptk/default.nix4
-rw-r--r--pkgs/development/python-modules/pysqlite/default.nix57
-rw-r--r--pkgs/development/python-modules/pystray/default.nix4
-rw-r--r--pkgs/development/python-modules/pyswitchbot/default.nix4
-rw-r--r--pkgs/development/python-modules/pytap2/default.nix42
-rw-r--r--pkgs/development/python-modules/pytenable/default.nix12
-rw-r--r--pkgs/development/python-modules/pytest-annotate/default.nix19
-rw-r--r--pkgs/development/python-modules/pytest-arraydiff/default.nix31
-rw-r--r--pkgs/development/python-modules/pytest-asyncio/default.nix53
-rw-r--r--pkgs/development/python-modules/pytest-bdd/default.nix44
-rw-r--r--pkgs/development/python-modules/pytest-benchmark/default.nix35
-rw-r--r--pkgs/development/python-modules/pytest-cases/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest-celery/default.nix27
-rw-r--r--pkgs/development/python-modules/pytest-celery/no-celery.patch9
-rw-r--r--pkgs/development/python-modules/pytest-check/default.nix5
-rw-r--r--pkgs/development/python-modules/pytest-click/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest-console-scripts/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest-cov/default.nix7
-rw-r--r--pkgs/development/python-modules/pytest-django/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest-doctestplus/default.nix16
-rw-r--r--pkgs/development/python-modules/pytest-forked/default.nix7
-rw-r--r--pkgs/development/python-modules/pytest-helpers-namespace/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest-httpbin/default.nix49
-rw-r--r--pkgs/development/python-modules/pytest-httpserver/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest-httpx/default.nix18
-rw-r--r--pkgs/development/python-modules/pytest-localserver/default.nix21
-rw-r--r--pkgs/development/python-modules/pytest-logdog/default.nix (renamed from pkgs/development/python-modules/platformdirs/2.nix)30
-rw-r--r--pkgs/development/python-modules/pytest-mock/2.nix39
-rw-r--r--pkgs/development/python-modules/pytest-mock/default.nix6
-rw-r--r--pkgs/development/python-modules/pytest-mypy-plugins/default.nix59
-rw-r--r--pkgs/development/python-modules/pytest-order/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest-pythonpath/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest-raisin/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest-randomly/default.nix41
-rw-r--r--pkgs/development/python-modules/pytest-regressions/default.nix42
-rw-r--r--pkgs/development/python-modules/pytest-remotedata/default.nix38
-rw-r--r--pkgs/development/python-modules/pytest-runner/2.nix30
-rw-r--r--pkgs/development/python-modules/pytest-services/default.nix3
-rw-r--r--pkgs/development/python-modules/pytest-snapshot/default.nix44
-rw-r--r--pkgs/development/python-modules/pytest-socket/default.nix26
-rw-r--r--pkgs/development/python-modules/pytest-subprocess/default.nix10
-rw-r--r--pkgs/development/python-modules/pytest-subtests/default.nix22
-rw-r--r--pkgs/development/python-modules/pytest-timeout/default.nix22
-rw-r--r--pkgs/development/python-modules/pytest-xdist/1.nix36
-rw-r--r--pkgs/development/python-modules/pytest-xdist/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest/4.nix68
-rw-r--r--pkgs/development/python-modules/pytest/5.nix95
-rw-r--r--pkgs/development/python-modules/pytest/default.nix12
-rw-r--r--pkgs/development/python-modules/python-benedict/default.nix75
-rw-r--r--pkgs/development/python-modules/python-daemon/default.nix56
-rw-r--r--pkgs/development/python-modules/python-dbusmock/default.nix8
-rw-r--r--pkgs/development/python-modules/python-engineio/default.nix4
-rw-r--r--pkgs/development/python-modules/python-fsutil/default.nix51
-rw-r--r--pkgs/development/python-modules/python-gitlab/default.nix8
-rw-r--r--pkgs/development/python-modules/python-heatclient/default.nix4
-rw-r--r--pkgs/development/python-modules/python-http-client/default.nix7
-rw-r--r--pkgs/development/python-modules/python-i18n/default.nix24
-rw-r--r--pkgs/development/python-modules/python-ipmi/default.nix4
-rw-r--r--pkgs/development/python-modules/python-ironicclient/default.nix4
-rw-r--r--pkgs/development/python-modules/python-izone/default.nix4
-rw-r--r--pkgs/development/python-modules/python-kasa/default.nix23
-rw-r--r--pkgs/development/python-modules/python-keycloak/default.nix41
-rw-r--r--pkgs/development/python-modules/python-keystoneclient/default.nix4
-rw-r--r--pkgs/development/python-modules/python-louvain/default.nix4
-rw-r--r--pkgs/development/python-modules/python-lsp-black/default.nix4
-rw-r--r--pkgs/development/python-modules/python-lsp-server/default.nix21
-rw-r--r--pkgs/development/python-modules/python-magic/default.nix12
-rw-r--r--pkgs/development/python-modules/python-manilaclient/default.nix21
-rw-r--r--pkgs/development/python-modules/python-miio/default.nix11
-rw-r--r--pkgs/development/python-modules/python-multipart/default.nix29
-rw-r--r--pkgs/development/python-modules/python-nest/default.nix36
-rw-r--r--pkgs/development/python-modules/python-openstackclient/default.nix14
-rw-r--r--pkgs/development/python-modules/python-otr/default.nix36
-rw-r--r--pkgs/development/python-modules/python-smarttub/default.nix9
-rw-r--r--pkgs/development/python-modules/python-snap7/default.nix4
-rw-r--r--pkgs/development/python-modules/python-socketio/default.nix4
-rw-r--r--pkgs/development/python-modules/python-socks/default.nix6
-rw-r--r--pkgs/development/python-modules/python-songpal/default.nix20
-rw-r--r--pkgs/development/python-modules/python-telegram-bot/default.nix4
-rw-r--r--pkgs/development/python-modules/python-utils/default.nix7
-rw-r--r--pkgs/development/python-modules/python2-pythondialog/default.nix27
-rw-r--r--pkgs/development/python-modules/python_statsd/default.nix28
-rw-r--r--pkgs/development/python-modules/pythondialog/default.nix4
-rw-r--r--pkgs/development/python-modules/pythonfinder/default.nix56
-rw-r--r--pkgs/development/python-modules/pythonirclib/default.nix34
-rw-r--r--pkgs/development/python-modules/pythonmagick/default.nix43
-rw-r--r--pkgs/development/python-modules/pythonocc-core/default.nix27
-rw-r--r--pkgs/development/python-modules/pytibber/default.nix8
-rw-r--r--pkgs/development/python-modules/pytile/default.nix6
-rw-r--r--pkgs/development/python-modules/pytorch-lightning/default.nix4
-rw-r--r--pkgs/development/python-modules/pytorch-metric-learning/default.nix4
-rw-r--r--pkgs/development/python-modules/pytorch/bin.nix4
-rw-r--r--pkgs/development/python-modules/pytorch/binary-hashes.nix25
-rw-r--r--pkgs/development/python-modules/pytorch/default.nix6
-rw-r--r--pkgs/development/python-modules/pytradfri/default.nix11
-rw-r--r--pkgs/development/python-modules/pytrends/default.nix4
-rw-r--r--pkgs/development/python-modules/pyturbojpeg/default.nix4
-rw-r--r--pkgs/development/python-modules/pyupgrade/default.nix4
-rw-r--r--pkgs/development/python-modules/pyuseragents/default.nix2
-rw-r--r--pkgs/development/python-modules/pyutilib/default.nix4
-rw-r--r--pkgs/development/python-modules/pyvera/default.nix4
-rw-r--r--pkgs/development/python-modules/pyvesync/default.nix4
-rw-r--r--pkgs/development/python-modules/pyvex/default.nix32
-rw-r--r--pkgs/development/python-modules/pyvicare/default.nix4
-rw-r--r--pkgs/development/python-modules/pyvlx/default.nix20
-rw-r--r--pkgs/development/python-modules/pywayland/default.nix4
-rw-r--r--pkgs/development/python-modules/pywbem/default.nix4
-rw-r--r--pkgs/development/python-modules/pyweatherflowrest/default.nix4
-rw-r--r--pkgs/development/python-modules/pywebdav/default.nix17
-rw-r--r--pkgs/development/python-modules/pywemo/default.nix4
-rw-r--r--pkgs/development/python-modules/pywilight/default.nix4
-rw-r--r--pkgs/development/python-modules/pywizlight/default.nix4
-rw-r--r--pkgs/development/python-modules/pywlroots/default.nix13
-rw-r--r--pkgs/development/python-modules/pywlroots/xwayland.patch25
-rw-r--r--pkgs/development/python-modules/pyxml/default.nix30
-rw-r--r--pkgs/development/python-modules/pyyaml/default.nix14
-rw-r--r--pkgs/development/python-modules/qcengine/default.nix4
-rw-r--r--pkgs/development/python-modules/qcs-api-client/default.nix45
-rw-r--r--pkgs/development/python-modules/qdarkstyle/default.nix4
-rw-r--r--pkgs/development/python-modules/qiling/default.nix4
-rw-r--r--pkgs/development/python-modules/qiskit-aer/default.nix8
-rw-r--r--pkgs/development/python-modules/qiskit-aqua/default.nix185
-rw-r--r--pkgs/development/python-modules/qiskit-finance/default.nix4
-rw-r--r--pkgs/development/python-modules/qiskit-ibmq-provider/default.nix4
-rw-r--r--pkgs/development/python-modules/qiskit-ignis/default.nix4
-rw-r--r--pkgs/development/python-modules/qiskit-machine-learning/default.nix4
-rw-r--r--pkgs/development/python-modules/qiskit-nature/default.nix22
-rw-r--r--pkgs/development/python-modules/qiskit-optimization/default.nix4
-rw-r--r--pkgs/development/python-modules/qiskit-terra/default.nix28
-rw-r--r--pkgs/development/python-modules/qiskit/default.nix7
-rw-r--r--pkgs/development/python-modules/qpid-python/default.nix26
-rw-r--r--pkgs/development/python-modules/qscintilla-qt4/default.nix42
-rw-r--r--pkgs/development/python-modules/qscintilla-qt5/default.nix56
-rw-r--r--pkgs/development/python-modules/qscintilla/default.nix43
-rw-r--r--pkgs/development/python-modules/qserve/default.nix24
-rw-r--r--pkgs/development/python-modules/qt5reactor/default.nix37
-rw-r--r--pkgs/development/python-modules/qtpy/default.nix46
-rw-r--r--pkgs/development/python-modules/quamash/default.nix13
-rw-r--r--pkgs/development/python-modules/quandl/default.nix64
-rw-r--r--pkgs/development/python-modules/quantities/default.nix4
-rw-r--r--pkgs/development/python-modules/qutip/default.nix4
-rw-r--r--pkgs/development/python-modules/radish-bdd/default.nix4
-rw-r--r--pkgs/development/python-modules/railroad-diagrams/default.nix26
-rw-r--r--pkgs/development/python-modules/rdflib/default.nix18
-rw-r--r--pkgs/development/python-modules/readchar/default.nix34
-rw-r--r--pkgs/development/python-modules/readme_renderer/default.nix27
-rw-r--r--pkgs/development/python-modules/redis/default.nix41
-rw-r--r--pkgs/development/python-modules/regenmaschine/default.nix16
-rw-r--r--pkgs/development/python-modules/remarshal/default.nix42
-rw-r--r--pkgs/development/python-modules/remotecv/default.nix39
-rw-r--r--pkgs/development/python-modules/remotecv/install_requires.patch16
-rw-r--r--pkgs/development/python-modules/renault-api/default.nix4
-rw-r--r--pkgs/development/python-modules/reolink/default.nix4
-rw-r--r--pkgs/development/python-modules/repeated_test/default.nix26
-rw-r--r--pkgs/development/python-modules/reportlab/default.nix4
-rw-r--r--pkgs/development/python-modules/repoze_who/default.nix4
-rw-r--r--pkgs/development/python-modules/requests-cache/default.nix5
-rw-r--r--pkgs/development/python-modules/requests-file/default.nix34
-rw-r--r--pkgs/development/python-modules/requests-http-signature/default.nix14
-rw-r--r--pkgs/development/python-modules/requests-kerberos/default.nix33
-rw-r--r--pkgs/development/python-modules/requests-toolbelt/default.nix59
-rw-r--r--pkgs/development/python-modules/requests-unixsocket/default.nix27
-rw-r--r--pkgs/development/python-modules/requests/default.nix23
-rw-r--r--pkgs/development/python-modules/requirements-parser/default.nix37
-rw-r--r--pkgs/development/python-modules/resolvelib/default.nix4
-rw-r--r--pkgs/development/python-modules/responses/default.nix19
-rw-r--r--pkgs/development/python-modules/respx/default.nix4
-rw-r--r--pkgs/development/python-modules/restfly/default.nix12
-rw-r--r--pkgs/development/python-modules/restview/default.nix29
-rw-r--r--pkgs/development/python-modules/retworkx/default.nix6
-rw-r--r--pkgs/development/python-modules/rfc3986/default.nix27
-rw-r--r--pkgs/development/python-modules/rflink/default.nix13
-rw-r--r--pkgs/development/python-modules/rhpl/builder.sh13
-rw-r--r--pkgs/development/python-modules/rhpl/default.nix19
-rw-r--r--pkgs/development/python-modules/rich/default.nix4
-rw-r--r--pkgs/development/python-modules/rlp/default.nix4
-rw-r--r--pkgs/development/python-modules/roboschool/default.nix79
-rw-r--r--pkgs/development/python-modules/robotframework-ride/default.nix32
-rw-r--r--pkgs/development/python-modules/robotframework-seleniumlibrary/default.nix4
-rw-r--r--pkgs/development/python-modules/robotstatuschecker/default.nix4
-rw-r--r--pkgs/development/python-modules/rokuecp/default.nix27
-rw-r--r--pkgs/development/python-modules/rollbar/default.nix20
-rw-r--r--pkgs/development/python-modules/roombapy/default.nix6
-rw-r--r--pkgs/development/python-modules/roonapi/default.nix9
-rw-r--r--pkgs/development/python-modules/rpi-bad-power/default.nix37
-rw-r--r--pkgs/development/python-modules/rpkg/default.nix27
-rw-r--r--pkgs/development/python-modules/rpy2/2.nix108
-rw-r--r--pkgs/development/python-modules/rpy2/r-libs-site.patch20
-rw-r--r--pkgs/development/python-modules/rpyc/default.nix22
-rw-r--r--pkgs/development/python-modules/rsa/4_0.nix33
-rw-r--r--pkgs/development/python-modules/rtoml/default.nix27
-rw-r--r--pkgs/development/python-modules/rtsp-to-webrtc/default.nix43
-rw-r--r--pkgs/development/python-modules/ruamel-ordereddict/default.nix25
-rw-r--r--pkgs/development/python-modules/ruamel-yaml-clib/default.nix5
-rw-r--r--pkgs/development/python-modules/ruamel-yaml/0.16.nix38
-rw-r--r--pkgs/development/python-modules/ruamel-yaml/default.nix4
-rw-r--r--pkgs/development/python-modules/runsnakerun/default.nix25
-rw-r--r--pkgs/development/python-modules/rxv/default.nix7
-rw-r--r--pkgs/development/python-modules/s3fs/default.nix4
-rw-r--r--pkgs/development/python-modules/s3transfer/0_4.nix52
-rw-r--r--pkgs/development/python-modules/s3transfer/default.nix67
-rw-r--r--pkgs/development/python-modules/sagemaker/default.nix22
-rw-r--r--pkgs/development/python-modules/sandboxlib/default.nix26
-rw-r--r--pkgs/development/python-modules/sanic-testing/default.nix4
-rw-r--r--pkgs/development/python-modules/sanic/default.nix27
-rw-r--r--pkgs/development/python-modules/sapi-python-client/default.nix4
-rw-r--r--pkgs/development/python-modules/sarge/default.nix10
-rw-r--r--pkgs/development/python-modules/sasmodels/default.nix4
-rw-r--r--pkgs/development/python-modules/scandir/default.nix20
-rw-r--r--pkgs/development/python-modules/schema-salad/default.nix4
-rw-r--r--pkgs/development/python-modules/schema/default.nix33
-rw-r--r--pkgs/development/python-modules/schiene/default.nix16
-rw-r--r--pkgs/development/python-modules/scikit-fmm/default.nix4
-rw-r--r--pkgs/development/python-modules/scikit-learn/0.20.nix39
-rw-r--r--pkgs/development/python-modules/scikit-learn/default.nix4
-rw-r--r--pkgs/development/python-modules/scikit-survival/default.nix6
-rw-r--r--pkgs/development/python-modules/scikit-tda/default.nix6
-rw-r--r--pkgs/development/python-modules/scikits-odes/default.nix4
-rw-r--r--pkgs/development/python-modules/scmrepo/default.nix53
-rw-r--r--pkgs/development/python-modules/scp/default.nix4
-rw-r--r--pkgs/development/python-modules/scrapy/default.nix11
-rw-r--r--pkgs/development/python-modules/screenlogicpy/default.nix4
-rw-r--r--pkgs/development/python-modules/seaborn/0.9.1.nix33
-rw-r--r--pkgs/development/python-modules/seahub/default.nix56
-rw-r--r--pkgs/development/python-modules/seatconnect/default.nix6
-rw-r--r--pkgs/development/python-modules/secp256k1/default.nix3
-rw-r--r--pkgs/development/python-modules/secretstorage/2.nix24
-rw-r--r--pkgs/development/python-modules/semantic/default.nix30
-rw-r--r--pkgs/development/python-modules/semver/default.nix28
-rw-r--r--pkgs/development/python-modules/sendgrid/default.nix7
-rw-r--r--pkgs/development/python-modules/sense-energy/default.nix4
-rw-r--r--pkgs/development/python-modules/sentinels/default.nix36
-rw-r--r--pkgs/development/python-modules/sentry-sdk/default.nix9
-rw-r--r--pkgs/development/python-modules/serverlessrepo/default.nix27
-rw-r--r--pkgs/development/python-modules/serversyncstorage/default.nix47
-rw-r--r--pkgs/development/python-modules/setupmeta/default.nix13
-rw-r--r--pkgs/development/python-modules/setuptools-rust/default.nix7
-rw-r--r--pkgs/development/python-modules/setuptools-scm/2.nix24
-rw-r--r--pkgs/development/python-modules/setuptools-scm/default.nix4
-rw-r--r--pkgs/development/python-modules/setuptools/44.0.nix80
-rw-r--r--pkgs/development/python-modules/setuptoolsdarcs/default.nix30
-rw-r--r--pkgs/development/python-modules/sfepy/default.nix4
-rw-r--r--pkgs/development/python-modules/sgmllib3k/default.nix17
-rw-r--r--pkgs/development/python-modules/shodan/default.nix13
-rw-r--r--pkgs/development/python-modules/shtab/default.nix52
-rw-r--r--pkgs/development/python-modules/sigrok/default.nix62
-rw-r--r--pkgs/development/python-modules/sigrok/python-install.patch16
-rw-r--r--pkgs/development/python-modules/sigtools/default.nix7
-rw-r--r--pkgs/development/python-modules/simpleai/default.nix29
-rw-r--r--pkgs/development/python-modules/simpleeval/default.nix4
-rw-r--r--pkgs/development/python-modules/simplefix/default.nix4
-rw-r--r--pkgs/development/python-modules/simpleparse/default.nix27
-rw-r--r--pkgs/development/python-modules/simplisafe-python/default.nix6
-rw-r--r--pkgs/development/python-modules/singledispatch/default.nix34
-rw-r--r--pkgs/development/python-modules/siosocks/default.nix7
-rw-r--r--pkgs/development/python-modules/sip/default.nix4
-rw-r--r--pkgs/development/python-modules/sipsimple/default.nix46
-rw-r--r--pkgs/development/python-modules/skein/skeinjar.nix4
-rw-r--r--pkgs/development/python-modules/skein/skeinrepo.nix4
-rw-r--r--pkgs/development/python-modules/skodaconnect/default.nix6
-rw-r--r--pkgs/development/python-modules/slack-sdk/default.nix4
-rw-r--r--pkgs/development/python-modules/slowaes/default.nix24
-rw-r--r--pkgs/development/python-modules/smart-meter-texas/default.nix4
-rw-r--r--pkgs/development/python-modules/smartdc/default.nix25
-rw-r--r--pkgs/development/python-modules/smmap/default.nix4
-rw-r--r--pkgs/development/python-modules/snowflake-connector-python/default.nix4
-rw-r--r--pkgs/development/python-modules/snug/default.nix39
-rw-r--r--pkgs/development/python-modules/socid-extractor/default.nix4
-rw-r--r--pkgs/development/python-modules/socketio-client/default.nix39
-rw-r--r--pkgs/development/python-modules/soco/default.nix6
-rw-r--r--pkgs/development/python-modules/softlayer/default.nix4
-rw-r--r--pkgs/development/python-modules/somajo/default.nix28
-rw-r--r--pkgs/development/python-modules/sopel/default.nix6
-rw-r--r--pkgs/development/python-modules/sorl_thumbnail/default.nix4
-rw-r--r--pkgs/development/python-modules/sounddevice/default.nix7
-rw-r--r--pkgs/development/python-modules/soupsieve/1.nix36
-rw-r--r--pkgs/development/python-modules/spacy-loggers/default.nix34
-rw-r--r--pkgs/development/python-modules/spacy-transformers/default.nix2
-rw-r--r--pkgs/development/python-modules/spacy/default.nix13
-rw-r--r--pkgs/development/python-modules/spambayes/default.nix20
-rw-r--r--pkgs/development/python-modules/speaklater3/default.nix23
-rw-r--r--pkgs/development/python-modules/spectral-cube/default.nix7
-rw-r--r--pkgs/development/python-modules/sphinx-copybutton/default.nix4
-rw-r--r--pkgs/development/python-modules/sphinx-inline-tabs/default.nix4
-rw-r--r--pkgs/development/python-modules/sphinx-jinja/default.nix4
-rw-r--r--pkgs/development/python-modules/sphinx/2.nix82
-rw-r--r--pkgs/development/python-modules/sphinx/default.nix15
-rw-r--r--pkgs/development/python-modules/sphinx/python2-lexer.patch22
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-apidoc/default.nix34
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-applehelp/default.nix5
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-devhelp/default.nix5
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-htmlhelp/default.nix7
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-jsmath/default.nix5
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-programoutput/default.nix32
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-qthelp/default.nix5
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-serializinghtml/default.nix5
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-websupport/1_1.nix25
-rw-r--r--pkgs/development/python-modules/spyder-kernels/default.nix4
-rw-r--r--pkgs/development/python-modules/spyder/default.nix4
-rw-r--r--pkgs/development/python-modules/spyse-python/default.nix15
-rw-r--r--pkgs/development/python-modules/sqlalchemy-continuum/default.nix6
-rw-r--r--pkgs/development/python-modules/sqlalchemy-migrate/default.nix34
-rw-r--r--pkgs/development/python-modules/sqlalchemy-utils/default.nix4
-rw-r--r--pkgs/development/python-modules/sqlalchemy/default.nix4
-rw-r--r--pkgs/development/python-modules/sqlite-utils/default.nix22
-rw-r--r--pkgs/development/python-modules/sqlite3dbm/default.nix23
-rw-r--r--pkgs/development/python-modules/sqlitedict/default.nix20
-rw-r--r--pkgs/development/python-modules/sqlmap/default.nix7
-rw-r--r--pkgs/development/python-modules/sqlobject/default.nix26
-rw-r--r--pkgs/development/python-modules/squaremap/default.nix29
-rw-r--r--pkgs/development/python-modules/srpenergy/default.nix4
-rw-r--r--pkgs/development/python-modules/srsly/default.nix4
-rw-r--r--pkgs/development/python-modules/sshtunnel/default.nix12
-rw-r--r--pkgs/development/python-modules/sslyze/default.nix4
-rw-r--r--pkgs/development/python-modules/starlette/default.nix20
-rw-r--r--pkgs/development/python-modules/staticjinja/default.nix10
-rw-r--r--pkgs/development/python-modules/staticjinja/test-minimal-template/default.nix11
-rw-r--r--pkgs/development/python-modules/staticjinja/test-minimal-template/templates/include1
-rw-r--r--pkgs/development/python-modules/staticjinja/test-minimal-template/templates/index1
-rw-r--r--pkgs/development/python-modules/statmake/default.nix58
-rw-r--r--pkgs/development/python-modules/statsmodels/default.nix4
-rw-r--r--pkgs/development/python-modules/stompclient/default.nix29
-rw-r--r--pkgs/development/python-modules/strenum/default.nix43
-rw-r--r--pkgs/development/python-modules/strictyaml/default.nix4
-rw-r--r--pkgs/development/python-modules/stringtemplate/default.nix24
-rw-r--r--pkgs/development/python-modules/stripe/default.nix22
-rw-r--r--pkgs/development/python-modules/striprtf/default.nix9
-rw-r--r--pkgs/development/python-modules/structlog/default.nix4
-rw-r--r--pkgs/development/python-modules/stumpy/default.nix17
-rw-r--r--pkgs/development/python-modules/stups-pierone/default.nix4
-rw-r--r--pkgs/development/python-modules/subarulink/default.nix4
-rw-r--r--pkgs/development/python-modules/subprocess32/default.nix37
-rw-r--r--pkgs/development/python-modules/subunit/default.nix7
-rw-r--r--pkgs/development/python-modules/suds/default.nix29
-rw-r--r--pkgs/development/python-modules/suds/suds-0.4-CVE-2013-2217.patch19
-rw-r--r--pkgs/development/python-modules/sumo/default.nix29
-rw-r--r--pkgs/development/python-modules/sunpy/default.nix60
-rw-r--r--pkgs/development/python-modules/superqt/default.nix31
-rw-r--r--pkgs/development/python-modules/sure/default.nix9
-rw-r--r--pkgs/development/python-modules/surepy/default.nix3
-rw-r--r--pkgs/development/python-modules/svdtools/default.nix13
-rw-r--r--pkgs/development/python-modules/svglib/default.nix4
-rw-r--r--pkgs/development/python-modules/swagger-spec-validator/default.nix4
-rw-r--r--pkgs/development/python-modules/swift/default.nix4
-rw-r--r--pkgs/development/python-modules/sybase/default.nix30
-rw-r--r--pkgs/development/python-modules/sybil/default.nix28
-rw-r--r--pkgs/development/python-modules/sympy/1_5.nix35
-rw-r--r--pkgs/development/python-modules/syslog-rfc5424-formatter/default.nix28
-rw-r--r--pkgs/development/python-modules/systembridge/default.nix4
-rw-r--r--pkgs/development/python-modules/tables/3.5.nix56
-rw-r--r--pkgs/development/python-modules/tables/default.nix16
-rw-r--r--pkgs/development/python-modules/tablib/default.nix4
-rw-r--r--pkgs/development/python-modules/tailscale/default.nix4
-rw-r--r--pkgs/development/python-modules/tappy/default.nix4
-rw-r--r--pkgs/development/python-modules/tarman/default.nix34
-rw-r--r--pkgs/development/python-modules/tatsu/default.nix8
-rw-r--r--pkgs/development/python-modules/teamcity-messages/default.nix40
-rw-r--r--pkgs/development/python-modules/temescal/default.nix37
-rw-r--r--pkgs/development/python-modules/tempest/default.nix11
-rw-r--r--pkgs/development/python-modules/tempora/default.nix4
-rw-r--r--pkgs/development/python-modules/tensorboardx/default.nix13
-rw-r--r--pkgs/development/python-modules/tensorflow-datasets/corruptions.patch22
-rw-r--r--pkgs/development/python-modules/tensorflow-datasets/default.nix141
-rw-r--r--pkgs/development/python-modules/tensorflow-metadata/build.patch24
-rw-r--r--pkgs/development/python-modules/tensorflow-metadata/default.nix46
-rw-r--r--pkgs/development/python-modules/tensorflow-probability/default.nix55
-rw-r--r--pkgs/development/python-modules/tensorflow-tensorboard/default.nix3
-rw-r--r--pkgs/development/python-modules/tensorflow/bin.nix2
-rw-r--r--pkgs/development/python-modules/tensorflow/default.nix4
-rw-r--r--pkgs/development/python-modules/tensorly/default.nix31
-rw-r--r--pkgs/development/python-modules/terminaltables/default.nix4
-rw-r--r--pkgs/development/python-modules/tern/default.nix4
-rw-r--r--pkgs/development/python-modules/teslajsonpy/default.nix4
-rw-r--r--pkgs/development/python-modules/test-tube/default.nix4
-rw-r--r--pkgs/development/python-modules/testfixtures/default.nix40
-rw-r--r--pkgs/development/python-modules/testpath/default.nix6
-rw-r--r--pkgs/development/python-modules/testtools/default.nix2
-rw-r--r--pkgs/development/python-modules/textacy/default.nix5
-rw-r--r--pkgs/development/python-modules/textfsm/default.nix4
-rw-r--r--pkgs/development/python-modules/textile/default.nix48
-rw-r--r--pkgs/development/python-modules/tgcrypto/default.nix4
-rw-r--r--pkgs/development/python-modules/thespian/default.nix4
-rw-r--r--pkgs/development/python-modules/thinc/default.nix18
-rw-r--r--pkgs/development/python-modules/thumbor/0001-Don-t-use-which-implementation-to-find-required-exec.patch277
-rw-r--r--pkgs/development/python-modules/thumbor/default.nix90
-rw-r--r--pkgs/development/python-modules/tifffile/default.nix60
-rw-r--r--pkgs/development/python-modules/tiledb/default.nix4
-rw-r--r--pkgs/development/python-modules/time-machine/default.nix6
-rw-r--r--pkgs/development/python-modules/timetagger/default.nix50
-rw-r--r--pkgs/development/python-modules/tinydb/default.nix4
-rw-r--r--pkgs/development/python-modules/titlecase/default.nix7
-rw-r--r--pkgs/development/python-modules/tmb/default.nix21
-rw-r--r--pkgs/development/python-modules/tmdb3/default.nix23
-rw-r--r--pkgs/development/python-modules/toggl-cli/default.nix4
-rw-r--r--pkgs/development/python-modules/tokenserver/default.nix36
-rw-r--r--pkgs/development/python-modules/tomli-w/default.nix30
-rw-r--r--pkgs/development/python-modules/tomli/default.nix7
-rw-r--r--pkgs/development/python-modules/tomlkit/default.nix4
-rw-r--r--pkgs/development/python-modules/toolz/2.nix28
-rw-r--r--pkgs/development/python-modules/torchinfo/default.nix43
-rw-r--r--pkgs/development/python-modules/torchvision/default.nix4
-rw-r--r--pkgs/development/python-modules/tornado/4.nix8
-rw-r--r--pkgs/development/python-modules/tornado/5.nix8
-rw-r--r--pkgs/development/python-modules/total-connect-client/default.nix4
-rw-r--r--pkgs/development/python-modules/tox/default.nix4
-rw-r--r--pkgs/development/python-modules/tqdm/default.nix5
-rw-r--r--pkgs/development/python-modules/traitlets/4.nix36
-rw-r--r--pkgs/development/python-modules/traits/default.nix19
-rw-r--r--pkgs/development/python-modules/transformers/default.nix4
-rw-r--r--pkgs/development/python-modules/transip/default.nix38
-rw-r--r--pkgs/development/python-modules/transitions/default.nix12
-rw-r--r--pkgs/development/python-modules/translatepy/default.nix2
-rw-r--r--pkgs/development/python-modules/transmission-rpc/default.nix22
-rw-r--r--pkgs/development/python-modules/treeo/default.nix46
-rw-r--r--pkgs/development/python-modules/treex/default.nix77
-rw-r--r--pkgs/development/python-modules/treq/default.nix4
-rw-r--r--pkgs/development/python-modules/trimesh/default.nix4
-rw-r--r--pkgs/development/python-modules/trio-asyncio/default.nix14
-rw-r--r--pkgs/development/python-modules/trio/default.nix4
-rw-r--r--pkgs/development/python-modules/trytond/default.nix4
-rw-r--r--pkgs/development/python-modules/ttls/default.nix46
-rw-r--r--pkgs/development/python-modules/ttp/default.nix10
-rw-r--r--pkgs/development/python-modules/ttystatus/default.nix30
-rw-r--r--pkgs/development/python-modules/tumpa/default.nix4
-rw-r--r--pkgs/development/python-modules/tweepy/default.nix4
-rw-r--r--pkgs/development/python-modules/twentemilieu/default.nix3
-rw-r--r--pkgs/development/python-modules/twilio/default.nix4
-rw-r--r--pkgs/development/python-modules/twine/default.nix4
-rw-r--r--pkgs/development/python-modules/twinkly-client/default.nix15
-rw-r--r--pkgs/development/python-modules/twitterapi/default.nix7
-rw-r--r--pkgs/development/python-modules/txtorcon/default.nix3
-rw-r--r--pkgs/development/python-modules/txzmq/default.nix36
-rw-r--r--pkgs/development/python-modules/typeguard/default.nix4
-rw-r--r--pkgs/development/python-modules/types-dateutil/default.nix24
-rw-r--r--pkgs/development/python-modules/types-decorator/default.nix4
-rw-r--r--pkgs/development/python-modules/types-freezegun/default.nix29
-rw-r--r--pkgs/development/python-modules/types-futures/default.nix4
-rw-r--r--pkgs/development/python-modules/types-protobuf/default.nix4
-rw-r--r--pkgs/development/python-modules/types-pytz/default.nix4
-rw-r--r--pkgs/development/python-modules/types-requests/default.nix9
-rw-r--r--pkgs/development/python-modules/types-setuptools/default.nix4
-rw-r--r--pkgs/development/python-modules/types-tabulate/default.nix28
-rw-r--r--pkgs/development/python-modules/types-toml/default.nix4
-rw-r--r--pkgs/development/python-modules/types-typed-ast/default.nix9
-rw-r--r--pkgs/development/python-modules/types-urllib3/default.nix29
-rw-r--r--pkgs/development/python-modules/typesystem/default.nix26
-rw-r--r--pkgs/development/python-modules/typical/default.nix20
-rw-r--r--pkgs/development/python-modules/typical/use-poetry-core.patch13
-rw-r--r--pkgs/development/python-modules/typing-extensions/default.nix46
-rw-r--r--pkgs/development/python-modules/typing/default.nix33
-rw-r--r--pkgs/development/python-modules/tzdata/default.nix18
-rw-r--r--pkgs/development/python-modules/tzlocal/2.nix36
-rw-r--r--pkgs/development/python-modules/uamqp/default.nix13
-rw-r--r--pkgs/development/python-modules/ufo2ft/default.nix62
-rw-r--r--pkgs/development/python-modules/ufo2ft/fonttools-cu2qu.patch126
-rw-r--r--pkgs/development/python-modules/ufoLib2/default.nix40
-rw-r--r--pkgs/development/python-modules/ujson/2.nix28
-rw-r--r--pkgs/development/python-modules/ujson/default.nix4
-rw-r--r--pkgs/development/python-modules/umap-learn/default.nix3
-rw-r--r--pkgs/development/python-modules/umemcache/default.nix20
-rw-r--r--pkgs/development/python-modules/uncertainties/default.nix4
-rw-r--r--pkgs/development/python-modules/unicodedata2/default.nix17
-rw-r--r--pkgs/development/python-modules/unittest2/default.nix10
-rw-r--r--pkgs/development/python-modules/upb-lib/default.nix4
-rw-r--r--pkgs/development/python-modules/uproot/default.nix4
-rw-r--r--pkgs/development/python-modules/uritemplate/default.nix31
-rw-r--r--pkgs/development/python-modules/uritools/default.nix21
-rw-r--r--pkgs/development/python-modules/url-normalize/default.nix33
-rw-r--r--pkgs/development/python-modules/urlextract/default.nix16
-rw-r--r--pkgs/development/python-modules/urllib3/2.nix81
-rw-r--r--pkgs/development/python-modules/urllib3/default.nix9
-rw-r--r--pkgs/development/python-modules/userpath/default.nix2
-rw-r--r--pkgs/development/python-modules/uvicorn/default.nix4
-rw-r--r--pkgs/development/python-modules/uvloop/default.nix2
-rw-r--r--pkgs/development/python-modules/variants/default.nix7
-rw-r--r--pkgs/development/python-modules/vcrpy/3.nix48
-rw-r--r--pkgs/development/python-modules/vega/default.nix4
-rw-r--r--pkgs/development/python-modules/velbus-aio/default.nix4
-rw-r--r--pkgs/development/python-modules/versionfinder/default.nix24
-rw-r--r--pkgs/development/python-modules/versiontag/default.nix5
-rw-r--r--pkgs/development/python-modules/vertica-python/default.nix4
-rw-r--r--pkgs/development/python-modules/vine/default.nix24
-rw-r--r--pkgs/development/python-modules/virtual-display/default.nix4
-rw-r--r--pkgs/development/python-modules/virtualenv/default.nix4
-rw-r--r--pkgs/development/python-modules/vispy/default.nix4
-rw-r--r--pkgs/development/python-modules/vivisect/default.nix4
-rw-r--r--pkgs/development/python-modules/vowpalwabbit/default.nix4
-rw-r--r--pkgs/development/python-modules/vt-py/default.nix6
-rw-r--r--pkgs/development/python-modules/waitress-django/default.nix11
-rw-r--r--pkgs/development/python-modules/waitress-django/setup.py2
-rw-r--r--pkgs/development/python-modules/wandb/default.nix140
-rw-r--r--pkgs/development/python-modules/warcio/default.nix56
-rw-r--r--pkgs/development/python-modules/warlock/default.nix47
-rw-r--r--pkgs/development/python-modules/warrant-lite/default.nix49
-rw-r--r--pkgs/development/python-modules/wasmer/default.nix15
-rw-r--r--pkgs/development/python-modules/watermark/default.nix6
-rw-r--r--pkgs/development/python-modules/wavedrom/default.nix25
-rw-r--r--pkgs/development/python-modules/wazeroutecalculator/default.nix12
-rw-r--r--pkgs/development/python-modules/weasyprint/default.nix66
-rw-r--r--pkgs/development/python-modules/weasyprint/library-paths.patch15
-rw-r--r--pkgs/development/python-modules/webargs/default.nix4
-rw-r--r--pkgs/development/python-modules/weboob/default.nix59
-rw-r--r--pkgs/development/python-modules/websocket-client/default.nix4
-rw-r--r--pkgs/development/python-modules/websockets/default.nix18
-rw-r--r--pkgs/development/python-modules/webtest/default.nix10
-rw-r--r--pkgs/development/python-modules/weconnect-mqtt/default.nix6
-rw-r--r--pkgs/development/python-modules/weconnect/default.nix8
-rw-r--r--pkgs/development/python-modules/werkzeug/1.nix2
-rw-r--r--pkgs/development/python-modules/wheel/default.nix6
-rw-r--r--pkgs/development/python-modules/whodap/default.nix4
-rw-r--r--pkgs/development/python-modules/whois/default.nix19
-rw-r--r--pkgs/development/python-modules/wled/default.nix4
-rw-r--r--pkgs/development/python-modules/woob/default.nix49
-rw-r--r--pkgs/development/python-modules/woob/no-test-requiring-network.patch54
-rw-r--r--pkgs/development/python-modules/wptserve/default.nix31
-rw-r--r--pkgs/development/python-modules/wrapt/default.nix28
-rw-r--r--pkgs/development/python-modules/wrf-python/default.nix4
-rw-r--r--pkgs/development/python-modules/wsdiscovery/default.nix45
-rw-r--r--pkgs/development/python-modules/wsgi-intercept/default.nix4
-rw-r--r--pkgs/development/python-modules/wsgiproxy/default.nix27
-rw-r--r--pkgs/development/python-modules/wsproto/0.14.nix25
-rw-r--r--pkgs/development/python-modules/wtf-peewee/default.nix9
-rw-r--r--pkgs/development/python-modules/wtforms/default.nix18
-rw-r--r--pkgs/development/python-modules/wxPython/3.0.nix91
-rw-r--r--pkgs/development/python-modules/xarray/default.nix42
-rw-r--r--pkgs/development/python-modules/xcaplib/default.nix28
-rw-r--r--pkgs/development/python-modules/xdis/default.nix4
-rw-r--r--pkgs/development/python-modules/xknx/default.nix4
-rw-r--r--pkgs/development/python-modules/xlib/default.nix23
-rw-r--r--pkgs/development/python-modules/xml2rfc/default.nix4
-rw-r--r--pkgs/development/python-modules/yacs/default.nix32
-rw-r--r--pkgs/development/python-modules/yalesmartalarmclient/default.nix12
-rw-r--r--pkgs/development/python-modules/yalexs/default.nix6
-rw-r--r--pkgs/development/python-modules/yamale/default.nix4
-rw-r--r--pkgs/development/python-modules/yangson/default.nix4
-rw-r--r--pkgs/development/python-modules/yapf/default.nix4
-rw-r--r--pkgs/development/python-modules/yaspin/default.nix32
-rw-r--r--pkgs/development/python-modules/yeelight/default.nix16
-rw-r--r--pkgs/development/python-modules/yenc/default.nix29
-rw-r--r--pkgs/development/python-modules/yfinance/default.nix4
-rw-r--r--pkgs/development/python-modules/youtube-search-python/default.nix4
-rw-r--r--pkgs/development/python-modules/yowsup/default.nix4
-rw-r--r--pkgs/development/python-modules/yt/default.nix54
-rw-r--r--pkgs/development/python-modules/ytmusicapi/default.nix4
-rw-r--r--pkgs/development/python-modules/zbase32/default.nix28
-rw-r--r--pkgs/development/python-modules/zcs/default.nix33
-rw-r--r--pkgs/development/python-modules/zeep/default.nix9
-rw-r--r--pkgs/development/python-modules/zeroc-ice/default.nix4
-rw-r--r--pkgs/development/python-modules/zeroconf/default.nix4
-rw-r--r--pkgs/development/python-modules/zetup/default.nix4
-rw-r--r--pkgs/development/python-modules/zha-quirks/default.nix4
-rw-r--r--pkgs/development/python-modules/zigpy-zigate/default.nix4
-rw-r--r--pkgs/development/python-modules/zigpy-znp/default.nix4
-rw-r--r--pkgs/development/python-modules/zigpy/default.nix4
-rw-r--r--pkgs/development/python-modules/zimports/default.nix6
-rw-r--r--pkgs/development/python-modules/zipp/1.nix37
-rw-r--r--pkgs/development/python-modules/zipp/default.nix22
-rw-r--r--pkgs/development/python-modules/zope-deferredimport/default.nix4
-rw-r--r--pkgs/development/python-modules/zope-hookable/default.nix4
-rwxr-xr-xpkgs/development/python-modules/zstandard/default.nix4
-rw-r--r--pkgs/development/python-modules/zstd/default.nix4
-rw-r--r--pkgs/development/python-modules/zwave-js-server-python/default.nix4
1768 files changed, 18464 insertions, 16224 deletions
diff --git a/pkgs/development/python-modules/APScheduler/default.nix b/pkgs/development/python-modules/APScheduler/default.nix
index e0ebf564163f6..52d4ecdc3b716 100644
--- a/pkgs/development/python-modules/APScheduler/default.nix
+++ b/pkgs/development/python-modules/APScheduler/default.nix
@@ -2,55 +2,51 @@
 , stdenv
 , buildPythonPackage
 , fetchPypi
-, setuptools-scm
-, pytestCheckHook
+, gevent
 , pytest-asyncio
 , pytest-tornado
-, sqlalchemy
+, pytestCheckHook
+, pythonOlder
+, pytz
+, setuptools
+, setuptools-scm
+, six
 , tornado
 , twisted
-, mock
-, gevent
-, six
-, pytz
 , tzlocal
-, funcsigs
-, setuptools
-, pythonOlder
 }:
 
 buildPythonPackage rec {
-  pname = "APScheduler";
+  pname = "apscheduler";
   version = "3.8.1";
+  format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "5cf344ebcfbdaa48ae178c029c055cec7bc7a4a47c21e315e4d1f08bd35f2355";
+    pname = "APScheduler";
+    inherit version;
+    hash = "sha256-XPNE68+9qkiuF4wCnAVc7HvHpKR8IeMV5NHwi9NfI1U=";
   };
 
   buildInputs = [
     setuptools-scm
   ];
 
+  propagatedBuildInputs = [
+    pytz
+    setuptools
+    six
+    tzlocal
+  ];
+
   checkInputs = [
+    gevent
     pytest-asyncio
     pytest-tornado
     pytestCheckHook
-    sqlalchemy
     tornado
     twisted
-    mock
-    gevent
-  ];
-
-  propagatedBuildInputs = [
-    six
-    pytz
-    tzlocal
-    funcsigs
-    setuptools
   ];
 
   postPatch = ''
@@ -60,15 +56,21 @@ buildPythonPackage rec {
 
   disabledTests = [
     "test_broken_pool"
+    # gevent tests have issue on newer Python releases
+    "test_add_live_job"
+    "test_add_pending_job"
+    "test_shutdown"
   ] ++ lib.optionals stdenv.isDarwin [
     "test_submit_job"
     "test_max_instances"
   ];
 
-  pythonImportsCheck = [ "apscheduler" ];
+  pythonImportsCheck = [
+    "apscheduler"
+  ];
 
   meta = with lib; {
-    description = "A Python library that lets you schedule your Python code to be executed";
+    description = "Library that lets you schedule your Python code to be executed";
     homepage = "https://github.com/agronholm/apscheduler";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/development/python-modules/GitPython/default.nix b/pkgs/development/python-modules/GitPython/default.nix
index 7ae4079089613..dc909f5bcee8c 100644
--- a/pkgs/development/python-modules/GitPython/default.nix
+++ b/pkgs/development/python-modules/GitPython/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "gitpython";
-  version = "3.1.24";
+  version = "3.1.25";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "gitpython-developers";
     repo = "GitPython";
     rev = version;
-    sha256 = "sha256-KfR14EqXsDgIZUerk/hHDB0Z7IuqncbTNd/yNwrV9I0=";
+    sha256 = "sha256-ienc7zvLe6t8rkMtC6wVIewUqQBFdFbLc8iPT6aPVrE=";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/Markups/default.nix b/pkgs/development/python-modules/Markups/default.nix
deleted file mode 100644
index 1fa304f57a8ae..0000000000000
--- a/pkgs/development/python-modules/Markups/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python-markdown-math
-, markdown
-, docutils
-, pygments
-, pyyaml
-}:
-
-buildPythonPackage rec {
-  pname = "Markups";
-  version = "3.1.3";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "ab9747a72c1c6457418eb4276c79871977c13a654618e4f12e2a1f0990fbf2fc";
-  };
-
-  checkInputs = [ markdown docutils pygments pyyaml ];
-  propagatedBuildInputs = [ python-markdown-math ];
-
-  meta = {
-    description = "A wrapper around various text markup languages.";
-    homepage = "https://github.com/retext-project/pymarkups";
-    license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ klntsky ];
-  };
-}
diff --git a/pkgs/development/python-modules/Pygments/2_5.nix b/pkgs/development/python-modules/Pygments/2_5.nix
deleted file mode 100644
index aa59c370d2e7d..0000000000000
--- a/pkgs/development/python-modules/Pygments/2_5.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, fetchpatch
-, docutils
-}:
-
-buildPythonPackage rec {
-  pname = "Pygments";
-  version = "2.5.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "98c8aa5a9f778fcd1026a17361ddaf7330d1b7c62ae97c3bb0ae73e0b9b6b0fe";
-  };
-
-  patches = [
-    (fetchpatch {
-      name = "CVE-2021-27291.patch";
-      url = "https://github.com/pygments/pygments/commit/2e7e8c4a7b318f4032493773732754e418279a14.patch";
-      sha256 = "0ap7jgkmvkkzijabsgnfrwl376cjsxa4jmzvqysrkwpjq3q4rxpa";
-      excludes = ["CHANGES"];
-    })
-  ];
-
-  propagatedBuildInputs = [ docutils ];
-
-  # Circular dependency with sphinx
-  doCheck = false;
-
-  meta = {
-    homepage = "https://pygments.org/";
-    description = "A generic syntax highlighter";
-    license = lib.licenses.bsd2;
-    maintainers = with lib.maintainers; [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/Pygments/default.nix b/pkgs/development/python-modules/Pygments/default.nix
index bb17af144cbe8..af125e1f40efb 100644
--- a/pkgs/development/python-modules/Pygments/default.nix
+++ b/pkgs/development/python-modules/Pygments/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "Pygments";
-  version = "2.10.0";
+  version = "2.11.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f398865f7eb6874156579fdf36bc840a03cab64d1cde9e93d68f46a425ec52c6";
+    sha256 = "4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a";
   };
 
   propagatedBuildInputs = [ docutils ];
diff --git a/pkgs/development/python-modules/TurboCheetah/default.nix b/pkgs/development/python-modules/TurboCheetah/default.nix
deleted file mode 100644
index 717b2b5f27801..0000000000000
--- a/pkgs/development/python-modules/TurboCheetah/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cheetah
-, nose
-}:
-
-buildPythonPackage rec {
-  pname = "TurboCheetah";
-  version = "1.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "9e4c7ecb0d061bfb58281363ee1b09337083f013a8b4d0355326a5d8668f450c";
-  };
-
-  propagatedBuildInputs = [ cheetah ];
-
-  checkInputs = [ nose ];
-
-  meta = {
-    description = "TurboGears plugin to support use of Cheetah templates";
-    homepage = "http://docs.turbogears.org/TurboCheetah";
-    license = lib.licenses.mit;
-  };
-}
diff --git a/pkgs/development/python-modules/absl-py/default.nix b/pkgs/development/python-modules/absl-py/default.nix
index 30a0e68dea0cf..bda6c950d5987 100644
--- a/pkgs/development/python-modules/absl-py/default.nix
+++ b/pkgs/development/python-modules/absl-py/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "absl-py";
-  version = "0.15.0";
+  version = "1.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "72d782fbeafba66ba3e525d46bccac949b9a174dbf66233e50ece09ee688dc81";
+    sha256 = "ac511215c01ee9ae47b19716599e8ccfa746f2e18de72bdf641b79b22afa27ea";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/adafruit-platformdetect/default.nix b/pkgs/development/python-modules/adafruit-platformdetect/default.nix
index 9e32e903e82fa..a93137f136b86 100644
--- a/pkgs/development/python-modules/adafruit-platformdetect/default.nix
+++ b/pkgs/development/python-modules/adafruit-platformdetect/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "adafruit-platformdetect";
-  version = "3.18.0";
+  version = "3.19.6";
   format = "setuptools";
 
   src = fetchPypi {
     pname = "Adafruit-PlatformDetect";
     inherit version;
-    sha256 = "593f3719580b31b3dffab0817414a3aa548ed609659ad216ceb8cf31cc51ec9b";
+    sha256 = "sha256-Y9g0A9pVjEVcITyaQsyAew6rraTPwZuevSsDD46c0DM=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/adal/default.nix b/pkgs/development/python-modules/adal/default.nix
index d3826013c8ee3..45c256b6647b7 100644
--- a/pkgs/development/python-modules/adal/default.nix
+++ b/pkgs/development/python-modules/adal/default.nix
@@ -1,19 +1,47 @@
-{ lib, buildPythonPackage, fetchPypi
-, requests, pyjwt, python-dateutil }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, httpretty
+, pyjwt
+, pytestCheckHook
+, python-dateutil
+, requests
+}:
 
 buildPythonPackage rec {
   pname = "adal";
   version = "1.2.7";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "d74f45b81317454d96e982fd1c50e6fb5c99ac2223728aea8764433a39f566f1";
+  src = fetchFromGitHub {
+    owner = "AzureAD";
+    repo = "azure-activedirectory-library-for-python";
+    rev = version;
+    hash = "sha256-HE8/P0aohoZNeMdcQVKdz6M31FMrjsd7oVytiaD0idI=";
   };
 
-  propagatedBuildInputs =  [ requests pyjwt python-dateutil ];
+  propagatedBuildInputs = [
+    pyjwt
+    python-dateutil
+    requests
+  ];
+
+  checkInputs = [
+    httpretty
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # AssertionError: 'Mex [23 chars]tp error:...
+    "test_failed_request"
+  ];
+
+  pythonImportsCheck = [
+    "adal"
+  ];
 
   meta = with lib; {
-    description = "Library to make it easy for python application to authenticate to Azure Active Directory (AAD) in order to access AAD protected web resources";
+    description = "Python module to authenticate to Azure Active Directory (AAD) in order to access AAD protected web resources";
     homepage = "https://github.com/AzureAD/azure-activedirectory-library-for-python";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/development/python-modules/adax-local/default.nix b/pkgs/development/python-modules/adax-local/default.nix
new file mode 100644
index 0000000000000..315395522b8be
--- /dev/null
+++ b/pkgs/development/python-modules/adax-local/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, aiohttp
+, bleak
+, buildPythonPackage
+, fetchFromGitHub
+, async-timeout
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "adax-local";
+  version = "0.1.4";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "Danielhiversen";
+    repo = "pyAdaxLocal";
+    rev = version;
+    hash = "sha256-pzhaBRCn02asT0ZLt1EmnaX2g5wr/CoiItWJ/ZYe0Ok=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    bleak
+    async-timeout
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "adax_local"
+  ];
+
+  meta = with lib; {
+    description = "Module for local access to Adax";
+    homepage = "https://github.com/Danielhiversen/pyAdaxLocal";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/adb-shell/default.nix b/pkgs/development/python-modules/adb-shell/default.nix
index bc71e3721288d..907cf155ea102 100644
--- a/pkgs/development/python-modules/adb-shell/default.nix
+++ b/pkgs/development/python-modules/adb-shell/default.nix
@@ -7,6 +7,7 @@
 , libusb1
 , mock
 , pyasn1
+, pythonAtLeast
 , pycryptodome
 , pytestCheckHook
 , rsa
@@ -15,15 +16,15 @@
 buildPythonPackage rec {
   pname = "adb-shell";
   version = "0.4.2";
+  format = "setuptools";
 
   disabled = !isPy3k;
 
-  # pypi does not contain tests, using github sources instead
   src = fetchFromGitHub {
     owner = "JeffLIrion";
     repo = "adb_shell";
     rev = "v${version}";
-    sha256 = "sha256-8tclSjmLlTAIeq6t7YPGtJwvSwtlzQ7sRAQatcQRzeY=";
+    hash = "sha256-8tclSjmLlTAIeq6t7YPGtJwvSwtlzQ7sRAQatcQRzeY=";
   };
 
   propagatedBuildInputs = [
@@ -40,7 +41,16 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "adb_shell" ];
+  disabledTests = lib.optionals (pythonAtLeast "3.10") [
+    # Tests are failing with Python 3.10
+    # https://github.com/JeffLIrion/adb_shell/issues/198
+    "TestAdbDeviceAsync"
+    "TestTcpTransportAsync"
+  ];
+
+  pythonImportsCheck = [
+    "adb_shell"
+  ];
 
   meta = with lib; {
     description = "Python implementation of ADB with shell and FileSync functionality";
diff --git a/pkgs/development/python-modules/adguardhome/default.nix b/pkgs/development/python-modules/adguardhome/default.nix
index dfa576e657c96..134132f9931e4 100644
--- a/pkgs/development/python-modules/adguardhome/default.nix
+++ b/pkgs/development/python-modules/adguardhome/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "adguardhome";
-  version = "0.5.0";
+  version = "0.5.1";
   format = "pyproject";
   disabled = pythonOlder "3.8";
 
@@ -20,9 +20,18 @@ buildPythonPackage rec {
     owner = "frenck";
     repo = "python-${pname}";
     rev = "v${version}";
-    sha256 = "sha256-f8uZF4DXbfiL1nL82shjGNpo6lXSUomRgO1YnNT/GDw=";
+    sha256 = "sha256-HAgt52Bo2NOUkpr5xvWTcRyrLKpfcBDlVAZxgDNI7hY=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "--cov" "" \
+      --replace '"0.0.0"' '"${version}"'
+
+    substituteInPlace tests/test_adguardhome.py \
+      --replace 0.0.0 ${version}
+  '';
+
   nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
@@ -36,10 +45,6 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml --replace "--cov" ""
-  '';
-
   pythonImportsCheck = [ "adguardhome" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/adjusttext/default.nix b/pkgs/development/python-modules/adjusttext/default.nix
index 9685f5c9969db..fd4fb79a59990 100644
--- a/pkgs/development/python-modules/adjusttext/default.nix
+++ b/pkgs/development/python-modules/adjusttext/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "adjusttext";
-  version = "0.7.3";
+  version = "0.7.3.1";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "Phlya";
     repo = pname;
     rev = version;
-    sha256 = "02apaznnnmwmrn342f22dj5dldn56gdl9v5qix07ah6kgp9503yw";
+    sha256 = "1a6hizx1cnplj0irn8idgda2lacsb61dw464cwx798pjr1gd401n";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/advantage-air/default.nix b/pkgs/development/python-modules/advantage-air/default.nix
index 5ce9d196c4c17..de8b51026e54f 100644
--- a/pkgs/development/python-modules/advantage-air/default.nix
+++ b/pkgs/development/python-modules/advantage-air/default.nix
@@ -1,21 +1,33 @@
-{ aiohttp, buildPythonPackage, fetchPypi, lib, pythonOlder }:
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+}:
 
 buildPythonPackage rec {
-  pname = "advantage_air";
-  version = "0.2.5";
+  pname = "advantage-air";
+  version = "0.3.0";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
-    inherit version pname;
-    sha256 = "sha256-38csg1Cvpz4dkRCwlNc8+af7aJ5xDrZO1D8cCaBlePA=";
+    pname = "advantage_air";
+    inherit version;
+    hash = "sha256-K+UhvWwV2Icpx53l3zFhD7LTwn0otsHpbUfJ4Vu0Et0=";
   };
 
-  propagatedBuildInputs = [ aiohttp ];
+  propagatedBuildInputs = [
+    aiohttp
+  ];
 
   # No tests
   doCheck = false;
-  pythonImportsCheck = [ "advantage_air" ];
+
+  pythonImportsCheck = [
+    "advantage_air"
+  ];
 
   meta = with lib; {
     description = "API helper for Advantage Air's MyAir and e-zone API";
diff --git a/pkgs/development/python-modules/aenum/default.nix b/pkgs/development/python-modules/aenum/default.nix
index c63b3b4ffdf88..a360959a9a73c 100644
--- a/pkgs/development/python-modules/aenum/default.nix
+++ b/pkgs/development/python-modules/aenum/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "aenum";
-  version = "3.1.5";
+  version = "3.1.8";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-LrrYWQtqAYPA2Yk1I7RY7c6YeuRTMznFrBhc+sMtrxo=";
+    sha256 = "8dbe15f446eb8264b788dfeca163fb0a043d408d212152397dc11377b851e4ae";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/afdko/default.nix b/pkgs/development/python-modules/afdko/default.nix
index d0de050c86f97..66f12ffd54b0b 100644
--- a/pkgs/development/python-modules/afdko/default.nix
+++ b/pkgs/development/python-modules/afdko/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi, pythonOlder
+{ lib, stdenv, buildPythonPackage, fetchPypi, fetchpatch, pythonOlder
 , fonttools, defcon, lxml, fs, unicodedata2, zopfli, brotlipy, fontpens
 , brotli, fontmath, mutatormath, booleanoperations
 , ufoprocessor, ufonormalizer, psautohint, tqdm
@@ -37,8 +37,15 @@ buildPythonPackage rec {
   patches = [
     # 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
+
+    # Fix compatibility with latest fonttools.
+    (fetchpatch {
+      url = "https://github.com/adobe-type-tools/afdko/commit/120752c50a562e4f6c12ff4be1e3bd96ed664e82.patch";
+      sha256 = "RDGIpNAuCmK+zqZOeOK7ddCjr9BuqPpcnbnxdtoE48M=";
+    })
   ];
 
   # setup.py will always (re-)execute cmake in buildPhase
@@ -80,7 +87,7 @@ buildPythonPackage rec {
     "test_filename_without_dir"
     "test_overwrite"
     "test_options"
-  ] ++ lib.optionals stdenv.hostPlatform.isAarch64 [
+  ] ++ lib.optionals (stdenv.hostPlatform.isAarch64 || stdenv.hostPlatform.isRiscV) [
     # aarch64-only (?) failure, unknown reason so far
     # https://github.com/adobe-type-tools/afdko/issues/1425
     "test_spec"
diff --git a/pkgs/development/python-modules/affinity/default.nix b/pkgs/development/python-modules/affinity/default.nix
deleted file mode 100644
index c6eb9543024bc..0000000000000
--- a/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/pkgs/development/python-modules/afsapi/default.nix b/pkgs/development/python-modules/afsapi/default.nix
index 8ad6fa98ff6e9..4bc3532f5b572 100644
--- a/pkgs/development/python-modules/afsapi/default.nix
+++ b/pkgs/development/python-modules/afsapi/default.nix
@@ -6,22 +6,29 @@
 , pytest-aiohttp
 , pytestCheckHook
 , pythonOlder
+, setuptools-scm
 }:
 
 buildPythonPackage rec {
   pname = "afsapi";
-  version = "0.0.4";
+  version = "0.2.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
-    owner = "zhelev";
+    owner = "wlcrs";
     repo = "python-afsapi";
     rev = version;
-    sha256 = "aevxhHuRedDs0JxeMlYSKHDQwcIs7miRm4FCtssdE0w=";
+    hash = "sha256-C4rxlkylWGsDsnMPuecrC2ELj1PvP6EelZ/kzTn4Brk=";
   };
 
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [
     aiohttp
     lxml
@@ -42,7 +49,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python implementation of the Frontier Silicon API";
-    homepage = "https://github.com/zhelev/python-afsapi";
+    homepage = "https://github.com/wlcrs/python-afsapi";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/ailment/default.nix b/pkgs/development/python-modules/ailment/default.nix
index ca74671ab81a3..94c47ab62a0e8 100644
--- a/pkgs/development/python-modules/ailment/default.nix
+++ b/pkgs/development/python-modules/ailment/default.nix
@@ -7,20 +7,25 @@
 
 buildPythonPackage rec {
   pname = "ailment";
-  version = "9.1.10913";
+  version = "9.1.11752";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "angr";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-S+ntSC9KySj2njkxEkr7p2TDsBqY0Gf+zzwomnGwSEk=";
+    hash = "sha256-UbcPxYEyuX8W0uZXeCu00yBshdcPBAQKzZqhAYXTf+8=";
   };
 
-  propagatedBuildInputs = [ pyvex ];
+  propagatedBuildInputs = [
+    pyvex
+  ];
 
   # Tests depend on angr (possibly a circular dependency)
   doCheck = false;
+
   #pythonImportsCheck = [ "ailment" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/aio-geojson-client/default.nix b/pkgs/development/python-modules/aio-geojson-client/default.nix
index f347ed5cd1bfb..f00a75961b9c3 100644
--- a/pkgs/development/python-modules/aio-geojson-client/default.nix
+++ b/pkgs/development/python-modules/aio-geojson-client/default.nix
@@ -8,17 +8,21 @@
 , haversine
 , pytest-asyncio
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "aio-geojson-client";
-  version = "0.15";
+  version = "0.16";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "exxamalte";
     repo = "python-aio-geojson-client";
     rev = "v${version}";
-    sha256 = "0sbzrzmny7x4bkbg6z0cjn4d10r50nxdyaq7g6lagwd8ijpkg8l3";
+    hash = "sha256-u3SwrSxeBJrBTHfqKY/mAb2p1jqW2AvRsHomKsI81gM=";
   };
 
   propagatedBuildInputs = [
@@ -34,7 +38,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "aio_geojson_client" ];
+  pythonImportsCheck = [
+    "aio_geojson_client"
+  ];
 
   meta = with lib; {
     description = "Python module for accessing GeoJSON feeds";
diff --git a/pkgs/development/python-modules/aio-geojson-geonetnz-quakes/default.nix b/pkgs/development/python-modules/aio-geojson-geonetnz-quakes/default.nix
index b42ba55bfa747..f3076160f9c61 100644
--- a/pkgs/development/python-modules/aio-geojson-geonetnz-quakes/default.nix
+++ b/pkgs/development/python-modules/aio-geojson-geonetnz-quakes/default.nix
@@ -7,17 +7,21 @@
 , pytest-asyncio
 , pytestCheckHook
 , pytz
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "aio-geojson-geonetnz-quakes";
-  version = "0.13";
+  version = "0.14";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "exxamalte";
     repo = "python-aio-geojson-geonetnz-quakes";
     rev = "v${version}";
-    sha256 = "sha256-M1QleYVPqLFjxBmOlNJdydxDTk0JJf+GYVtOTC3YUTA=";
+    hash = "sha256-T3vQodb0/3YEjsyHLSI8DBKK75J8hvsaBqyQI7GkT3U=";
   };
 
   propagatedBuildInputs = [
@@ -32,7 +36,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "aio_geojson_geonetnz_quakes" ];
+  pythonImportsCheck = [
+    "aio_geojson_geonetnz_quakes"
+  ];
 
   meta = with lib; {
     description = "Python module for accessing the GeoNet NZ Quakes GeoJSON feeds";
diff --git a/pkgs/development/python-modules/aio-geojson-geonetnz-volcano/default.nix b/pkgs/development/python-modules/aio-geojson-geonetnz-volcano/default.nix
index 3cc46ae3afb97..3ba2b430801eb 100644
--- a/pkgs/development/python-modules/aio-geojson-geonetnz-volcano/default.nix
+++ b/pkgs/development/python-modules/aio-geojson-geonetnz-volcano/default.nix
@@ -8,17 +8,21 @@
 , pytest-asyncio
 , pytestCheckHook
 , pytz
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "aio-geojson-geonetnz-volcano";
-  version = "0.6";
+  version = "0.7";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "exxamalte";
     repo = "python-aio-geojson-geonetnz-volcano";
     rev = "v${version}";
-    sha256 = "0n97kij2fprzajh57sy1z57kaqiil7pd5y67lq2hqm2cnvkar5ci";
+    sha256 = "sha256-2iVUHMk4ydmGmmGS6lJV5pvxJHyP9bRSeh/dOXbquE0=";
   };
 
   propagatedBuildInputs = [
@@ -34,7 +38,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "aio_geojson_geonetnz_volcano" ];
+  pythonImportsCheck = [
+    "aio_geojson_geonetnz_volcano"
+  ];
 
   meta = with lib; {
     description = "Python module for accessing the GeoNet NZ Volcanic GeoJSON feeds";
diff --git a/pkgs/development/python-modules/aio-geojson-nsw-rfs-incidents/default.nix b/pkgs/development/python-modules/aio-geojson-nsw-rfs-incidents/default.nix
index 792f91bc7f112..c790188ea2699 100644
--- a/pkgs/development/python-modules/aio-geojson-nsw-rfs-incidents/default.nix
+++ b/pkgs/development/python-modules/aio-geojson-nsw-rfs-incidents/default.nix
@@ -8,17 +8,21 @@
 , pytest-asyncio
 , pytestCheckHook
 , pytz
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "aio-geojson-nsw-rfs-incidents";
-  version = "0.4";
+  version = "0.5";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "exxamalte";
     repo = "python-aio-geojson-nsw-rfs-incidents";
     rev = "v${version}";
-    sha256 = "sha256-o9tuoJ7VZ6bg0rYeRWClKxdbxxj6wPgkSF7ZdOfmJew=";
+    sha256 = "sha256-rWlt4MYnuY+CzszFVDniWBnqpQW3WldSEl00ns3ko3U=";
   };
 
   propagatedBuildInputs = [
@@ -34,7 +38,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "aio_geojson_nsw_rfs_incidents" ];
+  pythonImportsCheck = [
+    "aio_geojson_nsw_rfs_incidents"
+  ];
 
   meta = with lib; {
     description = "Python module for accessing the NSW Rural Fire Service incidents feeds";
diff --git a/pkgs/development/python-modules/aio-georss-client/default.nix b/pkgs/development/python-modules/aio-georss-client/default.nix
index 2b40028721a7c..586cc6b74a827 100644
--- a/pkgs/development/python-modules/aio-georss-client/default.nix
+++ b/pkgs/development/python-modules/aio-georss-client/default.nix
@@ -15,14 +15,16 @@
 
 buildPythonPackage rec {
   pname = "aio-georss-client";
-  version = "0.8";
+  version = "0.9";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "exxamalte";
     repo = "python-aio-georss-client";
     rev = "v${version}";
-    sha256 = "0447scp5n906p8kfzy0lwdq06f6hkq71r2zala6g3vr6b3kla6h8";
+    sha256 = "sha256-cnOW9Ey6WdL2bAqPop5noETn12OeeKsMkWHKGmYCjJU=";
   };
 
   propagatedBuildInputs = [
@@ -40,7 +42,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "aio_georss_client" ];
+  pythonImportsCheck = [
+    "aio_georss_client"
+  ];
 
   meta = with lib; {
     description = "Python library for accessing GeoRSS feeds";
diff --git a/pkgs/development/python-modules/aio-georss-gdacs/default.nix b/pkgs/development/python-modules/aio-georss-gdacs/default.nix
index 6b6d295f8b86e..ed8b0ce2a8131 100644
--- a/pkgs/development/python-modules/aio-georss-gdacs/default.nix
+++ b/pkgs/development/python-modules/aio-georss-gdacs/default.nix
@@ -12,6 +12,8 @@
 buildPythonPackage rec {
   pname = "aio-georss-gdacs";
   version = "0.5";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
@@ -32,7 +34,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "aio_georss_gdacs" ];
+  pythonImportsCheck = [
+    "aio_georss_gdacs"
+  ];
 
   meta = with lib; {
     description = "Python library for accessing GeoRSS feeds";
diff --git a/pkgs/development/python-modules/aioapns/default.nix b/pkgs/development/python-modules/aioapns/default.nix
index 47e8de0f8d26a..0a9b8fffae74a 100644
--- a/pkgs/development/python-modules/aioapns/default.nix
+++ b/pkgs/development/python-modules/aioapns/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "aioapns";
-  version = "2.0.2";
+  version = "2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ea58ce685aa6d0ffbdc3be4a6999c7268b9c765f806d3e4da7677c098fb72cbc";
+    sha256 = "2ce526910bc2514a84b8105abe80508526ceafc0097c89f86bbbc501f8666c99";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/aioaseko/default.nix b/pkgs/development/python-modules/aioaseko/default.nix
new file mode 100644
index 0000000000000..1c31dac5f5964
--- /dev/null
+++ b/pkgs/development/python-modules/aioaseko/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "aioaseko";
+  version = "0.0.2";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "milanmeu";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-nJRVNBYfBcLYnBsTpQZYMHYWh0+hQObVKJ7sOXFwDjc=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "aioaseko"
+  ];
+
+  meta = with lib; {
+    description = "Module to interact with the Aseko Pool Live API";
+    homepage = "https://github.com/milanmeu/aioaseko";
+    license = with licenses; [ lgpl3Plus ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiobotocore/default.nix b/pkgs/development/python-modules/aiobotocore/default.nix
index 9fbbbac43ef8a..ef39f451d59d0 100644
--- a/pkgs/development/python-modules/aiobotocore/default.nix
+++ b/pkgs/development/python-modules/aiobotocore/default.nix
@@ -10,18 +10,18 @@
 
 buildPythonPackage rec {
   pname = "aiobotocore";
-  version = "1.4.2";
+  version = "2.1.1";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c2f4ef325aaa839e9e2a53346b4c1c203656783a4985ab36fd4c2a9ef2dc1d2b";
+    sha256 = "sha256-2+mrmXhRwkWLB6hfaCvizPNdZ51d4Pj1cSKfdArXunE=";
   };
 
   # relax version constraints: aiobotocore works with newer botocore versions
   # the pinning used to match some `extras_require` we're not using.
   postPatch = ''
-    substituteInPlace setup.py --replace 'botocore>=1.20.106,<1.20.107' 'botocore'
+    sed -i "s/'botocore>=.*'/'botocore'/" setup.py
   '';
 
   propagatedBuildInputs = [ wrapt aiohttp aioitertools botocore ];
diff --git a/pkgs/development/python-modules/aioconsole/default.nix b/pkgs/development/python-modules/aioconsole/default.nix
index 795b50d811668..c88f848593911 100644
--- a/pkgs/development/python-modules/aioconsole/default.nix
+++ b/pkgs/development/python-modules/aioconsole/default.nix
@@ -16,14 +16,16 @@
 # wrapped to be able to find aioconsole and any other packages.
 buildPythonPackage rec {
   pname = "aioconsole";
-  version = "0.3.3";
-  disabled = pythonOlder "3.6";
+  version = "0.4.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "vxgmichel";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1hjdhj1y9xhq1i36r7g2lccsicbvgm7lzkyrxygs16dw11ah46mx";
+    sha256 = "sha256-OCsao4oerHGpzsoqPP3EXJVs6NZeLNsoaC83k7oX688=";
   };
 
   checkInputs = [
@@ -36,7 +38,13 @@ buildPythonPackage rec {
       --replace "--cov aioconsole --count 2" ""
   '';
 
-  pythonImportsCheck = [ "aioconsole" ];
+  disabledTests = [
+    "test_interact_syntax_error"
+  ];
+
+  pythonImportsCheck = [
+    "aioconsole"
+  ];
 
   meta = with lib; {
     description = "Asynchronous console and interfaces for asyncio";
diff --git a/pkgs/development/python-modules/aiocurrencylayer/default.nix b/pkgs/development/python-modules/aiocurrencylayer/default.nix
index 777c8905c7d55..0eb84fdba662c 100644
--- a/pkgs/development/python-modules/aiocurrencylayer/default.nix
+++ b/pkgs/development/python-modules/aiocurrencylayer/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "aiocurrencylayer";
-  version = "1.0.2";
+  version = "1.0.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "home-assistant-ecosystem";
     repo = pname;
     rev = version;
-    sha256 = "EVqnrMatOk2I6hiCkiT5FOWvMY9LEK8LlSHqi0x9kuQ=";
+    sha256 = "sha256-t2Pcoakk25vtUYajIZVITsrEUSdwwiA3fbdswy3n9P8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/aiodiscover/default.nix b/pkgs/development/python-modules/aiodiscover/default.nix
index 268654ea9baa8..4e2b0c5897fc8 100644
--- a/pkgs/development/python-modules/aiodiscover/default.nix
+++ b/pkgs/development/python-modules/aiodiscover/default.nix
@@ -3,6 +3,7 @@
 , dnspython
 , fetchFromGitHub
 , ifaddr
+, netifaces
 , pyroute2
 , pytest-asyncio
 , pytestCheckHook
@@ -11,18 +12,21 @@
 
 buildPythonPackage rec {
   pname = "aiodiscover";
-  version = "1.4.5";
+  version = "1.4.7";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "bdraco";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-QfeAEFB5WikuriBTcfFIgnJw5H4vEcGIVX47fyDb1Dk=";
+    sha256 = "sha256-NtiShZpPFl+elYNPLaKAg6uV8pDJv0pyR+NTUiFoMm0=";
   };
 
   propagatedBuildInputs = [
     dnspython
+    netifaces
     pyroute2
     ifaddr
   ];
@@ -43,7 +47,9 @@ buildPythonPackage rec {
     "test_async_discover_hosts"
   ];
 
-  pythonImportsCheck = ["aiodiscover"];
+  pythonImportsCheck = [
+    "aiodiscover"
+  ];
 
   meta = with lib; {
     description = "Python module to discover hosts via ARP and PTR lookup";
diff --git a/pkgs/development/python-modules/aioesphomeapi/default.nix b/pkgs/development/python-modules/aioesphomeapi/default.nix
index 5023b03252335..06389d50677b7 100644
--- a/pkgs/development/python-modules/aioesphomeapi/default.nix
+++ b/pkgs/development/python-modules/aioesphomeapi/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "aioesphomeapi";
-  version = "10.6.0";
+  version = "10.8.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "esphome";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1z9pybis8yi938i3cgzma4w452ik9vggyyhs3y542zpk4183d7xw";
+    sha256 = "sha256-zvilMBx9H2VDmu13IiAiCqXEGkbpAJpGnt4Ea7FlGVI=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/aioftp/default.nix b/pkgs/development/python-modules/aioftp/default.nix
index e9988249e270c..fab3a32a6a0ec 100644
--- a/pkgs/development/python-modules/aioftp/default.nix
+++ b/pkgs/development/python-modules/aioftp/default.nix
@@ -3,7 +3,6 @@
 , buildPythonPackage
 , fetchPypi
 , pytest-asyncio
-, pytest-cov
 , pytestCheckHook
 , pythonOlder
 , siosocks
@@ -29,7 +28,6 @@ buildPythonPackage rec {
   checkInputs = [
     async-timeout
     pytest-asyncio
-    pytest-cov
     pytestCheckHook
     trustme
   ];
diff --git a/pkgs/development/python-modules/aiogithubapi/default.nix b/pkgs/development/python-modules/aiogithubapi/default.nix
index 9249df059bf0b..08ff1c92dd02a 100644
--- a/pkgs/development/python-modules/aiogithubapi/default.nix
+++ b/pkgs/development/python-modules/aiogithubapi/default.nix
@@ -12,7 +12,8 @@
 
 buildPythonPackage rec {
   pname = "aiogithubapi";
-  version = "21.11.0";
+  version = "22.2.0";
+  format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
@@ -20,16 +21,9 @@ buildPythonPackage rec {
     owner = "ludeeus";
     repo = pname;
     rev = version;
-    sha256 = "sha256-sxWgLd+oQv9qNOpyAYXsBcqGbo/ugNXzGF5nbdcNLFw=";
+    sha256 = "sha256-2M0EcDs3WmgG2tusvnXK750+ALE93RktlPyQO36+Ojw=";
   };
 
-  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}",'
-  '';
-
   propagatedBuildInputs = [
     aiohttp
     async-timeout
@@ -42,7 +36,16 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "aiogithubapi" ];
+  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 = [
+    "aiogithubapi"
+  ];
 
   meta = with lib; {
     description = "Python client for the GitHub API";
diff --git a/pkgs/development/python-modules/aioharmony/default.nix b/pkgs/development/python-modules/aioharmony/default.nix
index fea1956e3311a..6e77c5589ec0f 100644
--- a/pkgs/development/python-modules/aioharmony/default.nix
+++ b/pkgs/development/python-modules/aioharmony/default.nix
@@ -9,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "aioharmony";
-  version = "0.2.8";
+  version = "0.2.9";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0adf08955810a227db489556dc3ca808e4f825a00183f613797856114c2a2a47";
+    sha256 = "sha256-T30pLzPWD+5pb0ShkpNdiBFO45RdiMYgCOSg8rx+t+Y=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/aiohomekit/default.nix b/pkgs/development/python-modules/aiohomekit/default.nix
index 1caf183fef808..a2c3d182be1cb 100644
--- a/pkgs/development/python-modules/aiohomekit/default.nix
+++ b/pkgs/development/python-modules/aiohomekit/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "aiohomekit";
-  version = "0.6.4";
+  version = "0.6.11";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "Jc2k";
     repo = pname;
     rev = version;
-    sha256 = "sha256-+W1nsJsiVL4hjtNUyKOsQNyX0Bki/C1FvmoD2OCwqeM=";
+    sha256 = "1rrdzzb2gcl3lc8l5vb99hy2lmdj5723fds2q78n4sf83y93czw7";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/aiohttp-apispec/default.nix b/pkgs/development/python-modules/aiohttp-apispec/default.nix
new file mode 100644
index 0000000000000..ffd8e698c58e9
--- /dev/null
+++ b/pkgs/development/python-modules/aiohttp-apispec/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, aiohttp
+, apispec
+, buildPythonPackage
+, callPackage
+, fetchFromGitHub
+, fetchPypi
+, jinja2
+, packaging
+, pytest-aiohttp
+, pytestCheckHook
+, pythonOlder
+, webargs
+}:
+
+buildPythonPackage rec {
+  pname = "aiohttp-apispec";
+  version = "3.0.0b1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "maximdanilchenko";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-LGdi5ZhJ1G0GxUJVBZnwW3Q+x3Yo9FRV9b6REPlq7As=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    apispec
+    jinja2
+    packaging
+    webargs
+  ];
+
+  checkInputs = [
+    pytest-aiohttp
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace requirements.txt \
+      --replace "jinja2<3.0" "jinja2"
+  '';
+
+  pythonImportsCheck = [
+    "aiohttp_apispec"
+  ];
+
+  meta = with lib; {
+    description = "Build and document REST APIs with aiohttp and apispec";
+    homepage = "https://github.com/maximdanilchenko/aiohttp-apispec/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ viric ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiohttp-apispec/unstable.nix b/pkgs/development/python-modules/aiohttp-apispec/unstable.nix
deleted file mode 100644
index 73a28de7b40d3..0000000000000
--- a/pkgs/development/python-modules/aiohttp-apispec/unstable.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ 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/pkgs/development/python-modules/aiohttp-remotes/default.nix b/pkgs/development/python-modules/aiohttp-remotes/default.nix
index 1867567178e43..be33becb26c29 100644
--- a/pkgs/development/python-modules/aiohttp-remotes/default.nix
+++ b/pkgs/development/python-modules/aiohttp-remotes/default.nix
@@ -10,15 +10,15 @@
 
 buildPythonPackage rec {
   pname = "aiohttp-remotes";
-  version = "1.1.0";
-  format = "setuptools";
+  version = "1.2.0";
+  format = "flit";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     pname = "aiohttp_remotes";
     inherit version;
-    sha256 = "e44f2c5fd5fc3305477c89bb25f14570589100cc58c48b36745d4239839d3174";
+    sha256 = "f95c3a6be5e2de746a85ce9af49ec548da6db8378d7e81bb171ec77b13562a6c";
   };
 
   propagatedBuildInputs = [
@@ -42,7 +42,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A set of useful tools for aiohttp.web server";
+    description = "Set of useful tools for aiohttp.web server";
     homepage = "https://github.com/wikibusiness/aiohttp-remotes";
     license = licenses.mit;
     maintainers = with maintainers; [ qyliss ];
diff --git a/pkgs/development/python-modules/aiohttp-retry/default.nix b/pkgs/development/python-modules/aiohttp-retry/default.nix
new file mode 100644
index 0000000000000..3cd0fe0984267
--- /dev/null
+++ b/pkgs/development/python-modules/aiohttp-retry/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pytest-aiohttp
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "aiohttp-retry";
+  version = "2.5.6";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "inyutin";
+    repo = "aiohttp_retry";
+    rev = "v${version}";
+    hash = "sha256-jyt4YPn3gSgR1YfHYLs+5VCsjAk9Ij+2m5Kzy51CnLk=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  checkInputs = [
+    pytest-aiohttp
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "aiohttp_retry"
+  ];
+
+  meta = with lib; {
+    description = "Retry client for aiohttp";
+    homepage = "https://github.com/inyutin/aiohttp_retry";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiohttp-socks/default.nix b/pkgs/development/python-modules/aiohttp-socks/default.nix
index e782eed49b7f4..2a6e8b2c1b868 100644
--- a/pkgs/development/python-modules/aiohttp-socks/default.nix
+++ b/pkgs/development/python-modules/aiohttp-socks/default.nix
@@ -7,7 +7,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     inherit version;
     pname = "aiohttp_socks";
-    sha256 = "sha256-IhXKxIke8/oUt9YA7TQ+0PCmcMI7EOQUKqhis9sgNBo=";
+    sha256 = "2215cac4891ef3fa14b7d600ed343ed0f0a670c23b10e4142aa862b3db20341a";
   };
 
   propagatedBuildInputs = [ aiohttp attrs python-socks ];
diff --git a/pkgs/development/python-modules/aiohue/default.nix b/pkgs/development/python-modules/aiohue/default.nix
index 1f479311af05b..ece6d6140b3bf 100644
--- a/pkgs/development/python-modules/aiohue/default.nix
+++ b/pkgs/development/python-modules/aiohue/default.nix
@@ -3,15 +3,19 @@
 , fetchPypi
 , aiohttp
 , asyncio-throttle
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "aiohue";
-  version = "3.0.11";
+  version = "4.2.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-McC5DX3Cti9eGpPniywNY2DvbAqHSFwhek85TJN/zn0=";
+    hash = "sha256-bcSCYNJt9xYBMmuZYM6s+PWV0TAUFOn3ibHE0KRX+iw=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/aiohwenergy/default.nix b/pkgs/development/python-modules/aiohwenergy/default.nix
index b9b2801f750db..3e7c4c7b85a56 100644
--- a/pkgs/development/python-modules/aiohwenergy/default.nix
+++ b/pkgs/development/python-modules/aiohwenergy/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "aiohwenergy";
-  version = "0.4.0";
+  version = "0.8.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "DCSBL";
     repo = pname;
     rev = version;
-    sha256 = "Rs7kD+jN/z0j4KmkitquB+cm2UcYG87YHczZR0A4axI=";
+    sha256 = "sha256-WfkwIxyDzLNzhWNWST/V3iN9Bhu2oXDwGiA5UXCq5ho=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/aioitertools/default.nix b/pkgs/development/python-modules/aioitertools/default.nix
index 813eb00b1fb64..cae0b10ea6907 100644
--- a/pkgs/development/python-modules/aioitertools/default.nix
+++ b/pkgs/development/python-modules/aioitertools/default.nix
@@ -1,29 +1,55 @@
 { lib
-
 , buildPythonPackage
+, fetchpatch
 , fetchPypi
+, pythonAtLeast
 , pythonOlder
+
+# native
+, flit-core
+
+# propagates
 , typing-extensions
-, coverage
+
+# tests
 , python
-, toml
 }:
 
 buildPythonPackage rec {
   pname = "aioitertools";
   version = "0.8.0";
-  disabled = pythonOlder "3.7";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "8b02facfbc9b0f1867739949a223f3d3267ed8663691cc95abd94e2c1d8c2b46";
   };
 
-  propagatedBuildInputs = [ typing-extensions ];
-  checkInputs = [ coverage toml ];
+  patches = lib.optionals (pythonAtLeast "3.10") [
+    (fetchpatch {
+      # Fix TypeError: wait() got an unexpected keyword argument 'loop'
+      # See https://github.com/omnilib/aioitertools/issues/84
+      url = "https://raw.githubusercontent.com/archlinux/svntogit-community/packages/python-aioitertools/trunk/python310.patch";
+      sha256 = "sha256-F10sduGaLBcxEoP83N/lGpZIlzkM2JTnQnhHKFwc7P0=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    flit-core
+  ];
+
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
+    typing-extensions
+  ];
+
+  pythonImportsCheck = [
+    "aioitertools"
+  ];
 
   checkPhase = ''
-    ${python.interpreter} -m coverage run -m aioitertools.tests
+    ${python.interpreter} -m unittest discover
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/aiolookin/default.nix b/pkgs/development/python-modules/aiolookin/default.nix
index 0af203d8fb7be..2de513e6fbcbd 100644
--- a/pkgs/development/python-modules/aiolookin/default.nix
+++ b/pkgs/development/python-modules/aiolookin/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "aiolookin";
-  version = "0.0.4";
+  version = "0.1.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "ANMalko";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-Kqys76c/9Mw3ETgF0N4rA9mz5DELwTMjAK38PPN8Ahs=";
+    sha256 = "sha256-l3A1fOydAUQ4arR7Zl/PDYksp53C/56fVVcz35q1hjY=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/aiomusiccast/default.nix b/pkgs/development/python-modules/aiomusiccast/default.nix
index 6d1116bfefa85..02d7f565c3c1a 100644
--- a/pkgs/development/python-modules/aiomusiccast/default.nix
+++ b/pkgs/development/python-modules/aiomusiccast/default.nix
@@ -11,7 +11,6 @@ buildPythonPackage rec {
   version = "0.14.3";
 
   format = "pyproject";
-
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
@@ -21,6 +20,11 @@ buildPythonPackage rec {
     hash = "sha256-ELdNxeU9dajWr4VeOyuvNrSi7B+ImVJM/BlZsw3tcKE=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace '"0.0.0"' '"${version}"'
+  '';
+
   nativeBuildInputs = [
     poetry-core
   ];
diff --git a/pkgs/development/python-modules/aionanoleaf/default.nix b/pkgs/development/python-modules/aionanoleaf/default.nix
index 61b958d84486a..40686bf7d113a 100644
--- a/pkgs/development/python-modules/aionanoleaf/default.nix
+++ b/pkgs/development/python-modules/aionanoleaf/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "aionanoleaf";
-  version = "0.1.1";
+  version = "0.2.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "milanmeu";
     repo = pname;
     rev = "v${version}";
-    sha256 = "10gi8fpv3xkdjaqig84723m3j0kxgxvqwqvjxmysq2sw4cjmsvz6";
+    sha256 = "sha256-bz568DlodWtSu2WTTd/QMhdiX9IkllW7UYVXuNlKFaY=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/aiooncue/default.nix b/pkgs/development/python-modules/aiooncue/default.nix
new file mode 100644
index 0000000000000..3e9cc46b16b0e
--- /dev/null
+++ b/pkgs/development/python-modules/aiooncue/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "aiooncue";
+  version = "0.3.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "bdraco";
+    repo = pname;
+    rev = version;
+    hash = "sha256-rzgSvgVfpz2AVwqnat+TO+QhA3KcXV/a1HDNAP1fNPM=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  # Module doesn't have tests
+  doCheck = false;
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace '"pytest-runner",' ""
+  '';
+
+  pythonImportsCheck = [
+    "aiooncue"
+  ];
+
+  meta = with lib; {
+    description = "Module to interact with the Kohler Oncue API";
+    homepage = "https://github.com/bdraco/aiooncue";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiopvpc/default.nix b/pkgs/development/python-modules/aiopvpc/default.nix
index ae069ae182664..54e237898447b 100644
--- a/pkgs/development/python-modules/aiopvpc/default.nix
+++ b/pkgs/development/python-modules/aiopvpc/default.nix
@@ -33,10 +33,11 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     aiohttp
-    backports-zoneinfo
     holidays
     tzdata
     async-timeout
+  ] ++ lib.optionals (pythonOlder "3.9") [
+    backports-zoneinfo
   ];
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/aiopyarr/default.nix b/pkgs/development/python-modules/aiopyarr/default.nix
new file mode 100644
index 0000000000000..54eab469629fe
--- /dev/null
+++ b/pkgs/development/python-modules/aiopyarr/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, aiohttp
+, aresponses
+, buildPythonPackage
+, fetchFromGitHub
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "aiopyarr";
+  version = "22.2.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "tkdrob";
+    repo = pname;
+    rev = version;
+    hash = "sha256-SEF47hz5XbATuuuO5t5H40+kT7RWSBjP0BfYd38pNSw=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  checkInputs = [
+    aresponses
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "aiopyarr"
+  ];
+
+  meta = with lib; {
+    description = "Python API client for Lidarr/Radarr/Readarr/Sonarr";
+    homepage = "https://github.com/tkdrob/aiopyarr";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aioredis/default.nix b/pkgs/development/python-modules/aioredis/default.nix
index 807b112772cf0..5ea4822789445 100644
--- a/pkgs/development/python-modules/aioredis/default.nix
+++ b/pkgs/development/python-modules/aioredis/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "aioredis";
-  version = "2.0.0";
+  version = "2.0.1";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3a2de4b614e6a5f8e104238924294dc4e811aefbe17ddf52c04a93cbf06e67db";
+    sha256 = "eaa51aaf993f2d71f54b70527c440437ba65340588afeb786cd87c55c89cd98e";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/aioresponses/default.nix b/pkgs/development/python-modules/aioresponses/default.nix
index 2a3a2e60be794..a23b1eca77ca1 100644
--- a/pkgs/development/python-modules/aioresponses/default.nix
+++ b/pkgs/development/python-modules/aioresponses/default.nix
@@ -11,12 +11,14 @@
 
 buildPythonPackage rec {
   pname = "aioresponses";
-  version = "0.7.2";
+  version = "0.7.3";
+  format = "setuptools";
+
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-guSV0Ri3SJaqW01H4X7/teLMeD5RCuOVzq3l6Hyr6Jo=";
+    sha256 = "sha256-LGTtVxDujLTpWMVpGE2tEvTJzVk5E1yzj4jGqCYczrM=";
   };
 
   nativeBuildInputs = [
@@ -39,7 +41,9 @@ buildPythonPackage rec {
     "test_pass_through_with_origin_params"
   ];
 
-  pythonImportsCheck = [ "aioresponses" ];
+  pythonImportsCheck = [
+    "aioresponses"
+  ];
 
   meta = {
     description = "A helper to mock/fake web requests in python aiohttp package";
diff --git a/pkgs/development/python-modules/aioridwell/default.nix b/pkgs/development/python-modules/aioridwell/default.nix
index 9f2c665f67544..7c3def1ec5547 100644
--- a/pkgs/development/python-modules/aioridwell/default.nix
+++ b/pkgs/development/python-modules/aioridwell/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "aioridwell";
-  version = "2021.10.0";
+  version = "2021.12.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "sha256-h89gfdZvk7H22xAczaPMscTYZu0YeFxvFfL6/Oz2cJw=";
+    sha256 = "sha256-QFUXWleHRMBgaRsMNt2xFb3XcbCNI2kKQHKCBrUuG6Q=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/aiorun/default.nix b/pkgs/development/python-modules/aiorun/default.nix
index ddcd11d4eebd8..bc6954900ae22 100644
--- a/pkgs/development/python-modules/aiorun/default.nix
+++ b/pkgs/development/python-modules/aiorun/default.nix
@@ -4,21 +4,21 @@
 , pythonOlder
 , pygments
 , pytestCheckHook
-, pytest-cov
 , uvloop
 }:
 
 buildPythonPackage rec {
   pname = "aiorun";
-  version = "2021.8.1";
+  version = "2021.10.1";
   format = "flit";
+
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "cjrh";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-aehYPZ1+GEO+bNSsE5vVgjtVo4MRMH+vNurk+bJ1/Io=";
+    hash = "sha256-9e1vUWDBv3BYWuKR/rZUvaIxFFetzBQaygXKnl4PDd8=";
   };
 
   propagatedBuildInputs = [
@@ -27,7 +27,6 @@ buildPythonPackage rec {
 
   checkInputs = [
     pytestCheckHook
-    pytest-cov
     uvloop
   ];
 
@@ -36,7 +35,9 @@ buildPythonPackage rec {
     export HOME=$TMPDIR
   '';
 
-  pythonImportsCheck = [ "aiorun" ];
+  pythonImportsCheck = [
+    "aiorun"
+  ];
 
   meta = with lib; {
     description = "Boilerplate for asyncio applications";
diff --git a/pkgs/development/python-modules/aiosenseme/default.nix b/pkgs/development/python-modules/aiosenseme/default.nix
new file mode 100644
index 0000000000000..ff90bed8e5a5a
--- /dev/null
+++ b/pkgs/development/python-modules/aiosenseme/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, ifaddr
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "aiosenseme";
+  version = "0.6.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "bdraco";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-ShK4DP1lAtAFI6z2kf5T1ecbNTKUn2kqUjps2ABRegg=";
+  };
+
+  propagatedBuildInputs = [
+    ifaddr
+  ];
+
+  pythonImportsCheck = [
+    "aiosenseme"
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Module to interact with SenseME fans and lights by Big Ass Fans";
+    homepage = "https://github.com/bdraco/aiosenseme";
+    license = with licenses; [ gpl3Only ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aioshelly/default.nix b/pkgs/development/python-modules/aioshelly/default.nix
index f3bb26c2780ed..f2bd2f0d36de6 100644
--- a/pkgs/development/python-modules/aioshelly/default.nix
+++ b/pkgs/development/python-modules/aioshelly/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "aioshelly";
-  version = "1.0.5";
+  version = "1.0.9";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "home-assistant-libs";
     repo = pname;
     rev = version;
-    sha256 = "sha256-AaEnVMup/sGR3ENtN6NF/CzG05P4Er5LI8mG5LNVzAo=";
+    hash = "sha256-XGmhLc64efQ1eIgCYN1Wkp4sPXvYXlR7/9WF5cWZyys=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/aiosignal/default.nix b/pkgs/development/python-modules/aiosignal/default.nix
index acf106ab3c6d8..1fd619a846aa8 100644
--- a/pkgs/development/python-modules/aiosignal/default.nix
+++ b/pkgs/development/python-modules/aiosignal/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "aiosignal";
-  version = "1.2.0";
+  version = "1.2.0"; # re-enable tests after 1.2.0
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
@@ -23,6 +23,8 @@ buildPythonPackage rec {
     frozenlist
   ];
 
+  # not compatible w ith latest asyncio
+  doCheck = false;
   checkInputs = [
     pytest-asyncio
     pytestCheckHook
diff --git a/pkgs/development/python-modules/aiosmtpd/default.nix b/pkgs/development/python-modules/aiosmtpd/default.nix
index c19e39bcd48ff..254f1bfa4fe36 100644
--- a/pkgs/development/python-modules/aiosmtpd/default.nix
+++ b/pkgs/development/python-modules/aiosmtpd/default.nix
@@ -35,6 +35,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  # Fixes for Python 3.10 can't be applied easily, https://github.com/aio-libs/aiosmtpd/pull/294
+  doCheck = pythonOlder "3.10";
+
   disabledTests = [
     # Requires git
     "test_ge_master"
diff --git a/pkgs/development/python-modules/aiosteamist/default.nix b/pkgs/development/python-modules/aiosteamist/default.nix
new file mode 100644
index 0000000000000..aa7edc001de36
--- /dev/null
+++ b/pkgs/development/python-modules/aiosteamist/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pythonOlder
+, xmltodict
+}:
+
+buildPythonPackage rec {
+  pname = "aiosteamist";
+  version = "0.3.1";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "bdraco";
+    repo = pname;
+    rev = version;
+    hash = "sha256-VoIJh3EDBPKmvEmM3gP2pyt/0oz4i6Y0zIkkprTcFLg=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    xmltodict
+  ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "--cov=aiosteamist" ""
+  '';
+
+  pythonImportsCheck = [
+    "aiosteamist"
+  ];
+
+  # Modules doesn't have test suite
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Module to control Steamist steam systems";
+    homepage = "https://github.com/bdraco/aiosteamist";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aioswitcher/default.nix b/pkgs/development/python-modules/aioswitcher/default.nix
index f4d1541a1398c..d42f242438b38 100644
--- a/pkgs/development/python-modules/aioswitcher/default.nix
+++ b/pkgs/development/python-modules/aioswitcher/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "aioswitcher";
-  version = "2.0.6";
+  version = "2.0.8";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "TomerFi";
     repo = pname;
     rev = version;
-    sha256 = "sha256-zgfgM3orhm2ZPp3Cf803adNzPeMOdRGX+sN6rhK1OT4=";
+    sha256 = "sha256-4+XGSaHZNYjId0bTOwCkYpb1K/pM8WtN5/NI+GVaI7M=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/aiounifi/default.nix b/pkgs/development/python-modules/aiounifi/default.nix
index 8d31fccc5647f..1294f8dade69e 100644
--- a/pkgs/development/python-modules/aiounifi/default.nix
+++ b/pkgs/development/python-modules/aiounifi/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "aiounifi";
-  version = "29";
+  version = "31";
 
   disabled = pythonOlder "3.7";
 
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "Kane610";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-A2+jLxKpha7HV1m3uzy00o8tsjwx0Uuwn5x3DO9daTI=";
+    sha256 = "sha256-8Hm7sUkIW4rVLCL5+vHfhAvmc8+IKDXaSLtYJTf14XY=";
   };
 
   propagatedBuildInputs = [
@@ -33,6 +33,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  pytestFlagsArray = [
+    "--asyncio-mode=auto"
+  ];
+
   pythonImportsCheck = [ "aiounifi" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/aiowebostv/default.nix b/pkgs/development/python-modules/aiowebostv/default.nix
new file mode 100644
index 0000000000000..ab16c2d1e49ac
--- /dev/null
+++ b/pkgs/development/python-modules/aiowebostv/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, websockets
+}:
+
+buildPythonPackage rec {
+  pname = "aiowebostv";
+  version = "0.1.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "home-assistant-libs";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-YSrttPoU5XQ9tqNxhHBUqZqKaEZdUdYYJ2CsSREVbbg=";
+  };
+
+  propagatedBuildInputs = [
+    websockets
+  ];
+
+  # Module doesn't have tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "aiowebostv"
+  ];
+
+  meta = with lib; {
+    description = "Module to interact with LG webOS based TV devices";
+    homepage = "https://github.com/home-assistant-libs/aiowebostv";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aladdin-connect/default.nix b/pkgs/development/python-modules/aladdin-connect/default.nix
index d25cdadc89a62..ca6c6cca96326 100644
--- a/pkgs/development/python-modules/aladdin-connect/default.nix
+++ b/pkgs/development/python-modules/aladdin-connect/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "aladdin-connect";
-  version = "0.3";
+  version = "0.4";
 
   src = fetchFromGitHub {
     owner = "shoejosh";
     repo = pname;
     rev = version;
-    sha256 = "0nimd1nw1haxn8s2207fcrmpjyfp6nx97n560l6hzqyqqmf2d1d1";
+    sha256 = "sha256-kLvMpSGa5WyDOH3ejAJyFGsB9IiMXp+nvVxM/ZkxyFw=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/algebraic-data-types/default.nix b/pkgs/development/python-modules/algebraic-data-types/default.nix
index 8a46d405799bb..7c4f9a4f60825 100644
--- a/pkgs/development/python-modules/algebraic-data-types/default.nix
+++ b/pkgs/development/python-modules/algebraic-data-types/default.nix
@@ -1,28 +1,45 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, hypothesis, mypy }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, hypothesis
+, mypy
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "algebraic-data-types";
-  version = "0.1.1";
+  version = "0.2.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "jspahrsummers";
     repo = "adt";
     rev = "v" + version;
-    sha256 = "1py94jsgh6wch59n9dxnwvk74psbpa1679zfmripa1qfc2218kqi";
+    hash = "sha256-RHLI5rmFxklzG9dyYgYfSS/srCjcxNpzNcK/RPNJBPE=";
   };
 
-  disabled = pythonOlder "3.6";
-
   checkInputs = [
+    pytestCheckHook
     hypothesis
     mypy
   ];
 
+  disabledTestPaths = [
+    # AttributeError: module 'mypy.types' has no attribute 'TypeVarDef'
+    "tests/test_mypy_plugin.py"
+  ];
+
+  pythonImportsCheck = [
+    "adt"
+  ];
+
   meta = with lib; {
     description = "Algebraic data types for Python";
     homepage = "https://github.com/jspahrsummers/adt";
     license = licenses.mit;
     maintainers = with maintainers; [ uri-canva ];
-    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/alot/default.nix b/pkgs/development/python-modules/alot/default.nix
deleted file mode 100644
index 562ec0d2c4dca..0000000000000
--- a/pkgs/development/python-modules/alot/default.nix
+++ /dev/null
@@ -1,71 +0,0 @@
-{ lib, buildPythonPackage, python, fetchFromGitHub, isPy3k, pytestCheckHook
-, notmuch2, urwid, urwidtrees, twisted, python_magic, configobj, mock, file, gpgme
-, service-identity, gnupg, sphinx, gawk, procps, future , withManpage ? false
-}:
-
-buildPythonPackage rec {
-  pname = "alot";
-  version = "0.10";
-  outputs = [ "out" ] ++ lib.optional withManpage "man";
-
-  disabled = !isPy3k;
-
-  src = fetchFromGitHub {
-    owner = "pazz";
-    repo = "alot";
-    rev = version;
-    sha256 = "sha256-1reAq8X9VwaaZDY5UfvcFzHDKd71J88CqJgH3+ANjis=";
-  };
-
-  postPatch = ''
-    substituteInPlace alot/settings/manager.py --replace /usr/share "$out/share"
-  '';
-
-  nativeBuildInputs = lib.optional withManpage sphinx;
-
-  propagatedBuildInputs = [
-    notmuch2
-    urwid
-    urwidtrees
-    twisted
-    python_magic
-    configobj
-    service-identity
-    file
-    gpgme
-  ];
-
-  postBuild = lib.optionalString withManpage "make -C docs man";
-
-  checkInputs = [ gawk future mock gnupg procps pytestCheckHook ];
-  # some twisted tests need internet access
-  disabledTests = [
-    "test_env_set"
-    "test_no_spawn_no_stdin_attached"
-  ];
-
-  postInstall = let
-    completionPython = python.withPackages (ps: [ ps.configobj ]);
-  in lib.optionalString withManpage ''
-    mkdir -p $out/man
-    cp -r docs/build/man $out/man
-  ''
-  + ''
-    mkdir -p $out/share/{applications,alot}
-    cp -r extra/themes $out/share/alot
-
-    substituteInPlace extra/completion/alot-completion.zsh \
-      --replace "python3" "${completionPython.interpreter}"
-    install -D extra/completion/alot-completion.zsh $out/share/zsh/site-functions/_alot
-
-    sed "s,/usr/bin,$out/bin,g" extra/alot.desktop > $out/share/applications/alot.desktop
-  '';
-
-  meta = with lib; {
-    homepage = "https://github.com/pazz/alot";
-    description = "Terminal MUA using notmuch mail";
-    license = licenses.gpl3Plus;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ edibopp ];
-  };
-}
diff --git a/pkgs/development/python-modules/altair/default.nix b/pkgs/development/python-modules/altair/default.nix
index 6e686d9fc9073..e4bec8fafa4b6 100644
--- a/pkgs/development/python-modules/altair/default.nix
+++ b/pkgs/development/python-modules/altair/default.nix
@@ -6,7 +6,7 @@
 , jsonschema
 , numpy
 , pandas
-, pytest
+, pytestCheckHook
 , pythonOlder
 , recommonmark
 , six
@@ -18,12 +18,12 @@
 
 buildPythonPackage rec {
   pname = "altair";
-  version = "4.1.0";
+  version = "4.2.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0c99q5dy6f275yg1f137ird08wmwc1z8wmvjickkf2mvyka31p9y";
+    sha256 = "d87d9372e63b48cd96b2a6415f0cf9457f50162ab79dc7a31cd7e024dd840026";
   };
 
   propagatedBuildInputs = [
@@ -39,7 +39,7 @@ buildPythonPackage rec {
   checkInputs = [
     glibcLocales
     ipython
-    pytest
+    pytestCheckHook
     recommonmark
     sphinx
     vega_datasets
@@ -47,11 +47,9 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "altair" ];
 
-  checkPhase = ''
-    export LANG=en_US.UTF-8
-    # histogram_responsive.py attempt network access, and cannot be disabled through pytest flags
-    rm altair/examples/histogram_responsive.py
-    pytest --doctest-modules altair
+  # avoid examples directory, which fetches web resources
+  preCheck = ''
+    cd altair/tests
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/amaranth-boards/default.nix b/pkgs/development/python-modules/amaranth-boards/default.nix
new file mode 100644
index 0000000000000..1b152e70d7b01
--- /dev/null
+++ b/pkgs/development/python-modules/amaranth-boards/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, amaranth
+, setuptools
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "amaranth-boards";
+  version = "unstable-2021-12-17";
+  # python setup.py --version
+  realVersion = "0.1.dev202+g${lib.substring 0 7 src.rev}";
+
+  src = fetchFromGitHub {
+    owner = "amaranth-lang";
+    repo = "amaranth-boards";
+    rev = "8e2615765e255144403431ca95c5cdf6c78eb638";
+    sha256 = "3EOG8SO5xBNevshXMRrxKWoJUbeaVi8ckbkmqd6Tw70=";
+  };
+
+  nativeBuildInputs = [ setuptools-scm ];
+  propagatedBuildInputs = [ setuptools amaranth ];
+
+  preBuild = ''
+    export SETUPTOOLS_SCM_PRETEND_VERSION="${realVersion}"
+  '';
+
+  # no tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Board definitions for Amaranth HDL";
+    homepage = "https://github.com/amaranth-lang/amaranth-boards";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ emily thoughtpolice ];
+  };
+}
diff --git a/pkgs/development/python-modules/amaranth-soc/default.nix b/pkgs/development/python-modules/amaranth-soc/default.nix
new file mode 100644
index 0000000000000..e90137ba22b72
--- /dev/null
+++ b/pkgs/development/python-modules/amaranth-soc/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, amaranth
+, setuptools
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "amaranth-soc";
+  version = "unstable-2021-12-10";
+  # python setup.py --version
+  realVersion = "0.1.dev49+g${lib.substring 0 7 src.rev}";
+
+  src = fetchFromGitHub {
+    owner = "amaranth-lang";
+    repo = "amaranth-soc";
+    rev = "217d4ea76ad3b3bbf146980d168bc7b3b9d95a18";
+    sha256 = "dMip82L7faUn16RDeG3NgMv0nougpwTwDWLX0doD2YA=";
+  };
+
+  nativeBuildInputs = [ setuptools-scm ];
+  propagatedBuildInputs = [ setuptools amaranth ];
+
+  preBuild = ''
+    export SETUPTOOLS_SCM_PRETEND_VERSION="${realVersion}"
+  '';
+
+  meta = with lib; {
+    description = "System on Chip toolkit for Amaranth HDL";
+    homepage = "https://github.com/amaranth-lang/amaranth-soc";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ emily thoughtpolice ];
+  };
+}
diff --git a/pkgs/development/python-modules/nmigen/default.nix b/pkgs/development/python-modules/amaranth/default.nix
index 0228e7b3185cc..99fe555e3f3db 100644
--- a/pkgs/development/python-modules/nmigen/default.nix
+++ b/pkgs/development/python-modules/amaranth/default.nix
@@ -18,17 +18,17 @@
 }:
 
 buildPythonPackage rec {
-  pname = "nmigen";
-  version = "unstable-2021-02-09";
+  pname = "amaranth";
+  version = "0.3";
   # python setup.py --version
-  realVersion = "0.3.dev243+g${lib.substring 0 7 src.rev}";
+  realVersion = "0.3";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
-    owner = "nmigen";
-    repo = "nmigen";
-    rev = "f7c2b9419f9de450be76a0e9cf681931295df65f";
-    sha256 = "0cjs9wgmxa76xqmjhsw4fsb2mhgvd85jgs2mrjxqp6fwp8rlgnl1";
+    owner = "amaranth-lang";
+    repo = "amaranth";
+    rev = "39a83f4d995d16364cc9b99da646ff8db6394166";
+    sha256 = "P9AG3t30eGeeCN5+t7mjhRoOWIGZVzWQji9eYXphjA0=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION="${realVersion}";
@@ -59,12 +59,12 @@ buildPythonPackage rec {
       --replace "pyvcd~=0.2.2" "pyvcd"
   '';
 
-  pythonImportsCheck = [ "nmigen" ];
+  pythonImportsCheck = [ "amaranth" ];
 
   meta = with lib; {
-    description = "A refreshed Python toolbox for building complex digital hardware";
-    homepage = "https://nmigen.info/nmigen";
+    description = "A modern hardware definition language and toolchain based on Python";
+    homepage = "https://amaranth-lang.org/docs/amaranth";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ emily ];
+    maintainers = with maintainers; [ emily thoughtpolice ];
   };
 }
diff --git a/pkgs/development/python-modules/amcrest/default.nix b/pkgs/development/python-modules/amcrest/default.nix
index d050a7563a741..697b9bba00fab 100644
--- a/pkgs/development/python-modules/amcrest/default.nix
+++ b/pkgs/development/python-modules/amcrest/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "amcrest";
-  version = "1.9.3";
+  version = "1.9.4";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "tchellomello";
     repo = "python-amcrest";
     rev = version;
-    sha256 = "0f9l8xbn40xwx2zzssx5qmkpmv82j6syj8ncnmm6z9dc5wpr6sw7";
+    sha256 = "sha256-smwPKZLevolNvpkLxoFR3NGL9YFPlBk3WYQqJXBaS7s=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/amqp/default.nix b/pkgs/development/python-modules/amqp/default.nix
index 6156472896ada..c23c1d012da44 100644
--- a/pkgs/development/python-modules/amqp/default.nix
+++ b/pkgs/development/python-modules/amqp/default.nix
@@ -1,24 +1,46 @@
-{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, case, vine }:
+{ lib
+, buildPythonPackage
+, case
+, fetchPypi
+, pytestCheckHook
+, pythonOlder
+, vine
+}:
 
 buildPythonPackage rec {
   pname = "amqp";
-  version = "5.0.6";
+  version = "5.0.9";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "03e16e94f2b34c31f8bf1206d8ddd3ccaa4c315f7f6a1879b7b1210d229568c2";
+    hash = "sha256-Hl9wdCTlRAeMoZbnKuahSIfOdOAr0Sa+VLfAPJcb7xg=";
   };
 
-  propagatedBuildInputs = [ vine ];
+  propagatedBuildInputs = [
+    vine
+  ];
+
+  checkInputs = [
+    case
+    pytestCheckHook
+  ];
 
-  checkInputs = [ pytestCheckHook case ];
   disabledTests = [
-    "test_rmq.py" # requires network access
+    # Requires network access
+    "test_rmq.py"
+  ];
+
+  pythonImportsCheck = [
+    "amqp"
   ];
 
   meta = with lib; {
     homepage = "https://github.com/celery/py-amqp";
     description = "Python client for the Advanced Message Queuing Procotol (AMQP). This is a fork of amqplib which is maintained by the Celery project";
-    license = licenses.lgpl21;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/amqtt/default.nix b/pkgs/development/python-modules/amqtt/default.nix
index d61140081ef16..7458ca11e99da 100644
--- a/pkgs/development/python-modules/amqtt/default.nix
+++ b/pkgs/development/python-modules/amqtt/default.nix
@@ -2,9 +2,11 @@
 , buildPythonPackage
 , docopt
 , fetchFromGitHub
+, fetchpatch
 , hypothesis
 , passlib
 , poetry-core
+, pytest-logdog
 , pytest-asyncio
 , pytestCheckHook
 , pythonOlder
@@ -15,23 +17,21 @@
 
 buildPythonPackage rec {
   pname = "amqtt";
-  version = "0.10.0";
+  version = "unstable-2022-01-11";
   format = "pyproject";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "Yakifo";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "sha256-27LmNR1KC8w3zRJ7YBlBolQ4Q70ScTPqypMCpU6fO+I=";
+    rev = "8961b8fff57007a5d9907b98bc555f0519974ce9";
+    hash = "sha256-3uwz4RSoa6KRC8mlVfeIMLPH6F2kOJjQjjXCrnVX0Jo=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace 'websockets = "^9.0"' 'websockets = "^10.0"'
-  '';
-
-  nativeBuildInputs = [ poetry-core ];
+  nativeBuildInputs = [
+    poetry-core
+  ];
 
   propagatedBuildInputs = [
     docopt
@@ -43,22 +43,30 @@ buildPythonPackage rec {
 
   checkInputs = [
     hypothesis
+    pytest-logdog
     pytest-asyncio
     pytestCheckHook
   ];
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'PyYAML = "^5.4.0"' 'PyYAML = "*"'
+  '';
+
   disabledTestPaths = [
     # Test are not ported from hbmqtt yet
     "tests/test_cli.py"
     "tests/test_client.py"
   ];
 
-  disabledTests = [
-    # Requires network access
-    "test_connect_tcp"
-  ];
+  preCheck = ''
+    # Some tests need amqtt
+    export PATH=$out/bin:$PATH
+  '';
 
-  pythonImportsCheck = [ "amqtt" ];
+  pythonImportsCheck = [
+    "amqtt"
+  ];
 
   meta = with lib; {
     description = "Python MQTT client and broker implementation";
diff --git a/pkgs/development/python-modules/androidtv/default.nix b/pkgs/development/python-modules/androidtv/default.nix
index e49f4ba53fe5e..c9eb73c7f044a 100644
--- a/pkgs/development/python-modules/androidtv/default.nix
+++ b/pkgs/development/python-modules/androidtv/default.nix
@@ -3,37 +3,48 @@
 , aiofiles
 , buildPythonPackage
 , fetchFromGitHub
-, isPy3k
 , mock
 , pure-python-adb
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "androidtv";
-  version = "0.0.60";
+  version = "0.0.63";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
-  # pypi does not contain tests, using github sources instead
   src = fetchFromGitHub {
     owner = "JeffLIrion";
     repo = "python-androidtv";
     rev = "v${version}";
-    sha256 = "sha256-GWCiRxZ6pHrcVkOKNGxSK8lUD0RohtED8czXIWUoVaM=";
+    hash = "sha256-Peg/agAb1lUBUBK1OkYVovE4pzM8iaQHVaSk/hr1plw=";
   };
 
-  propagatedBuildInputs = [ adb-shell pure-python-adb ]
-    ++ lib.optionals (isPy3k) [ aiofiles ];
+  propagatedBuildInputs = [
+    adb-shell
+    aiofiles
+    pure-python-adb
+  ];
 
   checkInputs = [
     mock
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "androidtv" ];
+  disabledTests = [
+    # Requires git but fails anyway
+    "test_no_underscores"
+  ];
+
+  pythonImportsCheck = [
+    "androidtv"
+  ];
 
   meta = with lib; {
-    description =
-      "Communicate with an Android TV or Fire TV device via ADB over a network";
+    description = "Communicate with an Android TV or Fire TV device via ADB over a network";
     homepage = "https://github.com/JeffLIrion/python-androidtv/";
     license = licenses.mit;
     maintainers = with maintainers; [ jamiemagee ];
diff --git a/pkgs/development/python-modules/angr/default.nix b/pkgs/development/python-modules/angr/default.nix
index 4468dfabecd00..93a4b22f5dd13 100644
--- a/pkgs/development/python-modules/angr/default.nix
+++ b/pkgs/development/python-modules/angr/default.nix
@@ -22,6 +22,7 @@
 , pycparser
 , pythonOlder
 , pyvex
+, sympy
 , sqlalchemy
 , rpyc
 , sortedcontainers
@@ -45,18 +46,18 @@ in
 
 buildPythonPackage rec {
   pname = "angr";
-  version = "9.1.10913";
+  version = "9.1.11752";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-AZlqSalTOQh3QR959ZuanFuTZVKi9valKJ3snsquC/A=";
+    hash = "sha256-4DUM1c3M/naJFqN/gdrX/NnJrY3ElUEOQ34cwcpSC+s=";
   };
 
-  setupPyBuildFlags = lib.optionals stdenv.isLinux [ "--plat-name" "linux" ];
-
   propagatedBuildInputs = [
     ailment
     archinfo
@@ -75,20 +76,24 @@ buildPythonPackage rec {
     progressbar2
     protobuf
     psutil
-    sqlalchemy
     pycparser
     pyvex
-    sqlalchemy
     rpyc
     sortedcontainers
+    sqlalchemy
+    sympy
     unicorn'
   ];
 
+  setupPyBuildFlags = lib.optionals stdenv.isLinux [
+    "--plat-name"
+    "linux"
+  ];
+
   # Tests have additional requirements, e.g., pypcode and angr binaries
   # cle is executing the tests with the angr binaries
   doCheck = false;
 
-  # See http://angr.io/api-doc/
   pythonImportsCheck = [
     "angr"
     "claripy"
diff --git a/pkgs/development/python-modules/angrcli/default.nix b/pkgs/development/python-modules/angrcli/default.nix
index bad2bb01bf8a4..25781fbcd3a13 100644
--- a/pkgs/development/python-modules/angrcli/default.nix
+++ b/pkgs/development/python-modules/angrcli/default.nix
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "fmagin";
     repo = "angr-cli";
     rev = "v${version}";
-    sha256 = "sha256-a5ajUBQwt3xUNkeSOeGOAFf47wd4UVk+LcuAHGqbq4s=";
+    hash = "sha256-a5ajUBQwt3xUNkeSOeGOAFf47wd4UVk+LcuAHGqbq4s=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/angrop/default.nix b/pkgs/development/python-modules/angrop/default.nix
index 7989a06b60efa..21eeeb2369dfa 100644
--- a/pkgs/development/python-modules/angrop/default.nix
+++ b/pkgs/development/python-modules/angrop/default.nix
@@ -9,14 +9,16 @@
 
 buildPythonPackage rec {
   pname = "angrop";
-  version = "9.1.10913";
+  version = "9.1.11752";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "angr";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-8M3d8lG7jDNgICjzjFRi9Wl2I7aYI5b5IvjEhixsk9k=";
+    hash = "sha256-nZGAuWp07VMpOvqw38FGSiUhaFjJOfCzOaam4Ex7qbY=";
   };
 
   propagatedBuildInputs = [
@@ -28,7 +30,10 @@ buildPythonPackage rec {
   # Tests have additional requirements, e.g., angr binaries
   # cle is executing the tests with the angr binaries already and is a requirement of angr
   doCheck = false;
-  pythonImportsCheck = [ "angrop" ];
+
+  pythonImportsCheck = [
+    "angrop"
+  ];
 
   meta = with lib; {
     description = "ROP gadget finder and chain builder";
diff --git a/pkgs/development/python-modules/annexremote/default.nix b/pkgs/development/python-modules/annexremote/default.nix
index 9ea365079451c..c9ed6bd90eded 100644
--- a/pkgs/development/python-modules/annexremote/default.nix
+++ b/pkgs/development/python-modules/annexremote/default.nix
@@ -2,33 +2,41 @@
 , isPy3k
 , buildPythonPackage
 , fetchFromGitHub
-, future
-, mock
+, pytestCheckHook
 , nose
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "annexremote";
   version = "1.6.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
-  # use fetchFromGitHub instead of fetchPypi because the test suite of
-  # the package is not included into the PyPI tarball
   src = fetchFromGitHub {
-    rev = "v${version}";
     owner = "Lykos153";
     repo = "AnnexRemote";
+    rev = "v${version}";
     sha256 = "08myswj1vqkl4s1glykq6xn76a070nv5mxj0z8ibl6axz89bvypi";
   };
 
-  propagatedBuildInputs = [ future ];
+  checkInputs = [
+    nose
+  ];
+
+  checkPhase = ''
+    nosetests -v -e "^TestExport_MissingName" -e "^TestRemoveexportdirectory"
+  '';
 
-  checkInputs = [ nose ] ++ lib.optional (!isPy3k) mock;
-  checkPhase = "nosetests -v";
+  pythonImportsCheck = [
+    "annexremote"
+  ];
 
   meta = with lib; {
     description = "Helper module to easily develop git-annex remotes";
     homepage = "https://github.com/Lykos153/AnnexRemote";
-    license = licenses.gpl3;
+    license = licenses.gpl3Only;
     maintainers = with maintainers; [ montag451 ];
   };
 }
diff --git a/pkgs/development/python-modules/anonip/default.nix b/pkgs/development/python-modules/anonip/default.nix
index 0663fddd6fb0f..96115aaee439c 100644
--- a/pkgs/development/python-modules/anonip/default.nix
+++ b/pkgs/development/python-modules/anonip/default.nix
@@ -1,24 +1,45 @@
-{ lib, buildPythonPackage, fetchFromGitHub, ipaddress, isPy27 }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "anonip";
-  version = "1.0.0";
+  version = "1.1.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "DigitaleGesellschaft";
     repo = "Anonip";
     rev = "v${version}";
-    sha256 = "0y5xqivcinp6pwx4whc8ca1n2wxrvff7a2lpbz2dhivilfanmljs";
+    sha256 = "0cssdcridadjzichz1vv1ng7jwphqkn8ihh83hpz9mcjmxyb94qc";
   };
 
-  propagatedBuildInputs = lib.optionals isPy27 [ ipaddress ];
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace " --cov=anonip --cov-report=term-missing --no-cov-on-fail" ""
+  '';
+
+  pytestFlagsArray = [
+    "tests.py"
+  ];
 
-  checkPhase = "python tests.py";
+  pythonImportsCheck = [
+    "anonip"
+  ];
 
   meta = with lib; {
+    description = "Tool to anonymize IP addresses in log files";
     homepage = "https://github.com/DigitaleGesellschaft/Anonip";
-    description = "A tool to anonymize IP-addresses in log-files";
     license = licenses.bsd3;
-    maintainers = [ maintainers.mmahut ];
+    maintainers = with maintainers; [ mmahut ];
   };
 }
diff --git a/pkgs/development/python-modules/ansible-kernel/default.nix b/pkgs/development/python-modules/ansible-kernel/default.nix
index 670b6330eaa5f..5901e8f56abb5 100644
--- a/pkgs/development/python-modules/ansible-kernel/default.nix
+++ b/pkgs/development/python-modules/ansible-kernel/default.nix
@@ -24,11 +24,11 @@ let
 in
 buildPythonPackage rec {
   pname = "ansible-kernel";
-  version = "0.9.0";
+  version = "1.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a59039a1724c0f4f4435316e2ad3383f2328ae61f190e74414a66cc8c4637636";
+    sha256 = "sha256-UJjm9FpmXSznXtaIR2rVv5YJS/H83FvRkNz09vwoe0c=";
   };
 
   propagatedBuildInputs = [ ipywidgets six docopt tqdm jupyter psutil pyyaml ansible-runner ansible ];
diff --git a/pkgs/development/python-modules/ansible-lint/default.nix b/pkgs/development/python-modules/ansible-lint/default.nix
index 2fac5e8a021e7..0523b775dab32 100644
--- a/pkgs/development/python-modules/ansible-lint/default.nix
+++ b/pkgs/development/python-modules/ansible-lint/default.nix
@@ -18,13 +18,13 @@
 
 buildPythonPackage rec {
   pname = "ansible-lint";
-  version = "5.3.1";
+  version = "5.3.2";
   disabled = isPy27;
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-fXvHS5uQxZgr5cJ0wq/LpbgHPsiMznk/q0Y/5kGKJfY=";
+    sha256 = "sha256-m6iG20xE5ZNgvI1mjwvq5hk8Ch/LuedhJwAMo6ztfCg=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/ansible-runner/default.nix b/pkgs/development/python-modules/ansible-runner/default.nix
index f4ec1c1846272..92d377d0886c9 100644
--- a/pkgs/development/python-modules/ansible-runner/default.nix
+++ b/pkgs/development/python-modules/ansible-runner/default.nix
@@ -1,30 +1,40 @@
 { lib
-, buildPythonPackage
-, fetchPypi
-, psutil
-, pexpect
-, python-daemon
-, pyyaml
-, six
 , stdenv
 , ansible
+, buildPythonPackage
+, fetchPypi
 , mock
 , openssh
+, pexpect
+, psutil
 , pytest-mock
 , pytest-timeout
 , pytest-xdist
 , pytestCheckHook
+, python-daemon
+, pyyaml
+, six
 }:
 
 buildPythonPackage rec {
   pname = "ansible-runner";
   version = "2.1.1";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7684612f7543c5f07f3e8135667eeb22a9dbd98f625cc69901ba9924329ef24f";
+    hash = "sha256-doRhL3VDxfB/PoE1Zn7rIqnb2Y9iXMaZAbqZJDKe8k8=";
   };
 
+  propagatedBuildInputs = [
+    ansible
+    psutil
+    pexpect
+    python-daemon
+    pyyaml
+    six
+  ];
+
   checkInputs = [
     ansible # required to place ansible CLI onto the PATH in tests
     pytestCheckHook
@@ -35,44 +45,45 @@ buildPythonPackage rec {
     openssh
   ];
 
-  propagatedBuildInputs = [
-    ansible
-    psutil
-    pexpect
-    python-daemon
-    pyyaml
-    six
-  ];
-
   preCheck = ''
     export HOME=$(mktemp -d)
+    export PATH="$PATH:$out/bin";
   '';
 
   disabledTests = [
-    "test_callback_plugin_task_args_leak" # requires internet
+    # Requires network access
+    "test_callback_plugin_task_args_leak"
     "test_env_accuracy"
-    "test_large_stdout_blob" # times out on slower hardware
-  ]
+    # Times out on slower hardware
+    "test_large_stdout_blob"
+    # Failed: DID NOT RAISE <class 'RuntimeError'>
+    "test_validate_pattern"
+  ] ++ lib.optional stdenv.isDarwin [
     # 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";
+    "process_isolation_settings"
+  ];
 
   disabledTestPaths = [
-    # these tests unset PATH and then run executables like `bash` (see https://github.com/ansible/ansible-runner/pull/918)
+    # 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
+    # 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
+    # These tests write to `/tmp` which is not writable on Darwin
     "test/unit/config/test__base.py"
   ];
 
+  pythonImportsCheck = [
+    "ansible_runner"
+  ];
+
   meta = with lib; {
     description = "Helps when interfacing with Ansible";
     homepage = "https://github.com/ansible/ansible-runner";
     license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/pkgs/development/python-modules/ansible/core.nix b/pkgs/development/python-modules/ansible/core.nix
index a580719fcfe25..6b54bd275ba64 100644
--- a/pkgs/development/python-modules/ansible/core.nix
+++ b/pkgs/development/python-modules/ansible/core.nix
@@ -23,17 +23,17 @@
 
 let
   ansible-collections = callPackage ./collections.nix {
-    version = "5.0.1";
-    sha256 = "sha256:0xn3lpinmflkxwak7zb36wjs9w2y1k5s295apn3v77xnpc2cfz5l";
+    version = "5.2.0";
+    sha256 = "sha256:1jwraha3s15s692d47kgcr7jy1ngbg6ipmkb0ak7fjnb57r4im66";
   };
 in
 buildPythonPackage rec {
   pname = "ansible-core";
-  version = "2.12.1";
+  version = "2.12.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-pFCHByYr4Ru03ZigBvGxSBeHmgVea2xGrZ/KiJT7MHM=";
+    sha256 = "sha256:1hz7j8gsgxbfjdf9562cbyxia3c4crdv50fm0p0wp4js79rf2ydw";
   };
 
   # ansible_connection is already wrapped, so don't pass it through
diff --git a/pkgs/development/python-modules/ansimarkup/default.nix b/pkgs/development/python-modules/ansimarkup/default.nix
new file mode 100644
index 0000000000000..b74c7e3217990
--- /dev/null
+++ b/pkgs/development/python-modules/ansimarkup/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, colorama
+}:
+
+buildPythonPackage rec {
+  pname = "ansimarkup";
+  version = "1.5.0";
+
+  src = fetchFromGitHub {
+    owner = "gvalkov";
+    repo = "python-ansimarkup";
+    rev = "v${version}";
+    sha256 = "sha256-HGeVapv2Z5GtPwSp3+dvUwAH0bFqu+Bmk5E6SRr7NO4=";
+  };
+
+  propagatedBuildInputs = [ colorama ];
+
+  checkInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "ansimarkup" ];
+
+  meta = with lib; {
+    description = "An XML-like markup for producing colored terminal text.";
+    homepage = "https://github.com/gvalkov/python-ansimarkup";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ cpcloud ];
+  };
+}
diff --git a/pkgs/development/python-modules/antlr4-python2-runtime/default.nix b/pkgs/development/python-modules/antlr4-python2-runtime/default.nix
deleted file mode 100644
index aa18a0fe29073..0000000000000
--- a/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/pkgs/development/python-modules/anyjson/default.nix b/pkgs/development/python-modules/anyjson/default.nix
deleted file mode 100644
index 1d0d02988f831..0000000000000
--- a/pkgs/development/python-modules/anyjson/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, nose }:
-
-buildPythonPackage rec {
-  pname = "anyjson";
-  version = "0.3.3";
-
-  # The tests are written in a python2 syntax but anyjson is python3 valid
-  doCheck = !isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "37812d863c9ad3e35c0734c42e0bf0320ce8c3bed82cd20ad54cb34d158157ba";
-  };
-
-  buildInputs = [ nose ];
-
-  meta = with lib; {
-    homepage = "https://bitbucket.org/runeh/anyjson/";
-    description = "Wrapper that selects the best available JSON implementation";
-    license = licenses.bsd2;
-  };
-}
diff --git a/pkgs/development/python-modules/apache-airflow/default.nix b/pkgs/development/python-modules/apache-airflow/default.nix
index c666d89b2bfa6..4ac03a8820fb8 100644
--- a/pkgs/development/python-modules/apache-airflow/default.nix
+++ b/pkgs/development/python-modules/apache-airflow/default.nix
@@ -13,12 +13,13 @@
 , colorlog
 , croniter
 , cryptography
+, dataclasses
 , dill
 , flask
-, flask-appbuilder
-, flask-caching
 , flask_login
 , flask_wtf
+, flask-appbuilder
+, flask-caching
 , GitPython
 , graphviz
 , gunicorn
@@ -47,6 +48,7 @@
 , python-nvd3
 , python-slugify
 , python3-openid
+, pythonOlder
 , pyyaml
 , rich
 , setproctitle
@@ -63,14 +65,13 @@
 , mkYarnPackage
 }:
 let
-
-  version = "2.1.4";
+  version = "2.2.3";
 
   airflow-src = fetchFromGitHub rec {
     owner = "apache";
     repo = "airflow";
     rev = version;
-    sha256 = "12nxjaz4afkq30s42x3rbsci8jiw2k5zjngsc8i190fasbacbnbs";
+    sha256 = "02y3az7yj4g4qaamq5s1bcvy3knd6xmvnhbfqs3kbm51irkba1zq";
   };
 
   # airflow bundles a web interface, which is built using webpack by an undocumented shell script in airflow's source tree.
@@ -107,6 +108,8 @@ buildPythonPackage rec {
   inherit version;
   src = airflow-src;
 
+  disabled = pythonOlder "3.6";
+
   propagatedBuildInputs = [
     alembic
     argcomplete
@@ -130,7 +133,6 @@ buildPythonPackage rec {
     httpx
     iso8601
     importlib-resources
-    importlib-metadata
     inflection
     itsdangerous
     jinja2
@@ -163,6 +165,10 @@ buildPythonPackage rec {
     termcolor
     unicodecsv
     werkzeug
+  ] ++ lib.optionals (pythonOlder "3.7") [
+    dataclasses
+  ] ++ lib.optionals (pythonOlder "3.9") [
+    importlib-metadata
   ];
 
   buildInputs = [
@@ -178,24 +184,22 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.cfg \
-      --replace "importlib_resources~=1.4" "importlib_resources" \
-      --replace "importlib_metadata~=1.7" "importlib_metadata" \
-      --replace "tenacity~=6.2.0" "tenacity" \
-      --replace "pyjwt<2" "pyjwt" \
-      --replace "flask>=1.1.0, <2.0" "flask" \
-      --replace "flask-login>=0.3, <0.5" "flask-login" \
-      --replace "flask-wtf>=0.14.3, <0.15" "flask-wtf" \
-      --replace "jinja2>=2.10.1, <2.12.0" "jinja2" \
       --replace "attrs>=20.0, <21.0" "attrs" \
       --replace "cattrs~=1.1, <1.7.0" "cattrs" \
-      --replace "markupsafe>=1.1.1, <2.0" "markupsafe" \
+      --replace "colorlog>=4.0.2, <6.0" "colorlog" \
+      --replace "croniter>=0.3.17, <1.1" "croniter" \
       --replace "docutils<0.17" "docutils" \
-      --replace "sqlalchemy>=1.3.18, <1.4" "sqlalchemy" \
-      --replace "sqlalchemy_jsonfield~=1.0" "sqlalchemy-jsonfield" \
-      --replace "werkzeug~=1.0, >=1.0.1" "werkzeug" \
+      --replace "flask-login>=0.3, <0.5" "flask-login" \
+      --replace "flask-wtf>=0.14.3, <0.15" "flask-wtf" \
+      --replace "flask>=1.1.0, <2.0" "flask" \
+      --replace "importlib_resources~=1.4" "importlib_resources" \
       --replace "itsdangerous>=1.1.0, <2.0" "itsdangerous" \
+      --replace "markupsafe>=1.1.1, <2.0" "markupsafe" \
+      --replace "pyjwt<2" "pyjwt" \
       --replace "python-slugify>=3.0.0,<5.0" "python-slugify" \
-      --replace "colorlog>=4.0.2, <6.0" "colorlog"
+      --replace "sqlalchemy_jsonfield~=1.0" "sqlalchemy-jsonfield" \
+      --replace "tenacity~=6.2.0" "tenacity" \
+      --replace "werkzeug~=1.0, >=1.0.1" "werkzeug"
 
     substituteInPlace tests/core/test_core.py \
       --replace "/bin/bash" "${stdenv.shell}"
@@ -205,19 +209,21 @@ buildPythonPackage rec {
       --replace "/tmp/sqlite_default.db" "$TMPDIR/sqlite_default.db"
   '';
 
-  # allow for gunicorn processes to have access to python packages
-  makeWrapperArgs = [ "--prefix PYTHONPATH : $PYTHONPATH" ];
+  # allow for gunicorn processes to have access to Python packages
+  makeWrapperArgs = [
+    "--prefix PYTHONPATH : $PYTHONPATH"
+  ];
 
   preCheck = ''
-   export HOME=$(mktemp -d)
-   export AIRFLOW_HOME=$HOME
-   export AIRFLOW__CORE__UNIT_TEST_MODE=True
-   export AIRFLOW_DB="$HOME/airflow.db"
-   export PATH=$PATH:$out/bin
-
-   airflow version
-   airflow db init
-   airflow db reset -y
+    export HOME=$(mktemp -d)
+    export AIRFLOW_HOME=$HOME
+    export AIRFLOW__CORE__UNIT_TEST_MODE=True
+    export AIRFLOW_DB="$HOME/airflow.db"
+    export PATH=$PATH:$out/bin
+
+    airflow version
+    airflow db init
+    airflow db reset -y
   '';
 
   pytestFlagsArray = [
@@ -225,7 +231,7 @@ buildPythonPackage rec {
   ];
 
   disabledTests = lib.optionals stdenv.isDarwin [
-    "bash_operator_kill"  # psutil.AccessDenied
+    "bash_operator_kill" # psutil.AccessDenied
   ];
 
   postInstall = ''
diff --git a/pkgs/development/python-modules/apache-beam/default.nix b/pkgs/development/python-modules/apache-beam/default.nix
new file mode 100644
index 0000000000000..2eeebaaea7f8c
--- /dev/null
+++ b/pkgs/development/python-modules/apache-beam/default.nix
@@ -0,0 +1,154 @@
+{ buildPythonPackage
+, cloudpickle
+, crcmod
+, cython
+, dill
+, fastavro
+, fetchFromGitHub
+, freezegun
+, grpcio
+, grpcio-tools
+, hdfs
+, httplib2
+, lib
+, mock
+, mypy-protobuf
+, numpy
+, oauth2client
+, orjson
+, pandas
+, parameterized
+, proto-plus
+, protobuf
+, psycopg2
+, pyarrow
+, pydot
+, pyhamcrest
+, pymongo
+, pytest-timeout
+, pytest-xdist
+, pytestCheckHook
+, python
+, pythonAtLeast
+, python-dateutil
+, pytz
+, pyyaml
+, requests
+, requests-mock
+, setuptools
+, sqlalchemy
+, tenacity
+, typing-extensions
+}:
+
+buildPythonPackage rec {
+  pname = "apache-beam";
+  version = "2.35.0";
+  disabled = pythonAtLeast "3.10";
+
+  src = fetchFromGitHub {
+    owner = "apache";
+    repo = "beam";
+    rev = "v${version}";
+    sha256 = "0qxkas33d8i6yj133plnadbfm74ak7arn7ldpziyiwdav3hj68sy";
+  };
+
+  patches = [
+    ./relax-deps.patch
+    # Fixes https://issues.apache.org/jira/browse/BEAM-9324
+    ./fix-cython.patch
+  ];
+
+  # See https://github.com/NixOS/nixpkgs/issues/156957.
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "typing-extensions>=3.7.0,<4" "typing-extensions" \
+      --replace "pyarrow>=0.15.1,<7.0.0" "pyarrow"
+  '';
+
+  sourceRoot = "source/sdks/python";
+
+  nativeBuildInputs = [
+    cython
+    grpcio-tools
+    mypy-protobuf
+  ];
+
+  propagatedBuildInputs = [
+    cloudpickle
+    crcmod
+    cython
+    dill
+    fastavro
+    grpcio
+    hdfs
+    httplib2
+    numpy
+    oauth2client
+    orjson
+    proto-plus
+    protobuf
+    pyarrow
+    pydot
+    pymongo
+    python-dateutil
+    pytz
+    requests
+    setuptools
+    typing-extensions
+  ];
+
+  pythonImportsCheck = [
+    "apache_beam"
+  ];
+
+  checkInputs = [
+    freezegun
+    mock
+    pandas
+    parameterized
+    psycopg2
+    pyhamcrest
+    pytest-timeout
+    pytest-xdist
+    pytestCheckHook
+    pyyaml
+    requests-mock
+    sqlalchemy
+    tenacity
+  ];
+
+  # Make sure we're running the tests for the actually installed
+  # package, so that cython's .so files are available.
+  preCheck = "cd $out/lib/${python.libPrefix}/site-packages";
+
+  disabledTestPaths = [
+    # These tests depend on the availability of specific servers backends.
+    "apache_beam/runners/portability/flink_runner_test.py"
+    "apache_beam/runners/portability/samza_runner_test.py"
+    "apache_beam/runners/portability/spark_runner_test.py"
+  ];
+
+  disabledTests = [
+    # The reasons of failures for these tests are unclear.
+    # They reproduce in Docker with Ubuntu 22.04
+    # (= they're not `nixpkgs`-specific) but given the upstream uses
+    # quite elaborate testing infra with containers and multiple
+    # different runners - I don't expect them to help debugging these
+    # when running via our (= custom from their PoV) testing infra.
+    "testBuildListUnpack"
+    "testBuildTupleUnpack"
+    "testBuildTupleUnpackWithCall"
+    "test_convert_bare_types"
+    "test_incomparable_default"
+    "test_pardo_type_inference"
+    "test_with_main_session"
+  ];
+
+  meta = with lib; {
+    description = "Unified model for defining both batch and streaming data-parallel processing pipelines";
+    homepage = "https://beam.apache.org/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ndl ];
+  };
+}
diff --git a/pkgs/development/python-modules/apache-beam/fix-cython.patch b/pkgs/development/python-modules/apache-beam/fix-cython.patch
new file mode 100644
index 0000000000000..f73d75b4b84a4
--- /dev/null
+++ b/pkgs/development/python-modules/apache-beam/fix-cython.patch
@@ -0,0 +1,41 @@
+diff --git a/apache_beam/runners/worker/operations.py b/apache_beam/runners/worker/operations.py
+index 3464c5750c..5921c72b90 100644
+--- a/apache_beam/runners/worker/operations.py
++++ b/apache_beam/runners/worker/operations.py
+@@ -69,18 +69,6 @@ if TYPE_CHECKING:
+   from apache_beam.runners.worker.statesampler import StateSampler
+   from apache_beam.transforms.userstate import TimerSpec
+ 
+-# Allow some "pure mode" declarations.
+-try:
+-  import cython
+-except ImportError:
+-
+-  class FakeCython(object):
+-    @staticmethod
+-    def cast(type, value):
+-      return value
+-
+-  globals()['cython'] = FakeCython()
+-
+ _globally_windowed_value = GlobalWindows.windowed_value(None)
+ _global_window_type = type(_globally_windowed_value.windows[0])
+ 
+@@ -149,7 +137,7 @@ class ConsumerSet(Receiver):
+     # type: (WindowedValue) -> None
+     self.update_counters_start(windowed_value)
+     for consumer in self.consumers:
+-      cython.cast(Operation, consumer).process(windowed_value)
++      consumer.process(windowed_value)
+     self.update_counters_finish()
+ 
+   def try_split(self, fraction_of_remainder):
+@@ -345,7 +333,7 @@ class Operation(object):
+ 
+   def output(self, windowed_value, output_index=0):
+     # type: (WindowedValue, int) -> None
+-    cython.cast(Receiver, self.receivers[output_index]).receive(windowed_value)
++    self.receivers[output_index].receive(windowed_value)
+ 
+   def add_receiver(self, operation, output_index=0):
+     # type: (Operation, int) -> None
diff --git a/pkgs/development/python-modules/apache-beam/relax-deps.patch b/pkgs/development/python-modules/apache-beam/relax-deps.patch
new file mode 100644
index 0000000000000..67bd38f5e7cc6
--- /dev/null
+++ b/pkgs/development/python-modules/apache-beam/relax-deps.patch
@@ -0,0 +1,20 @@
+diff --git a/setup.py b/setup.py
+index 9429459622..2727b3becb 100644
+--- a/setup.py
++++ b/setup.py
+@@ -136,12 +136,12 @@ REQUIRED_PACKAGES = [
+     # version of dill. It is best to use the same version of dill on client and
+     # server, therefore list of allowed versions is very narrow.
+     # See: https://github.com/uqfoundation/dill/issues/341.
+-    'dill>=0.3.1.1,<0.3.2',
++    'dill>=0.3.1.1',
+     'fastavro>=0.21.4,<2',
+     'grpcio>=1.29.0,<2',
+     'hdfs>=2.1.0,<3.0.0',
+-    'httplib2>=0.8,<0.20.0',
+-    'numpy>=1.14.3,<1.21.0',
++    'httplib2>=0.8',
++    'numpy>=1.14.3',
+     'pymongo>=3.8.0,<4.0.0',
+     'oauth2client>=2.0.1,<5',
+     'protobuf>=3.12.2,<4',
diff --git a/pkgs/development/python-modules/apipkg/default.nix b/pkgs/development/python-modules/apipkg/default.nix
index 5e7ae3860a934..241ddfaa11ab3 100644
--- a/pkgs/development/python-modules/apipkg/default.nix
+++ b/pkgs/development/python-modules/apipkg/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "apipkg";
-  version = "1.5";
+  version = "2.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "37228cda29411948b422fae072f57e31d3396d2ee1c9783775980ee9c9990af6";
+    sha256 = "a4be31cf8081e660d2cdea6edfb8a0f39f385866abdcfcfa45e5a0887345cb70";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/apispec/3.nix b/pkgs/development/python-modules/apispec/3.nix
deleted file mode 100644
index e60a440df3f4b..0000000000000
--- a/pkgs/development/python-modules/apispec/3.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ 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/pkgs/development/python-modules/application/default.nix b/pkgs/development/python-modules/application/default.nix
deleted file mode 100644
index 90b21baafddaa..0000000000000
--- a/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/pkgs/development/python-modules/apprise/default.nix b/pkgs/development/python-modules/apprise/default.nix
index 18b829249198e..11990e7d39965 100644
--- a/pkgs/development/python-modules/apprise/default.nix
+++ b/pkgs/development/python-modules/apprise/default.nix
@@ -1,39 +1,75 @@
-{ lib, buildPythonPackage, fetchPypi, installShellFiles
-, Babel, requests, requests_oauthlib, six, click, markdown, pyyaml, cryptography
-, pytest-runner, coverage, flake8, mock, pytestCheckHook, pytest-cov, tox, gntp, sleekxmpp
+{ lib
+, Babel
+, buildPythonPackage
+, click
+, cryptography
+, fetchPypi
+, gntp
+, installShellFiles
+, markdown
+, mock
+, paho-mqtt
+, pytestCheckHook
+, pythonOlder
+, pyyaml
+, requests
+, requests_oauthlib
+, six
+, slixmpp
 }:
 
 buildPythonPackage rec {
   pname = "apprise";
-  version = "0.9.6";
+  version = "0.9.7";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-Fe0GIIGXydKP2DzWnnJ7SCgIeaTGEa/Wta6l0N7zl/g=";
+    hash = "sha256-BOMeSvwmGiZvA95+e2bceCGXRwowU5+zJAl7Sn4wKqM=";
   };
 
-  nativeBuildInputs = [ Babel installShellFiles ];
+  nativeBuildInputs = [
+    Babel
+    installShellFiles
+  ];
 
   propagatedBuildInputs = [
-    cryptography requests requests_oauthlib six click markdown pyyaml
+    click
+    cryptography
+    markdown
+    pyyaml
+    requests
+    requests_oauthlib
+    six
   ];
 
   checkInputs = [
-    pytest-runner coverage flake8 mock pytestCheckHook pytest-cov tox gntp sleekxmpp
+    gntp
+    mock
+    paho-mqtt
+    pytestCheckHook
+    slixmpp
   ];
 
-  disabledTests = [ "test_apprise_cli_nux_env"  ];
+  disabledTests = [
+    "test_apprise_cli_nux_env"
+    "test_plugin_mqtt_general"
+  ];
 
   postInstall = ''
     installManPage packaging/man/apprise.1
   '';
 
-  pythonImportsCheck = [ "apprise" ];
+  pythonImportsCheck = [
+    "apprise"
+  ];
 
   meta = with lib; {
+    description = "Push Notifications that work with just about every platform";
     homepage = "https://github.com/caronc/apprise";
-    description = "Push Notifications that work with just about every platform!";
     license = licenses.mit;
-    maintainers = [ maintainers.marsam ];
+    maintainers = with maintainers; [ marsam ];
   };
 }
diff --git a/pkgs/development/python-modules/approvaltests/default.nix b/pkgs/development/python-modules/approvaltests/default.nix
index 35e6c90f216d7..b74533e0d44b9 100644
--- a/pkgs/development/python-modules/approvaltests/default.nix
+++ b/pkgs/development/python-modules/approvaltests/default.nix
@@ -1,21 +1,34 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pyperclip }:
+{ lib, buildPythonPackage, fetchFromGitHub
+, beautifulsoup4
+, empty-files
+, numpy
+, pyperclip
+, pytest
+}:
 
 buildPythonPackage rec {
-  version = "0.2.6";
+  version = "3.6.0";
   pname = "approvaltests";
 
   # no tests included in PyPI tarball
   src = fetchFromGitHub {
     owner = "approvals";
     repo = "ApprovalTests.Python";
-    rev = version;
-    sha256 = "1k1bj8q1qm89a8xm4az6qk4qswwmgxw5jpdjcxmf93zh5hrcy9h9";
+    rev = "v${version}";
+    sha256 = "sha256-pgGuIoYV6JRM9h7hR8IeNduqsGm+UrKq+P/T1LM30NE=";
   };
 
-  propagatedBuildInputs = [ pyperclip ];
+  propagatedBuildInputs = [
+    beautifulsoup4
+    empty-files
+    numpy
+    pyperclip
+    pytest
+  ];
 
   postPatch = ''
     substituteInPlace setup.py \
+      --replace bs4 beautifulsoup4 \
       --replace "pyperclip==1.5.27" "pyperclip>=1.5.27"
   '';
 
diff --git a/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix b/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix
new file mode 100644
index 0000000000000..9fc959126b37f
--- /dev/null
+++ b/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix
@@ -0,0 +1,68 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, requests
+, appdirs
+, tabulate
+, msgpack
+, orjson
+, semver
+, packageurl-python
+, pythonOlder
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "appthreat-vulnerability-db";
+  version = "2.0.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "AppThreat";
+    repo = "vulnerability-db";
+    rev = "v${version}";
+    sha256 = "sha256-fqpBnxcRBBXsjJepxDuoDbT3hk5rXAvky11sIvQS9XI=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+    appdirs
+    tabulate
+    msgpack
+    orjson
+    semver
+    packageurl-python
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace pytest.ini \
+      --replace " --cov-append --cov-report term --cov vdb" ""
+  '';
+
+  preCheck = ''
+    export HOME=$(mktemp -d);
+  '';
+
+  disabledTests = [
+    # Tests require network access
+    "test_bulk_search"
+    "test_download_recent"
+  ];
+
+  pythonImportsCheck = [
+    "vdb"
+  ];
+
+  meta = with lib; {
+    description = "Vulnerability database and package search for sources such as OSV, NVD, GitHub and npm";
+    homepage = "https://github.com/appthreat/vulnerability-db";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/apptools/default.nix b/pkgs/development/python-modules/apptools/default.nix
index 4ee3add12b131..1b67f4921e26a 100644
--- a/pkgs/development/python-modules/apptools/default.nix
+++ b/pkgs/development/python-modules/apptools/default.nix
@@ -1,12 +1,24 @@
-{ lib, fetchPypi, buildPythonPackage
-, fetchpatch, configobj, six, traitsui
-, pytestCheckHook, tables, pandas
-, pythonOlder, importlib-resources
+{ lib
+, buildPythonPackage
+, configobj
+, fetchpatch
+, fetchPypi
+, importlib-resources
+, pandas
+, pytestCheckHook
+, pythonAtLeast
+, pythonOlder
+, tables
+, traits
+, traitsui
 }:
 
 buildPythonPackage rec {
   pname = "apptools";
   version = "5.1.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
@@ -24,7 +36,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     configobj
-    six
+    traits
     traitsui
   ] ++ lib.optionals (pythonOlder "3.9") [
     importlib-resources
@@ -40,10 +52,22 @@ buildPythonPackage rec {
     export HOME=$TMP
   '';
 
+  disabledTestPaths = lib.optionals (pythonAtLeast "3.10") [
+    # https://github.com/enthought/apptools/issues/303
+    "apptools/io/h5/tests/test_dict_node.py"
+    "apptools/io/h5/tests/test_file.py"
+    "apptools/io/h5/tests/test_table_node.py"
+  ];
+
+
+  pythonImportsCheck = [
+    "apptools"
+  ];
+
   meta = with lib; {
-    description = "Set of packages that Enthought has found useful in creating a number of applications.";
+    description = "Set of packages that Enthought has found useful in creating a number of applications";
     homepage = "https://github.com/enthought/apptools";
-    maintainers = with maintainers; [ knedlsepp ];
     license = licenses.bsdOriginal;
+    maintainers = with maintainers; [ knedlsepp ];
   };
 }
diff --git a/pkgs/development/python-modules/apsw/default.nix b/pkgs/development/python-modules/apsw/default.nix
index 034e3e0df256d..46ae3fc34e565 100644
--- a/pkgs/development/python-modules/apsw/default.nix
+++ b/pkgs/development/python-modules/apsw/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "apsw";
-  version = "3.36.0-r1";
+  version = "3.37.0-r1";
   format = "setuptools";
 
   disabled = isPyPy;
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "rogerbinns";
     repo = "apsw";
     rev = version;
-    sha256 = "sha256-kQqJqDikvEC0+PNhQxSNTcjQc+RwvaOSGz9VL3FCetg=";
+    sha256 = "0p6rlbk7p6hj5mbmk1a8phazw3ym6hf5103zkxzg4p1jgjgi0xpl";
   };
 
   buildInputs = [
diff --git a/pkgs/development/python-modules/apycula/default.nix b/pkgs/development/python-modules/apycula/default.nix
index 53851ded566d9..d8a369d6da04e 100644
--- a/pkgs/development/python-modules/apycula/default.nix
+++ b/pkgs/development/python-modules/apycula/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "apycula";
-  version = "0.0.1a12";
+  version = "0.2a2";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit version;
     pname = "Apycula";
-    hash = "sha256-TFb1C1GaMAK+ckEeXDxSyO2Cgx5dmq62daoSnAiAFmI=";
+    hash = "sha256-pcVoYGBhp9jyuWBJ/Rpi8cjwDgPjhJ1PrPblj5DQTpk=";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/archinfo/default.nix b/pkgs/development/python-modules/archinfo/default.nix
index ce7bfb1668f19..add8e72d8e7e3 100644
--- a/pkgs/development/python-modules/archinfo/default.nix
+++ b/pkgs/development/python-modules/archinfo/default.nix
@@ -3,17 +3,21 @@
 , fetchFromGitHub
 , pytestCheckHook
 , nose
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "archinfo";
-  version = "9.1.10913";
+  version = "9.1.11752";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "angr";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-VLFbjKX7WXWoJCS9hYwtEikGC48gRg7E24D9Un+/gdc=";
+    hash = "sha256-D1YssHa14q2jxn4HtOYZlTdwGPkiiMhWuOh08fj87ic=";
   };
 
   checkInputs = [
@@ -21,7 +25,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "archinfo" ];
+  pythonImportsCheck = [
+    "archinfo"
+  ];
 
   meta = with lib; {
     description = "Classes with architecture-specific information";
diff --git a/pkgs/development/python-modules/aresponses/default.nix b/pkgs/development/python-modules/aresponses/default.nix
index f2a7f0f8f26bc..697b8ebbf0809 100644
--- a/pkgs/development/python-modules/aresponses/default.nix
+++ b/pkgs/development/python-modules/aresponses/default.nix
@@ -2,24 +2,24 @@
 , aiohttp
 , buildPythonPackage
 , fetchFromGitHub
-, isPy3k
+, pythonOlder
 , pytest
 , pytest-asyncio
-, pytest-cov
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "aresponses";
-  version = "2.1.4";
+  version = "2.1.5";
+  format = "setuptools";
 
-  disabled = !isPy3k;
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "CircleUp";
     repo = pname;
     rev = version;
-    sha256 = "sha256-crMiMZ2IDuYDFt8Bixg3NRhlUa2tqmfzd7ZeHM+2Iu4=";
+    sha256 = "sha256-9ZzIrj87TwxQi0YMlTHFPAp0V1oxfuL0+RMGXxUxFoE=";
   };
 
   propagatedBuildInputs = [
@@ -34,19 +34,20 @@ buildPythonPackage rec {
   checkInputs = [
     aiohttp
     pytest-asyncio
-    pytest-cov
     pytestCheckHook
   ];
 
-  # Disable tests which requires network access
   disabledTests = [
+    # Disable tests which requires network access
     "test_foo"
     "test_passthrough"
   ];
 
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [ "aresponses" ];
+  pythonImportsCheck = [
+    "aresponses"
+  ];
 
   meta = with lib; {
     description = "Asyncio testing server";
@@ -55,3 +56,4 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ makefu ];
   };
 }
+
diff --git a/pkgs/development/python-modules/argcomplete/default.nix b/pkgs/development/python-modules/argcomplete/default.nix
index cf2f92557206e..0aa3e8c1b948c 100644
--- a/pkgs/development/python-modules/argcomplete/default.nix
+++ b/pkgs/development/python-modules/argcomplete/default.nix
@@ -7,11 +7,11 @@
 }:
 buildPythonPackage rec {
   pname = "argcomplete";
-  version = "1.12.3";
+  version = "2.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2c7dbffd8c045ea534921e63b0be6fe65e88599990d8dc408ac8c542b72a5445";
+    sha256 = "6372ad78c89d662035101418ae253668445b391755cfe94ea52f1b9d22425b20";
   };
 
   doCheck = false; # meant to be ran with interactive interpreter
diff --git a/pkgs/development/python-modules/argon2-cffi-bindings/default.nix b/pkgs/development/python-modules/argon2-cffi-bindings/default.nix
new file mode 100644
index 0000000000000..3f1f3f86666cf
--- /dev/null
+++ b/pkgs/development/python-modules/argon2-cffi-bindings/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, cffi
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "argon2-cffi-bindings";
+  version = "21.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3";
+  };
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    cffi
+  ];
+
+  # tarball doesn't include tests, but the upstream tests are minimal
+  doCheck = false;
+  pythonImportsCheck = [ "_argon2_cffi_bindings" ];
+
+  meta = with lib; {
+    description = "Low-level CFFI bindings for Argon2";
+    homepage = "https://github.com/hynek/argon2-cffi-bindings";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jonringer ];
+  };
+}
diff --git a/pkgs/development/python-modules/argon2_cffi/default.nix b/pkgs/development/python-modules/argon2_cffi/default.nix
index a40fb806845e6..839429bc948be 100644
--- a/pkgs/development/python-modules/argon2_cffi/default.nix
+++ b/pkgs/development/python-modules/argon2_cffi/default.nix
@@ -9,21 +9,26 @@
 , isPy3k
 , lib
 , stdenv
+, argon2-cffi-bindings
 }:
 
 buildPythonPackage rec {
   pname = "argon2_cffi";
-  version = "21.1.0";
+  version = "21.3.0";
+  format = "flit";
 
   src = fetchPypi {
     pname = "argon2-cffi";
     inherit version;
-    sha256 = "sha256-9xC2EQPRofaSyj7L0Tc+KKpeVFrGJboGf/L+yhsruHA=";
+    sha256 = "d384164d944190a7dd7ef22c6aa3ff197da12962bd04b17f64d4e93d934dba5b";
   };
 
   propagatedBuildInputs = [ cffi six ] ++ lib.optional (!isPy3k) enum34;
 
-  propagatedNativeBuildInputs = [ cffi ];
+  propagatedNativeBuildInputs = [
+    argon2-cffi-bindings
+    cffi
+  ];
 
   ARGON2_CFFI_USE_SSE2 = lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) "0";
 
diff --git a/pkgs/development/python-modules/arrow/2.nix b/pkgs/development/python-modules/arrow/2.nix
deleted file mode 100644
index cc702a525f957..0000000000000
--- a/pkgs/development/python-modules/arrow/2.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, 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/pkgs/development/python-modules/arviz/default.nix b/pkgs/development/python-modules/arviz/default.nix
index 5aa10201917d0..22d545f04f503 100644
--- a/pkgs/development/python-modules/arviz/default.nix
+++ b/pkgs/development/python-modules/arviz/default.nix
@@ -9,11 +9,14 @@
 , numpy
 , pandas
 , pytest
+, cloudpickle
 , scipy
 , setuptools
-, tensorflow-probability
+, typing-extensions
+# , tensorflow-probability (incompatible version)
 , xarray
-#, h5py (used by disabled tests)
+, zarr
+, h5py
 #, pymc3 (broken)
 #, pyro-ppl (broken)
 #, pystan (not packaged)
@@ -45,28 +48,36 @@ buildPythonPackage rec {
     scipy
   ];
 
+  postPatch = ''
+    substituteInPlace requirements.txt \
+      --replace "typing_extensions>=3.7.4.3,<4" "typing_extensions>=3.7.4.3"
+  '';
+
   checkInputs = [
     bokeh
     emcee
     numba
     pytest
-    tensorflow-probability
-    #h5py (used by disabled tests)
-    #pymc3 (broken)
-    #pyro-ppl (broken)
+    cloudpickle
+    zarr
+    #tensorflow-probability (used by disabled tests)
+    h5py
+    #pymc3 (broken, used by disabled tests)
+    #pyro-ppl (broken, used by disabled tests)
     #pystan (not packaged)
-    #numpyro (not packaged)
+    #numpyro (not packaged, used by disabled tests)
   ];
 
   # check requires pymc3 and pyro-ppl, which are currently broken, and pystan
-  # and numpyro, which are not yet packaged, some checks also need to make
+  # and numpyro, which are not yet packaged, and an incompatible (old) version
+  # of tensorflow-probability. some checks also need to make
   # directories and do not have permission to do so. So we can only check part
   # of the package
   # Additionally, there are some failures with the plots test, which revolve
   # around attempting to output .mp4 files through an interface that only wants
   # to output .html files.
   # The following test have been disabled as a result: data_cmdstanpy,
-  # data_numpyro, data_pyro, data_pystan, and plots.
+  # data_numpyro, data_pyro, data_pystan, data_tfp, data_pymc3 and plots.
   checkPhase = ''
     cd arviz/tests/
     export HOME=$TMPDIR
@@ -76,11 +87,13 @@ buildPythonPackage rec {
       base_tests/test_plot_utils.py \
       base_tests/test_rcparams.py \
       base_tests/test_stats.py \
+      base_tests/test_stats_numba.py \
       base_tests/test_stats_utils.py \
       base_tests/test_utils.py \
+      base_tests/test_utils_numba.py \
+      base_tests/test_data_zarr.py \
       external_tests/test_data_cmdstan.py \
-      external_tests/test_data_emcee.py \
-      external_tests/test_data_tfp.py
+      external_tests/test_data_emcee.py
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/asdf/default.nix b/pkgs/development/python-modules/asdf/default.nix
index 363d8900163a3..1a9ba2dd0963c 100644
--- a/pkgs/development/python-modules/asdf/default.nix
+++ b/pkgs/development/python-modules/asdf/default.nix
@@ -17,13 +17,13 @@
 
 buildPythonPackage rec {
   pname = "asdf";
-  version = "2.8.1";
+  version = "2.8.3";
   disabled = pythonOlder "3.6";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-bp3fME3FTa5vcj7qUoUEGqvuI2uwSpI13zDcFgWvbJw=";
+    sha256 = "de0f70ffb2e0d539461940d6f7529c3548541fa098d8edc37af256af61c09b44";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/ase/3.17.nix b/pkgs/development/python-modules/ase/3.17.nix
deleted file mode 100644
index 40b9b405aab13..0000000000000
--- a/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/pkgs/development/python-modules/asgineer/default.nix b/pkgs/development/python-modules/asgineer/default.nix
new file mode 100644
index 0000000000000..3a1861bbd182c
--- /dev/null
+++ b/pkgs/development/python-modules/asgineer/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "asgineer";
+  version = "0.8.1";
+
+  # PyPI tarball doesn't include tests directory
+  src = fetchFromGitHub {
+    owner = "almarklein";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0hd1i9pc8m7sc8bkn31q4ygkmnl5vklrcziq9zkdiqaqm8clyhcx";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+    requests
+  ];
+
+  meta = with lib; {
+    description = "A really thin ASGI web framework";
+    license = licenses.bsd2;
+    homepage = "https://asgineer.readthedocs.io";
+    maintainers = [ maintainers.matthiasbeyer ];
+  };
+}
+
diff --git a/pkgs/development/python-modules/aspell-python/default.nix b/pkgs/development/python-modules/aspell-python/default.nix
index 1d6c7b45d15b2..7c5c113dbd809 100644
--- a/pkgs/development/python-modules/aspell-python/default.nix
+++ b/pkgs/development/python-modules/aspell-python/default.nix
@@ -1,29 +1,57 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27, aspell, aspellDicts, python }:
+{ lib
+, aspell
+, aspellDicts
+, buildPythonPackage
+, fetchPypi
+, isPy27
+, pytestCheckHook
+, pythonAtLeast
+}:
 
 buildPythonPackage rec {
   pname = "aspell-python";
   version = "1.15";
+  format = "setuptools";
+
   disabled = isPy27;
 
   src = fetchPypi {
-    inherit version;
     pname = "aspell-python-py3";
+    inherit version;
     extension = "tar.bz2";
-    sha256 = "13dk3jrvqmfvf2w9b8afj37d8bh32kcx295lyn3z7r8qch792hi0";
+    hash = "sha256-IEKRDmQY5fOH9bQk0dkUAy7UzpBOoZW4cNtVvLMcs40=";
   };
 
-  buildInputs = [ aspell ];
+  buildInputs = [
+    aspell
+  ];
 
-  checkPhase = ''
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  preCheck = ''
     export ASPELL_CONF="dict-dir ${aspellDicts.en}/lib/aspell"
     export HOME=$(mktemp -d)
-    ${python.interpreter} test/unittests.py
   '';
 
-  pythonImportsCheck = [ "aspell" ];
+  pytestFlagsArray = [
+    "test/unittests.py"
+  ];
+
+  disabledTests = lib.optionals (pythonAtLeast "3.10") [
+    # https://github.com/WojciechMula/aspell-python/issues/22
+    "test_add"
+    "test_get"
+    "test_saveall"
+  ];
+
+  pythonImportsCheck = [
+    "aspell"
+  ];
 
   meta = with lib; {
-    description = "Python wrapper for aspell (C extension and python version)";
+    description = "Python wrapper for aspell (C extension and Python version)";
     homepage = "https://github.com/WojciechMula/aspell-python";
     license = licenses.bsd3;
     maintainers = with maintainers; [ SuperSandro2000 ];
diff --git a/pkgs/development/python-modules/asterisk-mbox/default.nix b/pkgs/development/python-modules/asterisk-mbox/default.nix
new file mode 100644
index 0000000000000..0da70911a17c0
--- /dev/null
+++ b/pkgs/development/python-modules/asterisk-mbox/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "asterisk-mbox";
+  version = "0.5.0";
+
+  src = fetchPypi {
+    pname = "asterisk_mbox";
+    inherit version;
+    sha256 = "0624f9ab85ce9c4d43655f8653e8539fa10c81b60fd7b94b1a15dce306c20888";
+  };
+
+  # no tests implemented
+  doCheck = false;
+
+  pythonImportsCheck = [ "asterisk_mbox" ];
+
+  meta = with lib; {
+    description = "The client side of a client/server to interact with Asterisk voicemail mailboxes";
+    homepage = "https://github.com/PhracturedBlue/asterisk_mbox";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/asteval/default.nix b/pkgs/development/python-modules/asteval/default.nix
index dd772e007cc1b..4bcfa7d8e6711 100644
--- a/pkgs/development/python-modules/asteval/default.nix
+++ b/pkgs/development/python-modules/asteval/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "asteval";
-  version = "0.9.25";
+  version = "0.9.26";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "newville";
     repo = pname;
     rev = version;
-    sha256 = "sha256-Jy+4NifItCGI1Jj25VakwoJcrpZw0Ng4cArf2M31WGs=";
+    sha256 = "0l2iv51yclqn52w3yvyz3brpbca076ivv70h4gd6bkhwjbax1i2b";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
diff --git a/pkgs/development/python-modules/astroid/1.6.nix b/pkgs/development/python-modules/astroid/1.6.nix
deleted file mode 100644
index 47c7e8f6eb3fe..0000000000000
--- a/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/pkgs/development/python-modules/astroid/default.nix b/pkgs/development/python-modules/astroid/default.nix
index 101f84b4fceab..ab62a565ce678 100644
--- a/pkgs/development/python-modules/astroid/default.nix
+++ b/pkgs/development/python-modules/astroid/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "astroid";
-  version = "2.9.0"; # Check whether the version is compatible with pylint
+  version = "2.9.3"; # Check whether the version is compatible with pylint
 
   disabled = pythonOlder "3.6.2";
 
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "PyCQA";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-sImWiWULZ1HS3JyQHfEhc4ZRZ6anOUTqZZGNIYj2MaY=";
+    sha256 = "1x77faggk1dgxy48ng31xj9h6p51w312kvk5zqgvd5f19nvznxyi";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
diff --git a/pkgs/development/python-modules/astropy-extension-helpers/default.nix b/pkgs/development/python-modules/astropy-extension-helpers/default.nix
index bd9dca338fcd3..8e5a2fda3301a 100644
--- a/pkgs/development/python-modules/astropy-extension-helpers/default.nix
+++ b/pkgs/development/python-modules/astropy-extension-helpers/default.nix
@@ -1,7 +1,9 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, findutils
 , pytestCheckHook
+, setuptools-scm
 }:
 
 buildPythonPackage rec {
@@ -14,9 +16,18 @@ buildPythonPackage rec {
     sha256 = "10iqjzmya2h4sk765dlm1pbqypwlqyh8rw59a5m9i63d3klnz2mc";
   };
 
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   patches = [ ./permissions.patch ];
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [ findutils pytestCheckHook ];
+
+  # avoid import mismatch errors, as conftest.py is copied to build dir
+  pytestFlagsArray = [
+    "extension_helpers"
+  ];
 
   pythonImportsCheck = [
     "extension_helpers"
diff --git a/pkgs/development/python-modules/astropy/default.nix b/pkgs/development/python-modules/astropy/default.nix
index 889c69d5313bd..78f02e2870ce8 100644
--- a/pkgs/development/python-modules/astropy/default.nix
+++ b/pkgs/development/python-modules/astropy/default.nix
@@ -1,49 +1,55 @@
 { lib
 , fetchPypi
-, setuptools-scm
 , buildPythonPackage
-, isPy3k
+, pythonOlder
+
+# build time
+, astropy-extension-helpers
+, astropy-helpers
 , cython
 , jinja2
+, setuptools-scm
+
+# runtime
 , numpy
-, pytest
-, pytest-astropy
-, astropy-helpers
-, astropy-extension-helpers
+, packaging
 , pyerfa
+, pyyaml
 }:
 
-buildPythonPackage rec {
+let
   pname = "astropy";
-  version = "4.3.1";
+  version = "5.0";
+in
+buildPythonPackage {
+  inherit pname version;
   format = "pyproject";
 
-  disabled = !isPy3k; # according to setup.py
+  disabled = pythonOlder "3.8"; # according to setup.cfg
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-LTlRIjtOt/No/K2Mg0DSc3TF2OO2NaY2J1rNs481zVE=";
+    sha256 = "70203e151e13292586a817b4069ce1aad4643567aff38b1d191c173bc54f3927";
   };
 
-  nativeBuildInputs = [ setuptools-scm astropy-helpers astropy-extension-helpers cython jinja2 ];
-  propagatedBuildInputs = [ numpy pyerfa ];
-  checkInputs = [ pytest pytest-astropy ];
-
-  preBuild = ''
-    export SETUPTOOLS_SCM_PRETEND_VERSION="${version}"
-  '';
-
-  # Tests must be run from the build directory.  astropy/samp tests
-  # require a network connection, so we ignore them. For some reason
-  # pytest --ignore does not work, so we delete the tests instead.
-  checkPhase = ''
-    cd build/lib.*
-    rm -f astropy/samp/tests/*
-    pytest
-  '';
-
-  # 368 failed, 10889 passed, 978 skipped, 69 xfailed in 196.24s
-  # doCheck = false;
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    astropy-extension-helpers
+    astropy-helpers
+    cython
+    jinja2
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    numpy
+    packaging
+    pyerfa
+    pyyaml
+  ];
+
+  # infinite recursion with pytest-astropy (pytest-astropy-header depends on astropy itself)
   doCheck = false;
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/astroquery/default.nix b/pkgs/development/python-modules/astroquery/default.nix
index f7764149a663a..8853b1e9e08d9 100644
--- a/pkgs/development/python-modules/astroquery/default.nix
+++ b/pkgs/development/python-modules/astroquery/default.nix
@@ -14,12 +14,12 @@
 
 buildPythonPackage rec {
   pname = "astroquery";
-  version = "0.4.1";
+  version = "0.4.5";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0xpqrl9h7sg55mql38xsfpbz9rxsm3mxfha1biqyly1gmxpmd47a";
+    sha256 = "20002f84b61fb11ceeae408a4cd23b379490e174054ec777f946df8a3f06be1b";
   };
 
   disabled = !isPy3k;
diff --git a/pkgs/development/python-modules/async-upnp-client/default.nix b/pkgs/development/python-modules/async-upnp-client/default.nix
index 3f09521e34f22..1c818d2724ea0 100644
--- a/pkgs/development/python-modules/async-upnp-client/default.nix
+++ b/pkgs/development/python-modules/async-upnp-client/default.nix
@@ -14,14 +14,16 @@
 
 buildPythonPackage rec {
   pname = "async-upnp-client";
-  version = "0.23.1";
-  disabled = pythonOlder "3.6";
+  version = "0.23.5";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "StevenLooman";
     repo = "async_upnp_client";
     rev = version;
-    sha256 = "sha256-m8oTqGbsJ99ImtnSlL4LX1qR0bUhGtVPPWmjsZfV6sE=";
+    sha256 = "sha256-fMlP8LX+OFiw6o1rpz8J0sEsACk5x9dQko1oGEaZFuc=";
   };
 
   propagatedBuildInputs = [
@@ -59,7 +61,9 @@ buildPythonPackage rec {
     "test_deferred_callback_url"
   ];
 
-  pythonImportsCheck = [ "async_upnp_client" ];
+  pythonImportsCheck = [
+    "async_upnp_client"
+  ];
 
   meta = with lib; {
     description = "Asyncio UPnP Client library for Python";
diff --git a/pkgs/development/python-modules/async_generator/default.nix b/pkgs/development/python-modules/async_generator/default.nix
index dfbd0dbb9968e..fb7dec6d6ed46 100644
--- a/pkgs/development/python-modules/async_generator/default.nix
+++ b/pkgs/development/python-modules/async_generator/default.nix
@@ -1,25 +1,25 @@
 { lib, buildPythonPackage, fetchPypi, pythonOlder, isPy35, pytest, pytest-asyncio }:
 
 buildPythonPackage rec {
-  pname = "async_generator";
+  pname = "async-generator";
   version = "1.10";
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
-    inherit pname version;
+    pname = "async_generator";
+    inherit version;
     sha256 = "6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144";
   };
 
+  # no longer compatible with pytest-asyncio
+  doCheck = false;
   checkInputs = [ pytest pytest-asyncio ];
 
   checkPhase = ''
     pytest -W error -ra -v --pyargs async_generator
   '';
 
-  # disable tests on python3.5 to avoid circular dependency with pytest-asyncio
-  doCheck = !isPy35;
-
   meta = with lib; {
     description = "Async generators and context managers for Python 3.5+";
     homepage = "https://github.com/python-trio/async_generator";
diff --git a/pkgs/development/python-modules/async_timeout/default.nix b/pkgs/development/python-modules/async_timeout/default.nix
index ae8bacc944151..2a67ed1d67100 100644
--- a/pkgs/development/python-modules/async_timeout/default.nix
+++ b/pkgs/development/python-modules/async_timeout/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "async-timeout";
-  version = "4.0.1";
+  version = "4.0.2";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-uTDLFho5BC+SIvbvtzATmch+6rOUcn7FQ3kko21u71E=";
+    sha256 = "2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/asyncio-dgram/default.nix b/pkgs/development/python-modules/asyncio-dgram/default.nix
index b06af4d2bbe0d..a01e9389f431e 100644
--- a/pkgs/development/python-modules/asyncio-dgram/default.nix
+++ b/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.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "jsbronder";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1ibyphncb3d8vrs3yk8j6l1smmnibizx9k1vir2njhi09r57h9mx";
+    sha256 = "sha256-Eb/9JtgPT2yOlfnn5Ox8M0kcQhSlRCuX8+Rq6amki8Q=";
   };
 
-  # 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/pkgs/development/python-modules/asyncio_mqtt/default.nix b/pkgs/development/python-modules/asyncio_mqtt/default.nix
index fd8a52f5a6aeb..c0ae1cea95f72 100644
--- a/pkgs/development/python-modules/asyncio_mqtt/default.nix
+++ b/pkgs/development/python-modules/asyncio_mqtt/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "asyncio-mqtt";
-  version = "0.11.0";
+  version = "0.12.1";
   format = "setuptools";
 
   src = fetchPypi {
     pname = "asyncio_mqtt";
     inherit version;
-    sha256 = "sha256-uJown3bNA+pLJlorJcCjpMMFosX94gt/2tLAjIkuXLA=";
+    sha256 = "sha256-bb+FpF+U0m50ZUEWgK2jlHtQVG6YII1dUuegp+16fDg=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/asyncpg/default.nix b/pkgs/development/python-modules/asyncpg/default.nix
index 7ae4cb1b7898a..7d28810380f05 100644
--- a/pkgs/development/python-modules/asyncpg/default.nix
+++ b/pkgs/development/python-modules/asyncpg/default.nix
@@ -1,14 +1,21 @@
-{ lib, isPy3k, fetchPypi, buildPythonPackage
-, uvloop, postgresql }:
+{ lib
+, fetchPypi
+, buildPythonPackage
+, uvloop
+, postgresql
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "asyncpg";
   version = "0.25.0";
-  disabled = !isPy3k;
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "63f8e6a69733b285497c2855464a34de657f2cccd25aeaeeb5071872e9382540";
+    hash = "sha256-Y/jmppczsoVJfChVRko03mV/LMzSWurutQcYcuk4JUA=";
   };
 
   checkInputs = [
@@ -16,15 +23,17 @@ buildPythonPackage rec {
     postgresql
   ];
 
-  pythonImportsCheck = [ "asyncpg" ];
+  pythonImportsCheck = [
+    "asyncpg"
+  ];
 
   meta = with lib; {
+    description = "Asyncio PosgtreSQL driver";
     homepage = "https://github.com/MagicStack/asyncpg";
-    description = "An asyncio PosgtreSQL driver";
     longDescription = ''
       Asyncpg is a database interface library designed specifically for
       PostgreSQL and Python/asyncio. asyncpg is an efficient, clean
-      implementation of PostgreSQL server binary protocol for use with Python’s
+      implementation of PostgreSQL server binary protocol for use with Python's
       asyncio framework.
     '';
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/asyncssh/default.nix b/pkgs/development/python-modules/asyncssh/default.nix
index 7cdfbb66b26bd..2db70c162d265 100644
--- a/pkgs/development/python-modules/asyncssh/default.nix
+++ b/pkgs/development/python-modules/asyncssh/default.nix
@@ -1,31 +1,32 @@
 { lib
+, bcrypt
 , buildPythonPackage
-, fetchPypi
-, pythonOlder
 , cryptography
-, bcrypt
-, gssapi
+, fetchPypi
 , fido2
+, gssapi
 , libnacl
 , libsodium
 , nettle
-, python-pkcs11
-, pyopenssl
-, openssl
 , openssh
+, openssl
+, pyopenssl
 , pytestCheckHook
+, python-pkcs11
+, pythonOlder
+, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "asyncssh";
-  version = "2.8.1";
+  version = "2.9.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0648eba58d72653755f28e26c9bd83147d9652c1f2f5e87fbf5a87d7f8fbf83a";
+    sha256 = "sha256-PMM32AZhlGVFW/GH6KkeP1dUI3GBhOI4+a6MQcTzOvE=";
   };
 
   propagatedBuildInputs = [
@@ -36,8 +37,9 @@ buildPythonPackage rec {
     libnacl
     libsodium
     nettle
-    python-pkcs11
     pyopenssl
+    python-pkcs11
+    typing-extensions
   ];
 
   checkInputs = [
@@ -66,6 +68,8 @@ buildPythonPackage rec {
     "TestSKAuthCTAP2"
     # Requires network access
     "test_connect_timeout_exceeded"
+    # Fails in the sandbox
+    "test_forward_remote"
   ];
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/asyncstdlib/default.nix b/pkgs/development/python-modules/asyncstdlib/default.nix
index 031c696f020fa..ee261946a1ec3 100644
--- a/pkgs/development/python-modules/asyncstdlib/default.nix
+++ b/pkgs/development/python-modules/asyncstdlib/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "asyncstdlib";
-  version = "3.10.2";
+  version = "3.10.3";
   disabled = pythonOlder "3.7";
   format = "flit";
 
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "maxfischer2781";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-vjOhfEsAldTjROFUer1SgEX1KxnNM/WwtLsCB9ZV1WM=";
+    sha256 = "sha256-Q547XKsn4/U7XbDhZADF4qPpFxAGPmv9bAXSQZnNUIo=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/asyncwhois/default.nix b/pkgs/development/python-modules/asyncwhois/default.nix
index 4bb201b251e96..a607fe9658270 100644
--- a/pkgs/development/python-modules/asyncwhois/default.nix
+++ b/pkgs/development/python-modules/asyncwhois/default.nix
@@ -1,9 +1,9 @@
 { lib
-, aiodns
 , asynctest
 , buildPythonPackage
 , fetchFromGitHub
 , pytestCheckHook
+, python-socks
 , pythonOlder
 , tldextract
 , whodap
@@ -11,7 +11,8 @@
 
 buildPythonPackage rec {
   pname = "asyncwhois";
-  version = "0.4.1";
+  version = "1.0.0";
+  format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
@@ -19,11 +20,11 @@ buildPythonPackage rec {
     owner = "pogzyb";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-mKKN2IuveOE+3mZGS5LFa15lJPA9y7KgLd0FoRuEMH0=";
+    hash = "sha256-9tSGfF/Ezuya4pEyr1XolWXvSO/F/UrobRVlyHITNTU=";
   };
 
   propagatedBuildInputs = [
-    aiodns
+    python-socks
     tldextract
     whodap
   ];
@@ -33,8 +34,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  # Disable tests that require network access
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "python-socks[asyncio]" "python-socks"
+  '';
+
   disabledTests = [
+    # Tests require network access
     "test_pywhois_aio_get_hostname_from_ip"
     "test_pywhois_get_hostname_from_ip"
     "test_pywhois_aio_lookup_ipv4"
@@ -44,9 +50,13 @@ buildPythonPackage rec {
     "test_from_whois_cmd"
     "test_get_hostname_from_ip"
     "test_whois_query_run"
+    "test_whois_query_create_connection"
+    "test_whois_query_send_and_recv"
   ];
 
-  pythonImportsCheck = [ "asyncwhois" ];
+  pythonImportsCheck = [
+    "asyncwhois"
+  ];
 
   meta = with lib; {
     description = "Python module for retrieving WHOIS information";
diff --git a/pkgs/development/python-modules/asysocks/default.nix b/pkgs/development/python-modules/asysocks/default.nix
index 16e71a62ff4b4..4ad71306789eb 100644
--- a/pkgs/development/python-modules/asysocks/default.nix
+++ b/pkgs/development/python-modules/asysocks/default.nix
@@ -1,20 +1,32 @@
 { lib
+, asn1crypto
 , buildPythonPackage
 , fetchPypi
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "asysocks";
-  version = "0.1.2";
+  version = "0.1.7";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1hi9hzih265qlh7x32r5pbaqm9wkhm52yrdiksnd4gl5nrdgwcwv";
+    sha256 = "sha256-I9X8+ucadYJsPteHvZsbw7GJ7DdliWG86DyemUVeNUw=";
   };
 
+  propagatedBuildInputs = [
+    asn1crypto
+  ];
+
   # Upstream hasn't release the tests yet
   doCheck = false;
-  pythonImportsCheck = [ "asysocks" ];
+
+  pythonImportsCheck = [
+    "asysocks"
+  ];
 
   meta = with lib; {
     description = "Python Socks4/5 client and server library";
diff --git a/pkgs/development/python-modules/atlassian-python-api/default.nix b/pkgs/development/python-modules/atlassian-python-api/default.nix
index 31d615f5314be..399926c5e05f6 100755
--- a/pkgs/development/python-modules/atlassian-python-api/default.nix
+++ b/pkgs/development/python-modules/atlassian-python-api/default.nix
@@ -7,29 +7,43 @@
 , requests_oauthlib
 , six
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "atlassian-python-api";
-  version = "3.8.0";
+  version = "3.19.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "atlassian-api";
     repo = pname;
     rev = version;
-    sha256 = "sha256-J0/CtfBtOdWReKQS/VvOL/3r+j4zJfnv/ICIXepKUvc=";
+    sha256 = "sha256-SJsqk8TM+5UztN1ZDyYrOjNIWDLhm5XtLxPflIGPxKQ=";
   };
 
+  propagatedBuildInputs = [
+    deprecated
+    oauthlib
+    requests
+    requests_oauthlib
+    six
+  ];
+
   checkInputs = [
     pytestCheckHook
   ];
 
-  propagatedBuildInputs = [ deprecated oauthlib requests requests_oauthlib six ];
+  pythonImportsCheck = [
+    "atlassian"
+  ];
 
   meta = with lib; {
     description = "Python Atlassian REST API Wrapper";
     homepage = "https://github.com/atlassian-api/atlassian-python-api";
     license = licenses.asl20;
-    maintainers = [ maintainers.arnoldfarkas ];
+    maintainers = with maintainers; [ arnoldfarkas ];
   };
 }
diff --git a/pkgs/development/python-modules/atpublic/default.nix b/pkgs/development/python-modules/atpublic/default.nix
index 8bf81556770a3..16f0f0ddffd96 100644
--- a/pkgs/development/python-modules/atpublic/default.nix
+++ b/pkgs/development/python-modules/atpublic/default.nix
@@ -3,22 +3,27 @@
 , fetchPypi
 , pytestCheckHook
 , pythonOlder
+, pdm-pep517
 , sybil
 , typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "atpublic";
-  version = "2.3";
-  format = "setuptools";
+  version = "3.0.1";
+  format = "pyproject";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d6b9167fc3e09a2de2d2adcfc9a1b48d84eab70753c97de3800362e1703e3367";
+    sha256 = "bb072b50e6484490404e5cb4034e782aaa339fdd6ac36434e53c10791aef18bf";
   };
 
+  nativeBuildInputs = [
+    pdm-pep517
+  ];
+
   propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
     typing-extensions
   ];
@@ -29,8 +34,7 @@ buildPythonPackage rec {
   ];
 
   postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "--cov=public" ""
+    sed -i '/cov=public/d' pyproject.toml
   '';
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/attrdict/default.nix b/pkgs/development/python-modules/attrdict/default.nix
index cb87b9027f04b..3a9834ec86575 100644
--- a/pkgs/development/python-modules/attrdict/default.nix
+++ b/pkgs/development/python-modules/attrdict/default.nix
@@ -1,19 +1,56 @@
-{ lib, buildPythonPackage, fetchPypi, coverage, nose, six }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, coverage
+, pythonOlder
+, nose
+, pytestCheckHook
+, six
+}:
 
 buildPythonPackage rec {
   pname = "attrdict";
   version = "2.0.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "35c90698b55c683946091177177a9e9c0713a0860f0e049febd72649ccd77b70";
+    hash = "sha256-NckGmLVcaDlGCRF3F3qenAcToIYPDgSf69cmSczXe3A=";
   };
 
-  propagatedBuildInputs = [ coverage nose six ];
+  propagatedBuildInputs = [
+    six
+  ];
+
+  checkInputs = [
+    coverage
+    nose
+  ];
+
+  postPatch = ''
+    substituteInPlace attrdict/merge.py \
+      --replace "from collections" "from collections.abc"
+    substituteInPlace attrdict/mapping.py \
+      --replace "from collections" "from collections.abc"
+    substituteInPlace attrdict/default.py \
+      --replace "from collections" "from collections.abc"
+    substituteInPlace attrdict/mixins.py \
+      --replace "from collections" "from collections.abc"
+  '';
+
+  # Tests are not shipped and source is not tagged
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "attrdict"
+  ];
 
   meta = with lib; {
     description = "A dict with attribute-style access";
     homepage = "https://github.com/bcj/AttrDict";
     license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/attrs/default.nix b/pkgs/development/python-modules/attrs/default.nix
index 08730e3d689ec..4b10f4203e8ba 100644
--- a/pkgs/development/python-modules/attrs/default.nix
+++ b/pkgs/development/python-modules/attrs/default.nix
@@ -6,14 +6,17 @@
 
 buildPythonPackage rec {
   pname = "attrs";
-  version = "21.2.0";
+  version = "21.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb";
+    hash = "sha256-YmuoI0IR25joad92IwoTfExAoS1yRFxF1fW3FvB24v0=";
   };
 
-  outputs = [ "out" "testout" ];
+  outputs = [
+    "out"
+    "testout"
+  ];
 
   postInstall = ''
     # Install tests as the tests output.
@@ -21,7 +24,9 @@ buildPythonPackage rec {
     cp -R tests $testout/tests
   '';
 
-  pythonImportsCheck = [ "attr" ];
+  pythonImportsCheck = [
+    "attr"
+  ];
 
   # pytest depends on attrs, so we can't do this out-of-the-box.
   # Instead, we do this as a passthru.tests test.
@@ -35,5 +40,6 @@ buildPythonPackage rec {
     description = "Python attributes without boilerplate";
     homepage = "https://github.com/hynek/attrs";
     license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/aurorapy/default.nix b/pkgs/development/python-modules/aurorapy/default.nix
new file mode 100644
index 0000000000000..17abcf0e9c476
--- /dev/null
+++ b/pkgs/development/python-modules/aurorapy/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitLab
+, future
+, pyserial
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "aurorapy";
+  version = "0.2.6";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitLab {
+    owner = "energievalsabbia";
+    repo = pname;
+    rev = version;
+    hash = "sha256-DMlzzLe94dbeHjESmLc045v7vQ//IEsngAv7TeVznHE=";
+  };
+
+  propagatedBuildInputs = [
+    future
+    pyserial
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "aurorapy"
+  ];
+
+  meta = with lib; {
+    description = "Implementation of the communication protocol for Power-One Aurora inverters";
+    homepage = "https://gitlab.com/energievalsabbia/aurorapy";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/autarco/default.nix b/pkgs/development/python-modules/autarco/default.nix
new file mode 100644
index 0000000000000..7ff630376c068
--- /dev/null
+++ b/pkgs/development/python-modules/autarco/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, aiohttp
+, aresponses
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, yarl
+}:
+
+buildPythonPackage rec {
+  pname = "autarco";
+  version = "0.1.0";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "klaasnicolaas";
+    repo = "python-autarco";
+    rev = "v${version}";
+    hash = "sha256-ID1lCGfF6XHVv8Azd34a30hcsX17uMXo22stAhYH1Uo=";
+  };
+
+  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 = [
+    "autarco"
+  ];
+
+  meta = with lib; {
+    description = "Module for the Autarco Inverter";
+    homepage = "https://github.com/klaasnicolaas/python-autarco";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/autopage/default.nix b/pkgs/development/python-modules/autopage/default.nix
index 9a2ca722a62bc..0bb5c09f4104a 100644
--- a/pkgs/development/python-modules/autopage/default.nix
+++ b/pkgs/development/python-modules/autopage/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "autopage";
-  version = "0.4.0";
+  version = "0.5.0";
 
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "18f511d8ef2e4d3cc22a986d345eab0e03f95b9fa80b74ca63b7fb001551dc42";
+    sha256 = "sha256-UwW0PMB5gXDXEk5aL+7Plp5F9KC691yzUROBFOr3a4M=";
   };
 
   pythonImportsCheck = [ "autopage" ];
diff --git a/pkgs/development/python-modules/awesomeversion/default.nix b/pkgs/development/python-modules/awesomeversion/default.nix
index f99407030cdd4..84a3aec05b3f6 100644
--- a/pkgs/development/python-modules/awesomeversion/default.nix
+++ b/pkgs/development/python-modules/awesomeversion/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "awesomeversion";
-  version = "21.11.0";
+  version = "22.1.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "ludeeus";
     repo = pname;
     rev = version;
-    sha256 = "sha256-qxN5AdLlzadG0/raeAyJ/37PLgYLndl1JQSVkgdLv/4=";
+    sha256 = "sha256-eoY920c8mgunvZd0M/vR7+bMCPFqqCm3F/fq0vo6K/0=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/aws-lambda-builders/default.nix b/pkgs/development/python-modules/aws-lambda-builders/default.nix
index b127ad2410e58..24de88aeca12a 100644
--- a/pkgs/development/python-modules/aws-lambda-builders/default.nix
+++ b/pkgs/development/python-modules/aws-lambda-builders/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "aws-lambda-builders";
-  version = "1.10.0";
+  version = "1.11.0";
 
   # No tests available in PyPI tarball
   src = fetchFromGitHub {
     owner = "awslabs";
     repo = "aws-lambda-builders";
     rev = "v${version}";
-    sha256 = "0nrqxgl24c6lknxhmmf7vkhvdy54dhnr9qcm1r1gwxzdsymq2l54";
+    sha256 = "sha256-3zlEpPo35K9R3uyUUsvsCx45E93Ih9VVhdRhNwIvZ7k=";
   };
 
   # Package is not compatible with Python 3.5
diff --git a/pkgs/development/python-modules/aws-sam-translator/default.nix b/pkgs/development/python-modules/aws-sam-translator/default.nix
index 4ca5df17109fc..ca01e35a3c557 100644
--- a/pkgs/development/python-modules/aws-sam-translator/default.nix
+++ b/pkgs/development/python-modules/aws-sam-translator/default.nix
@@ -1,7 +1,6 @@
 { lib
 , boto3
 , buildPythonPackage
-, enum34
 , fetchFromGitHub
 , jsonschema
 , mock
@@ -15,6 +14,9 @@
 buildPythonPackage rec {
   pname = "aws-sam-translator";
   version = "1.42.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "aws";
@@ -27,11 +29,11 @@ buildPythonPackage rec {
     boto3
     jsonschema
     six
-  ] ++ lib.optionals (pythonOlder "3.4") [
-    enum34
   ];
 
   postPatch = ''
+    substituteInPlace requirements/base.txt \
+      --replace "jsonschema~=3.2" "jsonschema>=3.2"
     substituteInPlace pytest.ini \
       --replace " --cov samtranslator --cov-report term-missing --cov-fail-under 95" ""
   '';
@@ -43,7 +45,14 @@ buildPythonPackage rec {
     pyyaml
   ];
 
-  pythonImportsCheck = [ "samtranslator" ];
+  disabledTests = [
+    # AssertionError: Expected 7 errors, found 9:
+    "test_errors_13_error_definitionuri"
+  ];
+
+  pythonImportsCheck = [
+    "samtranslator"
+  ];
 
   meta = with lib; {
     description = "Python library to transform SAM templates into AWS CloudFormation templates";
diff --git a/pkgs/development/python-modules/aws-xray-sdk/default.nix b/pkgs/development/python-modules/aws-xray-sdk/default.nix
index a304fae19df13..7a9722be28ce1 100644
--- a/pkgs/development/python-modules/aws-xray-sdk/default.nix
+++ b/pkgs/development/python-modules/aws-xray-sdk/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "aws-xray-sdk";
-  version = "2.8.0";
+  version = "2.9.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "90c2fcc982a770e86d009a4c3d2b5c3e372da91cb8284d982bae458e2c0bb268";
+    sha256 = "b0cd972db218d4d8f7b53ad806fc6184626b924c4997ae58fc9f2a8cd1281568";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/awscrt/default.nix b/pkgs/development/python-modules/awscrt/default.nix
index e3125343dffad..6bc4c63aefb56 100644
--- a/pkgs/development/python-modules/awscrt/default.nix
+++ b/pkgs/development/python-modules/awscrt/default.nix
@@ -1,30 +1,56 @@
-{ lib, buildPythonPackage, fetchPypi, cmake, perl, stdenv, gcc10, CoreFoundation, Security }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, cmake
+, perl
+, stdenv
+, gcc10
+, CoreFoundation
+, Security
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "awscrt";
-  version = "0.12.6";
+  version = "0.13.3";
+  format = "setuptools";
 
-  buildInputs = lib.optionals stdenv.isDarwin [ CoreFoundation Security ];
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-1GaKDpOGX/YbM4rByTw0nYgwHYFvOLHZ0GRvanX3vAU=";
+  };
+
+  buildInputs = lib.optionals stdenv.isDarwin [
+    CoreFoundation
+    Security
+  ];
 
   # Required to suppress -Werror
   # https://github.com/NixOS/nixpkgs/issues/39687
-  hardeningDisable = lib.optional stdenv.cc.isClang "strictoverflow";
-
-  nativeBuildInputs = [ cmake ] ++
-    # gcc <10 is not supported, LLVM on darwin is just fine
-    lib.optionals (!stdenv.isDarwin && stdenv.isAarch64) [ gcc10 perl ];
+  hardeningDisable = lib.optionals stdenv.cc.isClang [
+    "strictoverflow"
+  ];
+
+  # gcc <10 is not supported, LLVM on darwin is just fine
+  nativeBuildInputs = [
+    cmake
+  ] ++ lib.optionals (!stdenv.isDarwin && stdenv.isAarch64) [
+    gcc10
+    perl
+  ];
 
   dontUseCmakeConfigure = true;
 
+  pythonImportsCheck = [
+    "awscrt"
+  ];
+
   # Unable to import test module
   # https://github.com/awslabs/aws-crt-python/issues/281
   doCheck = false;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "65d71b4cd78165bea962dfbda361b47b9b5a6198d8074046b8667da9653d0752";
-  };
-
   meta = with lib; {
     homepage = "https://github.com/awslabs/aws-crt-python";
     description = "Python bindings for the AWS Common Runtime";
diff --git a/pkgs/development/python-modules/awsiotpythonsdk/default.nix b/pkgs/development/python-modules/awsiotpythonsdk/default.nix
index 68b44ea5a5d5b..70161d3fd6a02 100644
--- a/pkgs/development/python-modules/awsiotpythonsdk/default.nix
+++ b/pkgs/development/python-modules/awsiotpythonsdk/default.nix
@@ -1,22 +1,29 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "AWSIoTPythonSDK";
-  version = "1.4.9";
+  version = "1.5.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "aws";
     repo = "aws-iot-device-sdk-python";
     rev = "v${version}";
-    sha256 = "0mbppz1lnia4br5vjz1l4z4vw47y3bzcfpckzhs9lxhj4vq6d001";
+    sha256 = "0bmvwv471mvlwj2rfz08j9qvzsp4vyjz67cbzkvsy6kmihx3wfqh";
   };
 
-  # Project has no tests
+  # Module has no tests
   doCheck = false;
-  pythonImportsCheck = [ "AWSIoTPythonSDK" ];
+
+  pythonImportsCheck = [
+    "AWSIoTPythonSDK"
+  ];
 
   meta = with lib; {
     description = "Python SDK for connecting to AWS IoT";
diff --git a/pkgs/development/python-modules/azure-applicationinsights/default.nix b/pkgs/development/python-modules/azure-applicationinsights/default.nix
index e43e37720217c..f3f395b6f78e2 100644
--- a/pkgs/development/python-modules/azure-applicationinsights/default.nix
+++ b/pkgs/development/python-modules/azure-applicationinsights/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "azure-applicationinsights";
-  version = "0.1.0";
+  version = "0.1.1";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "6e1839169bb6ffd2d2c21ee3f4afbdd068ea428ad47cf884ea3167ecf7fd0859";
+    sha256 = "sha256-qIRbgDZbfyALrR9xqA0NMfO+wB7f1GfftsE+or1xupY=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-batch/default.nix b/pkgs/development/python-modules/azure-batch/default.nix
index 9202919ae6dd2..9a39aa70c64f9 100644
--- a/pkgs/development/python-modules/azure-batch/default.nix
+++ b/pkgs/development/python-modules/azure-batch/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "azure-batch";
-  version = "11.0.0";
+  version = "12.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "ce5fdb0ec962eddfe85cd82205e9177cb0bbdb445265746e38b3bbbf1f16dc73";
+    sha256 = "sha256-GpseF4mEp79JWvZ7zOUfDbHkqKlXr7KeM1VKFKlnTes=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-core/default.nix b/pkgs/development/python-modules/azure-core/default.nix
index b4dc461ea88c1..9a128d8134895 100644
--- a/pkgs/development/python-modules/azure-core/default.nix
+++ b/pkgs/development/python-modules/azure-core/default.nix
@@ -15,14 +15,14 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.20.1";
+  version = "1.21.1";
   pname = "azure-core";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "21d06311c9c373e394ed9f9db035306773334a0181932e265889eca34d778d17";
+    sha256 = "88d2db5cf9a135a7287dc45fdde6b96f9ca62c9567512a3bb3e20e322ce7deb2";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-eventhub/default.nix b/pkgs/development/python-modules/azure-eventhub/default.nix
index 95910a66e82ea..de3ddb803aa54 100644
--- a/pkgs/development/python-modules/azure-eventhub/default.nix
+++ b/pkgs/development/python-modules/azure-eventhub/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "azure-eventhub";
-  version = "5.6.1";
+  version = "5.7.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "sha256-ssjTesjPFITaB5Uy061podqL14ojeCIVm3LWsF3kY40=";
+    sha256 = "6ac364e5f1c5b376604c3b5a25ad0be5e3a5f96368f590e05b47e6745f1006ee";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-apimanagement/default.nix b/pkgs/development/python-modules/azure-mgmt-apimanagement/default.nix
index 2b2327d9f0ec9..7b088728b2755 100644
--- a/pkgs/development/python-modules/azure-mgmt-apimanagement/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-apimanagement/default.nix
@@ -6,13 +6,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "2.1.0";
+  version = "3.0.0";
   pname = "azure-mgmt-apimanagement";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "58296bd45e876df33f93f3a41c866c36476f5f3bd46818e8891308794f041c94";
+    sha256 = "9262f54ed387eb083d8dae66d32a8df35647319b902bd498cdc376f50a12d154";
     extension = "zip";
   };
 
diff --git a/pkgs/development/python-modules/azure-mgmt-applicationinsights/default.nix b/pkgs/development/python-modules/azure-mgmt-applicationinsights/default.nix
index 2685d8803b892..d71539efc2320 100644
--- a/pkgs/development/python-modules/azure-mgmt-applicationinsights/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-applicationinsights/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-applicationinsights";
-  version = "1.0.0";
+  version = "2.1.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "c287a2c7def4de19f92c0c31ba02867fac6f5b8df71b5dbdab19288bb455fc5b";
+    sha256 = "68deed8ee884dd0b9631804e8b9c65fcd94e8e01c7218beae96a9fe557d7a0d7";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-compute/default.nix b/pkgs/development/python-modules/azure-mgmt-compute/default.nix
index a89e803220d7c..3038f8720e703 100644
--- a/pkgs/development/python-modules/azure-mgmt-compute/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-compute/default.nix
@@ -6,13 +6,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "23.1.0";
+  version = "26.0.0";
   pname = "azure-mgmt-compute";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "49dbb0f51006d557cbd0b22999cb9ecf3eabc2be46d96efcc6d651c6b33754b3";
+    sha256 = "sha256-nGot8UIeL0DNuw5+v7XmLjrNiJMfpsk1z2K2Tdo4Q+s=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-consumption/default.nix b/pkgs/development/python-modules/azure-mgmt-consumption/default.nix
index aa942d3a732ba..ce17bc60de50e 100644
--- a/pkgs/development/python-modules/azure-mgmt-consumption/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-consumption/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-consumption";
-  version = "8.0.0";
+  version = "9.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "b4cc167648634f864394066d5621afc137c1be795ee76f7539125f9538a2bf37";
+    sha256 = "76f9566390721226add96c9d3020ab986d3e5fd81e3143c098f57262c6ce4a51";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix b/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix
index ddd05fa6a0fe4..8afcde620194b 100644
--- a/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-containerregistry/default.nix
@@ -6,13 +6,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "8.2.0";
+  version = "9.0.0";
   pname = "azure-mgmt-containerregistry";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f2bcdbcf0b9fdc2df0df9eccb77cb489091d3c670ed53cba77e5ffd734e9539b";
+    sha256 = "9f6c5894d32ba696527ecf0ff155bb43c325dff6a11a6de60cd22ea3f5fb180d";
     extension = "zip";
   };
 
diff --git a/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix b/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix
index cb1d15179b2dd..bfd0b6196954e 100644
--- a/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-datafactory";
-  version = "2.1.0";
+  version = "2.2.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "d2a3cfe844bd9e51499b81bba7510e2c8df4fc3a40a7059e6224ed043d65a786";
+    sha256 = "bc2560b4de1528292883b53a337b89f04a5ceab7c3500b6bc388e3a77ff093cc";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix b/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix
index 2023eb0ab5674..e61cd221db9b3 100644
--- a/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-eventgrid/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-eventgrid";
-  version = "10.0.0";
+  version = "10.1.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "582e314ca05a9be0cd391c64689e6a5332d5bbad76c2ea751b727cfe99a2a3d2";
+    sha256 = "4da3bf142d31bc25d80ee26641b95b7f52eb1baf4f326b9954e9f0613944ef3c";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-imagebuilder/default.nix b/pkgs/development/python-modules/azure-mgmt-imagebuilder/default.nix
index 404caf4ebf5b7..005f5ca8f0c09 100644
--- a/pkgs/development/python-modules/azure-mgmt-imagebuilder/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-imagebuilder/default.nix
@@ -1,26 +1,36 @@
 { lib, buildPythonPackage, fetchPypi, isPy27
 , azure-common
+, azure-mgmt-core
 , msrest
 , msrestazure
 }:
 
 buildPythonPackage rec {
-  version = "0.4.0";
+  version = "1.0.0";
   pname = "azure-mgmt-imagebuilder";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4c9291bf16b40b043637e5e4f15650f71418ac237393e62219cab478a7951733";
+    sha256 = "634e398de9a23e712aa27a4a59f9ea5d5091d1dfcfed5ac977230918872c4430";
     extension = "zip";
   };
 
-  propagatedBuildInputs = [ azure-common msrest msrestazure ];
+  propagatedBuildInputs = [
+    azure-common
+    azure-mgmt-core
+    msrest
+    msrestazure
+  ];
 
   # no tests included
   doCheck = false;
 
-  pythonImportsCheck = [ "azure.common" "azure.mgmt.imagebuilder" ];
+  pythonImportsCheck = [
+    "azure.common"
+    "azure.mgmt.core"
+    "azure.mgmt.imagebuilder"
+  ];
 
   meta = with lib; {
     description = "Microsoft Azure Image Builder Client Library for Python";
diff --git a/pkgs/development/python-modules/azure-mgmt-iothub/default.nix b/pkgs/development/python-modules/azure-mgmt-iothub/default.nix
index 029a102518238..ea5fbd1c10202 100644
--- a/pkgs/development/python-modules/azure-mgmt-iothub/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-iothub/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-iothub";
-  version = "2.1.0";
+  version = "2.2.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "2724f48cadb1be7ee96fc26c7bfa178f82cea5d325e785e91d9f26965fa8e46f";
+    sha256 = "sha256-nsAeVhs5N8bpwYenmRwJmqF/IAqz/ulSoYIeOU5l0eM=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix b/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix
index 39f09b28241c0..dfd8581af1aa6 100644
--- a/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-iothubprovisioningservices/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-iothubprovisioningservices";
-  version = "1.0.0";
+  version = "1.1.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "e5871b03488b5ae6dfc441cdbda40cb39c000635ee57c513053792b3c15826a9";
+    sha256 = "sha256-04OoJuff93L62G6IozpmHpEaUbHHHD6nKlkMHVoJvJ4=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-netapp/default.nix b/pkgs/development/python-modules/azure-mgmt-netapp/default.nix
index dbe22478d7bdd..edf8057e503c1 100644
--- a/pkgs/development/python-modules/azure-mgmt-netapp/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-netapp/default.nix
@@ -6,13 +6,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "5.1.0";
+  version = "6.0.1";
   pname = "azure-mgmt-netapp";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "306088088ee10e86c4cf24cc82a9ca619db5cdfc0da3fa207d00ec7f77f06e8e";
+    sha256 = "6ce683587be1638d8d77620b7af118060b8b7dfc4fd23d46a623a66edcb388e1";
     extension = "zip";
   };
 
diff --git a/pkgs/development/python-modules/azure-mgmt-notificationhubs/default.nix b/pkgs/development/python-modules/azure-mgmt-notificationhubs/default.nix
index bf9d9bab576bb..7b7704401c175 100644
--- a/pkgs/development/python-modules/azure-mgmt-notificationhubs/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-notificationhubs/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-notificationhubs";
-  version = "7.0.0";
+  version = "8.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "92ffed71a2999ff5db41afd66c6ba5cfef9d467f732c7bb45b7c41db371c6e4a";
+    sha256 = "4dd924f4704993e3ebf1d42e2be1cbe0b0d908e695857fa08c4369ae11d0eb36";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-resource/default.nix b/pkgs/development/python-modules/azure-mgmt-resource/default.nix
index 5166c8ead8e44..37a30147aa5fd 100644
--- a/pkgs/development/python-modules/azure-mgmt-resource/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-resource/default.nix
@@ -8,14 +8,14 @@
 
 
 buildPythonPackage rec {
-  version = "20.0.0";
+  version = "20.1.0";
   pname = "azure-mgmt-resource";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "622dca4484be64f9f5ce335d327dffabf3e71e14e8a3f4a1051dc85a5c3ebbca";
+    sha256 = "4fbb2158320e0bdd367882642f266a6dfb3b4b8610792b3afbbca39089f212d7";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-subscription/default.nix b/pkgs/development/python-modules/azure-mgmt-subscription/default.nix
index 64dcf44345efe..71257c46c4f24 100644
--- a/pkgs/development/python-modules/azure-mgmt-subscription/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-subscription/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-subscription";
-  version = "2.0.0";
+  version = "3.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "70ec6e3395549c434bfd981f8f76cb8b6863339bad9b31924c1510af661dbf45";
+    sha256 = "157bd9123a5814473a9cd131832ea614c478548722ec01f47b35d778dc307d55";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-web/default.nix b/pkgs/development/python-modules/azure-mgmt-web/default.nix
index 1c9cb2e945708..cd19e88e9bd05 100644
--- a/pkgs/development/python-modules/azure-mgmt-web/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-web/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-web";
-  version = "5.0.0";
+  version = "6.1.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "0b10542600cd268d6369681c3367373a925eedcda5414eacbd3fbc9a0bdf1f24";
+    sha256 = "c26635089276515b0488fcf014aab50a0446f54800c6e0e5583cc493ac8d738f";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-servicebus/default.nix b/pkgs/development/python-modules/azure-servicebus/default.nix
index bf474c031438d..b4e37c33fef9f 100644
--- a/pkgs/development/python-modules/azure-servicebus/default.nix
+++ b/pkgs/development/python-modules/azure-servicebus/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "azure-servicebus";
-  version = "7.4.0";
+  version = "7.5.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "sha256-nlt4wNHI613tK7JB85fBW2LE/FOa8+2aLeT6wzP1PQ4=";
+    sha256 = "e97a069c6a73fce3042a5ef0d438cc564152cfbcc2e7db6f7a19fbd51bb3555b";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-servicefabric/default.nix b/pkgs/development/python-modules/azure-servicefabric/default.nix
index 283a314666207..64e7a8f63d32d 100644
--- a/pkgs/development/python-modules/azure-servicefabric/default.nix
+++ b/pkgs/development/python-modules/azure-servicefabric/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "azure-servicefabric";
-  version = "8.0.0.0";
+  version = "8.2.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "f414cc114e28a358a7f39772205f3f15d7fc1aa30a08d106b0b80623f4303f1d";
+    sha256 = "f49c8759447970817b9b2d3d4b97439765dcf75ba01b6066ce96b605052fbb23";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-synapse-artifacts/default.nix b/pkgs/development/python-modules/azure-synapse-artifacts/default.nix
index 4be6c43ba9ab5..b24417b325ab9 100644
--- a/pkgs/development/python-modules/azure-synapse-artifacts/default.nix
+++ b/pkgs/development/python-modules/azure-synapse-artifacts/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "azure-synapse-artifacts";
-  version = "0.10.0";
+  version = "0.11.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "3f782c9b590b8ae43678c6e003df8ca8cca675832039d270b0b7437ff01557fd";
+    sha256 = "79eb973280ea89c0e6e2872d8f3f175b172b7438c2e2b9b4e655ae206be705fa";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/backports-entry-points-selectable/default.nix b/pkgs/development/python-modules/backports-entry-points-selectable/default.nix
index abf6774ddef29..84618e8da1d81 100644
--- a/pkgs/development/python-modules/backports-entry-points-selectable/default.nix
+++ b/pkgs/development/python-modules/backports-entry-points-selectable/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "backports-entry-points-selectable";
-  version = "1.1.0";
+  version = "1.1.1";
 
   src = fetchPypi {
     pname = "backports.entry_points_selectable";
     inherit version;
-    sha256 = "988468260ec1c196dab6ae1149260e2f5472c9110334e5d51adcb77867361f6a";
+    sha256 = "914b21a479fde881635f7af5adc7f6e38d6b274be32269070c53b698c60d5386";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/backports_lzma/default.nix b/pkgs/development/python-modules/backports_lzma/default.nix
deleted file mode 100644
index bf346f3a3ca15..0000000000000
--- a/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/pkgs/development/python-modules/backports_os/default.nix b/pkgs/development/python-modules/backports_os/default.nix
deleted file mode 100644
index 2144497084336..0000000000000
--- a/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/pkgs/development/python-modules/bandit/default.nix b/pkgs/development/python-modules/bandit/default.nix
index 03a4c80856d80..4a2a2803d3aa6 100644
--- a/pkgs/development/python-modules/bandit/default.nix
+++ b/pkgs/development/python-modules/bandit/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "bandit";
-  version = "1.7.1";
+  version = "1.7.2";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a81b00b5436e6880fa8ad6799bc830e02032047713cbb143a12939ac67eb756c";
+    sha256 = "sha256-bRGt6gIUpDgTiHv+caN3tamVXkyCbI/9NBtJTjqyUmA=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/base58check/default.nix b/pkgs/development/python-modules/base58check/default.nix
new file mode 100644
index 0000000000000..e81eca6e137d6
--- /dev/null
+++ b/pkgs/development/python-modules/base58check/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "base58check";
+  version = "1.0.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "joeblackwaslike";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-Tig6beLRDsXC//x4+t/z2BGaJQWzcP0J+QEKx3D0rhs=";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "base58check"
+  ];
+
+  meta = with lib; {
+    description = "Implementation of the Base58Check encoding scheme";
+    homepage = "https://github.com/joeblackwaslike/base58check";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/basemap/default.nix b/pkgs/development/python-modules/basemap/default.nix
index c3d29d932442a..30ca58fed319e 100644
--- a/pkgs/development/python-modules/basemap/default.nix
+++ b/pkgs/development/python-modules/basemap/default.nix
@@ -14,13 +14,13 @@
 
 buildPythonPackage rec {
   pname = "basemap";
-  version = "1.2.1";
+  version = "1.3.0";
 
   src = fetchFromGitHub {
     owner = "matplotlib";
     repo = "basemap";
-    rev = "v${version}rel";
-    sha256 = "13lw1iwa8hadpvqdgb06nh881l8c17awzvvwbfwblvb9q9s0lnzp";
+    rev = "v${version}";
+    sha256 = "0nwpd6zx2q2fc556ppz71ra6ad9z0d5bz8hcld64i91dcy0f0zs3";
   };
 
   propagatedBuildInputs = [ numpy matplotlib pillow pyproj pyshp six ];
diff --git a/pkgs/development/python-modules/batchgenerators/default.nix b/pkgs/development/python-modules/batchgenerators/default.nix
index 336c6b2e51348..a20d0c696cd6f 100644
--- a/pkgs/development/python-modules/batchgenerators/default.nix
+++ b/pkgs/development/python-modules/batchgenerators/default.nix
@@ -1,12 +1,12 @@
 { lib
 , buildPythonPackage
-, isPy27
+, pythonOlder
 , fetchFromGitHub
 , pytestCheckHook
-, unittest2
 , future
 , numpy
 , pillow
+, fetchpatch
 , scipy
 , scikit-learn
 , scikitimage
@@ -16,27 +16,53 @@
 buildPythonPackage rec {
   pname = "batchgenerators";
   version = "0.21";
+  format = "setuptools";
 
-  disabled = isPy27;
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "MIC-DKFZ";
     repo = pname;
     rev = "v${version}";
-    sha256 = "16bk4r0q3m2c9fawpmj4l7kz0x3fyv1spb92grf44gmyricq3jdb";
-
+    hash = "sha256-q8mBWcy+PkJcfiKtq8P2bnTw56FE1suVS0zUgUEmc5k=";
   };
 
   propagatedBuildInputs = [
-    future numpy pillow scipy scikit-learn scikitimage threadpoolctl
+    future
+    numpy
+    pillow
+    scipy
+    scikit-learn
+    scikitimage
+    threadpoolctl
+  ];
+
+  checkInputs = [
+    pytestCheckHook
   ];
 
-  checkInputs = [ pytestCheckHook unittest2 ];
+  patches = [
+    # Remove deprecated unittest2, https://github.com/MIC-DKFZ/batchgenerators/pull/78
+    (fetchpatch {
+      name = "remove-unittest2.patch";
+      url = "https://github.com/MIC-DKFZ/batchgenerators/commit/87a9437057df8a7550aa3b3eaf840871cc0d5cef.patch";
+      sha256 = "sha256-vozBK7g2dLxx9din/R2vU28Mm+LoGAO/BmQlt/ShmEo=";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace '"unittest2",' ""
+  '';
+
+  pythonImportsCheck = [
+    "batchgenerators"
+  ];
 
-  meta = {
+  meta = with lib; {
     description = "2D and 3D image data augmentation for deep learning";
     homepage = "https://github.com/MIC-DKFZ/batchgenerators";
-    license = lib.licenses.asl20;
-    maintainers = with lib.maintainers; [ bcdarwin ];
+    license = licenses.asl20;
+    maintainers = with maintainers; [ bcdarwin ];
   };
 }
diff --git a/pkgs/development/python-modules/bbox/default.nix b/pkgs/development/python-modules/bbox/default.nix
new file mode 100644
index 0000000000000..a07551197b846
--- /dev/null
+++ b/pkgs/development/python-modules/bbox/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, pyquaternion
+, numpy
+}:
+
+buildPythonPackage rec {
+  pname = "bbox";
+  version = "0.9.2";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-ucR7mg9eubEefjC7ratEgrb9h++a26z8KV38n3N2kcw=";
+  };
+
+  propagatedBuildInputs = [ pyquaternion numpy ];
+
+  pythonImportsCheck = [ "bbox" ];
+
+  meta = with lib; {
+    description = "Python library for 2D/3D bounding boxes";
+    homepage = "https://github.com/varunagrawal/bbox";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lucasew ];
+  };
+}
diff --git a/pkgs/development/python-modules/bc-python-hcl2/default.nix b/pkgs/development/python-modules/bc-python-hcl2/default.nix
index e889fff9688aa..42203a43da46d 100644
--- a/pkgs/development/python-modules/bc-python-hcl2/default.nix
+++ b/pkgs/development/python-modules/bc-python-hcl2/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , nose
+, pythonOlder
 }:
 
 let
@@ -19,11 +20,14 @@ let
 in
 buildPythonPackage rec {
   pname = "bc-python-hcl2";
-  version = "0.3.24";
+  version = "0.3.30";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-YsiMkTPRSKR4511csJOv9/Jf1b3TVUM7N2lInejdNrQ=";
+    hash = "sha256-wfcTIPKbMPa7xpXzkFtxnxG2ZRFzTw35EP7f4zwHxcs=";
   };
 
   # Nose is required during build process, so can not use `checkInputs`.
diff --git a/pkgs/development/python-modules/bcrypt/3_1.nix b/pkgs/development/python-modules/bcrypt/3_1.nix
deleted file mode 100644
index df57eb3cd0c97..0000000000000
--- a/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/pkgs/development/python-modules/beancount/default.nix b/pkgs/development/python-modules/beancount/default.nix
index 31f8a24d8b762..665fd6806bfa0 100644
--- a/pkgs/development/python-modules/beancount/default.nix
+++ b/pkgs/development/python-modules/beancount/default.nix
@@ -48,7 +48,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    homepage = "http://furius.ca/beancount/";
+    homepage = "https://github.com/beancount/beancount";
     description = "Double-entry bookkeeping computer language";
     longDescription = ''
         A double-entry bookkeeping computer language that lets you define
diff --git a/pkgs/development/python-modules/bibtexparser/default.nix b/pkgs/development/python-modules/bibtexparser/default.nix
index d69b2d6ce4ca0..2c24578f45815 100644
--- a/pkgs/development/python-modules/bibtexparser/default.nix
+++ b/pkgs/development/python-modules/bibtexparser/default.nix
@@ -1,33 +1,49 @@
 { lib
-, buildPythonPackage, fetchFromGitHub
-, future, pyparsing
-, glibcLocales, nose, unittest2
+, buildPythonPackage
+, fetchFromGitHub
+, future
+, pyparsing
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "bibtexparser";
-  version = "1.1.0";
+  version = "1.2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
-  # PyPI tarball does not ship tests
   src = fetchFromGitHub {
     owner = "sciunto-org";
     repo = "python-${pname}";
     rev = "v${version}";
-    sha256 = "1yj3hqnmkjh0sjjhmlm4097mmz98kna8rn0dd9g8zaw9g1a35h8c";
+    hash = "sha256-M9fDI28Yq0uUHPx51wiuRPmRTLkjVqj7ixapbSftnJc=";
   };
 
-  propagatedBuildInputs = [ future pyparsing ];
+  propagatedBuildInputs = [
+    future
+    pyparsing
+  ];
 
-  checkInputs = [ nose unittest2 glibcLocales ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  checkPhase = ''
-    LC_ALL="en_US.UTF-8" nosetests
+  postPatch = ''
+    # https://github.com/sciunto-org/python-bibtexparser/pull/259
+    substituteInPlace bibtexparser/tests/test_crossref_resolving.py \
+      --replace "import unittest2 as unittest" "import unittest"
   '';
 
-  meta = {
-    description = "Bibtex parser for python 2.7 and 3.3 and newer";
+  pythonImportsCheck = [
+    "bibtexparser"
+  ];
+
+  meta = with lib; {
+    description = "Bibtex parser for Python";
     homepage = "https://github.com/sciunto-org/python-bibtexparser";
-    license = with lib.licenses; [ gpl3 bsd3 ];
-    maintainers = with lib.maintainers; [ fridh ];
+    license = with licenses; [ lgpl3Only /* or */ bsd3 ];
+    maintainers = with maintainers; [ fridh ];
   };
 }
diff --git a/pkgs/development/python-modules/billiard/default.nix b/pkgs/development/python-modules/billiard/default.nix
index 79aca1e4a99fe..f02bef97ba341 100644
--- a/pkgs/development/python-modules/billiard/default.nix
+++ b/pkgs/development/python-modules/billiard/default.nix
@@ -1,16 +1,18 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, isPyPy
 , pytestCheckHook
 , case
 , psutil
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "billiard";
   version = "3.6.4.0";
-  disabled = isPyPy;
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
@@ -23,9 +25,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  pythonImportsCheck = [
+    "billiard"
+  ];
+
   meta = with lib; {
-    homepage = "https://github.com/celery/billiard";
     description = "Python multiprocessing fork with improvements and bugfixes";
+    homepage = "https://github.com/celery/billiard";
     license = licenses.bsd3;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/bimmer-connected/default.nix b/pkgs/development/python-modules/bimmer-connected/default.nix
index 004b7d4e3e096..0f6334d279262 100644
--- a/pkgs/development/python-modules/bimmer-connected/default.nix
+++ b/pkgs/development/python-modules/bimmer-connected/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "bimmer-connected";
-  version = "0.8.7";
+  version = "0.8.10";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "bimmerconnected";
     repo = "bimmer_connected";
     rev = version;
-    hash = "sha256-nLZdaV341mULXIngkEqiLQeg4G2NDFGNg/AUozgJe74=";
+    hash = "sha256-xt21mcXcucUhJlqwDLrAHvQLg9++uc/cX5Sy+Sppsbo=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/bip_utils/default.nix b/pkgs/development/python-modules/bip_utils/default.nix
index 3d3c85eea3b46..a4430b655ce17 100644
--- a/pkgs/development/python-modules/bip_utils/default.nix
+++ b/pkgs/development/python-modules/bip_utils/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "bip_utils";
-  version = "1.11.1";
+  version = "2.1.0";
 
   disabled = pythonOlder "3.6";
 
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "ebellocchia";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0r8h979rklq7cvl0b449mfrx62dv367s31zgwfqn81kj72i3ndg4";
+    sha256 = "1n677z6rvcny1vyfzwnvcmzbqp9m4kfpdjfvkf1q6310zr2ybp7m";
   };
 
   propagatedBuildInputs = [ ecdsa pysha3 ];
diff --git a/pkgs/development/python-modules/bitarray/default.nix b/pkgs/development/python-modules/bitarray/default.nix
index 43cc2dbd5bce2..743c749a1f1bc 100644
--- a/pkgs/development/python-modules/bitarray/default.nix
+++ b/pkgs/development/python-modules/bitarray/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "bitarray";
-  version = "2.3.4";
+  version = "2.3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f19c62425576d3d1821ed711b94d1a4e5ede8f05ca121e99b6d978ed49c7a765";
+    sha256 = "sha256-O/21ne0VyWHm49W38WcVXNoFO+JHXqgBdGHfC02CC30=";
   };
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/bitbucket-api/default.nix b/pkgs/development/python-modules/bitbucket-api/default.nix
deleted file mode 100644
index b874f1af525ae..0000000000000
--- a/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/pkgs/development/python-modules/bitbucket-cli/default.nix b/pkgs/development/python-modules/bitbucket-cli/default.nix
deleted file mode 100644
index bb1fa1d6c17c1..0000000000000
--- a/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/pkgs/development/python-modules/bitcoin-utils-fork-minimal/default.nix b/pkgs/development/python-modules/bitcoin-utils-fork-minimal/default.nix
new file mode 100644
index 0000000000000..820fa883676a0
--- /dev/null
+++ b/pkgs/development/python-modules/bitcoin-utils-fork-minimal/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, base58
+, buildPythonPackage
+, ecdsa
+, fetchPypi
+, sympy
+}:
+
+buildPythonPackage rec {
+  pname = "bitcoin-utils-fork-minimal";
+  version = "0.4.11.4";
+  format = "setuptools";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-n3tEQkl6KBAno4LY67lZme3TIvsm35VA2yyfWYuIE1c=";
+  };
+
+  propagatedBuildInputs = [
+    base58
+    ecdsa
+    sympy
+  ];
+
+  preConfigure = ''
+    substituteInPlace setup.py \
+      --replace "sympy==1.3" "sympy>=1.3" \
+      --replace "base58==2.1.0" "base58>=2.1.0" \
+      --replace "ecdsa==0.13.3" "ecdsa>=0.13.3"
+  '';
+
+  # Project doesn't ship tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "bitcoinutils"
+  ];
+
+  meta = with lib; {
+    description = "Bitcoin utility functions";
+    homepage = "https://github.com/doersf/python-bitcoin-utils";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/bitcoinrpc/default.nix b/pkgs/development/python-modules/bitcoinrpc/default.nix
new file mode 100644
index 0000000000000..200f3edf038a4
--- /dev/null
+++ b/pkgs/development/python-modules/bitcoinrpc/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, orjson
+, httpx
+, typing-extensions
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "bitcoinrpc";
+  version = "0.5.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "bibajz";
+    repo = "bitcoin-python-async-rpc";
+    rev = "v${version}";
+    hash = "sha256-uxkSz99X9ior7l825PaXGIC5XJzO/Opv0vTyY1ixvxU=";
+  };
+
+  propagatedBuildInputs = [
+    orjson
+    httpx
+    typing-extensions
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "bitcoinrpc"
+  ];
+
+  meta = with lib; {
+    description = "Bitcoin JSON-RPC client";
+    homepage = "https://github.com/bibajz/bitcoin-python-async-rpc";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/black/default.nix b/pkgs/development/python-modules/black/default.nix
index ea4fb0b4a74d5..13f05fa61365a 100644
--- a/pkgs/development/python-modules/black/default.nix
+++ b/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.10b0";
+  version = "21.12b0";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-qZUiKQkuMl/l89rlbYH2ObI/cTHrhAeBlH5LKIYDDzM=";
+    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
diff --git a/pkgs/development/python-modules/bleak/default.nix b/pkgs/development/python-modules/bleak/default.nix
index d159811efbcc2..7db587ed58be6 100644
--- a/pkgs/development/python-modules/bleak/default.nix
+++ b/pkgs/development/python-modules/bleak/default.nix
@@ -4,13 +4,13 @@
 
 buildPythonPackage rec {
   pname = "bleak";
-  version = "0.13.0";
+  version = "0.14.2";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1vnwk36qfws9amqrdaynf63dcj2gzxm0ns1l75hrczmd5j2ic1zb";
+    sha256 = "1fkq8q54s9apqiamdd8vgrhk5p02w5w281q93dfnrd37xv7ysk6h";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/blis/default.nix b/pkgs/development/python-modules/blis/default.nix
index 6f0370f044c64..e8e9962f9b4fd 100644
--- a/pkgs/development/python-modules/blis/default.nix
+++ b/pkgs/development/python-modules/blis/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "blis";
-  version = "0.7.5";
+  version = "0.7.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "833e01e9eaff4c01aa6e049bbc1e6acb9eca6ee513d7b35b5bf135d49705ad33";
+    sha256 = "sha256-/pexD2ihx7VMDlS+rahOGPTvto3UDJBvuHSPURR0PsY=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/blist/default.nix b/pkgs/development/python-modules/blist/default.nix
deleted file mode 100644
index af129f4aa5dcb..0000000000000
--- a/pkgs/development/python-modules/blist/default.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchpatch
-, fetchPypi
-, isPyPy
-}:
-
-buildPythonPackage rec {
-  pname = "blist";
-  version = "1.3.6";
-  disabled = isPyPy;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1hqz9pqbwx0czvq9bjdqjqh5bwfksva1is0anfazig81n18c84is";
-  };
-
-
-  patches = [
-    # Fix compatibility for Python 3.7 https://github.com/DanielStutzbach/blist/pull/78
-    (fetchpatch {
-      url = "https://github.com/DanielStutzbach/blist/commit/2dc1ec28ed68611fcec9ac1c68070c782d6b4b4e.patch";
-      sha256 = "0ma0z6ga80w3wzh3sidwd8ckfbgx4j1y7cc29q6j9ddrvxpf276y";
-    })
-
-    # Fixes compatibility for Python 3.9 https://github.com/DanielStutzbach/blist/pull/91
-    (fetchpatch {
-      url = "https://github.com/DanielStutzbach/blist/pull/91/commits/e63514f805e42dc6a5708e629e4153d91bc90bff.patch";
-      sha256 = "1prx8znk7008v4ky7q2lx0pi6hzqd4kxgfdwbsr4zylwbrdqvsga";
-    })
-  ];
-
-  meta = with lib; {
-    homepage = "http://stutzbachenterprises.com/blist/";
-    description = "A list-like type with better asymptotic performance and similar performance on small lists";
-    license = licenses.bsd0;
-  };
-
-}
diff --git a/pkgs/development/python-modules/blivet/default.nix b/pkgs/development/python-modules/blivet/default.nix
deleted file mode 100644
index fd97fa206480e..0000000000000
--- a/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/pkgs/development/python-modules/block-io/default.nix b/pkgs/development/python-modules/block-io/default.nix
index f634bf17ecc00..64ffc5ff4b3e8 100644
--- a/pkgs/development/python-modules/block-io/default.nix
+++ b/pkgs/development/python-modules/block-io/default.nix
@@ -1,8 +1,20 @@
-{ lib, fetchPypi, buildPythonPackage, base58, ecdsa, pycryptodome, requests, six, setuptools }:
+{ lib
+, fetchPypi
+, bitcoin-utils-fork-minimal
+, buildPythonPackage
+, base58
+, pycryptodome
+, requests
+, setuptools
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "block-io";
   version = "2.0.5";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
@@ -11,24 +23,24 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     base58
-    ecdsa
+    bitcoin-utils-fork-minimal
     pycryptodome
     requests
-    six
     setuptools
   ];
 
   preConfigure = ''
     substituteInPlace setup.py \
-      --replace "ecdsa==0.15" "ecdsa>=0.15" \
-      --replace "base58==1.0.3" "base58>=1.0.3"
+      --replace "base58==2.1.0" "base58>=2.1.0"
   '';
 
   # Tests needs a BlockIO API key to run properly
   # https://github.com/BlockIo/block_io-python/blob/79006bc8974544b70a2d8e9f19c759941d32648e/test.py#L18
   doCheck = false;
 
-  pythonImportsCheck = [ "block_io" ];
+  pythonImportsCheck = [
+    "block_io"
+  ];
 
   meta = with lib; {
     description = "Integrate Bitcoin, Dogecoin and Litecoin in your Python applications using block.io";
diff --git a/pkgs/development/python-modules/blocksat-cli/default.nix b/pkgs/development/python-modules/blocksat-cli/default.nix
index 6c943d5ae57cc..4c5b96bce5382 100644
--- a/pkgs/development/python-modules/blocksat-cli/default.nix
+++ b/pkgs/development/python-modules/blocksat-cli/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "blocksat-cli";
-  version = "0.4.1";
+  version = "0.4.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "96ec5e548dcdb71ada75727d76b34006fe5f6818bd89cf982e15616d41889603";
+    sha256 = "sha256-hz5BGE+gqOrPiXvmeOTOecm2RUrTvM/xxvV3cnO2QSc=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/bme280spi/default.nix b/pkgs/development/python-modules/bme280spi/default.nix
new file mode 100644
index 0000000000000..a7a1e0fb920ef
--- /dev/null
+++ b/pkgs/development/python-modules/bme280spi/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, spidev
+}:
+
+buildPythonPackage rec {
+  pname = "bme280spi";
+  version = "0.2.0";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "51682acefda6f29eaaf9f37815edbfdd48ef0e9f1509419eceafe7b440eddc6e";
+  };
+
+  propagatedBuildInputs = [
+    spidev
+  ];
+
+  # no tests implemented
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Library for BME280 sensor through spidev";
+    homepage = "https://github.com/Kuzj/bme280spi";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/boltons/default.nix b/pkgs/development/python-modules/boltons/default.nix
index 0986a5dc7c43e..f884e164d6390 100644
--- a/pkgs/development/python-modules/boltons/default.nix
+++ b/pkgs/development/python-modules/boltons/default.nix
@@ -3,40 +3,53 @@
 , fetchFromGitHub
 , fetchpatch
 , pytestCheckHook
+, pythonAtLeast
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "boltons";
   version = "20.2.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
-  # No tests in PyPi Tarball
   src = fetchFromGitHub {
     owner = "mahmoud";
     repo = "boltons";
     rev = version;
-    sha256 = "0vw0h0z81gfxgjfijqiza92ic0siv9xy65mklgj5d0dzr1k9waw8";
+    hash = "sha256-iCueZsi/gVbko7MW43vaUQMWRVI/YhmdfN29gD6AgG8=";
   };
 
-  patches = [
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  patches = lib.optionals (pythonAtLeast "3.10") [
+    # pprint has no attribute _safe_repr, https://github.com/mahmoud/boltons/issues/294
     (fetchpatch {
-      url = "https://github.com/mahmoud/boltons/commit/754afddf141ea26956c88c7e13fe5e7ca7942654.patch";
-      sha256 = "14kcq8pl4pmgcnlnmj1sh1yrksgym0kn0kgz2648g192svqkbpz8";
+      name = "fix-pprint-attribute.patch";
+      url = "https://github.com/mahmoud/boltons/commit/270e974975984f662f998c8f6eb0ebebd964de82.patch";
+      sha256 = "sha256-pZLfr6SRCw2aLwZeYaX7bzfJeZC4cFUILEmnVsKR6zc=";
     })
   ];
 
-  checkInputs = [ pytestCheckHook ];
   disabledTests = [
-    # This test is broken without this PR, which has not yet been merged
+    # This test is broken without this PR. Merged but not released
     # https://github.com/mahmoud/boltons/pull/283
-    "test_frozendict_ior"
+    "test_frozendict"
+  ];
+
+  pythonImportsCheck = [
+    "boltons"
   ];
 
   meta = with lib; {
     homepage = "https://github.com/mahmoud/boltons";
-    description = "220+ constructs, recipes, and snippets extending (and relying on nothing but) the Python standard library";
+    description = "Constructs, recipes, and snippets extending the Python standard library";
     longDescription = ''
-      Boltons is a set of over 220 BSD-licensed, pure-Python utilities
-      in the same spirit as — and yet conspicuously missing from — the
+      Boltons is a set of over 200 BSD-licensed, pure-Python utilities
+      in the same spirit as - and yet conspicuously missing from - the
       standard library, including:
 
       - Atomic file saving, bolted on with fileutils
diff --git a/pkgs/development/python-modules/bond-api/default.nix b/pkgs/development/python-modules/bond-api/default.nix
index b230491de8c5a..a685c01fbc0fc 100644
--- a/pkgs/development/python-modules/bond-api/default.nix
+++ b/pkgs/development/python-modules/bond-api/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "bond-api";
-  version = "0.1.15";
+  version = "0.1.16";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "prystupa";
     repo = "bond-api";
     rev = "v${version}";
-    sha256 = "sha256-Uoz5knqRAtQkD7u/4oylXC60dR2ZU3AuMJNhmvB8fP4=";
+    sha256 = "1nqf090b14nd7an2n776mb37yskddfnihmas2fy56pxclwvwqr9n";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/boost-histogram/default.nix b/pkgs/development/python-modules/boost-histogram/default.nix
index f428dc788bf9d..109487b88b948 100644
--- a/pkgs/development/python-modules/boost-histogram/default.nix
+++ b/pkgs/development/python-modules/boost-histogram/default.nix
@@ -1,17 +1,20 @@
-{ lib, fetchPypi, buildPythonPackage, isPy3k, boost, numpy, pytestCheckHook, pytest-benchmark }:
+{ lib, fetchPypi, buildPythonPackage, isPy3k, boost, numpy, pytestCheckHook, pytest-benchmark, setuptools-scm }:
 
 buildPythonPackage rec {
   pname = "boost-histogram";
-  version = "1.2.1";
+  version = "1.3.1";
   disabled = !isPy3k;
 
   src = fetchPypi {
     pname = "boost_histogram";
     inherit version;
-    sha256 = "a27842b2f1cfecc509382da2b25b03056354696482b38ec3c0220af0fc9b7579";
+    sha256 = "sha256-Mc05Zlbzo3g04H0wTNuE2ZBrwhcmJqPZL+V30IvPQQ8=";
   };
 
+  nativeBuildInputs = [ setuptools-scm ];
+
   buildInputs = [ boost ];
+
   propagatedBuildInputs = [ numpy ];
 
   checkInputs = [ pytestCheckHook pytest-benchmark ];
@@ -20,7 +23,6 @@ buildPythonPackage rec {
     description = "Python bindings for the C++14 Boost::Histogram library";
     homepage = "https://github.com/scikit-hep/boost-histogram";
     license = licenses.bsd3;
-    platforms = platforms.unix;
     maintainers = with maintainers; [ veprbl ];
   };
 }
diff --git a/pkgs/development/python-modules/bootstrapped-pip/2.nix b/pkgs/development/python-modules/bootstrapped-pip/2.nix
deleted file mode 100644
index 2fc8b8b8d4b79..0000000000000
--- a/pkgs/development/python-modules/bootstrapped-pip/2.nix
+++ /dev/null
@@ -1,66 +0,0 @@
-{ lib, stdenv, python, makeWrapper, unzip
-, pipInstallHook
-, setuptoolsBuildHook
-, wheel, pip, setuptools
-}:
-
-stdenv.mkDerivation rec {
-  pname = "pip";
-  inherit (pip) version;
-  name = "${python.libPrefix}-bootstrapped-${pname}-${version}";
-
-  srcs = [ wheel.src pip.src setuptools.src ];
-  sourceRoot = ".";
-
-  dontUseSetuptoolsBuild = true;
-  dontUsePipInstall = true;
-
-  # Should be propagatedNativeBuildInputs
-  propagatedBuildInputs = [
-    # Override to remove dependencies to prevent infinite recursion.
-    (pipInstallHook.override{pip=null;})
-    (setuptoolsBuildHook.override{setuptools=null; wheel=null;})
-  ];
-
-  postPatch = ''
-    mkdir -p $out/bin
-  '';
-
-  nativeBuildInputs = [ makeWrapper unzip ];
-  buildInputs = [ python ];
-
-  dontBuild = true;
-
-  installPhase = lib.optionalString (!stdenv.hostPlatform.isWindows) ''
-    export SETUPTOOLS_INSTALL_WINDOWS_SPECIFIC_FILES=0
-  '' + ''
-    # Give folders a known name
-    mv pip* pip
-    mv setuptools* setuptools
-    mv wheel* wheel
-    # Set up PYTHONPATH. The above folders need to be on PYTHONPATH
-    # $out is where we are installing to and takes precedence
-    export PYTHONPATH="$out/${python.sitePackages}:$(pwd)/pip/src:$(pwd)/setuptools:$(pwd)/setuptools/pkg_resources:$(pwd)/wheel:$PYTHONPATH"
-
-    echo "Building setuptools wheel..."
-    pushd setuptools
-    ${python.pythonForBuild.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out  --ignore-installed --no-dependencies --no-cache .
-    popd
-
-    echo "Building wheel wheel..."
-    pushd wheel
-    ${python.pythonForBuild.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out  --ignore-installed --no-dependencies --no-cache .
-    popd
-
-    echo "Building pip wheel..."
-    pushd pip
-    ${python.pythonForBuild.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out  --ignore-installed --no-dependencies --no-cache .
-    popd
-  '';
-
-  meta = {
-    description = "Version of pip used for bootstrapping";
-    license = lib.unique (pip.meta.license ++ setuptools.meta.license ++ wheel.meta.license);
-    homepage = pip.meta.homepage;
-  };
-}
diff --git a/pkgs/development/python-modules/boschshcpy/default.nix b/pkgs/development/python-modules/boschshcpy/default.nix
index 27610d7cd9b54..29a5dd569aed5 100644
--- a/pkgs/development/python-modules/boschshcpy/default.nix
+++ b/pkgs/development/python-modules/boschshcpy/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "boschshcpy";
-  version = "0.2.28";
+  version = "0.2.29";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "tschamm";
     repo = pname;
     rev = version;
-    sha256 = "sha256-CnfJiYUM8A4QZ6VMtekO8nD5tQ2VL9vMeK6OWYcgwmU=";
+    sha256 = "sha256-x+TXHG7xJWd5t6pKQ/6X48lOuIQWUnEwsySFRh5GJnE=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/boto3/1_17.nix b/pkgs/development/python-modules/boto3/1_17.nix
deleted file mode 100644
index c8b8210f65037..0000000000000
--- a/pkgs/development/python-modules/boto3/1_17.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, botocore
-, jmespath
-, s3transfer
-, futures ? null
-, docutils
-, nose
-, mock
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "boto3";
-  version = "1.17.97"; # N.B: if you change this, change botocore and awscli to a matching version
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0ab5afc51461c30f27aebef944211d16f47697b98ff8d2e2f6e49e59584853bb";
-  };
-
-  propagatedBuildInputs = [ botocore jmespath s3transfer ] ++ lib.optionals (!isPy3k) [ futures ];
-  checkInputs = [ docutils nose mock ];
-
-  checkPhase = ''
-    runHook preCheck
-    # This method is not in mock. It might have appeared in some versions.
-    sed -i 's/action.assert_called_once()/self.assertEqual(action.call_count, 1)/' \
-      tests/unit/resources/test_factory.py
-    nosetests -d tests/unit --verbose
-    runHook postCheck
-  '';
-
-  # Network access
-  doCheck = false;
-
-  pythonImportsCheck = [ "boto3" ];
-
-  meta = {
-    homepage = "https://github.com/boto/boto3";
-    license = lib.licenses.asl20;
-    description = "AWS SDK for Python";
-    longDescription = ''
-      Boto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for
-      Python, which allows Python developers to write software that makes use of
-      services like Amazon S3 and Amazon EC2.
-    '';
-  };
-}
diff --git a/pkgs/development/python-modules/boto3/default.nix b/pkgs/development/python-modules/boto3/default.nix
index bf26eca41b647..c6fdc8c9981c5 100644
--- a/pkgs/development/python-modules/boto3/default.nix
+++ b/pkgs/development/python-modules/boto3/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "boto3";
-  version = "1.20.13"; # N.B: if you change this, change botocore and awscli to a matching version
+  version = "1.20.35"; # N.B: if you change this, change botocore and awscli to a matching version
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bbf53a077d6a0575ddec8026f0475ca6ee6f41b227914bf315bf3e049a3d653a";
+    sha256 = "42dd9fcb9e033ab19c9dfaeaba745ef9d2db6efe4e9f1e1f547b3e3e0b1f4a82";
   };
 
   propagatedBuildInputs = [ botocore jmespath s3transfer ] ++ lib.optionals (!isPy3k) [ futures ];
diff --git a/pkgs/development/python-modules/botocore/1_20.nix b/pkgs/development/python-modules/botocore/1_20.nix
deleted file mode 100644
index d05c2decf497f..0000000000000
--- a/pkgs/development/python-modules/botocore/1_20.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python-dateutil
-, jmespath
-, docutils
-, ordereddict
-, simplejson
-, mock
-, nose
-, urllib3
-}:
-
-buildPythonPackage rec {
-  pname = "botocore";
-  version = "1.20.97"; # N.B: if you change this, change boto3 and awscli to a matching version
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "f7e119cf3e0f4a36100f0e983583afa91a84fb27c479a1716820aee4f2e190ab";
-  };
-
-  propagatedBuildInputs = [
-    python-dateutil
-    jmespath
-    docutils
-    ordereddict
-    simplejson
-    urllib3
-  ];
-
-  checkInputs = [ mock nose ];
-
-  checkPhase = ''
-    nosetests -v
-  '';
-
-  # Network access
-  doCheck = false;
-
-  pythonImportsCheck = [ "botocore" ];
-
-  meta = with lib; {
-    homepage = "https://github.com/boto/botocore";
-    license = licenses.asl20;
-    description = "A low-level interface to a growing number of Amazon Web Services";
-  };
-}
diff --git a/pkgs/development/python-modules/botocore/default.nix b/pkgs/development/python-modules/botocore/default.nix
index b34dbfbac98cc..6d5c11665c2cb 100644
--- a/pkgs/development/python-modules/botocore/default.nix
+++ b/pkgs/development/python-modules/botocore/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "botocore";
-  version = "1.23.14"; # N.B: if you change this, change boto3 and awscli to a matching version
+  version = "1.23.35"; # N.B: if you change this, change boto3 and awscli to a matching version
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-6NUsvy5zxiaM8sIH9H48+z7eCYP5PotZZ0tUYo5+8fE=";
+    sha256 = "5be6ba6c5ea71c256da8a5023bf9c278847c4b90fdb40f2c4c3bdb21ca11ff28";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/box2d/default.nix b/pkgs/development/python-modules/box2d/default.nix
deleted file mode 100644
index e6f6a390f3749..0000000000000
--- a/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/pkgs/development/python-modules/boxx/default.nix b/pkgs/development/python-modules/boxx/default.nix
new file mode 100644
index 0000000000000..a3f0db80fafe8
--- /dev/null
+++ b/pkgs/development/python-modules/boxx/default.nix
@@ -0,0 +1,57 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+, xvfb-run
+, matplotlib
+, scikitimage
+, numpy
+, pandas
+, imageio
+, snakeviz
+, fn
+, pyopengl
+, seaborn
+, pytorch
+, torchvision
+}:
+
+buildPythonPackage rec {
+  pname = "boxx";
+  version = "0.9.9";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-Mc6R6ruUVhFs2D0CTJsAiM9aGOusS973hRS5r2kQsy4=";
+  };
+
+  propagatedBuildInputs = [
+    matplotlib
+    scikitimage
+    numpy
+    pandas
+    imageio
+    snakeviz
+    fn
+    pyopengl
+    seaborn
+  ];
+
+  pythonImportsCheck = [ "boxx" ];
+  checkInputs = [
+    xvfb-run
+    pytorch
+    torchvision
+  ];
+
+  checkPhase = ''
+    xvfb-run ${python.interpreter} -m unittest
+  '';
+
+  meta = with lib; {
+    description = "Tool-box for efficient build and debug in Python. Especially for Scientific Computing and Computer Vision.";
+    homepage = "https://github.com/DIYer22/boxx";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lucasew ];
+  };
+}
diff --git a/pkgs/development/python-modules/bpycv/bpycv-test.py b/pkgs/development/python-modules/bpycv/bpycv-test.py
new file mode 100644
index 0000000000000..94e1bb122c77f
--- /dev/null
+++ b/pkgs/development/python-modules/bpycv/bpycv-test.py
@@ -0,0 +1,76 @@
+# based on https://github.com/DIYer22/bpycv/blob/c576e01622d87eb3534f73bf1a5686bd2463de97/example/ycb_demo.py
+import bpy
+import bpycv
+
+import os
+import glob
+import random
+
+example_data_dir = os.environ['BPY_EXAMPLE_DATA']
+
+models = sorted(glob.glob(os.path.join(example_data_dir, "model", "*", "*.obj")))
+cat_id_to_model_path = dict(enumerate(sorted(models), 1))
+
+distractors = sorted(glob.glob(os.path.join(example_data_dir, "distractor", "*.obj")))
+
+bpycv.clear_all()
+bpy.context.scene.frame_set(1)
+bpy.context.scene.render.engine = "CYCLES"
+bpy.context.scene.cycles.samples = 32
+bpy.context.scene.render.resolution_y = 1024
+bpy.context.scene.render.resolution_x = 1024
+
+# A transparency stage for holding rigid body
+stage = bpycv.add_stage(transparency=True)
+
+bpycv.set_cam_pose(cam_radius=1, cam_deg=45)
+
+hdri_dir = os.path.join(example_data_dir, "background_and_light")
+hdri_manager = bpycv.HdriManager(
+    hdri_dir=hdri_dir, download=False
+)  # if download is True, will auto download .hdr file from HDRI Haven
+hdri_path = hdri_manager.sample()
+bpycv.load_hdri_world(hdri_path, random_rotate_z=True)
+
+# load 5 objects
+for index in range(5):
+    cat_id = random.choice(list(cat_id_to_model_path))
+    model_path = cat_id_to_model_path[cat_id]
+    obj = bpycv.load_obj(model_path)
+    obj.location = (
+        random.uniform(-0.2, 0.2),
+        random.uniform(-0.2, 0.2),
+        random.uniform(0.1, 0.3),
+    )
+    obj.rotation_euler = [random.uniform(-3.1415, 3.1415) for _ in range(3)]
+    # set each instance a unique inst_id, which is used to generate instance annotation.
+    obj["inst_id"] = cat_id * 1000 + index
+    with bpycv.activate_obj(obj):
+        bpy.ops.rigidbody.object_add()
+
+# load 6 distractors
+for index in range(6):
+    distractor_path = random.choice(distractors)
+    target_size = random.uniform(0.1, 0.3)
+    distractor = bpycv.load_distractor(distractor_path, target_size=target_size)
+    distractor.location = (
+        random.uniform(-0.2, 0.2),
+        random.uniform(-0.2, 0.2),
+        random.uniform(0.1, 0.3),
+    )
+    distractor.rotation_euler = [random.uniform(-3.1415, 3.1415) for _ in range(3)]
+    with bpycv.activate_obj(distractor):
+        bpy.ops.rigidbody.object_add()
+
+# run pyhsic engine for 20 frames
+for i in range(20):
+    bpy.context.scene.frame_set(bpy.context.scene.frame_current + 1)
+
+# render image, instance annoatation and depth in one line code
+result = bpycv.render_data()
+
+dataset_dir = "./dataset"
+result.save(dataset_dir=dataset_dir, fname="0", save_blend=True)
+print(f'Save to "{dataset_dir}"')
+print(f'Open "{dataset_dir}/vis/" to see visualize result.')
+
diff --git a/pkgs/development/python-modules/bpycv/default.nix b/pkgs/development/python-modules/bpycv/default.nix
new file mode 100644
index 0000000000000..7a88a4078f0b8
--- /dev/null
+++ b/pkgs/development/python-modules/bpycv/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchFromGitHub
+, fetchurl
+, writeText
+, blender
+, minexr
+, beautifulsoup4
+, zcs
+, requests
+, opencv3
+, boxx
+}:
+
+buildPythonPackage rec {
+  pname = "bpycv";
+  version = "0.2.43";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-6LXhKuNkX3yKeZARLXmOVNAUQhJghtzKhnszJ1G/a8U=";
+  };
+
+  propagatedBuildInputs = [
+    beautifulsoup4
+    minexr
+    zcs
+    requests
+    opencv3
+    boxx
+  ];
+
+  postPatch = ''
+    sed -i 's/opencv-python//g' requirements.txt
+  '';
+
+  # pythonImportsCheck = [ "bpycv" ]; # this import depends on bpy that is only available inside blender
+  checkInputs = [ blender ];
+  checkPhase = let
+    bpycv_example_data = fetchFromGitHub {
+      owner = "DIYer22";
+      repo = "bpycv_example_data";
+      sha256 = "sha256-dGb6KvbXTGTu5f4AqhA+i4AwTqBoR5SdXk0vsMEcD3Q=";
+      rev = "6ce0e65c107d572011394da16ffdf851e988dbb4";
+    };
+  in ''
+    TEMPDIR=$(mktemp -d)
+    pushd $TEMPDIR
+      cp -r ${bpycv_example_data} example_data
+      chmod +w -R example_data
+      BPY_EXAMPLE_DATA=${bpycv_example_data} blender -b -P ${./bpycv-test.py}
+    popd
+  '';
+
+  meta = with lib; {
+    description = "Computer vision utils for Blender";
+    homepage = "https://github.com/DIYer22/bpycv";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lucasew ];
+  };
+}
diff --git a/pkgs/development/python-modules/braintree/default.nix b/pkgs/development/python-modules/braintree/default.nix
index 8cf820edbfec3..c88f6712f7967 100644
--- a/pkgs/development/python-modules/braintree/default.nix
+++ b/pkgs/development/python-modules/braintree/default.nix
@@ -1,22 +1,43 @@
-{ lib,
-  fetchPypi,
-  requests,
-  buildPythonPackage
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, nose
+, pytestCheckHook
+, pythonOlder
+, requests
 }:
 
 buildPythonPackage rec {
   pname = "braintree";
-  version = "4.13.1";
+  version = "4.14.0";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "4f6addf89f5cd6123243ddc89db325e50fceec825845901dad553fde115bd938";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = "braintree_python";
+    rev = version;
+    hash = "sha256-qeqQX+qyy78sLe+46CA4D6VAxNHUVahS4LMYdGDzc2k=";
   };
 
-  propagatedBuildInputs = [ requests ];
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  checkInputs = [
+    nose
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "braintree"
+  ];
 
-  # pypi release does not include tests
-  doCheck = false;
+  disabledTestPaths = [
+    # Don't test integrations
+    "tests/integration"
+  ];
 
   meta = with lib; {
     description = "Python library for integration with Braintree";
diff --git a/pkgs/development/python-modules/breathe/default.nix b/pkgs/development/python-modules/breathe/default.nix
index 7770996f423d4..9d1324053b39d 100644
--- a/pkgs/development/python-modules/breathe/default.nix
+++ b/pkgs/development/python-modules/breathe/default.nix
@@ -1,24 +1,44 @@
-{ lib, fetchPypi, buildPythonPackage, docutils, six, sphinx, isPy3k, isPy27 }:
+{ lib
+, buildPythonPackage
+, docutils
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+, sphinx
+}:
 
 buildPythonPackage rec {
-  version = "4.31.0";
   pname = "breathe";
-  disabled = isPy27;
+  version = "4.32.0";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "925eeff96c6640cd857e4ddeae6f75464a1d5e2e08ee56dccce4043583ae2050";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "michaeljones";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-U85iLVS6bmA2Ty0AC4z2qODy9u4rWg6Nb42/k2Ix+kk=";
   };
 
-  propagatedBuildInputs = [ docutils six sphinx ];
+  propagatedBuildInputs = [
+    docutils
+    sphinx
+  ];
 
-  doCheck = !isPy3k;
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  meta = {
-    homepage = "https://github.com/michaeljones/breathe";
-    license = lib.licenses.bsd3;
+  pythonImportsCheck = [
+    "breathe"
+  ];
+
+  meta = with lib; {
     description = "Sphinx Doxygen renderer";
+    homepage = "https://github.com/michaeljones/breathe";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ ];
     inherit (sphinx.meta) platforms;
   };
 }
-
diff --git a/pkgs/development/python-modules/brotli/default.nix b/pkgs/development/python-modules/brotli/default.nix
index 0556c5b4e2a2b..d4cff163a0b15 100644
--- a/pkgs/development/python-modules/brotli/default.nix
+++ b/pkgs/development/python-modules/brotli/default.nix
@@ -12,9 +12,9 @@ buildPythonPackage rec {
     owner = "google";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1rdp9rx197q467ixp53g4cgc3jbsdaxr62pz0a8ayv2lvm944azh";
+    sha256 = "sha256-tFnXSXv8t3l3HX6GwWLhEtgpqz0c7Yom5U3k47pWM7o=";
     # for some reason, the test data isn't captured in releases, force a git checkout
-    deepClone = true;
+    forceFetchGit = true;
   };
 
   dontConfigure = true;
diff --git a/pkgs/development/python-modules/browsermob-proxy/default.nix b/pkgs/development/python-modules/browsermob-proxy/default.nix
deleted file mode 100644
index 1c69d70a134a5..0000000000000
--- a/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/pkgs/development/python-modules/bsblan/default.nix b/pkgs/development/python-modules/bsblan/default.nix
index f670bebc8ed34..6db9523477522 100644
--- a/pkgs/development/python-modules/bsblan/default.nix
+++ b/pkgs/development/python-modules/bsblan/default.nix
@@ -8,6 +8,7 @@
 , pytest-asyncio
 , pytest-cov
 , pytest-mock
+, pythonOlder
 , aiohttp
 , attrs
 , cattrs
@@ -16,13 +17,16 @@
 
 buildPythonPackage rec {
   pname = "bsblan";
-  version = "0.4.1";
+  version = "0.5.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "liudger";
     repo = "python-bsblan";
     rev = "v.${version}";
-    sha256 = "0vyg9vsrs34jahlav83qp2djv81p3ks31qz4qh46zdij2nx7l1fv";
+    sha256 = "1j41y2njnalcsp1vjqwl508yp3ki82lv8108ijz52hprhrq4fffb";
   };
 
   propagatedBuildInputs = [
@@ -42,7 +46,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "bsblan" ];
+  pythonImportsCheck = [
+    "bsblan"
+  ];
 
   meta = with lib; {
     description = "Python client for BSB-Lan";
diff --git a/pkgs/development/python-modules/build/default.nix b/pkgs/development/python-modules/build/default.nix
index ba8d15909f213..f1f7f0e81bd25 100644
--- a/pkgs/development/python-modules/build/default.nix
+++ b/pkgs/development/python-modules/build/default.nix
@@ -54,6 +54,8 @@ buildPythonPackage rec {
   pytestFlagsArray = [
     "-n"
     "$NIX_BUILD_CORES"
+    "-W"
+    "ignore::DeprecationWarning"
   ];
 
   disabledTests = [
diff --git a/pkgs/development/python-modules/cachelib/default.nix b/pkgs/development/python-modules/cachelib/default.nix
index 0838558e116a7..9c0620c8740dd 100644
--- a/pkgs/development/python-modules/cachelib/default.nix
+++ b/pkgs/development/python-modules/cachelib/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "cachelib";
-  version = "0.3.0";
+  version = "0.6.0";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "pallets";
     repo = pname;
     rev = version;
-    sha256 = "sha256-ssyHNlrSrG8YHRS131jJtmgl6eMTNdet1Hf0nTxL8sM=";
+    sha256 = "sha256-1msDiNYxaETJfVBTaMuNJbSxhOpyRdHkb5CQ+1+ZbbQ=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/cachetools/default.nix b/pkgs/development/python-modules/cachetools/default.nix
index 1bff572b6032e..f38eb328e3d98 100644
--- a/pkgs/development/python-modules/cachetools/default.nix
+++ b/pkgs/development/python-modules/cachetools/default.nix
@@ -7,16 +7,16 @@
 
 buildPythonPackage rec {
   pname = "cachetools";
-  version = "4.2.4";
+  version = "5.0.0";
   format = "setuptools";
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "tkem";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-doPLl7Ooc2cKlTiS/dqLTKSkTlSgPFztIumAzciM0bc=";
+    hash = "sha256-urTkls1S83m7Eo7chPaQc5gxz0omZBToNYa8upQEiOo=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/cachey/default.nix b/pkgs/development/python-modules/cachey/default.nix
new file mode 100644
index 0000000000000..aff819adcad87
--- /dev/null
+++ b/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/pkgs/development/python-modules/cairocffi/0_9.nix b/pkgs/development/python-modules/cairocffi/0_9.nix
deleted file mode 100644
index 84c1767bc29f8..0000000000000
--- a/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/pkgs/development/python-modules/cairocffi/default.nix b/pkgs/development/python-modules/cairocffi/default.nix
index 8e26517ba2185..cc4e19d6beb7f 100644
--- a/pkgs/development/python-modules/cairocffi/default.nix
+++ b/pkgs/development/python-modules/cairocffi/default.nix
@@ -12,16 +12,67 @@
 , cairo
 , cffi
 , numpy
-, withXcffib ? false, xcffib
+, withXcffib ? false
+, xcffib
 , python
 , glib
 , gdk-pixbuf
-}@args:
+}:
+
+buildPythonPackage rec {
+  pname = "cairocffi";
+  version = "1.3.0";
 
-import ./generic.nix ({
-  version = "1.2.0";
-  sha256 = "sha256-mpebUAxkyBef7ChvM36P5kTsovLNBYYM4LYtJfIuoUA=";
-  dlopen_patch = ./dlopen-paths.patch;
   disabled = pythonOlder "3.5";
-  inherit withXcffib;
-} // args)
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-EIo6fLCeIDvdhQHZuq2R14bSBFYb1x6TZOizSJfEe5E=";
+  };
+
+  LC_ALL = "en_US.UTF-8";
+
+  # checkPhase require at least one 'normal' font and one 'monospace',
+  # otherwise glyph tests fails
+  FONTCONFIG_FILE = makeFontsConf {
+    fontDirectories = [ freefont_ttf ];
+  };
+
+  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}
+  '';
+
+  patches = [
+    # OSError: dlopen() failed to load a library: gdk-pixbuf-2.0 / gdk-pixbuf-2.0-0
+    (substituteAll {
+      src = ./dlopen-paths.patch;
+      ext = stdenv.hostPlatform.extensions.sharedLibrary;
+      cairo = cairo.out;
+      glib = glib.out;
+      gdk_pixbuf = gdk-pixbuf.out;
+    })
+    ./fix_test_scaled_font.patch
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/SimonSapin/cairocffi";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+    description = "cffi-based cairo bindings for Python";
+  };
+}
diff --git a/pkgs/development/python-modules/cairocffi/dlopen-paths-0.9.patch b/pkgs/development/python-modules/cairocffi/dlopen-paths-0.9.patch
deleted file mode 100644
index 307cb428c078a..0000000000000
--- a/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/pkgs/development/python-modules/cairocffi/generic.nix b/pkgs/development/python-modules/cairocffi/generic.nix
deleted file mode 100644
index 004cf8ae78414..0000000000000
--- a/pkgs/development/python-modules/cairocffi/generic.nix
+++ /dev/null
@@ -1,63 +0,0 @@
-{ version
-, sha256
-, dlopen_patch
-, disabled ? false
-, ...
-}@args:
-
-with args;
-
-buildPythonPackage rec {
-  pname = "cairocffi";
-  inherit version disabled;
-
-  src = fetchPypi {
-    inherit pname version sha256;
-  };
-
-  LC_ALL = "en_US.UTF-8";
-
-  # checkPhase require at least one 'normal' font and one 'monospace',
-  # otherwise glyph tests fails
-  FONTCONFIG_FILE = makeFontsConf {
-    fontDirectories = [ freefont_ttf ];
-  };
-
-  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}
-  '';
-
-  patches = [
-    # OSError: dlopen() failed to load a library: gdk-pixbuf-2.0 / gdk-pixbuf-2.0-0
-    (substituteAll {
-      src = dlopen_patch;
-      ext = stdenv.hostPlatform.extensions.sharedLibrary;
-      cairo = cairo.out;
-      glib = glib.out;
-      gdk_pixbuf = gdk-pixbuf.out;
-    })
-    ./fix_test_scaled_font.patch
-  ];
-
-  meta = with lib; {
-    homepage = "https://github.com/SimonSapin/cairocffi";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [];
-    description = "cffi-based cairo bindings for Python";
-  };
-}
diff --git a/pkgs/development/python-modules/cairosvg/1_x.nix b/pkgs/development/python-modules/cairosvg/1_x.nix
deleted file mode 100644
index 3e1a67f8282b5..0000000000000
--- a/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/pkgs/development/python-modules/can/default.nix b/pkgs/development/python-modules/can/default.nix
index 188ab9cb56228..a68d73e1242c5 100644
--- a/pkgs/development/python-modules/can/default.nix
+++ b/pkgs/development/python-modules/can/default.nix
@@ -1,39 +1,75 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
+, future
+, hypothesis
+, parameterized
+, msgpack
+, pyserial
+, pytest-timeout
+, pytestCheckHook
 , pythonOlder
-, aenum
+, typing-extensions
 , wrapt
-, typing ? null
-, pyserial
-, nose
-, mock
-, hypothesis
-, future
-, pytest
- }:
+}:
 
 buildPythonPackage rec {
   pname = "python-can";
-  version = "3.3.4";
+  version = "unstable-2022-01-11";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "2d3c223b7adc4dd46ce258d4a33b7e0dbb6c339e002faa40ee4a69d5fdce9449";
+  src = fetchFromGitHub {
+    owner = "hardbyte";
+    repo = pname;
+    rev = "2e24af08326ecd69fba9f02fed7b9c26f233c92b";
+    hash = "sha256-ZP5qtbjDtBZ2uT9DOSvSnfHyTlirr0oCEXhiLO1ydz0=";
   };
 
-  propagatedBuildInputs = [ wrapt pyserial aenum ] ++ lib.optional (pythonOlder "3.5") typing;
-  checkInputs = [ nose mock pytest hypothesis future ];
+  propagatedBuildInputs = [
+    msgpack
+    pyserial
+    typing-extensions
+    wrapt
+  ];
 
-  # Add the scripts to PATH
-  checkPhase = ''
-    PATH=$out/bin:$PATH pytest -c /dev/null
+  checkInputs = [
+    future
+    hypothesis
+    parameterized
+    pytest-timeout
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace tox.ini \
+      --replace " --cov=can --cov-config=tox.ini --cov-report=xml --cov-report=term" ""
+  '';
+
+  disabledTestPaths = [
+    # We don't support all interfaces
+    "test/test_interface_canalystii.py"
+  ];
+
+  disabledTests = [
+    # Tests require access socket
+    "BasicTestUdpMulticastBusIPv4"
+    "BasicTestUdpMulticastBusIPv6"
+  ];
+
+  preCheck = ''
+    export PATH="$PATH:$out/bin";
   '';
 
+  pythonImportsCheck = [
+    "can"
+  ];
+
   meta = with lib; {
-    homepage = "https://github.com/hardbyte/python-can";
     description = "CAN support for Python";
-    license = licenses.lgpl3;
-    maintainers = with maintainers; [ sorki ];
+    homepage = "python-can.readthedocs.io";
+    license = licenses.lgpl3Only;
+    maintainers = with maintainers; [ fab sorki ];
   };
 }
diff --git a/pkgs/development/python-modules/canmatrix/default.nix b/pkgs/development/python-modules/canmatrix/default.nix
index d36f6805cc3fb..d131e4001c943 100644
--- a/pkgs/development/python-modules/canmatrix/default.nix
+++ b/pkgs/development/python-modules/canmatrix/default.nix
@@ -18,14 +18,14 @@
 
 buildPythonPackage rec {
   pname = "canmatrix";
-  version = "0.9.3";
+  version = "0.9.5";
 
   # uses fetchFromGitHub as PyPi release misses test/ dir
   src = fetchFromGitHub {
     owner = "ebroecker";
     repo = pname;
     rev = version;
-    sha256 = "sha256-9FupG1VmROgsxYhsafQYPPqG0xEOAYYK8QDOIBNzE0Y=";
+    sha256 = "0x8x8kbg4gyzi0ia9657xygp0mqfii76b67fsx76d31bqsdvlda5";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/canopen/default.nix b/pkgs/development/python-modules/canopen/default.nix
index 51a6d0d11c0fc..ccb3626e2f489 100644
--- a/pkgs/development/python-modules/canopen/default.nix
+++ b/pkgs/development/python-modules/canopen/default.nix
@@ -5,15 +5,19 @@
 , can
 , canmatrix
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "canopen";
-  version = "1.2.1";
+  version = "2.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "18d01d56ff0023795cb336cafd4810a76cf402b98b42139b201fa8c5d4ba8c06";
+    hash = "sha256-vMiqnqg/etpdoNregQOJd75SqTgCwmV2SXKesfggZdk=";
   };
 
   nativeBuildInputs = [
@@ -29,7 +33,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "canopen" ];
+  pythonImportsCheck = [
+    "canopen"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/christiansandberg/canopen/";
diff --git a/pkgs/development/python-modules/capstone/default.nix b/pkgs/development/python-modules/capstone/default.nix
index f10f34c381d41..c99c392841eb2 100644
--- a/pkgs/development/python-modules/capstone/default.nix
+++ b/pkgs/development/python-modules/capstone/default.nix
@@ -10,7 +10,7 @@ buildPythonPackage rec {
   version = lib.getVersion capstone;
 
   src = capstone.src;
-  sourceRoot = "${capstone.name}/bindings/python";
+  sourceRoot = "source/bindings/python";
 
   postPatch = ''
     ln -s ${capstone}/lib/libcapstone${stdenv.targetPlatform.extensions.sharedLibrary} prebuilt/
diff --git a/pkgs/development/python-modules/carrot/default.nix b/pkgs/development/python-modules/carrot/default.nix
deleted file mode 100644
index a772535ad82b6..0000000000000
--- a/pkgs/development/python-modules/carrot/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi
-, nose, amqplib, anyjson }:
-
-buildPythonPackage rec {
-  pname = "carrot";
-  version = "0.10.7";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0s14rs2fgp1s2qa0avn8gj33lwc3k1hd4y9a2h6mhg487i7kfinb";
-  };
-
-  buildInputs = [ nose ];
-  propagatedBuildInputs = [ amqplib anyjson ];
-
-  doCheck = false; # depends on the network
-
-  meta = with lib; {
-    homepage = "https://pypi.python.org/pypi/carrot";
-    description = "AMQP Messaging Framework for Python";
-  };
-}
diff --git a/pkgs/development/python-modules/cart/default.nix b/pkgs/development/python-modules/cart/default.nix
index ecba8f9cc394f..c4d4e88920180 100644
--- a/pkgs/development/python-modules/cart/default.nix
+++ b/pkgs/development/python-modules/cart/default.nix
@@ -4,7 +4,6 @@
 , fetchFromGitHub
 , pythonOlder
 , pytestCheckHook
-, unittest2
 }:
 
 buildPythonPackage rec {
@@ -27,7 +26,6 @@ buildPythonPackage rec {
 
   checkInputs = [
     pytestCheckHook
-    unittest2
   ];
 
   pytestFlagsArray = [
diff --git a/pkgs/development/python-modules/cartopy/default.nix b/pkgs/development/python-modules/cartopy/default.nix
index d55c1e9b0c53e..d233cf0316473 100644
--- a/pkgs/development/python-modules/cartopy/default.nix
+++ b/pkgs/development/python-modules/cartopy/default.nix
@@ -1,6 +1,6 @@
 { buildPythonPackage, lib, fetchPypi
 , pytestCheckHook, filelock, mock, pep8
-, cython
+, cython, setuptools-scm
 , six, pyshp, shapely, geos, numpy
 , gdal, pillow, matplotlib, pyepsg, pykdtree, scipy, owslib, fiona
 , proj, flufl_lock
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "cartopy";
-  version = "0.20.1";
+  version = "0.20.2";
 
   src = fetchPypi {
     inherit version;
     pname = "Cartopy";
-    sha256 = "91f87b130e2574547a20cd634498df97d797abd12dcfd0235bc0cdbcec8b05e3";
+    sha256 = "4d08c198ecaa50a6a6b109d0f14c070e813defc046a83ac5d7ab494f85599e35";
   };
 
   postPatch = ''
@@ -23,6 +23,13 @@ buildPythonPackage rec {
       --replace "test_epsg(" "dont_test_epsg("
   '';
 
+  nativeBuildInputs = [
+    cython
+    geos # for geos-config
+    proj
+    setuptools-scm
+  ];
+
   buildInputs = [
     geos proj
   ];
@@ -48,12 +55,6 @@ buildPythonPackage rec {
     "test_gridliner_labels_bbox_style"
   ];
 
-  nativeBuildInputs = [
-    cython
-    geos # for geos-config
-    proj
-  ];
-
   meta = with lib; {
     description = "Process geospatial data to create maps and perform analyses";
     license = licenses.lgpl3Plus;
diff --git a/pkgs/development/python-modules/casa-formats-io/default.nix b/pkgs/development/python-modules/casa-formats-io/default.nix
index 53ee89c5f941b..beb6dc351420c 100644
--- a/pkgs/development/python-modules/casa-formats-io/default.nix
+++ b/pkgs/development/python-modules/casa-formats-io/default.nix
@@ -4,6 +4,7 @@
 , astropy
 , dask
 , numpy
+, setuptools-scm
 }:
 
 buildPythonPackage rec {
@@ -16,6 +17,8 @@ buildPythonPackage rec {
     sha256 = "16rypj65wdfxxrilxfhbk563lxv86if4vvs9zfq3f8bkzdr8xl9s";
   };
 
+  nativeBuildInputs = [ setuptools-scm ];
+
   propagatedBuildInputs = [ astropy dask numpy ];
 
   # Tests require a large (800 Mb) dataset
@@ -25,7 +28,7 @@ buildPythonPackage rec {
 
   meta = {
     description = "Dask-based reader for CASA data";
-    homepage = "http://radio-astro-tools.github.io";
+    homepage = "https://casa-formats-io.readthedocs.io/";
     license = lib.licenses.lgpl2Only;
     maintainers = with lib.maintainers; [ smaret ];
   };
diff --git a/pkgs/development/python-modules/casbin/default.nix b/pkgs/development/python-modules/casbin/default.nix
index 815bc8ae36cb3..12ea06a5c4f7d 100644
--- a/pkgs/development/python-modules/casbin/default.nix
+++ b/pkgs/development/python-modules/casbin/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "casbin";
-  version = "1.15.2";
+  version = "1.15.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = pname;
     repo = "pycasbin";
     rev = "v${version}";
-    sha256 = "0mrk6b16f4ds666qa4884kjjbmb55kpfvvqsznfmyg9iii6dir50";
+    sha256 = "0vczml14dvvrj401r08d6b0rfn5p5kfm1wr0vrfi8rqk2z5x1w0g";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/case/default.nix b/pkgs/development/python-modules/case/default.nix
index 3f95d9e22afc0..36efc1aab3bc0 100644
--- a/pkgs/development/python-modules/case/default.nix
+++ b/pkgs/development/python-modules/case/default.nix
@@ -1,20 +1,40 @@
-{ lib, buildPythonPackage, fetchPypi
-, six, nose, unittest2, mock }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, pythonOlder
+, pytestCheckHook
+, six
+}:
 
 buildPythonPackage rec {
   pname = "case";
   version = "1.5.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "48432b01d91913451c3512c5b90e31b0f348f1074b166a3431085eb70d784fb1";
   };
 
-  propagatedBuildInputs = [ six nose unittest2 mock ];
+  propagatedBuildInputs = [
+    nose
+    six
+  ];
+
+  # No real unittests, only coverage
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "case"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/celery/case";
-    description = "unittests utilities";
+    description = "Utilities for unittests handling";
     license = licenses.bsd3;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/catalogue/default.nix b/pkgs/development/python-modules/catalogue/default.nix
index a62dcbd249a58..7105e360561ed 100644
--- a/pkgs/development/python-modules/catalogue/default.nix
+++ b/pkgs/development/python-modules/catalogue/default.nix
@@ -2,13 +2,16 @@
 , buildPythonPackage
 , fetchPypi
 , pytestCheckHook
+, pythonAtLeast
 , pythonOlder
 , typing-extensions
+, zipp
 }:
 
 buildPythonPackage rec {
   pname = "catalogue";
   version = "2.0.6";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
@@ -19,16 +22,27 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
     typing-extensions
+    zipp
   ];
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = lib.optionals (pythonAtLeast "3.10") [
+    # https://github.com/explosion/catalogue/issues/27
+    "test_entry_points"
+  ];
 
-  pythonImportsCheck = [ "catalogue" ];
+  pythonImportsCheck = [
+    "catalogue"
+  ];
 
   meta = with lib; {
     description = "Tiny library for adding function or object registries";
     homepage = "https://github.com/explosion/catalogue";
     changelog = "https://github.com/explosion/catalogue/releases/tag/v${version}";
     license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cattrs/default.nix b/pkgs/development/python-modules/cattrs/default.nix
index 45379910a6102..e3d694d28e3b3 100644
--- a/pkgs/development/python-modules/cattrs/default.nix
+++ b/pkgs/development/python-modules/cattrs/default.nix
@@ -11,23 +11,22 @@
 , pythonOlder
 , pyyaml
 , tomlkit
+, typing-extensions
 , ujson
 }:
 
 buildPythonPackage rec {
   pname = "cattrs";
-  version = "1.8.0";
+  version = "1.10.0";
   format = "pyproject";
 
-  # https://cattrs.readthedocs.io/en/latest/history.html#id33:
-  # "Python 2, 3.5 and 3.6 support removal. If you need it, use a version below 1.1.0."
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
-    owner = "Tinche";
+    owner = "python-attrs";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-CKAsvRKS8kmLcyPA753mh6d3S04ObzO7xLPpmlmxrxI=";
+    hash = "sha256-VbfQMMDO03eeUHAACxoX6a3DKmzoF9EfLuTpvaY6bWs=";
   };
 
   nativeBuildInputs = [
@@ -36,6 +35,8 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     attrs
+  ] ++ lib.optionals (pythonOlder "3.7") [
+    typing-extensions
   ];
 
   checkInputs = [
@@ -50,10 +51,10 @@ buildPythonPackage rec {
   ];
 
   postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "-l --benchmark-sort=fullname --benchmark-warmup=true --benchmark-warmup-iterations=5  --benchmark-group-by=fullname" ""
     substituteInPlace pyproject.toml \
-      --replace 'orjson = "^3.5.2"' ""
+      --replace "-l --benchmark-sort=fullname --benchmark-warmup=true --benchmark-warmup-iterations=5  --benchmark-group-by=fullname" "" \
+      --replace 'orjson = "^3.5.2"' "" \
+      --replace "[tool.poetry.group.dev.dependencies]" "[tool.poetry.dev-dependencies]"
     substituteInPlace tests/test_preconf.py \
       --replace "from orjson import dumps as orjson_dumps" "" \
       --replace "from orjson import loads as orjson_loads" ""
@@ -76,11 +77,13 @@ buildPythonPackage rec {
     "test_orjson"
   ];
 
-  pythonImportsCheck = [ "cattr" ];
+  pythonImportsCheck = [
+    "cattr"
+  ];
 
   meta = with lib; {
     description = "Python custom class converters for attrs";
-    homepage = "https://github.com/Tinche/cattrs";
+    homepage = "https://github.com/python-attrs/cattrs";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/cchardet/default.nix b/pkgs/development/python-modules/cchardet/default.nix
index b93ea9c3bd78e..e1c27d9e4fb17 100644
--- a/pkgs/development/python-modules/cchardet/default.nix
+++ b/pkgs/development/python-modules/cchardet/default.nix
@@ -14,9 +14,27 @@ buildPythonPackage rec {
     sha256 = "c428b6336545053c2589f6caf24ea32276c6664cb86db817e03a94c60afa0eaf";
   };
 
+  pythonImportsCheck = [
+    "cchardet"
+  ];
+
   checkInputs = [ nose ];
+
+  preCheck = ''
+    cp -R src/tests $TMPDIR
+    pushd $TMPDIR
+  '';
+
   checkPhase = ''
-    ${python.interpreter} setup.py nosetests
+    runHook preCheck
+
+    nosetests
+
+    runHook postCheck
+  '';
+
+  postCheck = ''
+    popd
   '';
 
   meta = {
diff --git a/pkgs/development/python-modules/cdcs/default.nix b/pkgs/development/python-modules/cdcs/default.nix
index 9dd8a272395bc..ec11019cc9a71 100644
--- a/pkgs/development/python-modules/cdcs/default.nix
+++ b/pkgs/development/python-modules/cdcs/default.nix
@@ -9,7 +9,7 @@
 }:
 
 buildPythonPackage rec {
-  version = "0.1.5";
+  version = "0.1.6";
   pname = "cdcs";
   format = "setuptools";
 
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "usnistgov";
     repo = "pycdcs";
     rev = "v${version}";
-    sha256 = "0sd0s0mka2bvpxxiz98cjc2h5ncsb7d03af1q3w9w8pmvfsgj7pc";
+    sha256 = "sha256-w9CBNOK9oXTIUa+SsnepRN0wAz7WPZGfUNDSbtVn1L8=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/cddb/default.nix b/pkgs/development/python-modules/cddb/default.nix
deleted file mode 100644
index 55d659376c617..0000000000000
--- a/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/pkgs/development/python-modules/cdecimal/default.nix b/pkgs/development/python-modules/cdecimal/default.nix
deleted file mode 100644
index cf8890505904f..0000000000000
--- a/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/pkgs/development/python-modules/celery/default.nix b/pkgs/development/python-modules/celery/default.nix
index cdd646fed1479..eabb3521416e2 100644
--- a/pkgs/development/python-modules/celery/default.nix
+++ b/pkgs/development/python-modules/celery/default.nix
@@ -7,6 +7,7 @@
 , click-didyoumean
 , click-plugins
 , click-repl
+, dnspython
 , fetchPypi
 , kombu
 , moto
@@ -22,14 +23,14 @@
 
 buildPythonPackage rec {
   pname = "celery";
-  version = "5.2.1";
+  version = "5.2.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b41a590b49caf8e6498a57db628e580d5f8dc6febda0f42de5d783aed5b7f808";
+    hash = "sha256-4s1BZnrZfU9qL0Zy0cam662hlMYZJTBYtfI3BKqtqoI=";
   };
 
   propagatedBuildInputs = [
@@ -46,6 +47,7 @@ buildPythonPackage rec {
   checkInputs = [
     boto3
     case
+    dnspython
     moto
     pymongo
     pytest-celery
@@ -54,6 +56,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  postPatch = ''
+    substituteInPlace requirements/default.txt \
+      --replace "setuptools>=59.1.1,<59.7.0" "setuptools"
+  '';
+
   disabledTestPaths = [
     # test_eventlet touches network
     "t/unit/concurrency/test_eventlet.py"
@@ -75,6 +82,6 @@ buildPythonPackage rec {
     description = "Distributed task queue";
     homepage = "https://github.com/celery/celery/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/censys/default.nix b/pkgs/development/python-modules/censys/default.nix
index 38653306eefb7..4a00155a4ec6c 100644
--- a/pkgs/development/python-modules/censys/default.nix
+++ b/pkgs/development/python-modules/censys/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "censys";
-  version = "2.0.9";
+  version = "2.1.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "censys";
     repo = "censys-python";
     rev = "v${version}";
-    sha256 = "sha256-qh3Z8Gza8J3OEM94GguJ+oEdVle01Gx1m/7+LCOErKY=";
+    sha256 = "0qxqd5ip98d6q1d48vcprpr38sa47ky3cr6lprd01nzibdmf2r2d";
   };
 
   nativeBuildInputs = [
@@ -35,7 +35,6 @@ buildPythonPackage rec {
     backoff
     requests
     rich
-  ] ++ lib.optionals (pythonOlder "3.8") [
     importlib-metadata
   ];
 
@@ -50,7 +49,7 @@ buildPythonPackage rec {
     substituteInPlace pyproject.toml \
       --replace 'backoff = "^1.11.1"' 'backoff = "*"' \
       --replace 'requests = ">=2.26.0"' 'requests = "*"' \
-      --replace 'rich = "^10.6.0"' 'rich = "*"'
+      --replace 'rich = "^10.16.2"' 'rich = "*"'
     substituteInPlace pytest.ini \
       --replace "--cov" ""
   '';
diff --git a/pkgs/development/python-modules/cepa/default.nix b/pkgs/development/python-modules/cepa/default.nix
new file mode 100644
index 0000000000000..f198d8b058dd2
--- /dev/null
+++ b/pkgs/development/python-modules/cepa/default.nix
@@ -0,0 +1,32 @@
+{ lib, buildPythonPackage, fetchPypi, python, mock }:
+
+buildPythonPackage rec {
+  pname = "cepa";
+  version = "1.8.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "HcbwsyTTei7SyidGSOzo/SyWodL0QPWMDKF6/Ute3no=";
+  };
+
+  postPatch = ''
+    rm test/unit/installation.py
+    sed -i "/test.unit.installation/d" test/settings.cfg
+    # https://github.com/torproject/stem/issues/56
+    sed -i '/MOCK_VERSION/d' run_tests.py
+  '';
+
+  checkInputs = [ mock ];
+
+  checkPhase = ''
+    touch .gitignore
+    ${python.interpreter} run_tests.py -u
+  '';
+
+  meta = with lib; {
+    description = "Controller library that allows applications to interact with Tor";
+    homepage = "https://github.com/onionshare/cepa";
+    license = licenses.lgpl3Only;
+    maintainers = with maintainers; [ lourkeur ];
+  };
+}
diff --git a/pkgs/development/python-modules/certifi/python2.nix b/pkgs/development/python-modules/certifi/python2.nix
deleted file mode 100644
index 529d5b1fb996e..0000000000000
--- a/pkgs/development/python-modules/certifi/python2.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, python3
-}:
-
-let
-  inherit (python3.pkgs) certifi;
-
-in buildPythonPackage rec {
-  pname = "certifi";
-  version = "2019.11.28";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f";
-  };
-
-  postPatch = ''
-    cp ${certifi.src}/certifi/cacert.pem certifi/cacert.pem
-  '';
-
-  pythonImportsCheck = [ "certifi" ];
-
-  # no tests implemented
-  doCheck = false;
-
-  meta = with lib; {
-    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/pkgs/development/python-modules/cffsubr/default.nix b/pkgs/development/python-modules/cffsubr/default.nix
new file mode 100644
index 0000000000000..0c7e6849b3f1c
--- /dev/null
+++ b/pkgs/development/python-modules/cffsubr/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fonttools
+, pytestCheckHook
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "cffsubr";
+  version = "0.2.9.post1";
+
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "azFBLc9JyPqEZkvahn4u3cVbb+b6aW/yU8TxOp/y/Fw=";
+  };
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    fonttools
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "cffsubr" ];
+
+  meta = with lib; {
+    description = "Standalone CFF subroutinizer based on AFDKO tx";
+    homepage = "https://github.com/adobe-type-tools/cffsubr";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ jtojnar ];
+  };
+}
diff --git a/pkgs/development/python-modules/cfn-flip/default.nix b/pkgs/development/python-modules/cfn-flip/default.nix
index bf3eab19d4fa9..105775a4547e8 100644
--- a/pkgs/development/python-modules/cfn-flip/default.nix
+++ b/pkgs/development/python-modules/cfn-flip/default.nix
@@ -1,25 +1,25 @@
-{ buildPythonPackage
-, fetchFromGitHub
-, lib
-
-# pythonPackages
+{ lib
+, buildPythonPackage
 , click
-, pytest
-, pytest-cov
-, pytest-runner
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
 , pyyaml
 , six
 }:
 
 buildPythonPackage rec {
   pname = "cfn-flip";
-  version = "1.2.2";
+  version = "1.3.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "awslabs";
     repo = "aws-cfn-template-flip";
     rev = version;
-    sha256 = "05fk725a1i3zl3idik2hxl3w6k1ln0j33j3jdq1gvy1sfyc79ifm";
+    hash = "sha256-1cV0mHc6+P0CbnLIMSSwNEzDB+1QzNjioH/EoIo40xU=";
   };
 
   propagatedBuildInputs = [
@@ -29,27 +29,27 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    pytest
-    pytest-cov
-    pytest-runner
+    pytestCheckHook
   ];
 
-  checkPhase = ''
-    py.test \
-      --cov=cfn_clean \
-      --cov=cfn_flip \
-      --cov=cfn_tools \
-      --cov-report term-missing \
-      --cov-report html
+  postPatch = ''
+    sed -i "/--cov/d" tox.ini
   '';
 
+  disabledTests = [
+    # TypeError: load() missing 1 required positional argument: 'Loader'
+    "test_flip_to_yaml_with_longhand_functions"
+    "test_yaml_no_ordered_dict"
+  ];
+
+  pythonImportsCheck = [
+    "cfn_flip"
+  ];
+
   meta = with lib; {
     description = "Tool for converting AWS CloudFormation templates between JSON and YAML formats";
     homepage = "https://github.com/awslabs/aws-cfn-template-flip";
     license = licenses.asl20;
-    maintainers = with maintainers; [
-      kamadorueda
-      psyanticy
-    ];
+    maintainers = with maintainers; [ kamadorueda psyanticy ];
   };
 }
diff --git a/pkgs/development/python-modules/cfn-lint/default.nix b/pkgs/development/python-modules/cfn-lint/default.nix
index 4a409cb41e034..354f90f12b6bd 100644
--- a/pkgs/development/python-modules/cfn-lint/default.nix
+++ b/pkgs/development/python-modules/cfn-lint/default.nix
@@ -3,16 +3,12 @@
 , fetchFromGitHub
 , pythonOlder
 , aws-sam-translator
-, importlib-metadata
-, importlib-resources
 , jschema-to-python
 , jsonpatch
 , jsonschema
 , junit-xml
 , networkx
-, pathlib2
 , pyyaml
-, requests
 , sarif-om
 , setuptools
 , six
@@ -23,18 +19,18 @@
 
 buildPythonPackage rec {
   pname = "cfn-lint";
-  version = "0.56.2";
+  version = "0.56.4";
 
   src = fetchFromGitHub {
     owner = "aws-cloudformation";
     repo = "cfn-python-lint";
     rev = "v${version}";
-    sha256 = "0wpsj719r0p122qmi3nznzqnxqb0nx53isg9fma75894pvq2v5wc";
+    sha256 = "0li8zkdvmgfxqzqs1rvd48mwim0bhjwmxlywqxjix0a43kvkvh77";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace 'importlib_resources~=1.4;python_version<"3.7" and python_version!="3.4"' 'importlib_resources;python_version<"3.7"'
+      --replace "jsonschema~=3.0" "jsonschema>=3.0"
   '';
 
   propagatedBuildInputs = [
@@ -44,13 +40,10 @@ buildPythonPackage rec {
     jsonschema
     junit-xml
     networkx
-    pathlib2
     pyyaml
-    requests
     sarif-om
-    setuptools
     six
-  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata importlib-resources ];
+  ];
 
   checkInputs = [
     mock
diff --git a/pkgs/development/python-modules/cftime/default.nix b/pkgs/development/python-modules/cftime/default.nix
index aeebc762701fb..3991dc6bf6853 100644
--- a/pkgs/development/python-modules/cftime/default.nix
+++ b/pkgs/development/python-modules/cftime/default.nix
@@ -1,27 +1,24 @@
-{ buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, coveralls
-, pytest-cov
+{ lib
+, buildPythonPackage
 , cython
+, fetchPypi
 , numpy
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "cftime";
-  version = "1.5.1.1";
+  version = "1.5.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6dc4d76ec7fe5a2d3c00dbe6604c757f1319613b75ef157554ef3648bf102a50";
+    sha256 = "375d37d9ab8bf501c048e44efce2276296e3d67bb276e891e0e93b0a8bbb988a";
   };
 
-  checkInputs = [
-    pytestCheckHook
-    coveralls
-    pytest-cov
-  ];
-
   nativeBuildInputs = [
     cython
     numpy
@@ -31,11 +28,22 @@ buildPythonPackage rec {
     numpy
   ];
 
-  # ERROR test/test_cftime.py - ModuleNotFoundError: No module named 'cftime._cft...
-  doCheck = false;
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    sed -i "/--cov/d" setup.cfg
+  '';
+
+  pythonImportsCheck = [
+    "cftime"
+  ];
 
-  meta = {
+  meta = with lib; {
     description = "Time-handling functionality from netcdf4-python";
+    homepage = "https://github.com/Unidata/cftime";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/chainer/default.nix b/pkgs/development/python-modules/chainer/default.nix
index 1ccce2caeeb91..b7dbfca70e8a8 100644
--- a/pkgs/development/python-modules/chainer/default.nix
+++ b/pkgs/development/python-modules/chainer/default.nix
@@ -5,7 +5,7 @@
 
 buildPythonPackage rec {
   pname = "chainer";
-  version = "7.8.0";
+  version = "7.8.1";
   disabled = !isPy3k; # python2.7 abandoned upstream
 
   # no tests in Pypi tarball
@@ -13,7 +13,7 @@ buildPythonPackage rec {
     owner = "chainer";
     repo = "chainer";
     rev = "v${version}";
-    sha256 = "1zfj3pk54gzxd4nid0qjx4kw1wdngwscvn4hk4cijxvwqi4a5zxj";
+    sha256 = "1n07zjzc4g92m1sbgxvnansl0z00y4jnhma2mw06vnahs7s9nrf6";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/chalice/default.nix b/pkgs/development/python-modules/chalice/default.nix
index 43767cb1a3193..762846ab34c2d 100644
--- a/pkgs/development/python-modules/chalice/default.nix
+++ b/pkgs/development/python-modules/chalice/default.nix
@@ -24,13 +24,13 @@
 
 buildPythonPackage rec {
   pname = "chalice";
-  version = "1.26.2";
+  version = "1.26.4";
 
   src = fetchFromGitHub {
     owner = "aws";
     repo = pname;
     rev = version;
-    sha256 = "sha256-zF7wmrJTMX0Cr3wpJECUqhH58G2SLiVoC4Z2XbblQdQ=";
+    sha256 = "sha256-Xn8OqeEihLxZS9QZtrhzau2zLg9SzQrrigK70PoImhU=";
   };
 
   propagatedBuildInputs = [
@@ -61,7 +61,8 @@ buildPythonPackage rec {
   postPatch = ''
     sed -i setup.py -e "/pip>=/c\'pip',"
     substituteInPlace setup.py \
-      --replace 'typing==3.6.4' 'typing'
+      --replace "typing==3.6.4" "typing" \
+      --replace "attrs>=19.3.0,<21.3.0" "attrs"
   '';
 
   disabledTestPaths = [
diff --git a/pkgs/development/python-modules/chardet/2.nix b/pkgs/development/python-modules/chardet/2.nix
deleted file mode 100644
index 5f6fe0a672a7a..0000000000000
--- a/pkgs/development/python-modules/chardet/2.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, fetchpatch
-, pytest, pytest-runner, hypothesis }:
-
-buildPythonPackage rec {
-  pname = "chardet";
-  version = "3.0.4";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1bpalpia6r5x1kknbk11p1fzph56fmmnp405ds8icksd3knr5aw4";
-  };
-
-  patches = [
-    # Add pytest 4 support. See: https://github.com/chardet/chardet/pull/174
-    (fetchpatch {
-      url = "https://github.com/chardet/chardet/commit/0561ddcedcd12ea1f98b7ddedb93686ed8a5ffa4.patch";
-      sha256 = "1y1xhjf32rdhq9sfz58pghwv794f3w2f2qcn8p6hp4pc8jsdrn2q";
-    })
-  ];
-
-  checkInputs = [ pytest pytest-runner hypothesis ];
-
-  meta = with lib; {
-    homepage = "https://github.com/chardet/chardet";
-    description = "Universal encoding detector";
-    license = licenses.lgpl2;
-    maintainers = with maintainers; [ domenkozar ];
-  };
-}
diff --git a/pkgs/development/python-modules/charset-normalizer/default.nix b/pkgs/development/python-modules/charset-normalizer/default.nix
index 7f7f54b73d91c..ba7dd1db3b9a3 100644
--- a/pkgs/development/python-modules/charset-normalizer/default.nix
+++ b/pkgs/development/python-modules/charset-normalizer/default.nix
@@ -2,17 +2,21 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "charset-normalizer";
-  version = "2.0.8";
+  version = "2.0.10";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "Ousret";
     repo = "charset_normalizer";
     rev = version;
-    sha256 = "sha256-+acnzdDcujnMa0FYlWaAX7Ga9APMRlvBLKoogIyY8YM=";
+    hash = "sha256-QsUqrC2oycvyCbOzGmHahgNi40YZ0sujb3Cj8EnsGS8=";
   };
 
   checkInputs = [
@@ -24,7 +28,9 @@ buildPythonPackage rec {
       --replace " --cov=charset_normalizer --cov-report=term-missing" ""
   '';
 
-  pythonImportsCheck = [ "charset_normalizer" ];
+  pythonImportsCheck = [
+    "charset_normalizer"
+  ];
 
   meta = with lib; {
     description = "Python module for encoding and language detection";
diff --git a/pkgs/development/python-modules/chart-studio/default.nix b/pkgs/development/python-modules/chart-studio/default.nix
index 0e80ee1a41e46..28e777e8fdd2c 100644
--- a/pkgs/development/python-modules/chart-studio/default.nix
+++ b/pkgs/development/python-modules/chart-studio/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "chart-studio";
-  version = "5.4.0";
+  version = "5.5.0";
 
   # chart-studio was split from plotly
   src = fetchFromGitHub {
     owner = "plotly";
     repo = "plotly.py";
     rev = "v${version}";
-    sha256 = "1ay9dlblxkx3pxqmizj2am9gf60j1pl6ir23yj7chg8dbafdbv8p";
+    sha256 = "04hsh1z2ngfslmvi8fdzfccssg6i0ziksil84j129f049m96wd51";
   };
 
   sourceRoot = "source/packages/python/chart-studio";
diff --git a/pkgs/development/python-modules/cheetah/default.nix b/pkgs/development/python-modules/cheetah/default.nix
deleted file mode 100644
index 1cee46fa7252c..0000000000000
--- a/pkgs/development/python-modules/cheetah/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, markdown
-, isPy3k
-, TurboCheetah
-}:
-
-buildPythonPackage rec {
-  pname = "cheetah";
-  version = "2.4.4";
-
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "be308229f0c1e5e5af4f27d7ee06d90bb19e6af3059794e5fd536a6f29a9b550";
-  };
-
-  propagatedBuildInputs = [ markdown ];
-
-  doCheck = false; # Circular dependency
-
-  checkInputs = [
-    TurboCheetah
-  ];
-
-  meta = {
-    homepage = "http://www.cheetahtemplate.org/";
-    description = "A template engine and code generation tool";
-    license = lib.licenses.mit;
-  };
-}
diff --git a/pkgs/development/python-modules/cheroot/default.nix b/pkgs/development/python-modules/cheroot/default.nix
index 6e9256ffacfef..436669d920924 100644
--- a/pkgs/development/python-modules/cheroot/default.nix
+++ b/pkgs/development/python-modules/cheroot/default.nix
@@ -1,16 +1,16 @@
 { lib
 , stdenv
-, fetchPypi
 , buildPythonPackage
-, isPy3k
+, fetchPypi
 , jaraco_functools
 , jaraco_text
 , more-itertools
 , portend
 , pyopenssl
-, pytestCheckHook
-, pytest-cov
+, pypytools
 , pytest-mock
+, pytestCheckHook
+, pythonOlder
 , requests
 , requests-toolbelt
 , requests-unixsocket
@@ -22,21 +22,22 @@
 
 buildPythonPackage rec {
   pname = "cheroot";
-  version = "8.5.2";
+  version = "8.6.0";
 
-  disabled = !isPy3k;
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f137d03fd5155b1364bea557a7c98168665c239f6c8cedd8f80e81cdfac01567";
+    hash = "sha256-NmrfbnyslVVIbC0b5il5kwIu/2+MRlXBRDJozKPwjiU=";
   };
 
-  nativeBuildInputs = [ setuptools-scm setuptools-scm-git-archive ];
+  nativeBuildInputs = [
+    setuptools-scm
+    setuptools-scm-git-archive
+  ];
 
   propagatedBuildInputs = [
-    # install_requires
     jaraco_functools
-
     more-itertools
     six
   ];
@@ -45,9 +46,9 @@ buildPythonPackage rec {
     jaraco_text
     portend
     pyopenssl
-    pytestCheckHook
-    pytest-cov
+    pypytools
     pytest-mock
+    pytestCheckHook
     requests
     requests-toolbelt
     requests-unixsocket
@@ -79,6 +80,10 @@ buildPythonPackage rec {
     "cheroot/test/test_wsgi.py"
   ];
 
+  pythonImportsCheck = [
+    "cheroot"
+  ];
+
   # Some of the tests use localhost networking.
   __darwinAllowLocalNetworking = true;
 
@@ -86,5 +91,6 @@ buildPythonPackage rec {
     description = "High-performance, pure-Python HTTP";
     homepage = "https://github.com/cherrypy/cheroot";
     license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/cherrypy/17.nix b/pkgs/development/python-modules/cherrypy/17.nix
deleted file mode 100644
index 2ae180a8bae61..0000000000000
--- a/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/pkgs/development/python-modules/cherrypy/default.nix b/pkgs/development/python-modules/cherrypy/default.nix
index 0c6f83ea71dbe..01bbfe8841b7a 100644
--- a/pkgs/development/python-modules/cherrypy/default.nix
+++ b/pkgs/development/python-modules/cherrypy/default.nix
@@ -1,73 +1,99 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi, isPy3k
-, setuptools-scm
-, cheroot, portend, more-itertools, zc_lockfile, routes
+{ lib
+, stdenv
+, buildPythonPackage
+, cheroot
+, fetchPypi
 , jaraco_collections
-, objgraph, pytest, pytest-cov, pathpy, requests-toolbelt, pytest-services
-, fetchpatch
+, more-itertools
+, objgraph
+, pathpy
+, portend
+, pytest-forked
+, pytest-services
+, pytestCheckHook
+, pythonAtLeast
+, pythonOlder
+, requests-toolbelt
+, routes
+, setuptools-scm
+, simplejson
+, zc_lockfile
 }:
 
 buildPythonPackage rec {
   pname = "cherrypy";
-  version = "18.6.0";
+  version = "18.6.1";
+  format = "setuptools";
 
-  disabled = !isPy3k;
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "CherryPy";
     inherit version;
-    sha256 = "16f410izp2c4qhn4n3l5l3qirmkf43h2amjqms8hkl0shgfqwq2n";
+    hash = "sha256-8z6HKG57PjCeBOciXY5JOC2dd3PmCSJB1/YTiTxWNJU=";
   };
 
-  patches = [
-    # 1/3 Fix compatibility with pytest 6. Will be part of the next release after 18.6
-    (fetchpatch {
-      url = "https://github.com/cherrypy/cherrypy/pull/1897/commits/59c0e19d7df8680e36afc96756dce72435121448.patch";
-      sha256 = "1jachbvp505gndccdhny0c3grzdrmvmbzq4kw55jx93ay94ni6p0";
-    })
-    # 2/3 Fix compatibility with pytest 6. Will be part of the next release after 18.6
-    (fetchpatch {
-      url = "https://github.com/cherrypy/cherrypy/pull/1897/commits/4a6287b73539adcb7b0ae72d69644a1ced1f7eaa.patch";
-      sha256 = "0nz40qmgxknkbjsdzfzcqfxdsmsxx3v104fb0h04yvs76mqvw3i4";
-    })
-    # 3/3 Fix compatibility with pytest 6. Will be part of the next release after 18.6
-    (fetchpatch {
-      url = "https://github.com/cherrypy/cherrypy/commit/3bae7f06868553b006915f05ff14d86163f59a7d.patch";
-      sha256 = "1z0bv23ybyw87rf1i8alsdi3gc2bzmdj9d0kjsghdkvi3zdp4n8q";
-    })
+  nativeBuildInputs = [
+    setuptools-scm
   ];
 
-  nativeBuildInputs = [ setuptools-scm ];
-
   propagatedBuildInputs = [
     # required
-    cheroot portend more-itertools zc_lockfile
+    cheroot
+    portend
+    more-itertools
+    zc_lockfile
     jaraco_collections
     # optional
     routes
+    simplejson
   ];
 
   checkInputs = [
-    objgraph pytest pytest-cov pathpy requests-toolbelt pytest-services
+    objgraph
+    pathpy
+    pytest-forked
+    pytest-services
+    pytestCheckHook
+    requests-toolbelt
   ];
 
-  # Keyboard interrupt ends test suite run
-  # daemonize and autoreload tests have issue with sockets within sandbox
-  # Disable doctest plugin because times out
-  checkPhase = ''
-    substituteInPlace pytest.ini --replace "--doctest-modules" ""
-    pytest \
-      -k 'not KeyboardInterrupt and not daemonize and not Autoreload' \
-      --deselect=cherrypy/test/test_static.py::StaticTest::test_null_bytes \
-      --deselect=cherrypy/test/test_tools.py::ToolTests::testCombinedTools \
-      ${lib.optionalString stdenv.isDarwin
-        "--deselect=cherrypy/test/test_bus.py::BusMethodTests::test_block --deselect=cherrypy/test/test_config_server.py"}
+  preCheck = ''
+    # Disable doctest plugin because times out
+    substituteInPlace pytest.ini \
+      --replace "--doctest-modules" "-vvv"
+    sed -i "/--cov/d" pytest.ini
   '';
 
+  pytestFlagsArray = [
+    "-W"
+    "ignore::DeprecationWarning"
+  ];
+
+  disabledTests = [
+    # Keyboard interrupt ends test suite run
+    "KeyboardInterrupt"
+    # daemonize and autoreload tests have issue with sockets within sandbox
+    "daemonize"
+    "Autoreload"
+  ] ++ lib.optionals stdenv.isDarwin [
+    "test_block"
+  ];
+
+  disabledTestPaths = lib.optionals stdenv.isDarwin [
+    "cherrypy/test/test_config_server.py"
+  ];
+
   __darwinAllowLocalNetworking = true;
 
+  pythonImportsCheck = [
+    "cherrypy"
+  ];
+
   meta = with lib; {
+    description = "Object-oriented HTTP framework";
     homepage = "https://www.cherrypy.org";
-    description = "A pythonic, object-oriented HTTP framework";
     license = licenses.bsd3;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/chex/default.nix b/pkgs/development/python-modules/chex/default.nix
new file mode 100644
index 0000000000000..bb873f2c3bfd0
--- /dev/null
+++ b/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/pkgs/development/python-modules/chiabip158/default.nix b/pkgs/development/python-modules/chiabip158/default.nix
index f2c309593610d..59a2170e6e834 100644
--- a/pkgs/development/python-modules/chiabip158/default.nix
+++ b/pkgs/development/python-modules/chiabip158/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "chiabip158";
-  version = "1.0";
+  version = "1.1";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-dG6A4n30uPswQWY/Wmi75HK4ZMCDNr9Lt05FRWEPYV8=";
+    hash = "sha256-2iQeiQl/CLq2zwo/mUKBwIwV5wlNYUdUfENGNxeDMU8=";
   };
 
   nativeBuildInputs = [ cmake setuptools-scm ];
diff --git a/pkgs/development/python-modules/chiapos/default.nix b/pkgs/development/python-modules/chiapos/default.nix
index 42bf21dd52166..6024c8a5ef6ce 100644
--- a/pkgs/development/python-modules/chiapos/default.nix
+++ b/pkgs/development/python-modules/chiapos/default.nix
@@ -2,6 +2,7 @@
 , substituteAll
 , buildPythonPackage
 , fetchPypi
+, catch2
 , cmake
 , cxxopts
 , ghc_filesystem
@@ -14,12 +15,12 @@
 
 buildPythonPackage rec {
   pname = "chiapos";
-  version = "1.0.6";
+  version = "1.0.9";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-Zh5AULPgbG0oYPcBZMp/vm94MPyfdtYn4P5V+1LeMqA=";
+    sha256 = "sha256-emEHIR74RiIDK04etO/6G7tjzTufOVl4rLRWbEsQit0=";
   };
 
   patches = [
@@ -27,6 +28,7 @@ buildPythonPackage rec {
     (substituteAll {
       src = ./dont_fetch_dependencies.patch;
       inherit cxxopts ghc_filesystem;
+      catch2_src = catch2.src;
       pybind11_src = pybind11.src;
     })
   ];
diff --git a/pkgs/development/python-modules/chiapos/dont_fetch_dependencies.patch b/pkgs/development/python-modules/chiapos/dont_fetch_dependencies.patch
index 85b7560f5d0d7..05bd212e9a6c9 100644
--- a/pkgs/development/python-modules/chiapos/dont_fetch_dependencies.patch
+++ b/pkgs/development/python-modules/chiapos/dont_fetch_dependencies.patch
@@ -1,5 +1,5 @@
 diff --git a/CMakeLists.txt b/CMakeLists.txt
-index b757b70..fcce055 100644
+index 5d7862b..c2d06a1 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
 @@ -21,23 +21,20 @@ include(${CMAKE_INSTALL_PREFIX}/share/cmake/pybind11/pybind11Config.cmake)
@@ -29,3 +29,13 @@ index b757b70..fcce055 100644
  )
  FetchContent_MakeAvailable(gulrak)
  
+@@ -150,8 +147,7 @@ ENDIF()
+ 
+ FetchContent_Declare(
+   Catch2
+-  GIT_REPOSITORY https://github.com/catchorg/Catch2.git
+-  GIT_TAG        v2.13.7
++  SOURCE_DIR     @catch2_src@
+ )
+ FetchContent_MakeAvailable(Catch2)
+ 
diff --git a/pkgs/development/python-modules/chiavdf/default.nix b/pkgs/development/python-modules/chiavdf/default.nix
index 012a4055a01c5..1525c5ac90587 100644
--- a/pkgs/development/python-modules/chiavdf/default.nix
+++ b/pkgs/development/python-modules/chiavdf/default.nix
@@ -14,12 +14,12 @@
 
 buildPythonPackage rec {
   pname = "chiavdf";
-  version = "1.0.3";
+  version = "1.0.5";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-XbmK7ZJnUy3Zg9XWt0t/Qb2k5qIlu4vIbxdDFYFjFPI=";
+    hash = "sha256-2pC6sFRwgAwIEanZXe99848XMxK/lyLGxiA+UA+q3H0=";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/chirpstack-api/default.nix b/pkgs/development/python-modules/chirpstack-api/default.nix
index a019dd651999a..c939022a29bba 100644
--- a/pkgs/development/python-modules/chirpstack-api/default.nix
+++ b/pkgs/development/python-modules/chirpstack-api/default.nix
@@ -1,27 +1,38 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , google-api-core
 , grpcio
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "chirpstack-api";
-  version = "3.9.4";
+  version = "3.12.4";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "08djidy3fyhghyzvndcjas3hb1s9d7719gvmgbl8bzxjm4h2c433";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "brocaar";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-69encHMk0eXE2Av87ysKvxoiXog5o68qCUlOx/lgHFU=";
   };
 
+  sourceRoot = "source/python/src";
+
   propagatedBuildInputs = [
     google-api-core
     grpcio
   ];
 
-  # Project has no tests
+  # Module has no tests
   doCheck = false;
-  pythonImportsCheck = [ "chirpstack_api" ];
+
+  pythonImportsCheck = [
+    "chirpstack_api"
+  ];
 
   meta = with lib; {
     description = "ChirpStack gRPC API message and service wrappers for Python";
diff --git a/pkgs/development/python-modules/chispa/default.nix b/pkgs/development/python-modules/chispa/default.nix
new file mode 100644
index 0000000000000..3410789c21cc3
--- /dev/null
+++ b/pkgs/development/python-modules/chispa/default.nix
@@ -0,0 +1,27 @@
+{ buildPythonPackage, fetchFromGitHub, lib, poetry-core, pyspark }:
+
+buildPythonPackage rec {
+  pname = "chispa";
+  version = "0.8.3";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    repo = "chispa";
+    owner = "MrPowers";
+    rev = "v${version}";
+    sha256 = "sha256-1ePx8VbU8pMd5EsZhFp6qyMptlUxpoCvJfuDm9xXOdc=";
+  };
+
+  checkInputs = [ pyspark ];
+
+  nativeBuildInputs = [ poetry-core ];
+
+  pythonImportsCheck = [ "chispa" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/MrPowers/chispa";
+    description = "PySpark test helper methods with beautiful error messages";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ratsclub ];
+  };
+}
diff --git a/pkgs/development/python-modules/circuit-webhook/default.nix b/pkgs/development/python-modules/circuit-webhook/default.nix
new file mode 100644
index 0000000000000..895c6803142e0
--- /dev/null
+++ b/pkgs/development/python-modules/circuit-webhook/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "circuit-webhook";
+  version = "1.0.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-NhePKBfzdkw7iVHmVrOxf8ZcQrb1Sq2xMIfu4P9+Ppw=";
+  };
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "circuit_webhook"
+  ];
+
+  meta = with lib; {
+    description = "Module for Unify Circuit API webhooks";
+    homepage = "https://github.com/braam/unify/tree/master/circuit-webhook-python";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/cirq-google/default.nix b/pkgs/development/python-modules/cirq-google/default.nix
index 5c8306c27fe9a..4aa20a237110e 100644
--- a/pkgs/development/python-modules/cirq-google/default.nix
+++ b/pkgs/development/python-modules/cirq-google/default.nix
@@ -15,7 +15,6 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace requirements.txt \
-      --replace "protobuf~=3.13.0" "protobuf" \
       --replace "google-api-core[grpc] >= 1.14.0, < 2.0.0dev" "google-api-core[grpc] >= 1.14.0, < 3.0.0dev"
   '';
 
@@ -29,4 +28,10 @@ buildPythonPackage rec {
     freezegun
     pytestCheckHook
   ];
+
+  disabledTests = [
+    # unittest.mock.InvalidSpecError: Cannot autospec attr 'QuantumEngineServiceClient'
+    "test_get_engine_sampler_explicit_project_id"
+    "test_get_engine_sampler"
+  ];
 }
diff --git a/pkgs/development/python-modules/cirq-rigetti/default.nix b/pkgs/development/python-modules/cirq-rigetti/default.nix
index f2fd48d54176a..f33ce69fc550f 100644
--- a/pkgs/development/python-modules/cirq-rigetti/default.nix
+++ b/pkgs/development/python-modules/cirq-rigetti/default.nix
@@ -13,6 +13,7 @@
 , pyjwt
 , pyquil
 , python-dateutil
+, pythonOlder
 , qcs-api-client
 , retrying
 , rfc3339
@@ -26,6 +27,8 @@ buildPythonPackage rec {
   pname = "cirq-rigetti";
   inherit (cirq-core) version src meta;
 
+  disabled = pythonOlder "3.7";
+
   sourceRoot = "source/${pname}";
 
   postPatch = ''
@@ -36,9 +39,14 @@ buildPythonPackage rec {
       --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"
+      --replace "qcs-api-client~=0.8.0" "qcs-api-client" \
+      --replace "iso8601~=0.1.14" "iso8601" \
+      --replace "rfc3986~=1.5.0" "rfc3986" \
+      --replace "pyquil~=3.0.0" "pyquil" \
+      --replace "pydantic~=1.8.2" "pydantic"
+    # Remove outdated test
+    rm cirq_rigetti/service_test.py
   '';
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/cjson/default.nix b/pkgs/development/python-modules/cjson/default.nix
deleted file mode 100644
index d34534e3eb806..0000000000000
--- a/pkgs/development/python-modules/cjson/default.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, isPyPy }:
-
-buildPythonPackage rec {
-  pname = "python-cjson";
-  version = "1.2.2";
-  disabled = isPy3k || isPyPy;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "3006c2c218297be3448dc793218e0b15d20fe9839775521bfc294fc6aa24972b";
-  };
-
-  meta = with lib; {
-    description = "A very fast JSON encoder/decoder for Python";
-    homepage = "https://ag-projects.com/";
-    license = licenses.lgpl2;
-  };
-}
diff --git a/pkgs/development/python-modules/ckcc-protocol/default.nix b/pkgs/development/python-modules/ckcc-protocol/default.nix
index e15a062a8939c..409164cf830e5 100644
--- a/pkgs/development/python-modules/ckcc-protocol/default.nix
+++ b/pkgs/development/python-modules/ckcc-protocol/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "ckcc-protocol";
-  version = "1.1.0";
+  version = "1.2.1";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b660225ac06fc06ad17b33ece428126eef785388450e14313f72d25d4082c5ab";
+    sha256 = "65f0313f9915b36068f6dfcab08e04671621e6227650443bc12e81997081ae7f";
   };
 
   propagatedBuildInputs = [ click ecdsa hidapi pyaes ];
diff --git a/pkgs/development/python-modules/claripy/default.nix b/pkgs/development/python-modules/claripy/default.nix
index d96d684e3e18d..10f5762f0c483 100644
--- a/pkgs/development/python-modules/claripy/default.nix
+++ b/pkgs/development/python-modules/claripy/default.nix
@@ -13,21 +13,18 @@
 
 buildPythonPackage rec {
   pname = "claripy";
-  version = "9.1.10913";
+  version = "9.1.11752";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "angr";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-66dc0y4mu5S5PtTx2fRkBdpNlH53ZpTiKyM3s0OUamw=";
+    sha256 = "sha256-Z50oKwS0MZVBEUeXfj9cgtPYXFAYf4i7QkgJiXdWrxo=";
   };
 
-  # Use upstream z3 implementation
-  postPatch = ''
-    substituteInPlace setup.py --replace "z3-solver>=4.8.5.0" ""
-  '';
-
   propagatedBuildInputs = [
     cachetools
     decorator
@@ -41,7 +38,15 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "claripy" ];
+  postPatch = ''
+    # Use upstream z3 implementation
+    substituteInPlace setup.py \
+      --replace "z3-solver>=4.8.5.0" ""
+  '';
+
+  pythonImportsCheck = [
+    "claripy"
+  ];
 
   meta = with lib; {
     description = "Python abstraction layer for constraint solvers";
diff --git a/pkgs/development/python-modules/cle/default.nix b/pkgs/development/python-modules/cle/default.nix
index 212267b00752b..e1b1b3b0bf4ec 100644
--- a/pkgs/development/python-modules/cle/default.nix
+++ b/pkgs/development/python-modules/cle/default.nix
@@ -15,7 +15,7 @@
 
 let
   # The binaries are following the argr projects release cycle
-  version = "9.1.10913";
+  version = "9.1.11752";
 
   # Binary files from https://github.com/angr/binaries (only used for testing and only here)
   binaries = fetchFromGitHub {
@@ -29,13 +29,15 @@ in
 buildPythonPackage rec {
   pname = "cle";
   inherit version;
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "angr";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-z8hBOqeI7T6Rov00OySDBdzUQ6jeBRseE7sz8VfIJmk=";
+    hash = "sha256-pnbFnv/te7U2jB6gNRvE9DQssBkFsara1g6Gtqf+WVo=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/cli-helpers/default.nix b/pkgs/development/python-modules/cli-helpers/default.nix
index a9e3daa8372b3..15f0249fd801f 100644
--- a/pkgs/development/python-modules/cli-helpers/default.nix
+++ b/pkgs/development/python-modules/cli-helpers/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "cli_helpers";
-  version = "2.2.0";
+  version = "2.2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "733f65d8c921e0cffa8f7ae4c8735bd7ecdffec383c5246f647ddd0fddb33448";
+    sha256 = "sha256-DMwc/Noaxk3H7YPXATBVzxnll50p5Wwh87aS3gFVWq4=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/cliapp/default.nix b/pkgs/development/python-modules/cliapp/default.nix
deleted file mode 100644
index e410a37fcb42b..0000000000000
--- a/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/pkgs/development/python-modules/click-completion/default.nix b/pkgs/development/python-modules/click-completion/default.nix
index 19fdac37615a3..dcfcab597b90c 100644
--- a/pkgs/development/python-modules/click-completion/default.nix
+++ b/pkgs/development/python-modules/click-completion/default.nix
@@ -1,18 +1,38 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k,
-  click, jinja2, shellingham, six
+{ lib
+, buildPythonPackage
+, fetchPypi
+, isPy27
+
+# propagates
+, click
+, jinja2
+, shellingham
+, six
 }:
 
 buildPythonPackage rec {
   pname = "click-completion";
   version = "0.5.2";
-  disabled = (!isPy3k);
+  disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "5bf816b81367e638a190b6e91b50779007d14301b3f9f3145d68e3cade7bce86";
   };
 
-  propagatedBuildInputs = [ click jinja2 shellingham six ];
+  propagatedBuildInputs = [
+    click
+    jinja2
+    shellingham
+    six
+  ];
+
+  pythonImportsCheck = [
+    "click_completion"
+  ];
+
+  # has no tests
+  doCheck = false;
 
   meta = with lib; {
     description = "Add or enhance bash, fish, zsh and powershell completion in Click";
diff --git a/pkgs/development/python-modules/click-configfile/default.nix b/pkgs/development/python-modules/click-configfile/default.nix
index 0d87aa890d2a0..62e0ed2d3b60b 100644
--- a/pkgs/development/python-modules/click-configfile/default.nix
+++ b/pkgs/development/python-modules/click-configfile/default.nix
@@ -4,15 +4,19 @@
 , click
 , six
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "click-configfile";
   version = "0.2.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "lb7sE77pUOmPQ8gdzavvT2RAkVWepmKY+drfWTUdkNE=";
+    hash = "sha256-lb7sE77pUOmPQ8gdzavvT2RAkVWepmKY+drfWTUdkNE=";
   };
 
   propagatedBuildInputs = [
@@ -24,6 +28,15 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "install_requires=install_requires," 'install_requires=["click >= 6.6", "six >= 1.10"],'
+  '';
+
+  pythonImportsCheck = [
+    "click_configfile"
+  ];
+
   disabledTests = [
     "test_configfile__with_unbound_section"
     "test_matches_section__with_bad_arg"
diff --git a/pkgs/development/python-modules/click/7.nix b/pkgs/development/python-modules/click/7.nix
deleted file mode 100644
index fcbd4d0981af7..0000000000000
--- a/pkgs/development/python-modules/click/7.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, locale, pytestCheckHook }:
-
-buildPythonPackage rec {
-  pname = "click";
-  version = "7.1.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a";
-  };
-
-  postPatch = ''
-    substituteInPlace src/click/_unicodefun.py \
-      --replace "'locale'" "'${locale}/bin/locale'"
-  '';
-
-  checkInputs = [ pytestCheckHook ];
-
-  meta = with lib; {
-    homepage = "https://click.palletsprojects.com/";
-    description = "Create beautiful command line interfaces in Python";
-    longDescription = ''
-      A Python package for creating beautiful command line interfaces in a
-      composable way, with as little code as necessary.
-    '';
-    license = licenses.bsd3;
-  };
-}
diff --git a/pkgs/development/python-modules/clickhouse-cli/default.nix b/pkgs/development/python-modules/clickhouse-cli/default.nix
index 68d69023e25d5..4806f965f0924 100644
--- a/pkgs/development/python-modules/clickhouse-cli/default.nix
+++ b/pkgs/development/python-modules/clickhouse-cli/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "clickhouse-cli";
-  version = "0.3.7";
+  version = "0.3.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-fDvUdL6LzgCv6LDmB0R0M7v6BbnbL68p9pHMebP58h8=";
+    sha256 = "sha256-pa3vkIyNblS1LOwBReTqg8JAR2Ii32a2QIHWjau0uZE=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/cliff/default.nix b/pkgs/development/python-modules/cliff/default.nix
index ce229665c659e..39c5a497c8d8a 100644
--- a/pkgs/development/python-modules/cliff/default.nix
+++ b/pkgs/development/python-modules/cliff/default.nix
@@ -3,21 +3,24 @@
 , fetchPypi
 , autopage
 , cmd2
+, installShellFiles
+, openstackdocstheme
 , pbr
 , prettytable
 , pyparsing
 , pyyaml
 , stevedore
+, sphinx
 , callPackage
 }:
 
 buildPythonPackage rec {
   pname = "cliff";
-  version = "3.10.0";
+  version = "3.10.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c68aac08d0d25853234a38fdbf1f33503849af3d5d677a4d0aacd42b0be6a4a1";
+    sha256 = "sha256-BFruPzxkRxll161QfOhHSk4vIIFfu1QFp3D4WWoqAKA=";
   };
 
   postPatch = ''
@@ -26,6 +29,12 @@ buildPythonPackage rec {
     rm test-requirements.txt
   '';
 
+  nativeBuildInputs = [
+    installShellFiles
+    openstackdocstheme
+    sphinx
+  ];
+
   propagatedBuildInputs = [
     autopage
     cmd2
@@ -36,6 +45,11 @@ buildPythonPackage rec {
     stevedore
   ];
 
+  postInstall = ''
+    sphinx-build -a -E -d doc/build/doctrees -b man doc/source doc/build/man
+    installManPage doc/build/man/cliff.1
+  '';
+
   # check in passthru.tests.pytest to escape infinite recursion with stestr
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/clint/default.nix b/pkgs/development/python-modules/clint/default.nix
index 66e2d5f52f382..45733c4ae7f1b 100644
--- a/pkgs/development/python-modules/clint/default.nix
+++ b/pkgs/development/python-modules/clint/default.nix
@@ -22,12 +22,18 @@ buildPythonPackage rec {
 
   LC_ALL="en_US.UTF-8";
 
+  propagatedBuildInputs = [ pillow blessings args ];
+
+  # nose-progressive and clint are not actively maintained
+  # no longer compatible as behavior demand 2to3, which was removed
+  # in setuptools>=58
+  doCheck  = false;
+  checkInputs = [ mock nose nose_progressive pkgs.glibcLocales ];
   checkPhase = ''
     ${python.interpreter} test_clint.py
   '';
 
-  buildInputs = [ mock nose nose_progressive pkgs.glibcLocales ];
-  propagatedBuildInputs = [ pillow blessings args ];
+  pythonImportsCheck = [ "clint" ];
 
   meta = with lib; {
     homepage = "https://github.com/kennethreitz/clint";
diff --git a/pkgs/development/python-modules/clize/default.nix b/pkgs/development/python-modules/clize/default.nix
index 4f9a562543b93..75c4513d1e3a3 100644
--- a/pkgs/development/python-modules/clize/default.nix
+++ b/pkgs/development/python-modules/clize/default.nix
@@ -7,7 +7,6 @@
 , attrs
 , od
 , docutils
-, repeated_test
 , pygments
 , unittest2
 , pytestCheckHook
@@ -22,11 +21,13 @@ buildPythonPackage rec {
     sha256 = "3177a028e4169d8865c79af82bdd441b24311d4bd9c0ae8803641882d340a51d";
   };
 
+  # repeated_test no longer exists in nixpkgs
+  # also see: https://github.com/epsy/clize/issues/74
+  doCheck = false;
   checkInputs = [
     pytestCheckHook
     python-dateutil
     pygments
-    repeated_test
     unittest2
   ];
 
diff --git a/pkgs/development/python-modules/closure-linter/default.nix b/pkgs/development/python-modules/closure-linter/default.nix
deleted file mode 100644
index 18782fb50bb1a..0000000000000
--- a/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/pkgs/development/python-modules/cloudflare/default.nix b/pkgs/development/python-modules/cloudflare/default.nix
index a21faa492dfec..39e3fe9d84cb8 100644
--- a/pkgs/development/python-modules/cloudflare/default.nix
+++ b/pkgs/development/python-modules/cloudflare/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, attrs
 , beautifulsoup4
 , requests
 , future
@@ -18,6 +19,7 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [
+    attrs
     beautifulsoup4
     requests
     future
diff --git a/pkgs/development/python-modules/cloudpickle/default.nix b/pkgs/development/python-modules/cloudpickle/default.nix
index f525b6e7f1dfd..0e0debe932918 100644
--- a/pkgs/development/python-modules/cloudpickle/default.nix
+++ b/pkgs/development/python-modules/cloudpickle/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "cloudpickle";
-  version = "1.6.0";
+  version = "2.0.0";
   disabled = isPy27; # abandoned upstream
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9bc994f9e9447593bd0a45371f0e7ac7333710fcf64a4eb9834bf149f4ef2f32";
+    sha256 = "5cd02f3b417a783ba84a4ec3e290ff7929009fe51f6405423cfccfadd43ba4a4";
   };
 
   buildInputs = [ pytest mock ];
diff --git a/pkgs/development/python-modules/cloudsplaining/default.nix b/pkgs/development/python-modules/cloudsplaining/default.nix
index 23c911f8e4a6c..20d822d8ee77f 100644
--- a/pkgs/development/python-modules/cloudsplaining/default.nix
+++ b/pkgs/development/python-modules/cloudsplaining/default.nix
@@ -17,7 +17,8 @@
 
 buildPythonPackage rec {
   pname = "cloudsplaining";
-  version = "0.4.9";
+  version = "0.5.0";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
@@ -25,7 +26,7 @@ buildPythonPackage rec {
     owner = "salesforce";
     repo = pname;
     rev = version;
-    sha256 = "sha256-87ZUYHN64gnbF2g9BjPFNbwMaGFxAy3Yb8UdT3BUqC0=";
+    hash = "sha256-HdZHRK/Q544z9ySbjNIjqiXzel0UTsnb9tuXawbkwZg=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/cmarkgfm/default.nix b/pkgs/development/python-modules/cmarkgfm/default.nix
index 1085f4030c1ed..c0863a5b3945a 100644
--- a/pkgs/development/python-modules/cmarkgfm/default.nix
+++ b/pkgs/development/python-modules/cmarkgfm/default.nix
@@ -3,24 +3,36 @@
 , cffi
 , fetchPypi
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "cmarkgfm";
-  version = "0.6.0";
+  version = "0.7.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ec2bf8d5799c4b5bbfbae30a4a1dfcb06512f2e17e9ee60ba7e1d390318582fc";
+    sha256 = "sha256-plwVL52ov4JxTxnCh/4JaO6Of4mejZRQPXPQ/lcinBk=";
   };
 
-  propagatedNativeBuildInputs = [ cffi ];
+  propagatedNativeBuildInputs = [
+    cffi
+  ];
 
-  propagatedBuildInputs = [ cffi ];
+  propagatedBuildInputs = [
+    cffi
+  ];
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  pythonImportsCheck = [ "cmarkgfm" ];
+  pythonImportsCheck = [
+    "cmarkgfm"
+  ];
 
   meta = with lib; {
     description = "Minimal bindings to GitHub's fork of cmark";
diff --git a/pkgs/development/python-modules/cmd2/default.nix b/pkgs/development/python-modules/cmd2/default.nix
index 8339af8094c47..5f262438fe954 100644
--- a/pkgs/development/python-modules/cmd2/default.nix
+++ b/pkgs/development/python-modules/cmd2/default.nix
@@ -18,13 +18,13 @@
 
 buildPythonPackage rec {
   pname = "cmd2";
-  version = "2.3.2";
+  version = "2.3.3";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "cad18787a26147dad4b161d75c5ab7de16ffe91fef1cfad8e6f18b712746e800";
+    sha256 = "750d7eb04d55c3bc2a413e191bc177856f388102de47d11f2210a35266543640";
   };
 
   LC_ALL = "en_US.UTF-8";
diff --git a/pkgs/development/python-modules/cmdtest/default.nix b/pkgs/development/python-modules/cmdtest/default.nix
deleted file mode 100644
index 28d78203b6d40..0000000000000
--- a/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/pkgs/development/python-modules/co2signal/default.nix b/pkgs/development/python-modules/co2signal/default.nix
new file mode 100644
index 0000000000000..2c7aeb4ceaebf
--- /dev/null
+++ b/pkgs/development/python-modules/co2signal/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "co2signal";
+  version = "0.4.2";
+
+  src = fetchPypi {
+    inherit version;
+    pname = "CO2Signal";
+    hash = "sha256-8YdYbknLICRrZloGUZuscv5e1LIDZBcCPKZs6EMaNuo=";
+  };
+
+  propagatedBuildInputs = [ requests ];
+  # Modules has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "CO2Signal" ];
+
+  meta = with lib; {
+    description = "A package to access the CO2 Signal API ";
+    homepage = "https://github.com/danielsjf/CO2Signal";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ plabadens ];
+  };
+}
diff --git a/pkgs/development/python-modules/cocotb-bus/default.nix b/pkgs/development/python-modules/cocotb-bus/default.nix
index a0c4767fe7de1..02b9d71849067 100644
--- a/pkgs/development/python-modules/cocotb-bus/default.nix
+++ b/pkgs/development/python-modules/cocotb-bus/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "cocotb-bus";
-  version = "0.2.0";
+  version = "0.2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3afe3abe73464269247263e44f39d59c1258f227298be4118377a8e8c09d7dc1";
+    sha256 = "a197aa4b0e0ad28469c8877b41b3fb2ec0206da9f491b9276d1578ce6dd8aa8d";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/cocotb/default.nix b/pkgs/development/python-modules/cocotb/default.nix
index 90616dc1f8ab1..d24d3bc798227 100644
--- a/pkgs/development/python-modules/cocotb/default.nix
+++ b/pkgs/development/python-modules/cocotb/default.nix
@@ -5,14 +5,14 @@
 , setuptools
 , setuptools-scm
 , cocotb-bus
-, pytest
+, pytestCheckHook
 , swig
 , verilog
 }:
 
 buildPythonPackage rec {
   pname = "cocotb";
-  version = "1.6.0";
+  version = "1.6.2";
 
   # - 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 = "a695544ab314e6d795b72ece9e67b51c6668c569b21303158e00452db43c5756";
+    sha256 = "sha256-SY+1727DbWMg6CnmHw8k/VP0dwBRYszn+YyyvZXgvUs=";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
@@ -42,11 +42,10 @@ buildPythonPackage rec {
     substituteInPlace setup.py --replace "'cocotb-bus<1.0'" ""
   '';
 
-  checkInputs = [ cocotb-bus pytest swig verilog ];
+  checkInputs = [ cocotb-bus pytestCheckHook swig verilog ];
 
   checkPhase = ''
     export PATH=$out/bin:$PATH
-    make test
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/cogapp/default.nix b/pkgs/development/python-modules/cogapp/default.nix
index facbc3206894d..92dbe23cd916a 100644
--- a/pkgs/development/python-modules/cogapp/default.nix
+++ b/pkgs/development/python-modules/cogapp/default.nix
@@ -14,7 +14,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "A code generator for executing Python snippets in source files";
-    homepage = "http://nedbatchelder.com/code/cog";
+    homepage = "https://nedbatchelder.com/code/cog";
     license = licenses.mit;
     maintainers = with maintainers; [ lovek323 ];
   };
diff --git a/pkgs/development/python-modules/coilmq/default.nix b/pkgs/development/python-modules/coilmq/default.nix
deleted file mode 100644
index b21ea193cbfa0..0000000000000
--- a/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/pkgs/development/python-modules/commentjson/default.nix b/pkgs/development/python-modules/commentjson/default.nix
index 2aefb51d481e9..c1d3b8916d91b 100644
--- a/pkgs/development/python-modules/commentjson/default.nix
+++ b/pkgs/development/python-modules/commentjson/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, six, lark-parser, pytestCheckHook }:
+{ lib, buildPythonPackage, fetchFromGitHub, six, lark, pytestCheckHook }:
 
 buildPythonPackage rec {
   pname = "commentjson";
@@ -13,13 +13,13 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "lark-parser>=0.7.1,<0.8.0" "lark-parser"
+      --replace "lark-parser>=0.7.1,<0.8.0" "lark"
 
     # NixOS is missing test.test_json module
     rm -r commentjson/tests/test_json
   '';
 
-  propagatedBuildInputs = [ lark-parser six ];
+  propagatedBuildInputs = [ lark six ];
 
   checkInputs = [ pytestCheckHook ];
 
diff --git a/pkgs/development/python-modules/commoncode/default.nix b/pkgs/development/python-modules/commoncode/default.nix
index 142245221312d..7a2416728c8e1 100644
--- a/pkgs/development/python-modules/commoncode/default.nix
+++ b/pkgs/development/python-modules/commoncode/default.nix
@@ -8,6 +8,7 @@
 , intbitset
 , pytest-xdist
 , pytestCheckHook
+, pythonAtLeast
 , pythonOlder
 , requests
 , saneyaml
@@ -19,6 +20,7 @@
 buildPythonPackage rec {
   pname = "commoncode";
   version = "30.0.0";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
@@ -49,12 +51,18 @@ 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"
   ];
 
+  disabledTestPaths = lib.optionals (pythonAtLeast "3.10") [
+    # https://github.com/nexB/commoncode/issues/36
+    "src/commoncode/fetch.py"
+  ];
+
   pythonImportsCheck = [
     "commoncode"
   ];
diff --git a/pkgs/development/python-modules/compreffor/default.nix b/pkgs/development/python-modules/compreffor/default.nix
new file mode 100644
index 0000000000000..9427739025830
--- /dev/null
+++ b/pkgs/development/python-modules/compreffor/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools-scm
+, fonttools
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "compreffor";
+  version = "0.5.1.post1";
+
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "Zqia+yP4Dp5VNGeMwv+j04aNm9oVmZ2juehbfEzDfOQ=";
+  };
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    fonttools
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  # Tests cannot seem to open the cpython module.
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "compreffor"
+  ];
+
+  meta = with lib; {
+    description = "CFF table subroutinizer for FontTools";
+    homepage = "https://github.com/googlefonts/compreffor";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ jtojnar ];
+  };
+}
diff --git a/pkgs/development/python-modules/concurrent-log-handler/default.nix b/pkgs/development/python-modules/concurrent-log-handler/default.nix
index 5880cdf961e78..d75df29421d30 100644
--- a/pkgs/development/python-modules/concurrent-log-handler/default.nix
+++ b/pkgs/development/python-modules/concurrent-log-handler/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "concurrent-log-handler";
-  version = "0.9.19";
+  version = "0.9.20";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-sS95q+0/lBIcJc6cJM21fYiSguxv9h9VNasgaNw31Ak=";
+    hash = "sha256-n6KtYUdKE3tWQnAr0z8hgVWYqsuh51E5s3zrLO3aj58=";
   };
 
   propagatedBuildInputs = [
@@ -25,7 +25,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python logging handler that allows multiple processes to safely write to the same log file concurrently";
-    homepage = "https://www.chia.net/";
+    homepage = "https://pypi.org/project/concurrent-log-handler";
     license = licenses.asl20;
     maintainers = teams.chia.members;
   };
diff --git a/pkgs/development/python-modules/configargparse/default.nix b/pkgs/development/python-modules/configargparse/default.nix
index 1bb036b97df5a..7c1594e9e805d 100644
--- a/pkgs/development/python-modules/configargparse/default.nix
+++ b/pkgs/development/python-modules/configargparse/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "configargparse";
-  version = "1.5.2";
+  version = "1.5.3";
 
   src = fetchFromGitHub {
     owner = "bw2";
     repo = "ConfigArgParse";
-    rev = version;
-    sha256 = "1hgd0gfxycfnlddwsr8sl6ybxzp8rqhin16vphbl8q32wp5hhjd2";
+    rev = "v${version}";
+    sha256 = "1dsai4bilkp2biy9swfdx2z0k4akw4lpvx12flmk00r80hzgbglz";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/configparser/4.nix b/pkgs/development/python-modules/configparser/4.nix
deleted file mode 100644
index 0f3b6e0b49129..0000000000000
--- a/pkgs/development/python-modules/configparser/4.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi, setuptools-scm }:
-
-buildPythonPackage rec {
-  pname = "configparser";
-  version = "4.0.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "c7d282687a5308319bf3d2e7706e575c635b0a470342641c93bea0ea3b5331df";
-  };
-
-  # No tests available
-  doCheck = false;
-
-  nativeBuildInputs = [ setuptools-scm ];
-
-  preConfigure = ''
-    export LC_ALL=${if stdenv.isDarwin then "en_US" else "C"}.UTF-8
-  '';
-
-  meta = with lib; {
-    description = "Updated configparser from Python 3.7 for Python 2.6+.";
-    license = licenses.mit;
-    homepage = "https://github.com/jaraco/configparser";
-  };
-}
diff --git a/pkgs/development/python-modules/configparser/default.nix b/pkgs/development/python-modules/configparser/default.nix
index 5f227fa4f9efd..9467003e9dd93 100644
--- a/pkgs/development/python-modules/configparser/default.nix
+++ b/pkgs/development/python-modules/configparser/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "configparser";
-  version = "5.1.0";
+  version = "5.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "202b9679a809b703720afa2eacaad4c6c2d63196070e5d9edc953c0489dfd536";
+    sha256 = "1b35798fdf1713f1c3139016cfcbc461f09edbf099d1fb658d4b7479fcaa3daa";
   };
 
   # No tests available
diff --git a/pkgs/development/python-modules/configshell/default.nix b/pkgs/development/python-modules/configshell/default.nix
index 9f67aacf2d4eb..2cd66636b016b 100644
--- a/pkgs/development/python-modules/configshell/default.nix
+++ b/pkgs/development/python-modules/configshell/default.nix
@@ -1,4 +1,10 @@
-{ lib, fetchFromGitHub, buildPythonPackage, pyparsing, six, urwid }:
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, pyparsing
+, six
+, urwid
+}:
 
 buildPythonPackage rec {
   pname = "configshell";
@@ -11,11 +17,28 @@ buildPythonPackage rec {
     sha256 = "0mjj3c9335sph8rhwww7j4zvhyk896fbmx887vibm89w3jpvjjr9";
   };
 
-  propagatedBuildInputs = [ pyparsing six urwid ];
+  propagatedBuildInputs = [
+    pyparsing
+    six
+    urwid
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "pyparsing >=2.0.2,<3.0" "pyparsing >=2.0.2"
+  '';
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "configshell"
+  ];
 
   meta = with lib; {
-    description = "A Python library for building configuration shells";
+    description = "Python library for building configuration shells";
     homepage = "https://github.com/open-iscsi/configshell-fb";
     license = licenses.asl20;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/confluent-kafka/default.nix b/pkgs/development/python-modules/confluent-kafka/default.nix
index d9e7ee9372849..0143ffd1aa301 100644
--- a/pkgs/development/python-modules/confluent-kafka/default.nix
+++ b/pkgs/development/python-modules/confluent-kafka/default.nix
@@ -1,12 +1,12 @@
 { lib, buildPythonPackage, fetchPypi, isPy3k, rdkafka, requests, avro3k, avro ? null, futures ? null, enum34 ? null }:
 
 buildPythonPackage rec {
-  version = "1.7.0";
+  version = "1.8.2";
   pname = "confluent-kafka";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "80e01b4791513c27eded8517af847530dfdf04c43d99ff132ed9c3085933b75b";
+    sha256 = "b79e836c3554bc51c6837a8a0152f7521c9bf31342f5b8e21eba6b28044fa585";
   };
 
   buildInputs = [ rdkafka requests ] ++ (if isPy3k then [ avro3k ] else [ enum34 avro futures ]) ;
diff --git a/pkgs/development/python-modules/confuse/default.nix b/pkgs/development/python-modules/confuse/default.nix
index 2b350be004605..e28621f26a994 100644
--- a/pkgs/development/python-modules/confuse/default.nix
+++ b/pkgs/development/python-modules/confuse/default.nix
@@ -1,24 +1,24 @@
-{ buildPythonPackage
-, enum34
+{ lib
+, buildPythonPackage
 , fetchFromGitHub
 , flit-core
-, isPy27
-, lib
-, pathlib
 , pyyaml
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "confuse";
-  version = "1.5.0";
+  version = "1.7.0";
   format = "flit";
 
+  disabled = pythonOlder "3.7";
+
   src = fetchFromGitHub {
     owner = "beetbox";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1kvilxhjifvz6ra64jadf9jiwphrah5rcb9ryq0v7w1dywgn4qp7";
+    sha256 = "sha256-zdH5DNXnuAfYTuaG9EIKiXL2EbLSfzYjPSkC3G06bU8=";
   };
 
   nativeBuildInputs = [
@@ -27,16 +27,15 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     pyyaml
-  ] ++ lib.optionals isPy27 [
-    enum34
-    pathlib
-  ] ;
+  ];
 
   checkInputs = [
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "confuse" ];
+  pythonImportsCheck = [
+    "confuse"
+  ];
 
   meta = with lib; {
     description = "Python configuration library for Python that uses YAML";
diff --git a/pkgs/development/python-modules/connexion/default.nix b/pkgs/development/python-modules/connexion/default.nix
index ed6f2da5142f1..465bee6664dfa 100644
--- a/pkgs/development/python-modules/connexion/default.nix
+++ b/pkgs/development/python-modules/connexion/default.nix
@@ -7,7 +7,6 @@
 , clickclick
 , decorator
 , fetchFromGitHub
-, fetchpatch
 , flask
 , inflection
 , jsonschema
@@ -23,14 +22,16 @@
 
 buildPythonPackage rec {
   pname = "connexion";
-  version = "2.9.0";
+  version = "2.11.1";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "zalando";
     repo = pname;
     rev = version;
-    sha256 = "13smcg2w24zr2sv1968g9p9m6f18nqx688c96qdlmldnszgzf5ik";
+    sha256 = "sha256-m/r09VNp/AMssOJH9RKMhPcObGHl9uIAoS1PwrjpKaE=";
   };
 
   propagatedBuildInputs = [
@@ -55,16 +56,20 @@ buildPythonPackage rec {
     testfixtures
   ];
 
-  patches = [
-    # No minor release for later versions, https://github.com/zalando/connexion/pull/1402
-    (fetchpatch {
-      name = "allow-later-flask-and-werkzeug-releases.patch";
-      url = "https://github.com/zalando/connexion/commit/4a225d554d915fca17829652b7cb8fe119e14b37.patch";
-      sha256 = "0dys6ymvicpqa3p8269m4yv6nfp58prq3fk1gcx1z61h9kv84g1k";
-    })
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "PyYAML>=5.1,<6" "PyYAML>=5.1" \
+      --replace "jsonschema>=2.5.1,<4" "jsonschema>=2.5.1"
+  '';
+
+  disabledTests = [
+    # We have a later PyYAML release
+    "test_swagger_yaml"
   ];
 
-  pythonImportsCheck = [ "connexion" ];
+  pythonImportsCheck = [
+    "connexion"
+  ];
 
   meta = with lib; {
     description = "Swagger/OpenAPI First framework on top of Flask";
diff --git a/pkgs/development/python-modules/consonance/default.nix b/pkgs/development/python-modules/consonance/default.nix
index 7722226ef3f1e..a31930bd0c4b0 100644
--- a/pkgs/development/python-modules/consonance/default.nix
+++ b/pkgs/development/python-modules/consonance/default.nix
@@ -1,29 +1,51 @@
-{ buildPythonPackage, lib, fetchFromGitHub, dissononce, python-axolotl-curve25519
-, transitions, protobuf, nose
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, dissononce
+, python-axolotl-curve25519
+, transitions
+, protobuf
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "consonance";
-  version = "0.1.3";
+  version = "0.1.5";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "tgalal";
     repo = "consonance";
     rev = version;
-    sha256 = "1ifs0fq6i41rdna1kszv5sf87qbqx1mn98ffyx4xhw4i9r2grrjv";
+    hash = "sha256-BhgxLxjKZ4dSL7DqkaoS+wBPCd1SYZomRKrtDLdGmYQ=";
   };
 
-  checkInputs = [ nose ];
-  checkPhase = ''
-    # skipping online test as it requires network with uplink
-    nosetests tests/test_handshakes_offline.py
-  '';
+  propagatedBuildInputs = [
+    dissononce
+    python-axolotl-curve25519
+    transitions
+    protobuf
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "tests/test_handshakes_offline.py"
+  ];
 
-  propagatedBuildInputs = [ dissononce python-axolotl-curve25519 transitions protobuf ];
+  pythonImportsCheck = [
+    "consonance"
+  ];
 
   meta = with lib; {
-    homepage = "https://pypi.org/project/consonance/";
-    license = licenses.gpl3;
     description = "WhatsApp's handshake implementation using Noise Protocol";
+    homepage = "https://github.com/tgalal/consonance";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/construct/2.10.54.nix b/pkgs/development/python-modules/construct/2.10.54.nix
deleted file mode 100644
index 6cfca7260512b..0000000000000
--- a/pkgs/development/python-modules/construct/2.10.54.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ lib, stdenv, buildPythonPackage, fetchFromGitHub
-, pytestCheckHook, pytest-benchmark, enum34, numpy, arrow, ruamel-yaml
-}:
-
-buildPythonPackage rec {
-  pname   = "construct";
-  version = "2.10.54";
-
-  # no tests in PyPI tarball
-  src = fetchFromGitHub {
-    owner  = pname;
-    repo   = pname;
-    rev    = "v${version}";
-    sha256 = "1mqspsn6bf3ibvih1zna2glkg8iw7vy5zg9gzg0d1m8zcndk2c48";
-  };
-
-  checkInputs = [ pytestCheckHook pytest-benchmark enum34 numpy ];
-
-  # 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" ];
-
-  meta = with lib; {
-    description = "Powerful declarative parser (and builder) for binary data";
-    homepage = "https://construct.readthedocs.org/";
-    license = licenses.mit;
-    maintainers = with maintainers; [ dotlambda ];
-  };
-}
diff --git a/pkgs/development/python-modules/construct/default.nix b/pkgs/development/python-modules/construct/default.nix
index b2783fa09346b..8ae44476eff40 100644
--- a/pkgs/development/python-modules/construct/default.nix
+++ b/pkgs/development/python-modules/construct/default.nix
@@ -22,11 +22,9 @@ buildPythonPackage rec {
     lz4
   ];
 
-  checkInputs = [ pytestCheckHook pytest-benchmark numpy arrow ruamel-yaml cloudpickle ];
+  checkInputs = [ pytestCheckHook numpy arrow ruamel-yaml cloudpickle ];
 
-  disabledTests = lib.optionals stdenv.isDarwin [ "test_multiprocessing" ];
-
-  pytestFlagsArray = [ "--benchmark-disable" ];
+  disabledTests = [ "test_benchmarks" ] ++ lib.optionals stdenv.isDarwin [ "test_multiprocessing" ];
 
   meta = with lib; {
     description = "Powerful declarative parser (and builder) for binary data";
diff --git a/pkgs/development/python-modules/contextlib2/0.nix b/pkgs/development/python-modules/contextlib2/0.nix
deleted file mode 100644
index 38d9fb696e281..0000000000000
--- a/pkgs/development/python-modules/contextlib2/0.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, unittest2
-}:
-
-buildPythonPackage rec {
-  pname = "contextlib2";
-  version = "0.6.0.post1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "01f490098c18b19d2bd5bb5dc445b2054d2fa97f09a4280ba2c5f3c394c8162e";
-  };
-
-  checkInputs = [ unittest2 ];
-
-  meta = {
-    description = "Backports and enhancements for the contextlib module";
-    homepage = "https://contextlib2.readthedocs.org/";
-    license = lib.licenses.psfl;
-  };
-}
diff --git a/pkgs/development/python-modules/contextlib2/default.nix b/pkgs/development/python-modules/contextlib2/default.nix
index 1387e786e7b77..6aea2570cb87e 100644
--- a/pkgs/development/python-modules/contextlib2/default.nix
+++ b/pkgs/development/python-modules/contextlib2/default.nix
@@ -1,23 +1,36 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, unittest2
+, python
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "contextlib2";
   version = "21.6.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ab1e2bfe1d01d968e1b7e8d9023bc51ef3509bba217bb730cee3827e1ee82869";
+    hash = "sha256-qx4r/h0B2Wjht+jZAjvFHvNQm7ohe7cwzuOCfh7oKGk=";
   };
 
-  checkInputs = [ unittest2 ];
+  checkPhase = ''
+    runHook preCheck
+    ${python.interpreter} -m unittest discover
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [
+    "contextlib2"
+  ];
 
-  meta = {
+  meta = with lib; {
     description = "Backports and enhancements for the contextlib module";
     homepage = "https://contextlib2.readthedocs.org/";
-    license = lib.licenses.psfl;
+    license = licenses.psfl;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/convertdate/2.2.x.nix b/pkgs/development/python-modules/convertdate/2.2.x.nix
deleted file mode 100644
index 1145a61ca4f09..0000000000000
--- a/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/pkgs/development/python-modules/cornice/default.nix b/pkgs/development/python-modules/cornice/default.nix
index 793db7d5e4e49..9062ad22fd834 100644
--- a/pkgs/development/python-modules/cornice/default.nix
+++ b/pkgs/development/python-modules/cornice/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "cornice";
-  version = "6.0.0";
+  version = "6.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "532485ed53cae81ef476aaf4cc7c2e0208749ad1959119c46efefdeea5546eba";
+    sha256 = "6edf6f206ff1c3d108d7a7b9ae640a2f4737cfc04f0914ccc4eefe511d3a8985";
   };
 
   propagatedBuildInputs = [ pyramid simplejson six venusian ];
diff --git a/pkgs/development/python-modules/cot/default.nix b/pkgs/development/python-modules/cot/default.nix
index 607057b73f219..20ccfd6e0a902 100644
--- a/pkgs/development/python-modules/cot/default.nix
+++ b/pkgs/development/python-modules/cot/default.nix
@@ -1,27 +1,57 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi, pythonOlder, isPy3k
-, colorlog, pyvmomi, requests, verboselogs
-, psutil, pyopenssl, setuptools
-, mock, pytest-mock, pytestCheckHook, qemu
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, colorlog
+, pyvmomi
+, requests
+, verboselogs
+, pyopenssl
+, setuptools
+, mock
+, pytest-mock
+, pytestCheckHook
+, qemu
 }:
 
 buildPythonPackage rec {
   pname = "cot";
   version = "2.2.1";
-  disabled = !isPy3k;
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f4b3553415f90daac656f89d3e82e79b3d751793239bb173a683b4cc0ceb2635";
+    hash = "sha256-9LNVNBX5DarGVvidPoLnmz11F5Mjm7FzpoO0zAzrJjU=";
   };
 
-  propagatedBuildInputs = [ colorlog pyvmomi requests verboselogs pyopenssl setuptools ]
-  ++ lib.optional (pythonOlder "3.3") psutil;
+  propagatedBuildInputs = [
+    colorlog
+    pyvmomi
+    requests
+    verboselogs
+    pyopenssl
+    setuptools
+  ];
 
-  checkInputs = [ mock pytestCheckHook pytest-mock qemu ];
+  checkInputs = [
+    mock
+    pytestCheckHook
+    pytest-mock
+    qemu
+  ];
+
+  prePatch = ''
+    # argparse is part of the standardlib
+    substituteInPlace setup.py \
+      --replace "'argparse'," ""
+  '';
 
-  # Many tests require network access and/or ovftool (https://code.vmware.com/web/tool/ovf)
-  # try enabling these tests with ovftool once/if it is added to nixpkgs
   disabledTests = [
+    # Many tests require network access and/or ovftool (https://code.vmware.com/web/tool/ovf)
+    # try enabling these tests with ovftool once/if it is added to nixpkgs
     "HelperGenericTest"
     "TestCOTAddDisk"
     "TestCOTAddFile"
@@ -34,14 +64,15 @@ buildPythonPackage rec {
     "TestQCOW2"
     "TestRAW"
     "TestVMDKConversion"
+    # CLI test fails with AssertionError
+    "test_help"
   ] ++ lib.optionals stdenv.isDarwin [
     "test_serial_fixup_invalid_host"
   ];
 
-  # argparse is part of the standardlib
-  prePatch = ''
-    substituteInPlace setup.py --replace "'argparse'," ""
-  '';
+  pythonImportsCheck = [
+    "COT"
+  ];
 
   meta = with lib; {
     description = "Common OVF Tool";
diff --git a/pkgs/development/python-modules/coverage/default.nix b/pkgs/development/python-modules/coverage/default.nix
index 5a7fe9a534e6e..f1930b88fb8c4 100644
--- a/pkgs/development/python-modules/coverage/default.nix
+++ b/pkgs/development/python-modules/coverage/default.nix
@@ -2,15 +2,18 @@
 , buildPythonPackage
 , fetchPypi
 , mock
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "coverage";
-  version = "5.5";
+  version = "6.2";
+  # uses f strings
+  disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c";
+    sha256 = "e2cad8093172b7d1595b4ad66f24270808658e11acf43a8f95b41276162eb5b8";
   };
 
   # No tests in archive
@@ -19,7 +22,7 @@ buildPythonPackage rec {
 
   meta = {
     description = "Code coverage measurement for python";
-    homepage = "http://nedbatchelder.com/code/coverage/";
+    homepage = "https://coverage.readthedocs.io/";
     license = lib.licenses.bsd3;
   };
 }
diff --git a/pkgs/development/python-modules/cozy/default.nix b/pkgs/development/python-modules/cozy/default.nix
deleted file mode 100644
index f7e0af082667a..0000000000000
--- a/pkgs/development/python-modules/cozy/default.nix
+++ /dev/null
@@ -1,62 +0,0 @@
-{ buildPythonPackage
-, isPy3k
-, fetchFromGitHub
-, lib
-, z3
-, ply
-, igraph
-, oset
-, ordered-set
-, dictionaries
-, setuptools
-}:
-
-buildPythonPackage {
-  pname = "cozy";
-  version = "2.0a1";
-  disabled = !isPy3k;
-
-  propagatedBuildInputs = [
-    setuptools
-    z3
-    ply
-    igraph
-    oset
-    ordered-set
-    dictionaries
-  ];
-
-  src = fetchFromGitHub {
-    owner = "CozySynthesizer";
-    repo = "cozy";
-    rev = "f553e9b";
-    sha256 = "1jhr5gzihj8dkg0yc5dmi081v2isxharl0ph7v2grqj0bwqzl40j";
-  };
-
-  # - 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/' \
-           -e 's/python-igraph/igraph/' \
-            requirements.txt
-  '';
-
-  # Tests are not correctly set up in the source tree.
-  doCheck = false;
-  pythonImportsCheck = [ "cozy" ];
-
-  # There is some first-time-run codegen that we will force to happen.
-  postInstall = ''
-    $out/bin/cozy --help
-  '';
-
-
-  meta = with lib; {
-    description = "The collection synthesizer";
-    homepage = "https://cozy.uwplse.org/";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ MostAwesomeDude ];
-  };
-}
diff --git a/pkgs/development/python-modules/croniter/default.nix b/pkgs/development/python-modules/croniter/default.nix
index 3628609259c18..1b122f9b5e414 100644
--- a/pkgs/development/python-modules/croniter/default.nix
+++ b/pkgs/development/python-modules/croniter/default.nix
@@ -4,22 +4,21 @@
 , python-dateutil
 , pytestCheckHook
 , pytz
-, natsort
 , tzlocal
 }:
 
 buildPythonPackage rec {
   pname = "croniter";
-  version = "1.0.15";
+  version = "1.3.4";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "06c2smrjskd9di8lcpymcxmygncxr14932qjhslc37yyaafzq3d7";
+    hash = "sha256-MWk2WRaDS+ZUwsrFfqFNcQ50L464pfzoBPbOVI2oC/I=";
   };
 
   propagatedBuildInputs = [
     python-dateutil
-    natsort
   ];
 
   checkInputs = [
@@ -28,12 +27,14 @@ buildPythonPackage rec {
     tzlocal
   ];
 
-  pythonImportsCheck = [ "croniter" ];
+  pythonImportsCheck = [
+    "croniter"
+  ];
 
   meta = with lib; {
-    description = "croniter provides iteration for datetime object with cron like format";
+    description = "Library to iterate over datetime object with cron like format";
     homepage = "https://github.com/kiorky/croniter";
     license = licenses.mit;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/pkgs/development/python-modules/crownstone-uart/default.nix b/pkgs/development/python-modules/crownstone-uart/default.nix
index b8ed7721f0642..12aa1590742ac 100644
--- a/pkgs/development/python-modules/crownstone-uart/default.nix
+++ b/pkgs/development/python-modules/crownstone-uart/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "crownstone-uart";
-  version = "2.2.0";
+  version = "2.3.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "crownstone";
     repo = "crownstone-lib-python-uart";
     rev = version;
-    sha256 = "sha256-5K7NzJ7fKOW4Uh1XIlicVkRZuM84qTM5RQc/DfP9OEc=";
+    sha256 = "sha256-temf+uvGWMMtnhBpbYtTj6OzKqo3Xaa11Q2VX2+HTZc=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/cryptography/3.3.nix b/pkgs/development/python-modules/cryptography/3.3.nix
deleted file mode 100644
index 357bb35dacf76..0000000000000
--- a/pkgs/development/python-modules/cryptography/3.3.nix
+++ /dev/null
@@ -1,81 +0,0 @@
-{ lib, stdenv
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, ipaddress
-, openssl
-, cryptography_vectors
-, darwin
-, packaging
-, six
-, isPyPy
-, cffi
-, pytest
-, pretend
-, iso8601
-, pytz
-, hypothesis
-, enum34
-}:
-
-buildPythonPackage rec {
-  pname = "cryptography";
-  version = "3.3.2"; # Also update the hash in vectors-3.3.nix
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1vcvw4lkw1spiq322pm1256kail8nck6bbgpdxx3pqa905wd6q2s";
-  };
-
-  patches = [ ./cryptography-py27-warning.patch ];
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = lib.optionals (!isPyPy) [
-    cffi
-  ];
-
-  buildInputs = [ openssl ]
-             ++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Security;
-  propagatedBuildInputs = [
-    packaging
-    six
-  ] ++ lib.optionals (!isPyPy) [
-    cffi
-  ] ++ lib.optionals isPy27 [
-    ipaddress enum34
-  ];
-
-  checkInputs = [
-    cryptography_vectors
-    hypothesis
-    iso8601
-    pretend
-    pytest
-    pytz
-  ];
-
-  checkPhase = ''
-    py.test --disable-pytest-warnings 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 = ''
-      Cryptography includes both high level recipes and low level interfaces to
-      common cryptographic algorithms such as symmetric ciphers, message
-      digests, and key derivation functions.
-      Our goal is for it to be your "cryptographic standard library". It
-      supports Python 2.7, Python 3.5+, and PyPy 5.4+.
-    '';
-    homepage = "https://github.com/pyca/cryptography";
-    changelog = "https://cryptography.io/en/latest/changelog/#v"
-      + replaceStrings [ "." ] [ "-" ] version;
-    license = with licenses; [ asl20 bsd3 psfl ];
-    maintainers = with maintainers; [ primeos ];
-  };
-}
diff --git a/pkgs/development/python-modules/cryptography/default.nix b/pkgs/development/python-modules/cryptography/default.nix
index d21e6d060fe1a..b4a79137d59bf 100644
--- a/pkgs/development/python-modules/cryptography/default.nix
+++ b/pkgs/development/python-modules/cryptography/default.nix
@@ -21,18 +21,18 @@
 
 buildPythonPackage rec {
   pname = "cryptography";
-  version = "3.4.8"; # Also update the hash in vectors.nix
+  version = "36.0.0"; # Also update the hash in vectors.nix
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "072awar70cwfd2hnx0pvp1dkc7gw45mbm3wcyddvxz5frva5xk4l";
+    sha256 = "0zshc1jaavykdnic5ns8zax6gqganys6gp5f35bqcfggnkn6kxsj";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     sourceRoot = "${pname}-${version}/${cargoRoot}";
     name = "${pname}-${version}";
-    sha256 = "01h511h6l4qvjxbaw662m1l84pb4wrhwxmnb3qj6ik13mx2m477m";
+    sha256 = "1nbw4cfshyc125jwdivg9gxy52qcd1iz31lypl95ij9bn1dyx933";
   };
 
   cargoRoot = "src/rust";
diff --git a/pkgs/development/python-modules/cryptography/vectors-3.3.nix b/pkgs/development/python-modules/cryptography/vectors-3.3.nix
deleted file mode 100644
index f9b7c525237ab..0000000000000
--- a/pkgs/development/python-modules/cryptography/vectors-3.3.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ buildPythonPackage, fetchPypi, lib, cryptography }:
-
-buildPythonPackage rec {
-  pname = "cryptography_vectors";
-  # The test vectors must have the same version as the cryptography package:
-  version = cryptography.version;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1yhaps0f3h2yjb6lmz953z1l1d84y9swk4k3gj9nqyk4vbx5m7cc";
-  };
-
-  # No tests included
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Test vectors for the cryptography package";
-    homepage = "https://cryptography.io/en/latest/development/test-vectors/";
-    # Source: https://github.com/pyca/cryptography/tree/master/vectors;
-    license = with licenses; [ asl20 bsd3 ];
-    maintainers = with maintainers; [ primeos ];
-  };
-}
diff --git a/pkgs/development/python-modules/cryptography/vectors.nix b/pkgs/development/python-modules/cryptography/vectors.nix
index 7602582f83069..577c2c870910b 100644
--- a/pkgs/development/python-modules/cryptography/vectors.nix
+++ b/pkgs/development/python-modules/cryptography/vectors.nix
@@ -7,7 +7,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1wl0ynh3lzhc6q59g8mybvijmnp195x7fjxlb3h3sgcraw14312c";
+    sha256 = "19gs051jbsixxwhlfs4xdxpzg8w1vypzpz3w56bp9x01qwzfbdy6";
   };
 
   # No tests included
diff --git a/pkgs/development/python-modules/css-parser/default.nix b/pkgs/development/python-modules/css-parser/default.nix
index 7791c2b9a2371..c4d3b101c87d6 100644
--- a/pkgs/development/python-modules/css-parser/default.nix
+++ b/pkgs/development/python-modules/css-parser/default.nix
@@ -1,18 +1,26 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
 
 buildPythonPackage rec {
   pname = "css-parser";
-  version = "1.0.6";
+  version = "1.0.7";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4ed448a8a5622edb1d30d616bbc4bd3d30f11be922343d7a92d7e418e324af2e";
+    sha256 = "25e096c63262dd249010ce36dab4cacd9595783ee09b5ed699ef12ab864ebbd1";
   };
 
   # Test suite not included in tarball yet
   # See https://github.com/ebook-utils/css-parser/pull/2
   doCheck = false;
 
+  pythonImportsCheck = [
+    "css_parser"
+  ];
+
   meta = with lib; {
     description = "A CSS Cascading Style Sheets library for Python";
     homepage = "https://github.com/ebook-utils/css-parser";
diff --git a/pkgs/development/python-modules/cssutils/default.nix b/pkgs/development/python-modules/cssutils/default.nix
index 9d1aec8625084..6c1c5de2c56ab 100644
--- a/pkgs/development/python-modules/cssutils/default.nix
+++ b/pkgs/development/python-modules/cssutils/default.nix
@@ -1,6 +1,8 @@
 { lib
 , buildPythonPackage
+, pythonAtLeast
 , pythonOlder
+, fetchpatch
 , fetchPypi
 , setuptools-scm
 , toml
@@ -22,6 +24,14 @@ buildPythonPackage rec {
     sha256 = "sha256-stOxYEfKroLlxZADaTW6+htiHPRcLziIWvS+SDjw/QA=";
   };
 
+  patches = lib.optionals (pythonAtLeast "3.10") [
+    # fix tests for python3.10
+    (fetchpatch {
+      url = "https://github.com/jaraco/cssutils/pull/17/commits/355b1795dde77bd4b49d8df35377230fdb503802.patch";
+      sha256 = "sha256-hwe8oeZO2rq00cs079lje3wjQDEczAu3Tfy/X/M9+GQ=";
+    })
+  ];
+
   nativeBuildInputs = [
     setuptools-scm
     toml
diff --git a/pkgs/development/python-modules/csvw/default.nix b/pkgs/development/python-modules/csvw/default.nix
index 67342d9eccc80..7ae79f4ec59f9 100644
--- a/pkgs/development/python-modules/csvw/default.nix
+++ b/pkgs/development/python-modules/csvw/default.nix
@@ -1,13 +1,13 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, pythonAtLeast
 , pythonOlder
 , attrs
 , isodate
 , python-dateutil
 , rfc3986
 , uritemplate
-, mock
 , pytestCheckHook
 , pytest-mock
 }:
@@ -15,6 +15,8 @@
 buildPythonPackage rec {
   pname = "csvw";
   version = "1.11.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
@@ -24,10 +26,6 @@ buildPythonPackage rec {
     sha256 = "1393xwqawaxsflbq62vks92vv4zch8p6dd1mdvdi7j4vvf0zljkg";
   };
 
-  patchPhase = ''
-    substituteInPlace setup.cfg --replace "--cov" ""
-  '';
-
   propagatedBuildInputs = [
     attrs
     isodate
@@ -37,15 +35,28 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    mock
     pytestCheckHook
     pytest-mock
   ];
 
+  patchPhase = ''
+    substituteInPlace setup.cfg \
+      --replace "--cov" ""
+  '';
+
   disabledTests = [
     # this test is flaky on darwin because it depends on the resolution of filesystem mtimes
     # https://github.com/cldf/csvw/blob/45584ad63ff3002a9b3a8073607c1847c5cbac58/tests/test_db.py#L257
     "test_write_file_exists"
+  ] ++ lib.optionals (pythonAtLeast "3.10") [
+    # https://github.com/cldf/csvw/issues/58
+    "test_roundtrip_escapechar"
+    "test_escapequote_escapecharquotechar_final"
+    "test_doubleQuote"
+  ];
+
+  pythonImportsCheck = [
+    "csvw"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/cupy/default.nix b/pkgs/development/python-modules/cupy/default.nix
index 6336fc0bdc019..250d337a07f6b 100644
--- a/pkgs/development/python-modules/cupy/default.nix
+++ b/pkgs/development/python-modules/cupy/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "cupy";
-  version = "9.6.0";
+  version = "10.1.0";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "22469ea1ad51ffbb4af2b139ed0820ac5d0b78f1265b2a095ed5e5d5299aab91";
+    sha256 = "ad28e7311b2023391f2278b7649828decdd9d9599848e18845eb4ab1b2d01936";
   };
 
   preConfigure = ''
diff --git a/pkgs/development/python-modules/cwcwidth/default.nix b/pkgs/development/python-modules/cwcwidth/default.nix
index ede96fc3b41d7..c3778415e570d 100644
--- a/pkgs/development/python-modules/cwcwidth/default.nix
+++ b/pkgs/development/python-modules/cwcwidth/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "cwcwidth";
-  version = "0.1.4";
+  version = "0.1.6";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1azrphpkcyggg38xvkfb9dpc4xmmm90p02kf8dkqd4d6j5w96aj8";
+    sha256 = "1b31da599c9f0cf41f39ed10c1ceaa01d6024e31c6cd9aea2885b1f2a6d15fba";
   };
 
   nativeBuildInputs = [ cython ];
diff --git a/pkgs/development/python-modules/cx_freeze/default.nix b/pkgs/development/python-modules/cx_freeze/default.nix
index 514b53b873a99..90e2608069c40 100644
--- a/pkgs/development/python-modules/cx_freeze/default.nix
+++ b/pkgs/development/python-modules/cx_freeze/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "cx_Freeze";
-  version = "6.8.3";
+  version = "6.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "05e7a2b099d4eb36e74116311b693dcc3103763aee92ef32079be0b6d4832fa0";
+    sha256 = "673aa3199af2ef87fc03a43a30e5d78b27ced2cedde925da89c55b5657da267b";
   };
 
   disabled = pythonOlder "3.5";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "A set of scripts and modules for freezing Python scripts into executables";
-    homepage = "http://cx-freeze.sourceforge.net/";
+    homepage = "https://marcelotduarte.github.io/cx_Freeze/";
     license = licenses.psfl;
   };
 }
diff --git a/pkgs/development/python-modules/cyclonedx-python-lib/default.nix b/pkgs/development/python-modules/cyclonedx-python-lib/default.nix
index 75f9c29607dac..26546c3f7cb01 100644
--- a/pkgs/development/python-modules/cyclonedx-python-lib/default.nix
+++ b/pkgs/development/python-modules/cyclonedx-python-lib/default.nix
@@ -2,6 +2,8 @@
 , buildPythonPackage
 , fetchFromGitHub
 , importlib-metadata
+, jsonschema
+, lxml
 , packageurl-python
 , poetry-core
 , pytestCheckHook
@@ -11,12 +13,11 @@
 , toml
 , types-setuptools
 , types-toml
-, tox
 }:
 
 buildPythonPackage rec {
   pname = "cyclonedx-python-lib";
-  version = "0.12.3";
+  version = "1.3.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -25,7 +26,7 @@ buildPythonPackage rec {
     owner = "CycloneDX";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1404wcwjglq025n8ncsrl2h64g1sly83cs9sc6jpiw1g5ay4a1vi";
+    hash = "sha256-/1kWvhTUS0JT0RwodiivJSUiWIDwQyXxdjF/KUlCNds=";
   };
 
   nativeBuildInputs = [
@@ -43,16 +44,11 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
+    jsonschema
+    lxml
     pytestCheckHook
-    tox
   ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace 'setuptools = "^50.3.2"' 'setuptools = "*"' \
-      --replace 'importlib-metadata = "^4.8.1"' 'importlib-metadata = "*"'
-  '';
-
   pythonImportsCheck = [
     "cyclonedx"
   ];
diff --git a/pkgs/development/python-modules/dacite/default.nix b/pkgs/development/python-modules/dacite/default.nix
index 67b1722be51f0..ba74695fb5ea4 100644
--- a/pkgs/development/python-modules/dacite/default.nix
+++ b/pkgs/development/python-modules/dacite/default.nix
@@ -2,12 +2,15 @@
 , fetchFromGitHub
 , buildPythonPackage
 , pythonOlder
+, pythonAtLeast
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "dacite";
   version = "1.6.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
@@ -21,7 +24,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "dacite" ];
+  disabledTests = lib.optionals (pythonAtLeast "3.10") [
+    # https://github.com/konradhalas/dacite/issues/167
+    "test_from_dict_with_union_and_wrong_data"
+  ];
+
+  pythonImportsCheck = [
+    "dacite"
+  ];
 
   meta = with lib; {
     description = "Python helper to create data classes from dictionaries";
diff --git a/pkgs/development/python-modules/darcsver/default.nix b/pkgs/development/python-modules/darcsver/default.nix
deleted file mode 100644
index c46337981bd7b..0000000000000
--- a/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/pkgs/development/python-modules/dash/default.nix b/pkgs/development/python-modules/dash/default.nix
index 3fd9d2a41d58b..004d42a81df39 100644
--- a/pkgs/development/python-modules/dash/default.nix
+++ b/pkgs/development/python-modules/dash/default.nix
@@ -10,17 +10,21 @@
 , pytest-mock
 , mock
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "dash";
-  version = "2.0.0";
+  version = "2.2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "plotly";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-0RvA5qkwQJGyy81D5kW+IR6LbaD/KBwMy6kYxTETubg=";
+    sha256 = "sha256-Ul3j1BJd3lKzGCEhPFYxZG0CcAqAZqmOEDi8vGPFItw=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/dask-ml/default.nix b/pkgs/development/python-modules/dask-ml/default.nix
index 60df07076827d..31be98f459128 100644
--- a/pkgs/development/python-modules/dask-ml/default.nix
+++ b/pkgs/development/python-modules/dask-ml/default.nix
@@ -17,13 +17,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "2021.11.30";
+  version = "2022.1.22";
   pname = "dask-ml";
   disabled = pythonOlder "3.6"; # >= 3.6
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4f73306b5ee56e9b41b133697062d0028d30b1ece883ac6b56532fea5bd3e94a";
+    sha256 = "21a128e9f4f10e3b39cf82b36266eae28b17d16f2f6aa351bd73eb361e49326a";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/dask/default.nix b/pkgs/development/python-modules/dask/default.nix
index 39d01559d460a..0358083c3a57e 100644
--- a/pkgs/development/python-modules/dask/default.nix
+++ b/pkgs/development/python-modules/dask/default.nix
@@ -23,7 +23,7 @@
 
 buildPythonPackage rec {
   pname = "dask";
-  version = "2021.10.0";
+  version = "2022.01.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -32,19 +32,10 @@ buildPythonPackage rec {
     owner = "dask";
     repo = pname;
     rev = version;
-    sha256 = "07ysrs46x5w8rc2df0j06rsw58ahcysd6lwjk5riqpjlpwdfmg7p";
+    sha256 = "sha256-HlVvnhEDzefzv9xchlXl9d4KCumoAqoYUWmIiCXLJyM=
+";
   };
 
-  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
@@ -82,7 +73,7 @@ buildPythonPackage rec {
 
   pytestFlagsArray = [
     # parallelize
-    "--numprocesses auto"
+    "--numprocesses $NIX_BUILD_CORES"
     # rerun failed tests up to three times
     "--reruns 3"
     # don't run tests that require network access
diff --git a/pkgs/development/python-modules/databases/default.nix b/pkgs/development/python-modules/databases/default.nix
index 2facff6c840be..518d2066853ad 100644
--- a/pkgs/development/python-modules/databases/default.nix
+++ b/pkgs/development/python-modules/databases/default.nix
@@ -14,7 +14,8 @@
 
 buildPythonPackage rec {
   pname = "databases";
-  version = "0.5.3";
+  version = "0.5.5";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
@@ -22,7 +23,7 @@ buildPythonPackage rec {
     owner = "encode";
     repo = pname;
     rev = version;
-    sha256 = "sha256-67ykx7HKGgRvJ+GRVEI/e2+x51kfHHFjh/iI4tY+6aE=";
+    hash = "sha256-NOXK1UCQzqvJRfzsgIfpihuD9oF52sMD+BxqUHWF8Rk=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/databricks-cli/default.nix b/pkgs/development/python-modules/databricks-cli/default.nix
index bb8bda9228721..25fd928710121 100644
--- a/pkgs/development/python-modules/databricks-cli/default.nix
+++ b/pkgs/development/python-modules/databricks-cli/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "databricks-cli";
-  version = "0.16.2";
+  version = "0.16.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3e9a65a19a589b795ebbd9b3b16a8e470d612d57d6216ae44a9c7a735e4080e6";
+    sha256 = "sha256-GBiQaBg7YY31bJft0W8Iq7WXhX98wPgPFHdNwuZ7WQY=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/databricks-connect/default.nix b/pkgs/development/python-modules/databricks-connect/default.nix
index 7df195b3aacb5..f77b279eb64f0 100644
--- a/pkgs/development/python-modules/databricks-connect/default.nix
+++ b/pkgs/development/python-modules/databricks-connect/default.nix
@@ -1,12 +1,22 @@
-{ lib, jdk8, buildPythonPackage, fetchPypi, six, py4j }:
+{ lib
+, jdk8
+, buildPythonPackage
+, fetchPypi
+, six
+, py4j
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "databricks-connect";
-  version = "9.1.5";
+  version = "9.1.9";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "26b88b1d8fdacf5226cf9c1924fae974c955ccbfe2fdcd08574327007bdcbdd9";
+    sha256 = "sha256-/I0yMrh2OinvSeMX8C10Y64FuD/nr3dOKIN3Pkb3Zrs=";
   };
 
   sourceRoot = ".";
diff --git a/pkgs/development/python-modules/datadog/default.nix b/pkgs/development/python-modules/datadog/default.nix
index a24f726e346de..c15e673fa3ed7 100644
--- a/pkgs/development/python-modules/datadog/default.nix
+++ b/pkgs/development/python-modules/datadog/default.nix
@@ -17,11 +17,11 @@
 
 buildPythonPackage rec {
   pname = "datadog";
-  version = "0.42.0";
+  version = "0.43.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-em+sF6fQnxiDq5pFzk/3oWqhpes8xMbN2sf4xT59Hps=";
+    sha256 = "1f2123083d9e1add6f238c62714b76ac2fc134d7d1c435cd82b976487b191b96";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/datafusion/Cargo.lock.patch b/pkgs/development/python-modules/datafusion/Cargo.lock.patch
new file mode 100644
index 0000000000000..e4e5eca8af4c8
--- /dev/null
+++ b/pkgs/development/python-modules/datafusion/Cargo.lock.patch
@@ -0,0 +1,78 @@
+diff --git a/Cargo.lock b/Cargo.lock
+index fa84a54c..3d790e1c 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -57,9 +57,9 @@ checksum = "be4dc07131ffa69b8072d35f5007352af944213cde02545e2103680baed38fcd"
+ 
+ [[package]]
+ name = "arrow"
+-version = "6.0.0"
++version = "6.5.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "337e668497751234149fd607f5cb41a6ae7b286b6329589126fe67f0ac55d637"
++checksum = "216c6846a292bdd93c2b93c1baab58c32ff50e2ab5e8d50db333ab518535dd8b"
+ dependencies = [
+  "bitflags",
+  "chrono",
+@@ -212,9 +212,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "comfy-table"
+-version = "4.1.1"
++version = "5.0.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "11e95a3e867422fd8d04049041f5671f94d53c32a9dcd82e2be268714942f3f3"
++checksum = "c42350b81f044f576ff88ac750419f914abb46a03831bb1747134344ee7a4e64"
+ dependencies = [
+  "strum",
+  "strum_macros",
+@@ -279,7 +279,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "datafusion"
+-version = "5.1.0"
++version = "6.0.0"
+ dependencies = [
+  "ahash",
+  "arrow",
+@@ -310,7 +310,7 @@ dependencies = [
+ 
+ [[package]]
+ name = "datafusion-python"
+-version = "0.3.0"
++version = "0.4.0"
+ dependencies = [
+  "datafusion",
+  "pyo3",
+@@ -877,9 +877,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "parquet"
+-version = "6.0.0"
++version = "6.5.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "d263b9b59ba260518de9e57bd65931c3f765fea0fabacfe84f40d6fde38e841a"
++checksum = "788d9953f4cfbe9db1beff7bebd54299d105e34680d78b82b1ddc85d432cac9d"
+ dependencies = [
+  "arrow",
+  "base64",
+@@ -1228,15 +1228,15 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+ 
+ [[package]]
+ name = "strum"
+-version = "0.21.0"
++version = "0.22.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2"
++checksum = "f7ac893c7d471c8a21f31cfe213ec4f6d9afeed25537c772e08ef3f005f8729e"
+ 
+ [[package]]
+ name = "strum_macros"
+-version = "0.21.1"
++version = "0.22.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec"
++checksum = "339f799d8b549e3744c7ac7feb216383e4005d94bdb22561b3ab8f3b808ae9fb"
+ dependencies = [
+  "heck",
+  "proc-macro2",
diff --git a/pkgs/development/python-modules/datafusion/default.nix b/pkgs/development/python-modules/datafusion/default.nix
new file mode 100644
index 0000000000000..4b36df22d1838
--- /dev/null
+++ b/pkgs/development/python-modules/datafusion/default.nix
@@ -0,0 +1,90 @@
+{ lib
+, stdenv
+, fetchurl
+, buildPythonPackage
+, fetchPypi
+, fetchFromGitHub
+, rustPlatform
+, maturin
+, pytestCheckHook
+, libiconv
+, numpy
+, pandas
+, pyarrow
+, pytest
+}:
+let
+  # le sigh, the perils of unrelated versions of software living in the same
+  # repo: there's no obvious way to map the top level source repo
+  # (arrow-datafusion) version to the version of contained repo
+  # (arrow-datafusion/python)
+  #
+  # A commit hash will do in a pinch, and ultimately the sha256 has the final
+  # say of what the content is when building
+  cargoLock = fetchurl {
+    url = "https://raw.githubusercontent.com/apache/arrow-datafusion/6.0.0/python/Cargo.lock";
+    sha256 = "sha256-xiv3drEU5jOGsEIh0U01ZQ1NBKobxO2ctp4mxy9iigw=";
+  };
+
+  postUnpack = ''
+    cp "${cargoLock}" $sourceRoot/Cargo.lock
+    chmod u+w $sourceRoot/Cargo.lock
+  '';
+in
+buildPythonPackage rec {
+  pname = "datafusion";
+  version = "0.4.0";
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-+YqogteKfNhtI2QbVXv/5CIWm3PcOH653dwONm5ZcL8=";
+  };
+
+  inherit postUnpack;
+
+  # TODO: remove the patch hacking and postUnpack hooks after
+  # https://github.com/apache/arrow-datafusion/pull/1508 is merged
+  #
+  # the lock file isn't up to date as of 6.0.0 so we need to patch the source
+  # lockfile and the vendored cargo deps lockfile
+  patches = [ ./Cargo.lock.patch ];
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src pname version postUnpack;
+    sha256 = "sha256-JGyDxpfBXzduJaMF1sbmRm7KJajHYdVSj+WbiSETiY0=";
+    patches = [ ./Cargo.lock.patch ];
+  };
+
+  nativeBuildInputs = with rustPlatform; [
+    cargoSetupHook
+    maturinBuildHook
+  ];
+
+  buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
+
+  propagatedBuildInputs = [
+    numpy
+    pandas
+    pyarrow
+  ];
+
+  checkInputs = [ pytest ];
+  pythonImportsCheck = [ "datafusion" ];
+
+  checkPhase = ''
+    runHook preCheck
+    pytest --pyargs "${pname}"
+    runHook postCheck
+  '';
+
+  meta = with lib; {
+    description = "Extensible query execution framework";
+    longDescription = ''
+      DataFusion is an extensible query execution framework, written in Rust,
+      that uses Apache Arrow as its in-memory format.
+    '';
+    homepage = "https://arrow.apache.org/datafusion/";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ cpcloud ];
+  };
+}
diff --git a/pkgs/development/python-modules/dataset/default.nix b/pkgs/development/python-modules/dataset/default.nix
new file mode 100644
index 0000000000000..38de0218dec07
--- /dev/null
+++ b/pkgs/development/python-modules/dataset/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, sqlalchemy
+, alembic
+, banal
+}:
+
+buildPythonPackage rec {
+  pname = "dataset";
+  version = "1.5.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-TDZ6fAqFxOdI79o07uMAw/zD8HbHXDKQt0mnoFM1yEc=";
+  };
+
+  propagatedBuildInputs = [
+    sqlalchemy alembic banal
+  ];
+
+  # checks attempt to import nonexistent module 'test.test' and fail
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "dataset"
+  ];
+
+  meta = with lib; {
+    description = "Toolkit for Python-based database access";
+    homepage = "https://dataset.readthedocs.io";
+    license = licenses.mit;
+    maintainers = [ maintainers.xfnw ];
+  };
+}
diff --git a/pkgs/development/python-modules/datasets/default.nix b/pkgs/development/python-modules/datasets/default.nix
index b4b60da17f9ff..ab5e929818c6e 100644
--- a/pkgs/development/python-modules/datasets/default.nix
+++ b/pkgs/development/python-modules/datasets/default.nix
@@ -16,13 +16,13 @@
 
 buildPythonPackage rec {
   pname = "datasets";
-  version = "1.16.1";
+  version = "1.17.0";
 
   src = fetchFromGitHub {
     owner = "huggingface";
     repo = pname;
     rev = version;
-    sha256 = "sha256-5J2hhy52eZqVSaeJNIOM9RzZatq3aewAulS3OX76+Io=";
+    sha256 = "0bsk3jldvcxak64dhlxkqax7mf83z6qpwfgfk32rni1gpnz5pqbd";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/datasette/default.nix b/pkgs/development/python-modules/datasette/default.nix
index 7908b3c6b4966..481f4c58b3ffc 100644
--- a/pkgs/development/python-modules/datasette/default.nix
+++ b/pkgs/development/python-modules/datasette/default.nix
@@ -18,7 +18,6 @@
 , httpx
 # Check Inputs
 , pytestCheckHook
-, pytest-runner
 , pytest-asyncio
 , pytest-timeout
 , aiohttp
@@ -31,7 +30,7 @@
 
 buildPythonPackage rec {
   pname = "datasette";
-  version = "0.59.4";
+  version = "0.60.2";
 
   disabled = pythonOlder "3.6";
 
@@ -39,11 +38,9 @@ buildPythonPackage rec {
     owner = "simonw";
     repo = pname;
     rev = version;
-    sha256 = "sha256-bH/VREo2f84wloA2jgXnQkGNSRRRYmSvUXmI0wMfmYM=";
+    sha256 = "sha256-GehtjukmSVHffAnDeDwjopgnuycD1CLQRHzLtO1iLsE=";
   };
 
-  nativeBuildInputs = [ pytest-runner ];
-
   propagatedBuildInputs = [
     aiofiles
     asgi-csrf
@@ -75,6 +72,8 @@ buildPythonPackage rec {
 
   postConfigure = ''
     substituteInPlace setup.py \
+      --replace '"pytest-runner"' ""
+    substituteInPlace setup.py \
       --replace "click-default-group~=1.2.2" "click-default-group" \
       --replace "hupper~=1.9" "hupper" \
       --replace "pint~=0.9" "pint" \
diff --git a/pkgs/development/python-modules/datashader/default.nix b/pkgs/development/python-modules/datashader/default.nix
index 587f73d81ed8c..d4515b0648331 100644
--- a/pkgs/development/python-modules/datashader/default.nix
+++ b/pkgs/development/python-modules/datashader/default.nix
@@ -25,19 +25,13 @@
 buildPythonPackage rec {
   pname = "datashader";
   version = "0.13.0";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
     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,13 +50,21 @@ buildPythonPackage rec {
 
   checkInputs = [
     pytestCheckHook
-    pytest-xdist # not needed
+    pytest-xdist
     nbsmoke
     fastparquet
     nbconvert
     netcdf4
   ];
 
+  # The complete extra is for usage with conda, which we
+  # don't care about
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "dask[complete]" "dask" \
+      --replace "xarray >=0.9.6" "xarray"
+  '';
+
   preCheck = ''
     export HOME=$TMPDIR
   '';
@@ -73,10 +75,10 @@ buildPythonPackage rec {
   ];
 
   disabledTests = [
-    # not compatible with current version of bokeh
+    # Not compatible with current version of bokeh
     # see: https://github.com/holoviz/datashader/issues/1031
     "test_interactive_image_update"
-    # latest dask broken array marshalling
+    # Latest dask broken array marshalling
     # see: https://github.com/holoviz/datashader/issues/1032
     "test_raster_quadmesh_autorange_reversed"
   ];
@@ -86,10 +88,14 @@ buildPythonPackage rec {
     "datashader/tests/test_datatypes.py"
   ];
 
+  pythonImportsCheck = [
+    "datashader"
+  ];
+
   meta = with lib;{
     description = "Data visualization toolchain based on aggregating into a grid";
     homepage = "https://datashader.org";
     license = licenses.bsd3;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/pkgs/development/python-modules/dateparser/0.x.nix b/pkgs/development/python-modules/dateparser/0.x.nix
deleted file mode 100644
index 35125453e7869..0000000000000
--- a/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/pkgs/development/python-modules/dbus/default.nix b/pkgs/development/python-modules/dbus/default.nix
index 23fcf511187ec..0685ca6fcca57 100644
--- a/pkgs/development/python-modules/dbus/default.nix
+++ b/pkgs/development/python-modules/dbus/default.nix
@@ -23,6 +23,10 @@ buildPythonPackage rec {
     MACOSX_DEPLOYMENT_TARGET=10.16
   '' else null;
 
+  configureFlags = [
+    "PYTHON=${python.pythonForBuild.interpreter}"
+  ];
+
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ dbus dbus-glib ]
     # My guess why it's sometimes trying to -lncurses.
diff --git a/pkgs/development/python-modules/dbutils/default.nix b/pkgs/development/python-modules/dbutils/default.nix
index bbfa60f03b699..8994e1d28cd2e 100644
--- a/pkgs/development/python-modules/dbutils/default.nix
+++ b/pkgs/development/python-modules/dbutils/default.nix
@@ -2,21 +2,29 @@
 , buildPythonPackage
 , fetchPypi
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
-  version = "3.0.1";
   pname = "dbutils";
+  version = "3.0.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit version;
     pname = "DBUtils";
-    sha256 = "6ec83f4d75d7a7b42a92e86b775f251e2671639b3b2123fe13a5d8d8fe7c5643";
+    hash = "sha256-+t65eeFAbcEj4tuZVfMU4NU2DzBOC9bPBHqqX8P99bM=";
   };
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  pythonImportsCheck = [ "dbutils" ];
+  pythonImportsCheck = [
+    "dbutils"
+  ];
 
   meta = with lib; {
     description = "Database connections for multi-threaded environments";
diff --git a/pkgs/development/python-modules/deap/default.nix b/pkgs/development/python-modules/deap/default.nix
index f260727b87a61..5efad065011d4 100644
--- a/pkgs/development/python-modules/deap/default.nix
+++ b/pkgs/development/python-modules/deap/default.nix
@@ -9,11 +9,19 @@ buildPythonPackage rec {
     sha256 = "0bvshly83c4h5jhxaa97z192viczymz5fxp6vl8awjmmrs9l9x8i";
   };
 
+  postPatch = ''
+    sed -i '/use_2to3=True/d' setup.py
+  '';
+
   propagatedBuildInputs = [ numpy matplotlib ];
 
+  preBuild = ''
+    2to3 -wn deap
+  '';
+
   checkInputs = [ nose ];
   checkPhase = ''
-    ${python.interpreter} setup.py nosetests --verbosity=3
+    nosetests --verbosity=3
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/debian/default.nix b/pkgs/development/python-modules/debian/default.nix
index 569e2b29631ed..98f0e234e3ae4 100644
--- a/pkgs/development/python-modules/debian/default.nix
+++ b/pkgs/development/python-modules/debian/default.nix
@@ -1,20 +1,22 @@
 { lib
 , buildPythonPackage
+, pythonOlder
 , fetchPypi
 , chardet
-, six
 }:
 
 buildPythonPackage rec {
   pname = "python-debian";
-  version = "0.1.42";
+  version = "0.1.43";
+
+  disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a794f4c4ee2318ae7260c2e32dac252b833bdaf6686efc2a1afbc6ecf3f0931f";
+    sha256 = "abc702511c4e268da49c22fd97c83de355c559f3271e0798a6b67964be3d8248";
   };
 
-  propagatedBuildInputs = [ chardet six ];
+  propagatedBuildInputs = [ chardet ];
 
   # No tests in archive
   doCheck = false;
@@ -23,7 +25,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Debian package related modules";
+    homepage = "https://salsa.debian.org/python-debian-team/python-debian";
+    changelog = "https://salsa.debian.org/python-debian-team/python-debian/-/blob/master/debian/changelog";
     license = licenses.gpl2;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/debtcollector/default.nix b/pkgs/development/python-modules/debtcollector/default.nix
index df3d78394605d..1915b64aca801 100644
--- a/pkgs/development/python-modules/debtcollector/default.nix
+++ b/pkgs/development/python-modules/debtcollector/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "debtcollector";
-  version = "2.3.0";
+  version = "2.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c7a9fac814ab5904e23905516b18356cc907e7d27c05da58d37103f001967846";
+    sha256 = "sha256-G8A+LZAX3kgMQc8+Wg2MyV8bDI8TOSgbTsqKIqz3aiM=";
   };
 
   nativeBuildInputs = [ pbr ];
diff --git a/pkgs/development/python-modules/debugpy/default.nix b/pkgs/development/python-modules/debugpy/default.nix
index bf2ed3628675a..dc58d8f7b0399 100644
--- a/pkgs/development/python-modules/debugpy/default.nix
+++ b/pkgs/development/python-modules/debugpy/default.nix
@@ -13,11 +13,13 @@
 , pytestCheckHook
 , requests
 , isPy3k
+, pythonAtLeast
 }:
 
 buildPythonPackage rec {
   pname = "debugpy";
   version = "1.5.1";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "Microsoft";
@@ -67,6 +69,7 @@ buildPythonPackage rec {
   )'';
 
   doCheck = isPy3k;
+
   checkInputs = [
     django
     flask
@@ -79,9 +82,25 @@ buildPythonPackage rec {
   ];
 
   # Override default arguments in pytest.ini
-  pytestFlagsArray = [ "--timeout=0" "-n=$NIX_BUILD_CORES" ];
+  pytestFlagsArray = [
+    "--timeout=0"
+    "-n=$NIX_BUILD_CORES"
+  ];
 
-  pythonImportsCheck = [ "debugpy" ];
+  disabledTests = lib.optionals (pythonAtLeast "3.10") [
+    "test_flask_breakpoint_multiproc"
+    "test_subprocess[program-launch-None]"
+    "test_systemexit[0-zero-uncaught-raised-launch(integratedTerminal)-module]"
+    "test_systemexit[0-zero-uncaught--attach_pid-program]"
+    "test_success_exitcodes[-break_on_system_exit_zero-0-attach_listen(cli)-module]"
+    "test_success_exitcodes[--0-attach_connect(api)-program]"
+    "test_run[code-attach_connect(api)]"
+    "test_subprocess[program-launch-None]"
+  ];
+
+  pythonImportsCheck = [
+    "debugpy"
+  ];
 
   meta = with lib; {
     description = "An implementation of the Debug Adapter Protocol for Python";
diff --git a/pkgs/development/python-modules/decli/default.nix b/pkgs/development/python-modules/decli/default.nix
new file mode 100644
index 0000000000000..1e0fd21320dc4
--- /dev/null
+++ b/pkgs/development/python-modules/decli/default.nix
@@ -0,0 +1,23 @@
+{ buildPythonPackage
+, lib
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "decli";
+  version = "0.5.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-8s3lUDSnXIGcYwx2VahExhLyWYxCwhKZFgRl32rUY60=";
+  };
+
+  pythonImportsCheck = [ "decli" ];
+
+  meta = with lib; {
+    description = "Minimal, easy to use, declarative command line interface tool";
+    homepage = "https://github.com/Woile/decli";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lovesegfault ];
+  };
+}
diff --git a/pkgs/development/python-modules/decopatch/default.nix b/pkgs/development/python-modules/decopatch/default.nix
index 7fa3c6465db40..92c2c27de2f6c 100644
--- a/pkgs/development/python-modules/decopatch/default.nix
+++ b/pkgs/development/python-modules/decopatch/default.nix
@@ -3,31 +3,42 @@
 , fetchPypi
 , makefun
 , setuptools-scm
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "decopatch";
-  version = "1.4.8";
+  version = "1.4.9";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0i6i811s2j1z0cl6y177dwsbfxib8dvb5c2jpgklvc2xy4ahhsy6";
+    hash = "sha256-tYgsjPDVsB0hi04E9nYtB7ModCDqUJcG9Zlxw9b+xW8=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
 
-  propagatedBuildInputs = [ makefun ];
+  propagatedBuildInputs = [
+    makefun
+  ];
 
   postPatch = ''
-    substituteInPlace setup.py --replace "'pytest-runner', " ""
+    substituteInPlace setup.cfg \
+      --replace "pytest-runner" ""
   '';
 
+  pythonImportsCheck = [
+    "decopatch"
+  ];
+
   # Tests would introduce multiple cirucular dependencies
   # Affected: makefun, pytest-cases
   doCheck = false;
 
-  pythonImportsCheck = [ "decopatch" ];
-
   meta = with lib; {
     description = "Python helper for decorators";
     homepage = "https://github.com/smarie/python-decopatch";
diff --git a/pkgs/development/python-modules/decorator/4.nix b/pkgs/development/python-modules/decorator/4.nix
deleted file mode 100644
index 8e8fd28f0b543..0000000000000
--- a/pkgs/development/python-modules/decorator/4.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-}:
-
-buildPythonPackage rec {
-  pname = "decorator";
-  version = "4.4.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1rxzhk5zwiggk45hl53zydvy70lk654kg0nc1p54090p402jz9p3";
-  };
-
-  meta = with lib; {
-    homepage = "https://pypi.python.org/pypi/decorator";
-    description = "Better living through Python with decorators";
-    license = lib.licenses.mit;
-    maintainers = [ maintainers.costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/decorator/default.nix b/pkgs/development/python-modules/decorator/default.nix
index 0c1889963157c..e26c1a108188c 100644
--- a/pkgs/development/python-modules/decorator/default.nix
+++ b/pkgs/development/python-modules/decorator/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "decorator";
-  version = "5.1.0";
+  version = "5.1.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e59913af105b9860aa2c8d3272d9de5a56a4e608db9a2f167a8480b323d529a7";
+    sha256 = "637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330";
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/deemix/default.nix b/pkgs/development/python-modules/deemix/default.nix
index cf54f6facf82f..c12bdac5fd0b2 100644
--- a/pkgs/development/python-modules/deemix/default.nix
+++ b/pkgs/development/python-modules/deemix/default.nix
@@ -12,12 +12,14 @@
 
 buildPythonPackage rec {
   pname = "deemix";
-  version = "3.6.4";
+  version = "3.6.6";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "268617b3ff9346ae51a063cbdb820c1f591cbadc1cf2fafd201dc671e721c1dd";
+    sha256 = "sha256-xEahzA1PIrGPfnnOcuXQLVQpSVOUFk6/0v9ViLgWCwk=";
   };
 
   propagatedBuildInputs = [
@@ -31,18 +33,14 @@ buildPythonPackage rec {
 
   # Project has no tests
   doCheck = false;
+
   pythonImportsCheck = [
-    "spotipy"
-    "click"
-    "Cryptodome"
-    "mutagen"
-    "requests"
     "deezer"
   ];
 
   meta = with lib; {
-    homepage = "https://git.freezer.life/RemixDev/deemix-py";
     description = "Deezer downloader built from the ashes of Deezloader Remix";
+    homepage = "https://git.freezerapp.xyz/RemixDev/deemix-py";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ natto1784 ];
   };
diff --git a/pkgs/development/python-modules/deep-translator/default.nix b/pkgs/development/python-modules/deep-translator/default.nix
index ae7bf52e1fe7b..0f67b2ae3529a 100644
--- a/pkgs/development/python-modules/deep-translator/default.nix
+++ b/pkgs/development/python-modules/deep-translator/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "deep-translator";
-  version = "1.6.0";
+  version = "1.7.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-B/SnLSaCRVhQvSU2hmdKPswM2N73nHAzQfVNBMgCofI=";
+    sha256 = "sha256-k4RhUZN/aC9D1NKkmCGZGZNU9In577RobBnDagMYHbo=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/deezer-py/default.nix b/pkgs/development/python-modules/deezer-py/default.nix
index 648f0e3f0fc71..a05c7335214ed 100644
--- a/pkgs/development/python-modules/deezer-py/default.nix
+++ b/pkgs/development/python-modules/deezer-py/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "deezer-py";
-  version = "1.3.2";
+  version = "1.3.6";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-G4GREc+PWvaphnOuzBePraj4pHgmhhKqsyVHKOPwGik=";
+    sha256 = "a3ef151f7971d69769e7393f71373eaf896bccd22167213872ae46e04e14a2d7";
   };
 
   propagatedBuildInputs = [ requests ];
diff --git a/pkgs/development/python-modules/deezer-python/default.nix b/pkgs/development/python-modules/deezer-python/default.nix
index cb3afb644252a..0f01ebab4a55e 100644
--- a/pkgs/development/python-modules/deezer-python/default.nix
+++ b/pkgs/development/python-modules/deezer-python/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "deezer-python";
-  version = "4.2.1";
+  version = "5.2.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "browniebroke";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0gl0l7x9zqfkz3l4jfz8rb956lqj3vx1aghric36izwzl6wyj6h5";
+    sha256 = "sha256-jaF5vQx8/qP9pGLfilx86v1GxHbjxaRghjjI5Me0pU0=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/demjson/default.nix b/pkgs/development/python-modules/demjson/default.nix
deleted file mode 100644
index 25e2692af3ba2..0000000000000
--- a/pkgs/development/python-modules/demjson/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib, python, buildPythonPackage, fetchPypi, isPy3k }:
-
-buildPythonPackage rec {
-  pname = "demjson";
-  version = "2.2.4";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0ygbddpnvp5lby6mr5kz60la3hkvwwzv3wwb3z0w9ngxl0w21pii";
-  };
-
-  checkPhase = lib.optionalString isPy3k ''
-    ${python.interpreter} -m lib2to3 -w test/test_demjson.py
-  '' + ''
-    ${python.interpreter} test/test_demjson.py
-  '';
-
-  meta = with lib; {
-    description = "Encoder/decoder and lint/validator for JSON (JavaScript Object Notation)";
-    homepage = "https://github.com/dmeranda/demjson";
-    license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ bjornfor ];
-    platforms = platforms.all;
-  };
-}
diff --git a/pkgs/development/python-modules/dendropy/default.nix b/pkgs/development/python-modules/dendropy/default.nix
index be1b705dc02b5..08c7946827133 100644
--- a/pkgs/development/python-modules/dendropy/default.nix
+++ b/pkgs/development/python-modules/dendropy/default.nix
@@ -2,17 +2,21 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "dendropy";
   version = "4.5.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "jeetsukumaran";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-FP0+fJkkFtSysPxoHXjyMgF8pPin7aRyzmHe9bH8LlM=";
+    hash = "sha256-FP0+fJkkFtSysPxoHXjyMgF8pPin7aRyzmHe9bH8LlM=";
   };
 
   checkInputs = [
@@ -27,9 +31,13 @@ buildPythonPackage rec {
     "test_group1"
     # AssertionError: 6 != 5
     "test_by_num_lineages"
+    # AttributeError: module 'collections' has no attribute 'Iterable'
+    "test_findall_multiple"
   ];
 
-  pythonImportsCheck = [ "dendropy" ];
+  pythonImportsCheck = [
+    "dendropy"
+  ];
 
   meta = with lib; {
     description = "Python library for phylogenetic computing";
diff --git a/pkgs/development/python-modules/denonavr/default.nix b/pkgs/development/python-modules/denonavr/default.nix
index 94d3f73950f5d..9922522138b66 100644
--- a/pkgs/development/python-modules/denonavr/default.nix
+++ b/pkgs/development/python-modules/denonavr/default.nix
@@ -15,14 +15,16 @@
 
 buildPythonPackage rec {
   pname = "denonavr";
-  version = "0.10.9";
+  version = "0.10.10";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "scarface-4711";
     repo = pname;
     rev = version;
-    sha256 = "sha256-Y0sFRKnKZAdP95EyE3h1g92AJeT0Xkshjjwfv/vnfW8=";
+    sha256 = "sha256-ZL04JJZStOr6egoki85qCQrXoSTTO43RlLVbNBVz3QA=";
   };
 
   propagatedBuildInputs = [
@@ -40,7 +42,9 @@ buildPythonPackage rec {
     pytest-timeout
   ];
 
-  pythonImportsCheck = [ "denonavr" ];
+  pythonImportsCheck = [
+    "denonavr"
+  ];
 
   meta = with lib; {
     description = "Automation Library for Denon AVR receivers";
diff --git a/pkgs/development/python-modules/deprecation/default.nix b/pkgs/development/python-modules/deprecation/default.nix
index fb5698062f77b..d77554c79ab80 100644
--- a/pkgs/development/python-modules/deprecation/default.nix
+++ b/pkgs/development/python-modules/deprecation/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildPythonPackage, fetchPypi, python, packaging, unittest2 }:
+{ lib, buildPythonPackage, fetchPypi
+, fetchpatch
+, packaging
+, python
+, pythonAtLeast
+, pythonOlder
+, unittest2
+}:
 
 buildPythonPackage rec {
   pname = "deprecation";
@@ -9,9 +16,22 @@ buildPythonPackage rec {
     sha256 = "1zqqjlgmhgkpzg9ss5ki8wamxl83xn51fs6gn2a8cxsx9vkbvcvj";
   };
 
+  patches = lib.optionals (pythonAtLeast "3.10") [
+    # fixes for python 3.10 test suite
+    (fetchpatch {
+      url = "https://github.com/briancurtin/deprecation/pull/57/commits/e13e23068cb8d653a02a434a159e8b0b7226ffd6.patch";
+      sha256 = "sha256-/5zr2V1s5ULUZnbLXsgyHxZH4m7/a27QYuqQt2Savc8=";
+      includes = [ "tests/test_deprecation.py" ];
+    })
+  ];
+
   propagatedBuildInputs = [ packaging ];
 
-  checkInputs = [ unittest2 ];
+  # avoiding mass rebuilds for python3.9, but no longer
+  # needed with patch
+  checkInputs = lib.optional (pythonOlder "3.10") [
+    unittest2
+  ];
 
   checkPhase = ''
     ${python.interpreter} -m unittest discover
diff --git a/pkgs/development/python-modules/deskcon/default.nix b/pkgs/development/python-modules/deskcon/default.nix
deleted file mode 100644
index a3e061ce3af57..0000000000000
--- a/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/pkgs/development/python-modules/devolo-home-control-api/default.nix b/pkgs/development/python-modules/devolo-home-control-api/default.nix
index b71ce7c6c271d..badbd3afbdb6f 100644
--- a/pkgs/development/python-modules/devolo-home-control-api/default.nix
+++ b/pkgs/development/python-modules/devolo-home-control-api/default.nix
@@ -5,6 +5,7 @@
 , pytestCheckHook
 , pythonOlder
 , requests
+, setuptools-scm
 , websocket-client
 , zeroconf
 }:
@@ -21,6 +22,12 @@ buildPythonPackage rec {
     sha256 = "sha256-N/48Q2IEL194vCzrPPuy+mRNejXfkoXy2t2oe0Y6ug4=";
   };
 
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [
     requests
     zeroconf
@@ -32,13 +39,6 @@ buildPythonPackage rec {
     pytest-mock
   ];
 
-  postPatch = ''
-    # setup.py is not able to detect the version with setuptools_scm
-    substituteInPlace setup.py \
-      --replace "setuptools_scm" "" \
-      --replace 'use_scm_version=True' 'use_scm_version="${version}"'
-  '';
-
   # Disable test that requires network access
   disabledTests = [
     "test__on_pong"
diff --git a/pkgs/development/python-modules/devolo-plc-api/default.nix b/pkgs/development/python-modules/devolo-plc-api/default.nix
index 5abe989e98d50..4fbc0f06fc43b 100644
--- a/pkgs/development/python-modules/devolo-plc-api/default.nix
+++ b/pkgs/development/python-modules/devolo-plc-api/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, fetchpatch
 , httpx
 , protobuf
 , pytest-asyncio
@@ -14,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "devolo-plc-api";
-  version = "0.7.0";
+  version = "0.7.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -23,7 +24,7 @@ buildPythonPackage rec {
     owner = "2Fake";
     repo = "devolo_plc_api";
     rev = "v${version}";
-    sha256 = "sha256-qzjH52bKQ/oSFd580V92uE2/Z2g+2nLh/JXOXYqVfSY=";
+    sha256 = "sha256-XR/daDrnfbLBrUTTMFYtndr6+RxPwnF4qbXAdXsXKHk=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
@@ -38,7 +39,6 @@ buildPythonPackage rec {
     zeroconf
   ];
 
-
   checkInputs = [
     pytest-asyncio
     pytest-httpx
@@ -46,6 +46,8 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+
+
   pythonImportsCheck = [
     "devolo_plc_api"
   ];
diff --git a/pkgs/development/python-modules/devtools/default.nix b/pkgs/development/python-modules/devtools/default.nix
index 98f446315d913..5d4f0871bf78f 100644
--- a/pkgs/development/python-modules/devtools/default.nix
+++ b/pkgs/development/python-modules/devtools/default.nix
@@ -37,6 +37,8 @@ buildPythonPackage rec {
   disabledTests = [
     # Test for Windows32
     "test_print_subprocess"
+    # sensitive to timing
+    "test_multiple_not_verbose"
   ];
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/diagrams/default.nix b/pkgs/development/python-modules/diagrams/default.nix
index e015a6522d6e3..84d98d091356e 100644
--- a/pkgs/development/python-modules/diagrams/default.nix
+++ b/pkgs/development/python-modules/diagrams/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "diagrams";
-  version = "0.20.0";
+  version = "0.21.1";
   format = "pyproject";
   disabled = pythonOlder "3.6";
 
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "mingrammer";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1lcqsy3bvlnlnakjysp8qjhy26bhkp1izi5dvzq2fpsffgxk4si4";
+    sha256 = "sha256-YoXV5ikkBCSVyGmzEqp+7JLy82d7z9sbwS+U/EN3BFk=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/diceware/default.nix b/pkgs/development/python-modules/diceware/default.nix
index d519aa76c8b1b..5655e18bae10f 100644
--- a/pkgs/development/python-modules/diceware/default.nix
+++ b/pkgs/development/python-modules/diceware/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "diceware";
-  version = "0.9.6";
+  version = "0.10";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0klb0ysybzlh2wihvir82hgq62v0jjmlcqklwajyms7c0p529yby";
+    sha256 = "sha256-srTMm1n1aNLvUb/fn34a+UHSX7j1wl8XAZHburzpZWk=";
   };
 
   nativeBuildInputs = [ pytest-runner ];
diff --git a/pkgs/development/python-modules/dict2xml/default.nix b/pkgs/development/python-modules/dict2xml/default.nix
index 457e9d3e530bd..a51ec5303cd2e 100644
--- a/pkgs/development/python-modules/dict2xml/default.nix
+++ b/pkgs/development/python-modules/dict2xml/default.nix
@@ -1,18 +1,27 @@
-{ lib, fetchPypi, buildPythonPackage, six }:
+{ lib
+, fetchPypi
+, buildPythonPackage
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "dict2xml";
-  version = "1.7.0";
+  version = "1.7.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0bfn8n8sb3slwx7ra8m8fbfy65k20h2qxcqfq99hwqrrkgcffihl";
+    hash = "sha256-ZgCqMx8X7uODNhH3GJmkOnZhLKdVoVdpzyBJLEsaoBY=";
   };
 
-  propagatedBuildInputs = [ six ];
+  pythonImportsCheck = [
+    "dict2xml"
+  ];
 
   meta = with lib; {
-    description = "Super simple library to convert a Python dictionary into an xml string";
+    description = "Library to convert a Python dictionary into an XML string";
     homepage = "https://github.com/delfick/python-dict2xml";
     license = licenses.mit;
     maintainers = with maintainers; [ johnazoidberg ];
diff --git a/pkgs/development/python-modules/dictdiffer/default.nix b/pkgs/development/python-modules/dictdiffer/default.nix
new file mode 100644
index 0000000000000..5e043e55f853e
--- /dev/null
+++ b/pkgs/development/python-modules/dictdiffer/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+, setuptools-scm
+}:
+
+buildPythonPackage rec {
+  pname = "dictdiffer";
+  version = "0.9.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "inveniosoftware";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-lQyPs3lQWtsvNPuvvwJUTDzrFaOX5uwGuRHe3yWUheU=";
+  };
+
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "'pytest-runner>=2.7'," ""
+    substituteInPlace pytest.ini \
+      --replace ' --isort --pydocstyle --pycodestyle --doctest-glob="*.rst" --doctest-modules --cov=dictdiffer --cov-report=term-missing' ""
+  '';
+
+  pythonImportsCheck = [
+    "dictdiffer"
+  ];
+
+  meta = with lib; {
+    description = "Module to diff and patch dictionaries";
+    homepage = "https://github.com/inveniosoftware/dictdiffer";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/diff-cover/default.nix b/pkgs/development/python-modules/diff-cover/default.nix
index 7a9e1205979a6..5414f7522dbea 100644
--- a/pkgs/development/python-modules/diff-cover/default.nix
+++ b/pkgs/development/python-modules/diff-cover/default.nix
@@ -2,51 +2,61 @@
 , buildPythonPackage
 , chardet
 , fetchPypi
-, inflect
 , jinja2
 , jinja2_pluralize
+, pluggy
 , pycodestyle
 , pyflakes
 , pygments
 , pylint
+, pytest-datadir
 , pytest-mock
 , pytestCheckHook
 , pythonOlder
+, tomli
 }:
 
 buildPythonPackage rec {
   pname = "diff-cover";
-  version = "5.4.0";
+  version = "6.4.4";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     pname = "diff_cover";
     inherit version;
-    sha256 = "sha256-4iQ9/QcXh/lW8HE6wFZWc6Y57xhAEWu2TQnIUZJNAMs=";
+    sha256 = "b1d782c1ce53ad4b2c5545f8b7aa799eb61a0b12a62b376a18e2313c6f2d77f1";
   };
 
   propagatedBuildInputs = [
     chardet
-    inflect
     jinja2
     jinja2_pluralize
+    pluggy
     pygments
+    tomli
   ];
 
   checkInputs = [
     pycodestyle
     pyflakes
     pylint
+    pytest-datadir
     pytest-mock
     pytestCheckHook
   ];
 
   disabledTests = [
-    "added_file_pylint_console"
+    # Tests check for flake8
     "file_does_not_exist"
+    # AssertionError: assert '.c { color:...
+    "test_style_defs"
   ];
 
-  pythonImportsCheck = [ "diff_cover" ];
+  pythonImportsCheck = [
+    "diff_cover"
+  ];
 
   meta = with lib; {
     description = "Automatically find diff lines that need test coverage";
diff --git a/pkgs/development/python-modules/diofant/default.nix b/pkgs/development/python-modules/diofant/default.nix
index 5a2e6e60b8302..89cf7d910127e 100644
--- a/pkgs/development/python-modules/diofant/default.nix
+++ b/pkgs/development/python-modules/diofant/default.nix
@@ -12,13 +12,14 @@
 
 buildPythonPackage rec {
   pname = "diofant";
-  version = "0.12.0";
+  version = "0.13.0";
   disabled = pythonOlder "3.9";
+  format = "pyproject";
 
   src = fetchPypi {
     inherit version;
     pname = "Diofant";
-    sha256 = "sha256-G0CTSoDSduiWxlrk5XjnX5ldNZ9f7yxaJeUPO3ezJgo=";
+    sha256 = "bac9e086a7156b20f18e3291d6db34e305338039a3c782c585302d377b74dd3c";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/discogs-client/default.nix b/pkgs/development/python-modules/discogs-client/default.nix
index e47922f9577aa..f4940cf7c6153 100644
--- a/pkgs/development/python-modules/discogs-client/default.nix
+++ b/pkgs/development/python-modules/discogs-client/default.nix
@@ -5,18 +5,21 @@
 , oauthlib
 , python-dateutil
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "discogs-client";
-  version = "2.3.12";
+  version = "2.3.13";
+  format = "setuptools";
 
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "joalla";
     repo = "discogs_client";
     rev = "v${version}";
-    sha256 = "0y553x8rkgmqqg980n62pwdxbp75xalkhlb6k5g0cms42ggy5fsc";
+    sha256 = "sha256-TOja0pCJv8TAI0ns8M/tamZ5Pp8k5sSKDnvN4SeKtW8=";
   };
 
   propagatedBuildInputs = [
@@ -29,7 +32,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "discogs_client" ];
+  pythonImportsCheck = [
+    "discogs_client"
+  ];
 
   meta = with lib; {
     description = "Unofficial Python API client for Discogs";
diff --git a/pkgs/development/python-modules/discovery30303/default.nix b/pkgs/development/python-modules/discovery30303/default.nix
new file mode 100644
index 0000000000000..49de32439d12a
--- /dev/null
+++ b/pkgs/development/python-modules/discovery30303/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, poetry-core
+, pytest-asyncio
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "discovery30303";
+  version = "0.2.1";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "bdraco";
+    repo = pname;
+    # Commit points to 0.2.1, https://github.com/bdraco/discovery30303/issues/1
+    rev = "0d0b0fdca1a98662dd2e6174d25853703bd6bf07";
+    hash = "sha256-WSVMhiJxASxAkxs6RGuAVvEFS8TPxDKE9M99Rp8HKGM=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  checkInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace " --cov=discovery30303" ""
+  '';
+
+  pythonImportsCheck = [
+    "discovery30303"
+  ];
+
+  meta = with lib; {
+    description = "Module to discover devices that respond on port 30303";
+    homepage = "https://github.com/bdraco/discovery30303";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/diskcache/default.nix b/pkgs/development/python-modules/diskcache/default.nix
index 457ab077a0ce1..26cb0e438f01c 100644
--- a/pkgs/development/python-modules/diskcache/default.nix
+++ b/pkgs/development/python-modules/diskcache/default.nix
@@ -1,50 +1,62 @@
-{ stdenv
-, lib
+{ lib
+, stdenv
 , buildPythonPackage
 , fetchFromGitHub
-, pytestCheckHook
-, pytest-cov
-, pytest-xdist
 , pytest-django
-, mock
+, pytest-xdist
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "diskcache";
-  version = "5.2.1";
+  version = "5.4.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "grantjenks";
     repo = "python-diskcache";
     rev = "v${version}";
-    sha256 = "sha256-dWtEyyWpg0rxEwyhBdPyApzgS9o60HVGbtY76ELHvX8=";
+    hash = "sha256-c/k8mx/T4RkseDobJ2gtcuom0A6Ewyw4aP2Bk9pxV+o=";
   };
 
   checkInputs = [
-    pytestCheckHook
-    pytest-cov
-    pytest-xdist
     pytest-django
-    mock
+    pytest-xdist
+    pytestCheckHook
   ];
 
-  # Darwin sandbox causes most tests to fail.
+  postPatch = ''
+    sed -i "/--cov/d" tox.ini
+  '';
+
+  # Darwin sandbox causes most tests to fail
   doCheck = !stdenv.isDarwin;
-  pythonImportsCheck = [ "diskcache" ];
 
   disabledTests = [
-    # very time sensitive, can fail on over subscribed machines
+    # Very time sensitive, can fail on over subscribed machines
     "test_incr_update_keyerror"
+    # AssertionError: 'default' is not None
+    "test_decr_version"
+    "test_incr_version"
+    "test_get_or_set"
+    "test_get_many"
   ];
 
   pytestFlagsArray = [
     "-n $NIX_BUILD_CORES"
   ];
 
+  pythonImportsCheck = [
+    "diskcache"
+  ];
+
   meta = with lib; {
     description = "Disk and file backed persistent cache";
     homepage = "http://www.grantjenks.com/docs/diskcache/";
     license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/pkgs/development/python-modules/distlib/default.nix b/pkgs/development/python-modules/distlib/default.nix
index 1c565b3f158bd..ec4e8ecdc6f56 100644
--- a/pkgs/development/python-modules/distlib/default.nix
+++ b/pkgs/development/python-modules/distlib/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "distlib";
-  version = "0.3.3";
+  version = "0.3.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d982d0751ff6eaaab5e2ec8e691d949ee80eddf01a62eaa96ddb11531fe16b05";
+    sha256 = "e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579";
     extension = "zip";
   };
 
diff --git a/pkgs/development/python-modules/distributed/default.nix b/pkgs/development/python-modules/distributed/default.nix
index 6dfb531a78b67..08e38f2a14982 100644
--- a/pkgs/development/python-modules/distributed/default.nix
+++ b/pkgs/development/python-modules/distributed/default.nix
@@ -19,13 +19,13 @@
 
 buildPythonPackage rec {
   pname = "distributed";
-  version = "2021.11.2";
+  version = "2021.12.0";
   disabled = pythonOlder "3.6";
 
   # get full repository need conftest.py to run tests
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f86a01a2e1e678865d2e42300c47552b5012cd81a2d354e47827a1fd074cc302";
+    sha256 = "c6119a2cf1fb2d8ac60337915bb9a790af6530afcb5d7a809a3308323b874714";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/dj-email-url/default.nix b/pkgs/development/python-modules/dj-email-url/default.nix
index ee2d8e2f21e8c..b10b8ec931360 100644
--- a/pkgs/development/python-modules/dj-email-url/default.nix
+++ b/pkgs/development/python-modules/dj-email-url/default.nix
@@ -5,12 +5,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.0.2";
+  version = "1.0.5";
   pname = "dj-email-url";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "838fd4ded9deba53ae757debef431e25fa7fca31d3948b3c4808ccdc84fab2b7";
+    sha256 = "sha256-7zb4oyTsV8875cen70TtaQDKAghiSpGKszrcHPZCezk=";
   };
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/django-allauth/default.nix b/pkgs/development/python-modules/django-allauth/default.nix
index 143e76cf0d87b..a68cfd6d9cdfe 100644
--- a/pkgs/development/python-modules/django-allauth/default.nix
+++ b/pkgs/development/python-modules/django-allauth/default.nix
@@ -3,14 +3,14 @@
 
 buildPythonPackage rec {
   pname = "django-allauth";
-  version = "0.40.0";
+  version = "0.47.0";
 
   # no tests on PyPI
   src = fetchFromGitHub {
     owner = "pennersr";
     repo = pname;
     rev = version;
-    sha256 = "10id4k01p1hg5agb8cmllg8mv4kc7ryl75br10idwxabqqp4vla1";
+    sha256 = "sha256-wKrsute6TCl331UrxNEBf/zTtGnyGHsOZQwdiicbg2o=";
   };
 
   propagatedBuildInputs = [ requests requests_oauthlib django python3-openid ];
diff --git a/pkgs/development/python-modules/django-anymail/default.nix b/pkgs/development/python-modules/django-anymail/default.nix
index 06dd78989fe0e..86134f9d17899 100644
--- a/pkgs/development/python-modules/django-anymail/default.nix
+++ b/pkgs/development/python-modules/django-anymail/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "django-anymail";
-  version = "8.4";
+  version = "8.5";
 
   src = fetchFromGitHub {
     owner = "anymail";
     repo = pname;
     rev = "v${version}";
-    sha256 = "08ac24hrafkk1jg3milfjky3qni1cz5qggp1rgzq9r7ina4akjma";
+    sha256 = "1p2c7hf9baxr8khk8h7y8d38imw4zm920dgd9nbda18vlh7gpbcf";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/django-auth-ldap/default.nix b/pkgs/development/python-modules/django-auth-ldap/default.nix
index ab329cd37aba5..ffd4796f2a570 100644
--- a/pkgs/development/python-modules/django-auth-ldap/default.nix
+++ b/pkgs/development/python-modules/django-auth-ldap/default.nix
@@ -1,25 +1,51 @@
 { lib
 , buildPythonPackage
-, fetchPypi, isPy27
-, ldap , django
-, mock
+, fetchPypi
+, isPy27
+
+# buildtime
+, setuptools-scm
+
+# runtime
+, ldap
+, django
+
+# tests
+, python
+, pkgs
 }:
 
 buildPythonPackage rec {
   pname = "django-auth-ldap";
-  version = "3.0.0";
+  version = "4.0.0";
+  format = "pyproject";
+
   disabled = isPy27;
+
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1f2d5c562d9ba9a5e9a64099ae9798e1a63840a11afe4d1c4a9c74121f066eaa";
+    sha256 = "276f79e624ce083ce13f161387f65ff1c0efe83ef8a42f2b9830d43317b15239";
   };
 
-  propagatedBuildInputs = [ ldap django ];
-  checkInputs = [ mock ];
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    django
+    ldap
+  ];
 
-  # django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings
+  # ValueError: SCHEMADIR is None, ldap schemas are missing.
   doCheck = false;
 
+  checkPhase = ''
+    runHook preCheck
+    export PATH=${pkgs.openldap}/bin:${pkgs.openldap}/libexec:$PATH
+    ${python.interpreter} -m django test --settings tests.settings
+    runHook postCheck
+  '';
+
   pythonImportsCheck = [ "django_auth_ldap" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/django-cleanup/default.nix b/pkgs/development/python-modules/django-cleanup/default.nix
index 240598cf18415..9a399ed6ed94a 100644
--- a/pkgs/development/python-modules/django-cleanup/default.nix
+++ b/pkgs/development/python-modules/django-cleanup/default.nix
@@ -3,10 +3,10 @@
 
 buildPythonPackage rec {
   pname = "django-cleanup";
-  version = "5.2.0";
+  version = "6.0.0";
   src = fetchPypi {
     inherit pname version;
-    sha256 = "909d10ff574f5ce1a40fa63bd5c94c9ed866fd7ae770994c46cdf66c3db3e846";
+    sha256 = "922e06ef8839c92bd3ab37a84db6058b8764f3fe44dbb4487bbca941d288280a";
   };
 
   checkInputs = [ django ];
diff --git a/pkgs/development/python-modules/django-debug-toolbar/default.nix b/pkgs/development/python-modules/django-debug-toolbar/default.nix
index 68451cc8d8dbb..f67ea344be92c 100644
--- a/pkgs/development/python-modules/django-debug-toolbar/default.nix
+++ b/pkgs/development/python-modules/django-debug-toolbar/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "django-debug-toolbar";
-  version = "3.2.2";
+  version = "3.2.4";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "jazzband";
     repo = pname;
     rev = version;
-    sha256 = "1dgb3s449nasbnqd5xfikxrfhwwilwlgrw9nv4bfkapvkzpdszjk";
+    sha256 = "1008yzxxs1cp1wc0xcc9xskc3f7naxc4srv1sikiank1bc3479ha";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/django-extensions/default.nix b/pkgs/development/python-modules/django-extensions/default.nix
index 541f0434ec007..c4b023886935f 100644
--- a/pkgs/development/python-modules/django-extensions/default.nix
+++ b/pkgs/development/python-modules/django-extensions/default.nix
@@ -1,59 +1,54 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, django
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, django
 , factory_boy
-, glibcLocales
 , mock
 , pygments
-, pytest
-, pytest-cov
 , pytest-django
-, python-dateutil
+, pytestCheckHook
 , shortuuid
-, six
-, tox
-, typing ? null
 , vobject
 , werkzeug
 }:
 
 buildPythonPackage rec {
   pname = "django-extensions";
-  version = "3.1.3";
+  version = "3.1.5";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "03mhikhh49z8bxajbjf1j790b9c9vl4zf4f86iwz7g0zrd7jqlvm";
+    sha256 = "sha256-NAMa78KhAuoJfp0Cb0Codz84sRfRQ1JhSLNYRI4GBPM=";
   };
 
-  LC_ALL = "en_US.UTF-8";
-  __darwinAllowLocalNetworking = true;
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "--cov=django_extensions --cov-report html --cov-report term" ""
+  '';
 
-  propagatedBuildInputs = [ six ]
-    ++ lib.optional (pythonOlder "3.5") typing;
+  propagatedBuildInputs = [
+    django
+  ];
+
+  __darwinAllowLocalNetworking = true;
 
   checkInputs = [
-    django
     factory_boy
-    glibcLocales
     mock
     pygments # not explicitly declared in setup.py, but some tests require it
-    pytest
-    pytest-cov
     pytest-django
-    python-dateutil
+    pytestCheckHook
     shortuuid
-    tox
     vobject
     werkzeug
   ];
 
-  # remove tests that need network access
-  checkPhase = ''
-    rm tests/management/commands/test_pipchecker.py
-    DJANGO_SETTINGS_MODULE=tests.testapp.settings \
-      pytest django_extensions tests
-  '';
+  disabledTestPaths = [
+    # requires network access
+    "tests/management/commands/test_pipchecker.py"
+  ];
 
   meta = with lib; {
     description = "A collection of custom extensions for the Django Framework";
diff --git a/pkgs/development/python-modules/django-maintenance-mode/default.nix b/pkgs/development/python-modules/django-maintenance-mode/default.nix
index b4d90da08808a..86bcc85eb0ae5 100644
--- a/pkgs/development/python-modules/django-maintenance-mode/default.nix
+++ b/pkgs/development/python-modules/django-maintenance-mode/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "django-maintenance-mode";
-  version = "0.14.0";
+  version = "0.16.2";
 
   src = fetchFromGitHub {
     owner = "fabiocaccamo";
     repo = pname;
     rev = version;
-    sha256 = "1k06fhqd8wyrkp795x5j2r328l2phqgg1m1qm7fh4l2qrha43aw6";
+    sha256 = "0krcq04pf4g50q88l7q1wc53jgkhjmvif3acghfqq8c3s2y7mbz7";
   };
 
   checkInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/django-oauth-toolkit/default.nix b/pkgs/development/python-modules/django-oauth-toolkit/default.nix
index e7cb4814cb48e..eca67211671c4 100644
--- a/pkgs/development/python-modules/django-oauth-toolkit/default.nix
+++ b/pkgs/development/python-modules/django-oauth-toolkit/default.nix
@@ -1,22 +1,58 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, django, requests, oauthlib
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+
+# propagates
+, django
+, jwcrypto
+, requests
+, oauthlib
+
+# tests
+, djangorestframework
+, pytest-django
+, pytest-xdist
+, pytest-mock
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "django-oauth-toolkit";
-  version = "1.2.0";
+  version = "1.7.0";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "jazzband";
     repo = pname;
     rev = version;
-    sha256 = "1zbksxrcxlqnapmlvx4rgvpqc4plgnq0xnf45cjwzwi1626zs8g6";
+    sha256 = "0rp7pjif54yvdxfxn0pnf8ha3fjxspnx1ijyr1f8npwk2x5vnvhb";
   };
 
-  propagatedBuildInputs = [ django requests oauthlib ];
+  postPatch = ''
+    sed -i '/cov/d' tox.ini
+  '';
+
+  propagatedBuildInputs = [
+    django
+    jwcrypto
+    oauthlib
+    requests
+  ];
+
+  DJANGO_SETTINGS_MODULE = "tests.settings";
+
+  checkInputs = [
+    djangorestframework
+    pytest-django
+    pytest-xdist
+    pytest-mock
+    pytestCheckHook
+  ];
 
-  # django.core.exceptions.ImproperlyConfigured: Requested setting OAUTH2_PROVIDER, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings
-  doCheck = false;
+  disabledTests = [
+    # Failed to get a valid response from authentication server. Status code: 404, Reason: Not Found.
+    "test_response_when_auth_server_response_return_404"
+  ];
 
   meta = with lib; {
     description = "OAuth2 goodies for the Djangonauts";
diff --git a/pkgs/development/python-modules/django-redis/default.nix b/pkgs/development/python-modules/django-redis/default.nix
index b088876b3e4af..1ad52e22d0ffe 100644
--- a/pkgs/development/python-modules/django-redis/default.nix
+++ b/pkgs/development/python-modules/django-redis/default.nix
@@ -19,7 +19,7 @@
 
 let
   pname = "django-redis";
-  version = "5.1.0";
+  version = "5.2.0";
 in
 buildPythonPackage {
   inherit pname version;
@@ -30,7 +30,7 @@ buildPythonPackage {
     owner = "jazzband";
     repo = "django-redis";
     rev = version;
-    sha256 = "sha256-S94qH2W5e65yzGfPxpwBUKhvvVS0Uc/zSyo66bnvzf4=";
+    sha256 = "sha256-e8wCgfxBT+WKFY4H83CTMirTpQym3QAoeWnXbRCDO90=";
   };
 
   postPatch = ''
@@ -53,6 +53,11 @@ buildPythonPackage {
 
   preCheck = ''
     ${pkgs.redis}/bin/redis-server &
+    REDIS_PID=$!
+  '';
+
+  postCheck = ''
+    kill $REDIS_PID
   '';
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/django-taggit/default.nix b/pkgs/development/python-modules/django-taggit/default.nix
index 7f7cfd2b4bcbd..9fa31b871e7e0 100644
--- a/pkgs/development/python-modules/django-taggit/default.nix
+++ b/pkgs/development/python-modules/django-taggit/default.nix
@@ -9,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "django-taggit";
-  version = "1.5.1";
+  version = "2.1.0";
   format = "setuptools";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e5bb62891f458d55332e36a32e19c08d20142c43f74bc5656c803f8af25c084a";
+    sha256 = "a9f41e4ad58efe4b28d86f274728ee87eb98eeae90c9eb4b4efad39e5068184e";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/django-timezone-field/default.nix b/pkgs/development/python-modules/django-timezone-field/default.nix
index 0bbdac356cd03..5d43afc779492 100644
--- a/pkgs/development/python-modules/django-timezone-field/default.nix
+++ b/pkgs/development/python-modules/django-timezone-field/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "django-timezone-field";
-  version = "4.2.1";
+  version = "4.2.3";
   format = "setuptools";
   disabled = pythonOlder "3.5";
 
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "mfogel";
     repo = pname;
     rev = version;
-    sha256 = "0swld4168pfhppr9q3i9r062l832cmmx792kkvlcvxfbdhk6qz9h";
+    sha256 = "sha256-purzXzPvnYNVsASsK6s9m4XieUL80FOjeSbUP4bpRj8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/django-widget-tweaks/default.nix b/pkgs/development/python-modules/django-widget-tweaks/default.nix
index 853e12327d327..63e575b634549 100644
--- a/pkgs/development/python-modules/django-widget-tweaks/default.nix
+++ b/pkgs/development/python-modules/django-widget-tweaks/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "django-widget-tweaks";
-  version = "1.4.8";
+  version = "1.4.12";
 
   src = fetchFromGitHub { # package from Pypi missing runtests.py
     owner = "jazzband";
     repo = pname;
     rev = version;
-    sha256 = "00w1ja56dc7cyw7a3mph69ax6mkch1lsh4p98ijdhzfpjdy36rbg";
+    sha256 = "1rhn2skx287k6nnkxlwvl9snbia6w6z4c2rqg22hwzbz5w05b24h";
   };
 
   checkPhase = "${python.interpreter} runtests.py";
diff --git a/pkgs/development/python-modules/django/2.nix b/pkgs/development/python-modules/django/2.nix
index c1e5139d30157..c4df27beaaa22 100644
--- a/pkgs/development/python-modules/django/2.nix
+++ b/pkgs/development/python-modules/django/2.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "Django";
-  version = "2.2.24";
+  version = "2.2.27";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1dvx3x85lggm91x7mpvaf9nmpxyz7r97pbpnmr2k1qfy0c7gyf9k";
+    sha256 = "sha256-HuNwRrC/K2HoOzoB0GcyNRbsO28rF81JsTJt1LqdyRM=";
   };
 
   patches = lib.optional withGdal
diff --git a/pkgs/development/python-modules/django/3.nix b/pkgs/development/python-modules/django/3.nix
index 9b8aa8cba8f4f..3ed7024c34992 100644
--- a/pkgs/development/python-modules/django/3.nix
+++ b/pkgs/development/python-modules/django/3.nix
@@ -13,13 +13,13 @@
 
 buildPythonPackage rec {
   pname = "Django";
-  version = "3.2.9";
+  version = "3.2.12";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "51284300f1522ffcdb07ccbdf676a307c6678659e1284f0618e5a774127a6a08";
+    sha256 = "sha256-l3Lmk1cD5Z6ZOWCDLWamFM8CM6HFEjvGIk7MataeQeI=";
   };
 
   patches = lib.optional withGdal
diff --git a/pkgs/development/python-modules/django/4.nix b/pkgs/development/python-modules/django/4.nix
new file mode 100644
index 0000000000000..eb24edb4bff14
--- /dev/null
+++ b/pkgs/development/python-modules/django/4.nix
@@ -0,0 +1,107 @@
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, substituteAll
+
+# patched in
+, geos
+, gdal
+, withGdal ? false
+
+# propagated
+, asgiref
+, backports-zoneinfo
+, sqlparse
+
+# tests
+, aiosmtpd
+, argon2_cffi
+, bcrypt
+, docutils
+, geoip2
+, jinja2
+, memcached
+, numpy
+, pillow
+, pylibmc
+, pymemcache
+, python
+, pytz
+, pywatchman
+, pyyaml
+, redis
+, selenium
+, tblib
+, tzdata
+}:
+
+buildPythonPackage rec {
+  pname = "Django";
+  version = "4.0.2";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-EQ+1j7Euylngcq1Z/ELXcc1kLdei8kFlgqqdp6jvlUo=";
+  };
+
+  patches = lib.optional withGdal
+    (substituteAll {
+      src = ./django_4_set_geos_gdal_lib.patch;
+      geos = geos;
+      gdal = gdal;
+      extension = stdenv.hostPlatform.extensions.sharedLibrary;
+    });
+
+  propagatedBuildInputs = [
+    asgiref
+    sqlparse
+  ] ++ lib.optionals (pythonOlder "3.9") [
+    backports-zoneinfo
+  ];
+
+  # Fails to import asgiref in ~200 tests
+  # ModuleNotFoundError: No module named 'asgiref'
+  doCheck = false;
+
+  checkInputs = [
+    aiosmtpd
+    argon2_cffi
+    asgiref
+    bcrypt
+    docutils
+    geoip2
+    jinja2
+    memcached
+    numpy
+    pillow
+    pylibmc
+    pymemcache
+    pytz
+    pywatchman
+    pyyaml
+    redis
+    selenium
+    tblib
+    tzdata
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+
+    ${python.interpreter} tests/runtests.py
+
+    runHook postCheck
+  '';
+
+  meta = with lib; {
+    description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design.";
+    homepage = "https://www.djangoproject.com";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/django/django_4_set_geos_gdal_lib.patch b/pkgs/development/python-modules/django/django_4_set_geos_gdal_lib.patch
new file mode 100644
index 0000000000000..da73a93e8f222
--- /dev/null
+++ b/pkgs/development/python-modules/django/django_4_set_geos_gdal_lib.patch
@@ -0,0 +1,26 @@
+diff --git a/django/contrib/gis/gdal/libgdal.py b/django/contrib/gis/gdal/libgdal.py
+index 05b5732..91fafee 100644
+--- a/django/contrib/gis/gdal/libgdal.py
++++ b/django/contrib/gis/gdal/libgdal.py
+@@ -14,7 +14,7 @@ try:
+     from django.conf import settings
+     lib_path = settings.GDAL_LIBRARY_PATH
+ except (AttributeError, ImportError, ImproperlyConfigured, OSError):
+-    lib_path = None
++    lib_path = ""@gdal@/lib/libgdal@extension@"
+ 
+ if lib_path:
+     lib_names = None
+diff --git a/django/contrib/gis/geos/libgeos.py b/django/contrib/gis/geos/libgeos.py
+index 2cdb5d3..fac2d04 100644
+--- a/django/contrib/gis/geos/libgeos.py
++++ b/django/contrib/gis/geos/libgeos.py
+@@ -24,7 +24,7 @@ def load_geos():
+         from django.conf import settings
+         lib_path = settings.GEOS_LIBRARY_PATH
+     except (AttributeError, ImportError, ImproperlyConfigured, OSError):
+-        lib_path = None
++        lib_path = "@geos@/lib/libgeos_c@extension@"
+ 
+     # Setting the appropriate names for the GEOS-C library.
+     if lib_path:
diff --git a/pkgs/development/python-modules/django_classytags/default.nix b/pkgs/development/python-modules/django_classytags/default.nix
index 2ef8639c17e66..d7d2e8789ae76 100644
--- a/pkgs/development/python-modules/django_classytags/default.nix
+++ b/pkgs/development/python-modules/django_classytags/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "django-classy-tags";
-  version = "2.0.0";
+  version = "3.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d59d98bdf96a764dcf7a2929a86439d023b283a9152492811c7e44fc47555bc9";
+    sha256 = "sha256-0iK0VQKsmeVQpWZmeDnvrvlUucc2amST8UOGKqvqyHg=";
   };
 
   propagatedBuildInputs = [ django six ];
diff --git a/pkgs/development/python-modules/django_evolution/default.nix b/pkgs/development/python-modules/django_evolution/default.nix
deleted file mode 100644
index 16358c54c1a74..0000000000000
--- a/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/pkgs/development/python-modules/django_guardian/default.nix b/pkgs/development/python-modules/django_guardian/default.nix
index 9685e55bb1c3d..c7bda13dd9aba 100644
--- a/pkgs/development/python-modules/django_guardian/default.nix
+++ b/pkgs/development/python-modules/django_guardian/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchPypi
-, django_environ, mock, django
+, django-environ, mock, django
 , pytest, pytest-runner, pytest-django
 }:
 buildPythonPackage rec {
@@ -11,7 +11,7 @@ buildPythonPackage rec {
     sha256 = "c58a68ae76922d33e6bdc0e69af1892097838de56e93e78a8361090bcd9f89a0";
   };
 
-  checkInputs = [ pytest pytest-runner pytest-django django_environ mock ];
+  checkInputs = [ pytest pytest-runner pytest-django django-environ mock ];
   propagatedBuildInputs = [ django ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/django_reversion/default.nix b/pkgs/development/python-modules/django_reversion/default.nix
index 97836b247a33d..1bf4d6b4dab55 100644
--- a/pkgs/development/python-modules/django_reversion/default.nix
+++ b/pkgs/development/python-modules/django_reversion/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "django-reversion";
-  version = "4.0.1";
+  version = "4.0.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6991f16e5d3a972912db3d56e3a714d10b07becd566ab87f85f2e9b671981339";
+    sha256 = "sha256-XTO6lE2/GccDDJ5w43MSSK40Nozyr+3hDg0I+/ieb4w=";
   };
 
   # tests assume the availability of a mysql/postgresql database
diff --git a/pkgs/development/python-modules/djangoql/default.nix b/pkgs/development/python-modules/djangoql/default.nix
index facfc2fafcdbc..f0550a296aa9f 100644
--- a/pkgs/development/python-modules/djangoql/default.nix
+++ b/pkgs/development/python-modules/djangoql/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "djangoql";
-  version = "0.16.0";
+  version = "0.17.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "23cea52eca76e605fa2f34b13ae8d2bf60240737ee9ed3f60c667a4f64d28adf";
+    sha256 = "sha256-TwU9ASjij0EpJuLakCc19L3Lq1wI1Dvk3+/XR/yi6W4=";
   };
 
   propagatedBuildInputs = [ ply ];
diff --git a/pkgs/development/python-modules/dm-haiku/default.nix b/pkgs/development/python-modules/dm-haiku/default.nix
new file mode 100644
index 0000000000000..14ceebf0a19b3
--- /dev/null
+++ b/pkgs/development/python-modules/dm-haiku/default.nix
@@ -0,0 +1,61 @@
+{ buildPythonPackage
+, chex
+, cloudpickle
+, dill
+, dm-tree
+, fetchFromGitHub
+, jaxlib
+, jmp
+, lib
+, pytestCheckHook
+, tabulate
+, tensorflow
+}:
+
+buildPythonPackage rec {
+  pname = "dm-haiku";
+  version = "0.0.5";
+
+  src = fetchFromGitHub {
+    owner = "deepmind";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1mdqjcka0m1div63ngba8w8z94id4c1h8xqmnq1xpmgkc79224wa";
+  };
+
+  propagatedBuildInputs = [
+    jmp
+    tabulate
+  ];
+
+  checkInputs = [
+    chex
+    cloudpickle
+    dm-tree
+    jaxlib
+    pytestCheckHook
+    tensorflow
+  ];
+
+  pythonImportsCheck = [
+    "haiku"
+  ];
+
+  disabledTestPaths = [
+    # These tests require `bsuite` which isn't packaged in `nixpkgs`.
+    "examples/impala_lite_test.py"
+    "examples/impala/actor_test.py"
+    "examples/impala/learner_test.py"
+    # This test breaks on multiple cases with TF-related errors,
+    # likely that's the reason the upstream uses TF-nightly for tests?
+    # `nixpkgs` doesn't have the corresponding TF version packaged.
+    "haiku/_src/integration/jax2tf_test.py"
+  ];
+
+  meta = with lib; {
+    description = "Haiku is a simple neural network library for JAX developed by some of the authors of Sonnet.";
+    homepage = "https://github.com/deepmind/dm-haiku";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ndl ];
+  };
+}
diff --git a/pkgs/development/python-modules/dm-sonnet/default.nix b/pkgs/development/python-modules/dm-sonnet/default.nix
index f465ac200d424..3820fdd1e36cb 100644
--- a/pkgs/development/python-modules/dm-sonnet/default.nix
+++ b/pkgs/development/python-modules/dm-sonnet/default.nix
@@ -86,5 +86,6 @@ in buildPythonPackage {
     license = licenses.asl20;
     maintainers = with maintainers; [ timokau ];
     platforms = platforms.linux;
+    broken = true; # depends on older TensorFlow version than is currently packaged
   };
 }
diff --git a/pkgs/development/python-modules/dm-tree/cmake.patch b/pkgs/development/python-modules/dm-tree/cmake.patch
new file mode 100644
index 0000000000000..e5698f457bc34
--- /dev/null
+++ b/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/pkgs/development/python-modules/dm-tree/default.nix b/pkgs/development/python-modules/dm-tree/default.nix
index 81eb101399ae7..307e932aae397 100644
--- a/pkgs/development/python-modules/dm-tree/default.nix
+++ b/pkgs/development/python-modules/dm-tree/default.nix
@@ -1,47 +1,56 @@
-{ autoPatchelfHook
+{ abseil-cpp
+, absl-py
+, attrs
 , buildPythonPackage
-, fetchPypi
-, isPy39
+, cmake
+, fetchFromGitHub
 , lib
-, six
-, stdenv
+, numpy
+, pybind11
+, wrapt
 }:
 
 buildPythonPackage rec {
   pname = "dm-tree";
-  version = "0.1.6";
-  format = "wheel";
-
-  # At the time of writing (8/19/21), there are releases for 3.6-3.9. Supporting
-  # all of them is a pain, so we focus on 3.9, the current nixpkgs python3
-  # version.
-  disabled = !isPy39;
-
-  src = fetchPypi {
-    inherit version format;
-    sha256 = "1f71dy5xa5ywa5chbdhpdf8k0w1v9cvpn3qyk8nnjm79j90la9c4";
-    pname = "dm_tree";
-    dist = "cp39";
-    python = "cp39";
-    abi = "cp39";
-    platform = "manylinux_2_24_x86_64";
+  # 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";
   };
 
-  # Prebuilt wheels are dynamically linked against things that nix can't find.
-  # Run `autoPatchelfHook` to automagically fix them.
-  nativeBuildInputs = [ autoPatchelfHook ];
-  # Dynamic link dependencies
-  buildInputs = [ stdenv.cc.cc ];
+  patches = [
+    ./cmake.patch
+  ];
+
+  dontUseCmakeConfigure = true;
+
+  nativeBuildInputs = [
+    cmake
+    pybind11
+  ];
+
+  buildInputs = [
+    abseil-cpp
+    pybind11
+  ];
 
-  propagatedBuildInputs = [ six ];
+  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 ];
-    platforms = [ "x86_64-linux" ];
+    homepage = "https://github.com/deepmind/tree";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ samuela ndl ];
   };
 }
diff --git a/pkgs/development/python-modules/dnslib/default.nix b/pkgs/development/python-modules/dnslib/default.nix
index 7e0402999f03d..0f4ec03f5ff37 100644
--- a/pkgs/development/python-modules/dnslib/default.nix
+++ b/pkgs/development/python-modules/dnslib/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "dnslib";
-  version = "0.9.16";
+  version = "0.9.19";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2d66b43d563d60c469117c8cb615843e7d05bf8fb2e6cb00a637281d26b7ec7d";
+    sha256 = "a6e36ca96c289e2cb4ac6aa05c037cbef318401ba8ff04a8676892ca79749c77";
   };
 
   checkPhase = "VERSIONS=${python.interpreter} ./run_tests.sh";
diff --git a/pkgs/development/python-modules/dnspython/1.nix b/pkgs/development/python-modules/dnspython/1.nix
deleted file mode 100644
index d4015f1f4ab6c..0000000000000
--- a/pkgs/development/python-modules/dnspython/1.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-}:
-
-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/pkgs/development/python-modules/dnspython/default.nix b/pkgs/development/python-modules/dnspython/default.nix
index 56e69aac04436..40b3d7a36dec6 100644
--- a/pkgs/development/python-modules/dnspython/default.nix
+++ b/pkgs/development/python-modules/dnspython/default.nix
@@ -2,26 +2,40 @@
 , buildPythonPackage
 , fetchPypi
 , pythonOlder
+, setuptools-scm
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "dnspython";
-  version = "2.1.0";
+  version = "2.2.0";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    extension = "zip";
-    sha256 = "e4a87f0b573201a0f3727fa18a516b055fd1107e0e5477cded4a2de497df1dd4";
+    extension = "tar.gz";
+    sha256 = "1mi6l2n766y1gic3x1swp2jk2nr7wbkb191qinwhddnh6bh534z7";
   };
 
-  # needs networking for some tests
-  doCheck = false;
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # dns.exception.SyntaxError: protocol not found
+    "test_misc_good_WKS_text"
+  ];
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   pythonImportsCheck = [ "dns" ];
 
   meta = with lib; {
     description = "A DNS toolkit for Python";
-    homepage = "http://www.dnspython.org";
+    homepage = "https://www.dnspython.org";
     license = with licenses; [ isc ];
+    maintainers = with maintainers; [ gador ];
   };
 }
diff --git a/pkgs/development/python-modules/doc8/default.nix b/pkgs/development/python-modules/doc8/default.nix
index dbfb857614e19..61c4ca6890a15 100644
--- a/pkgs/development/python-modules/doc8/default.nix
+++ b/pkgs/development/python-modules/doc8/default.nix
@@ -8,6 +8,7 @@
 , pytestCheckHook
 , pythonOlder
 , restructuredtext_lint
+, setuptools-scm
 , stevedore
 }:
 
@@ -23,6 +24,10 @@ buildPythonPackage rec {
     sha256 = "376e50f4e70a1ae935416ddfcf93db35dd5d4cc0e557f2ec72f0667d0ace4548";
   };
 
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   buildInputs = [
     pbr
   ];
diff --git a/pkgs/development/python-modules/docstring-parser/default.nix b/pkgs/development/python-modules/docstring-parser/default.nix
new file mode 100644
index 0000000000000..5408b11c7d8ac
--- /dev/null
+++ b/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/pkgs/development/python-modules/dogpile-cache/default.nix b/pkgs/development/python-modules/dogpile-cache/default.nix
index 5b89c6bdb912d..66e5d5d546866 100644
--- a/pkgs/development/python-modules/dogpile-cache/default.nix
+++ b/pkgs/development/python-modules/dogpile-cache/default.nix
@@ -11,13 +11,13 @@
 
 buildPythonPackage rec {
   pname = "dogpile-cache";
-  version = "1.1.4";
+  version = "1.1.5";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     pname = "dogpile.cache";
     inherit version;
-    sha256 = "ea09bebf24bb7c028caf98963785fe9ad0bd397305849a3303bc5380d468d813";
+    sha256 = "0f01bdc329329a8289af9705ff40fadb1f82a28c336f3174e12142b70d31c756";
   };
 
   preCheck = ''
diff --git a/pkgs/development/python-modules/doit/default.nix b/pkgs/development/python-modules/doit/default.nix
index 4ceb8e71f648a..c1d26bac0f450 100644
--- a/pkgs/development/python-modules/doit/default.nix
+++ b/pkgs/development/python-modules/doit/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "doit";
-  version = "0.33.1";
+  version = "0.34.1";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "37c3b35c2151647b968b2af24481112b2f813c30f695366db0639d529190a143";
+    sha256 = "49467c1bf8850a292e5fd0254ee1b219f6fd8202a0d3d4bf33af3c2dfb58d688";
   };
 
   propagatedBuildInputs = [ cloudpickle ]
diff --git a/pkgs/development/python-modules/downloader-cli/default.nix b/pkgs/development/python-modules/downloader-cli/default.nix
index e0c25c77e53cf..9d99709c9166e 100644
--- a/pkgs/development/python-modules/downloader-cli/default.nix
+++ b/pkgs/development/python-modules/downloader-cli/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "downloader-cli";
-  version = "0.3.1";
+  version = "0.3.2";
 
   src = fetchFromGitHub {
     owner = "deepjyoti30";
     repo = pname;
     rev = version;
-    sha256 = "0gbbjxb9vf5g890cls3mwzl8lmcn6jkpgm5cbrif740mn2b4q228";
+    sha256 = "0hjwy3qa6al6p35pv01sdl3szh7asf6vlmhwjbkpppn4zi239k0y";
   };
 
   propagatedBuildInputs = [ urllib3 ];
diff --git a/pkgs/development/python-modules/dpath/default.nix b/pkgs/development/python-modules/dpath/default.nix
index c9f3d5be6d495..b6f0176dd7378 100644
--- a/pkgs/development/python-modules/dpath/default.nix
+++ b/pkgs/development/python-modules/dpath/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "dpath";
-  version = "2.0.5";
+  version = "2.0.6";
 
   disabled = isPy27; # uses python3 imports
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0kk7wl15r305496q13ka4r6n2r13j99rrrpy2b4575j704dk4x7g";
+    sha256 = "sha256-Wh3a5SIz+8jvgbFfuFBzqBEmu0NpjT86G2qvVhpGzcA=";
   };
 
   # use pytest as nosetests hangs
diff --git a/pkgs/development/python-modules/dragonfly/default.nix b/pkgs/development/python-modules/dragonfly/default.nix
index fb3feaae63ee2..82e1a645c853f 100644
--- a/pkgs/development/python-modules/dragonfly/default.nix
+++ b/pkgs/development/python-modules/dragonfly/default.nix
@@ -5,7 +5,7 @@
 , packaging
 , pynput
 , regex
-, lark-parser
+, lark
 , enum34
 , pyperclip
 , six
@@ -34,7 +34,7 @@ buildPythonPackage rec {
   };
 
   postPatch = ''
-    substituteInPlace setup.py --replace 'lark-parser == 0.8.*' 'lark-parser'
+    substituteInPlace setup.py --replace 'lark-parser == 0.8.*' 'lark'
     substituteInPlace dragonfly/actions/keyboard/_x11_xdotool.py \
       --replace 'xdotool = "xdotool"'${" "}'xdotool = "${xdotool}/bin/xdotool"'
     substituteInPlace dragonfly/windows/x11_window.py \
@@ -48,7 +48,7 @@ buildPythonPackage rec {
     packaging
     pynput
     regex
-    lark-parser
+    lark
     enum34
     pyperclip
     six
diff --git a/pkgs/development/python-modules/drf-jwt/default.nix b/pkgs/development/python-modules/drf-jwt/default.nix
index 2cf125c8df353..1b2292b46b7a1 100644
--- a/pkgs/development/python-modules/drf-jwt/default.nix
+++ b/pkgs/development/python-modules/drf-jwt/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "drf-jwt";
-  version = "1.19.1";
+  version = "1.19.2";
 
   src = fetchFromGitHub {
     owner = "Styria-Digital";
     repo = "django-rest-framework-jwt";
     rev = version;
-    sha256 = "sha256-++8rFXVsA5WMTt+aC4di3Rpa0BAW285/qM087i9uQ0g=";
+    hash = "sha256-bbkk78uYTG+JTzY3AyOmEVtVSgout/TETfr5N5fUto4=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/drms/default.nix b/pkgs/development/python-modules/drms/default.nix
index 1bc5d380b08eb..a081a7445c4a4 100644
--- a/pkgs/development/python-modules/drms/default.nix
+++ b/pkgs/development/python-modules/drms/default.nix
@@ -8,6 +8,7 @@
 , pytestCheckHook
 , pytest-doctestplus
 , pythonOlder
+, setuptools-scm
 }:
 
 buildPythonPackage rec {
@@ -21,6 +22,10 @@ buildPythonPackage rec {
     sha256 = "sha256-Id8rPK8qq71gHn5DKnEi7Lp081GFbcFtGU+v89Vlt9o=";
   };
 
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [
     numpy
     pandas
diff --git a/pkgs/development/python-modules/dropbox/default.nix b/pkgs/development/python-modules/dropbox/default.nix
index e43f7d7f2d1d8..8f53ff4ebbf7f 100644
--- a/pkgs/development/python-modules/dropbox/default.nix
+++ b/pkgs/development/python-modules/dropbox/default.nix
@@ -1,32 +1,51 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, requests, urllib3, mock, setuptools, stone }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, requests
+, urllib3
+, mock
+, setuptools
+, stone
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "dropbox";
-  version = "11.25.0";
+  version = "11.27.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "dropbox";
     repo = "dropbox-sdk-python";
     rev = "v${version}";
-    sha256 = "1ln6m6wiym5608i26abs8a5nm4mnn7s3czhnpg9nyjyndnr7k0xj";
+    sha256 = "sha256-atIrrK4BgTfu0UaHTqJ66AxEeSJLanrmYx8myrOCOfo=";
   };
 
+  propagatedBuildInputs = [
+    requests
+    urllib3
+    mock
+    setuptools
+    stone
+  ];
+
   postPatch = ''
     substituteInPlace setup.py \
       --replace "'pytest-runner == 5.2.0'," ""
   '';
 
-  propagatedBuildInputs = [ requests urllib3 mock setuptools stone ];
-
   # Set DROPBOX_TOKEN environment variable to a valid token.
   doCheck = false;
 
-  pythonImportsCheck = [ "dropbox" ];
+  pythonImportsCheck = [
+    "dropbox"
+  ];
 
   meta = with lib; {
-    description = "A Python library for Dropbox's HTTP-based Core and Datastore APIs";
-    homepage = "https://www.dropbox.com/developers/core/docs";
+    description = "Python library for Dropbox's HTTP-based Core and Datastore APIs";
+    homepage = "https://github.com/dropbox/dropbox-sdk-python";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
   };
diff --git a/pkgs/development/python-modules/dsmr-parser/default.nix b/pkgs/development/python-modules/dsmr-parser/default.nix
index b666e4c210f59..e8a94fb5e859d 100644
--- a/pkgs/development/python-modules/dsmr-parser/default.nix
+++ b/pkgs/development/python-modules/dsmr-parser/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "dsmr-parser";
-  version = "0.31";
+  version = "0.32";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "ndokter";
     repo = "dsmr_parser";
     rev = "v${version}";
-    sha256 = "sha256-A+fyAAV62Dg28RDiivKEjrC1bCXzkuIvpATR+oUytRU=";
+    sha256 = "0hi69gdcmsp5yaspsfbpc3x76iybg20cylxyaxm131fpd5wwan9l";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/dtopt/default.nix b/pkgs/development/python-modules/dtopt/default.nix
deleted file mode 100644
index a5d4675f99309..0000000000000
--- a/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/pkgs/development/python-modules/duckdb/default.nix b/pkgs/development/python-modules/duckdb/default.nix
index fd360bfbd120c..787a54f267699 100644
--- a/pkgs/development/python-modules/duckdb/default.nix
+++ b/pkgs/development/python-modules/duckdb/default.nix
@@ -1,34 +1,26 @@
 { lib
 , buildPythonPackage
 , duckdb
+, mypy
 , numpy
 , pandas
 , pybind11
 , 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/pkgs/development/python-modules/dufte/default.nix b/pkgs/development/python-modules/dufte/default.nix
index b9a96cbc8298e..92081e08067c6 100644
--- a/pkgs/development/python-modules/dufte/default.nix
+++ b/pkgs/development/python-modules/dufte/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "dufte";
-  version = "0.2.27";
+  version = "0.2.29";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "nschloe";
     repo = pname;
-    rev = version;
-    sha256 = "1i68h224hx9clxj3l0rd2yigsi6fqsr3x10vj5hf3j6s69iah7r3";
+    rev = "v${version}";
+    hash = "sha256:0ccsmpj160xj6w503a948aw8icj55mw9414xnmijmmjvlwhm0p48";
   };
   format = "pyproject";
 
@@ -28,6 +28,13 @@ buildPythonPackage rec {
     importlib-metadata
   ];
 
+  preCheck = ''
+    export HOME=$(mktemp -d)
+    mkdir -p $HOME/.config/matplotlib
+    echo "backend: ps" > $HOME/.config/matplotlib/matplotlibrc
+    ln -s $HOME/.config/matplotlib $HOME/.matplotlib
+  '';
+
   checkInputs = [
     pytestCheckHook
   ];
diff --git a/pkgs/development/python-modules/dulwich/0_19.nix b/pkgs/development/python-modules/dulwich/0_19.nix
deleted file mode 100644
index 9a09c7cc75ddf..0000000000000
--- a/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/pkgs/development/python-modules/dulwich/default.nix b/pkgs/development/python-modules/dulwich/default.nix
index a0c7706c2ff18..ad0a853af2267 100644
--- a/pkgs/development/python-modules/dulwich/default.nix
+++ b/pkgs/development/python-modules/dulwich/default.nix
@@ -12,15 +12,19 @@
 , mock
 , pkgs
 , urllib3
+, pythonOlder
 }:
 
 buildPythonPackage rec {
-  version = "0.20.26";
+  version = "0.20.32";
   pname = "dulwich";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-OKpQ+FnI6lMHGgScPx1cxU99xgpBNqGrYxdWp59lgrU=";
+    hash = "sha256-3FSYsHK9wSwe/+9LYgLNKkVCuxxtu03c/IxtU+CLSIw=";
   };
 
   LC_ALL = "en_US.UTF-8";
@@ -43,7 +47,9 @@ buildPythonPackage rec {
 
   doCheck = !stdenv.isDarwin;
 
-  pythonImportsCheck = [ "dulwich" ];
+  pythonImportsCheck = [
+    "dulwich"
+  ];
 
   meta = with lib; {
     description = "Simple Python implementation of the Git file formats and protocols";
diff --git a/pkgs/development/python-modules/dwdwfsapi/default.nix b/pkgs/development/python-modules/dwdwfsapi/default.nix
index 1a68e7474af0c..b6bb2927cc0ce 100644
--- a/pkgs/development/python-modules/dwdwfsapi/default.nix
+++ b/pkgs/development/python-modules/dwdwfsapi/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "dwdwfsapi";
-  version = "1.0.4";
+  version = "1.0.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-JOIg6rLrU8v39z1I6smIPEeiUPdSdJcD2avUsTQq+bU=";
+    sha256 = "8541eb93a6323bec6a2281aa06667e72b02c8e5fac40f899c402089b1c774472";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/dynalite-devices/default.nix b/pkgs/development/python-modules/dynalite-devices/default.nix
new file mode 100644
index 0000000000000..dafbcfc2f5cd0
--- /dev/null
+++ b/pkgs/development/python-modules/dynalite-devices/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, asynctest
+, pytest-asyncio
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "dynalite-devices";
+  version = "0.1.46";
+
+  src = fetchFromGitHub {
+    owner = "ziv1234";
+    repo = "python-dynalite-devices";
+    rev = "v0.46"; # https://github.com/ziv1234/python-dynalite-devices/issues/2
+    hash = "sha256-Fju2JpFkQBCbOln7r3L+crv82TI2SkdPJ1oaK7PEifo=";
+  };
+
+  postPatch = ''
+    sed -i '/^addopts/d' setup.cfg
+  '';
+
+  checkInputs = [
+    asynctest
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "dynalite_devices_lib" ];
+
+  meta = with lib; {
+    description = "An unofficial Dynalite DyNET interface creating devices";
+    homepage = "https://github.com/ziv1234/python-dynalite-devices";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/easy-thumbnails/default.nix b/pkgs/development/python-modules/easy-thumbnails/default.nix
index e896e79908b6c..275d9aa6ef2c4 100644
--- a/pkgs/development/python-modules/easy-thumbnails/default.nix
+++ b/pkgs/development/python-modules/easy-thumbnails/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "easy-thumbnails";
-  version = "2.8";
+  version = "2.8.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "fd2249d936671847fc54a2d6c8c87bcca8f803001967dd03bab6b8bcb7590825";
+    sha256 = "1a283fe8a3569c3feab4605e8279929d75c85c1151b2fd627f95b1863b5fc6c2";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/eebrightbox/default.nix b/pkgs/development/python-modules/eebrightbox/default.nix
deleted file mode 100644
index d8050b9bf5e32..0000000000000
--- a/pkgs/development/python-modules/eebrightbox/default.nix
+++ /dev/null
@@ -1,58 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pbr
-, calmjs-parse
-, certifi
-, chardet
-, idna
-, ply
-, requests
-, urllib3
-, httpretty
-, pytestCheckHook
-}:
-
-buildPythonPackage rec {
-  pname = "eebrightbox";
-  version = "0.0.6";
-
-  src = fetchFromGitHub {
-    owner = "krygal";
-    repo = "eebrightbox";
-    rev = version;
-    sha256 = "1kms240g01871qbvyc5rzf86yxsrlnfvp323jh4k35fpf45z44rr";
-  };
-
-  postPatch = ''
-    substituteInPlace requirements.txt --replace "==" ">="
-  '';
-
-  nativeBuildInputs = [
-    pbr
-  ];
-
-  PBR_VERSION = version;
-
-  propagatedBuildInputs = [
-    calmjs-parse
-    certifi
-    chardet
-    idna
-    ply
-    requests
-    urllib3
-  ];
-
-  checkInputs = [
-    httpretty
-    pytestCheckHook
-  ];
-
-  meta = with lib; {
-    description = "Connector for EE BrightBox routers";
-    homepage = "https://github.com/krygal/eebrightbox";
-    license = licenses.mit;
-    maintainers = with maintainers; [ dotlambda ];
-  };
-}
diff --git a/pkgs/development/python-modules/einops/default.nix b/pkgs/development/python-modules/einops/default.nix
index a2de3a70971d5..18b8d671c98af 100644
--- a/pkgs/development/python-modules/einops/default.nix
+++ b/pkgs/development/python-modules/einops/default.nix
@@ -44,6 +44,11 @@ buildPythonPackage rec {
 
   checkPhase = ''
     export HOME=$TMPDIR
+
+    # Prevent hangs on PyTorch-related tests, see
+    # https://discuss.pytorch.org/t/pytorch-cpu-hangs-on-nn-linear/17748/4
+    export OMP_NUM_THREADS=1
+
     nosetests -v -w tests
   '';
 
diff --git a/pkgs/development/python-modules/eiswarnung/default.nix b/pkgs/development/python-modules/eiswarnung/default.nix
new file mode 100644
index 0000000000000..87ff2a4287ac6
--- /dev/null
+++ b/pkgs/development/python-modules/eiswarnung/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, aiohttp
+, aresponses
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, yarl
+}:
+
+buildPythonPackage rec {
+  pname = "eiswarnung";
+  version = "1.0.0";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "klaasnicolaas";
+    repo = "python-eiswarnung";
+    rev = "v${version}";
+    hash = "sha256-Cw/xRypErasdrOZJ/0dWLl4eYH01vBI9mYm98teIdRc=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    yarl
+  ];
+
+  checkInputs = [
+    aresponses
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace '"0.0.0"' '"${version}"' \
+      --replace 'addopts = "--cov"' ""
+  '';
+
+  pythonImportsCheck = [
+    "eiswarnung"
+  ];
+
+  meta = with lib; {
+    description = "Module for getting Eiswarning API forecasts";
+    homepage = "https://github.com/klaasnicolaas/python-eiswarnung";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/elasticsearch/default.nix b/pkgs/development/python-modules/elasticsearch/default.nix
index 81bc807a13470..73a3882927c2a 100644
--- a/pkgs/development/python-modules/elasticsearch/default.nix
+++ b/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.16.1";
+  version = "7.16.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c024ee2e7e2509c842c4e3c5e2b99a92ceecfde06d6dac2d32a19bf566c3e175";
+    sha256 = "8adf8bc351ed55df7296be1009d38a1c999c0abc7d8700fa88533f1ad6087c5e";
   };
 
   # Check is disabled because running them destroy the content of the local cluster!
diff --git a/pkgs/development/python-modules/elegy/default.nix b/pkgs/development/python-modules/elegy/default.nix
new file mode 100644
index 0000000000000..5b0cb293c0a3e
--- /dev/null
+++ b/pkgs/development/python-modules/elegy/default.nix
@@ -0,0 +1,78 @@
+{ buildPythonPackage
+, cloudpickle
+, deepdish
+, deepmerge
+, dm-haiku
+, fetchFromGitHub
+, jaxlib
+, lib
+, poetry
+, pytestCheckHook
+, pytorch
+, pyyaml
+, sh
+, tables
+, tabulate
+, tensorboardx
+, tensorflow
+, toolz
+, treex
+, typing-extensions
+}:
+
+buildPythonPackage rec {
+  pname = "elegy";
+  version = "0.8.4";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "poets-ai";
+    repo = pname;
+    rev = version;
+    sha256 = "11w8lgl31b52w2qri8j8cgzd30sn8i3769g8nkkshvgkjgca9r4g";
+  };
+
+  nativeBuildInputs = [
+    poetry
+  ];
+
+  buildInputs = [ jaxlib ];
+
+  propagatedBuildInputs = [
+    cloudpickle
+    deepdish
+    deepmerge
+    dm-haiku
+    pyyaml
+    tables
+    tabulate
+    tensorboardx
+    toolz
+    treex
+    typing-extensions
+  ];
+
+  pythonImportsCheck = [
+    "elegy"
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    pytorch
+    sh
+    tensorflow
+  ];
+
+  disabledTests = [
+    # Fails with `Could not find compiler for platform Host: NOT_FOUND: could not find registered compiler for platform Host -- check target linkage`.
+    # Runs fine in docker with Ubuntu 22.04. I suspect the issue is the sandboxing in `nixpkgs` but not sure.
+    "test_saved_model_poly"
+  ];
+
+  meta = with lib; {
+    description = "Neural Networks framework based on Jax inspired by Keras and Haiku";
+    homepage = "https://github.com/poets-ai/elegy";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ndl ];
+  };
+}
diff --git a/pkgs/development/python-modules/elgato/default.nix b/pkgs/development/python-modules/elgato/default.nix
index d0c072901c351..2a6c10da35e75 100644
--- a/pkgs/development/python-modules/elgato/default.nix
+++ b/pkgs/development/python-modules/elgato/default.nix
@@ -13,16 +13,16 @@
 
 buildPythonPackage rec {
   pname = "elgato";
-  version = "2.2.0";
+  version = "3.0.0";
   format = "pyproject";
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "frenck";
     repo = "python-elgato";
     rev = "v${version}";
-    sha256 = "sha256-xsIglJSnvtd3NKqwoRAonPRN+C9KWyar0mrYcC3hPpw=";
+    sha256 = "sha256-lGHRwDxxgi1QJvK3WrvwghoAZk5J1mdwD4+Is0n7Jgs=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/emoji/default.nix b/pkgs/development/python-modules/emoji/default.nix
index 1497b412d7415..76579e4dd89f7 100644
--- a/pkgs/development/python-modules/emoji/default.nix
+++ b/pkgs/development/python-modules/emoji/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "emoji";
-  version = "1.6.2";
+  version = "1.6.3";
 
   src = fetchFromGitHub {
     owner = "carpedm20";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1g927w9l3j5mycg6pqa4vjk2lyy35sppfp8pbzb6mvca500001rk";
+    sha256 = "sha256-0QOtsHGhqbjaEDpSbUXdE8+u6xzWbrTexx+BAeYwKa8=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/empty-files/default.nix b/pkgs/development/python-modules/empty-files/default.nix
new file mode 100644
index 0000000000000..b6c31519efcd8
--- /dev/null
+++ b/pkgs/development/python-modules/empty-files/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "empty-files";
+  version = "0.0.3";
+
+  src = fetchFromGitHub {
+    owner = "approvals";
+    repo = "EmptyFiles.Python";
+    rev = "v${version}";
+    sha256 = "sha256-K4rlVO1X1AWxYI3EqLsyQ5/Ist/jlwFrmOM4aMojtKU=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  # cyclic dependency with approvaltests
+  doCheck = false;
+
+  pythonImportsCheck = [ "empty_files" ];
+
+  meta = with lib; {
+    description = "Null Object pattern for files";
+    homepage = "https://github.com/approvals/EmptyFiles.Python";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ jonringer ];
+  };
+}
diff --git a/pkgs/development/python-modules/emv/default.nix b/pkgs/development/python-modules/emv/default.nix
index d688e1e22e663..a4834a84656b1 100644
--- a/pkgs/development/python-modules/emv/default.nix
+++ b/pkgs/development/python-modules/emv/default.nix
@@ -39,7 +39,9 @@ buildPythonPackage rec {
       --replace '"enum-compat==0.0.3",' "" \
       --replace '"argparse==1.4.0",' "" \
       --replace "click==7.1.2" "click" \
-      --replace "pyscard==2.0.0" "pyscard"
+      --replace "pyscard==2.0.0" "pyscard" \
+      --replace "pycountry==20.7.3" "pycountry" \
+      --replace "terminaltables==3.1.0" "terminaltables"
   '';
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/enaml/default.nix b/pkgs/development/python-modules/enaml/default.nix
index 8257af2e45fe7..9e6a910b2ba94 100644
--- a/pkgs/development/python-modules/enaml/default.nix
+++ b/pkgs/development/python-modules/enaml/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "enaml";
-  version = "0.13.0";
+  version = "0.14.1";
 
   src = fetchFromGitHub {
     owner = "nucleic";
     repo = pname;
     rev = version;
-    sha256 = "sha256-8ZahvFDYW7xUTSTZP1UXnQBCg9RVUywoO7EbqtTQPJI=";
+    sha256 = "sha256-QfI7cwl2c5HOlFNNdG+oOv48X9jJZnZNU/kWgutWe6k=";
   };
 
   # qt bindings cannot be found during tests
diff --git a/pkgs/development/python-modules/enamlx/default.nix b/pkgs/development/python-modules/enamlx/default.nix
index 21cc4512386fe..46d5ee725c752 100644
--- a/pkgs/development/python-modules/enamlx/default.nix
+++ b/pkgs/development/python-modules/enamlx/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "enamlx";
-  version = "0.5.0";
+  version = "0.6.0";
 
   src = fetchFromGitHub {
     owner = "frmdstryr";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1fwfh5h1l68zwkjayf71dmxrhjbscsh87p4mskzkwwaj5cxsva90";
+    sha256 = "10sn7wd4fjz8nkzprd8wa5da5dg8w91r0rngqaipwnpq1dz54b5s";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/enlighten/default.nix b/pkgs/development/python-modules/enlighten/default.nix
index 8f58720bd264a..3c786d8691557 100644
--- a/pkgs/development/python-modules/enlighten/default.nix
+++ b/pkgs/development/python-modules/enlighten/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "enlighten";
-  version = "1.10.1";
+  version = "1.10.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3391916586364aedced5d6926482b48745e4948f822de096d32258ba238ea984";
+    sha256 = "7a5b83cd0f4d095e59d80c648ebb5f7ffca0cd8bcf7ae6639828ee1ad000632a";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/enrich/default.nix b/pkgs/development/python-modules/enrich/default.nix
index 2b81577af22de..fbd22a42b5556 100644
--- a/pkgs/development/python-modules/enrich/default.nix
+++ b/pkgs/development/python-modules/enrich/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "enrich";
-  version = "1.2.6";
+  version = "1.2.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-Dpn/V9h/e13vDKeZF+iPuTUaoNUuIo7ji/982FgxX+Q=";
+    sha256 = "0a2ab0d2931dff8947012602d1234d2a3ee002d9a355b5d70be6bf5466008893";
   };
 
   buildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/entrypoint2/default.nix b/pkgs/development/python-modules/entrypoint2/default.nix
index d1325f6f0e109..73ede85fb886e 100644
--- a/pkgs/development/python-modules/entrypoint2/default.nix
+++ b/pkgs/development/python-modules/entrypoint2/default.nix
@@ -1,31 +1,17 @@
-{ lib, buildPythonPackage, fetchPypi, EasyProcess, pathpy, pytest }:
+{ lib, buildPythonPackage, fetchPypi, EasyProcess, pathpy, pytestCheckHook }:
 
 buildPythonPackage rec {
   pname = "entrypoint2";
-  version = "0.2.4";
+  version = "1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4770c3afcf3865c606a6e5f7cfcc5c59212f555fcee9b2540270399149c1dde3";
+    sha256 = "sha256-Z+kG9q2VjYP0i07ewo192CZw6SYZiPa0prY6vJ+zvlY=";
   };
 
-  propagatedBuildInputs = [ ];
-
   pythonImportsCheck = [ "entrypoint2" ];
 
-  # argparse is part of the standardlib
-  prePatch = ''
-    substituteInPlace setup.py --replace "argparse" ""
-  '';
-
-  checkInputs = [ EasyProcess pathpy pytest ];
-
-  # 0.2.1 has incompatible pycache files included
-  # https://github.com/ponty/entrypoint2/issues/8
-  checkPhase = ''
-    rm -rf tests/__pycache__
-    pytest tests
-  '';
+  checkInputs = [ EasyProcess pathpy pytestCheckHook ];
 
   meta = with lib; {
     description = "Easy to use command-line interface for python modules";
diff --git a/pkgs/development/python-modules/enturclient/default.nix b/pkgs/development/python-modules/enturclient/default.nix
index 07363a379b1fd..b114c794ae3f1 100644
--- a/pkgs/development/python-modules/enturclient/default.nix
+++ b/pkgs/development/python-modules/enturclient/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "enturclient";
-  version = "0.2.2";
+  version = "0.2.3";
   disabled = pythonOlder "3.8";
 
   format = "pyproject";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "hfurubotten";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1kl44ch8p31pr70yv6na2m0w40frackdwzph9rpb05sc83va701i";
+    sha256 = "1w0791f4p3yyncc1izx3q97fyaky2ling14qr0yn0acrmq9yh5cc";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/enum/default.nix b/pkgs/development/python-modules/enum/default.nix
deleted file mode 100644
index db827601d5de5..0000000000000
--- a/pkgs/development/python-modules/enum/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, isPyPy
-}:
-
-buildPythonPackage rec {
-  pname = "enum";
-  version = "0.4.7";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "001iq0yqs9f5bslvl793bhkcs71k5km9kv8yrj5h0lfsgrcg6z4c";
-  };
-
-  doCheck = !isPyPy;
-
-  meta = with lib; {
-    homepage = "https://pypi.python.org/pypi/enum/";
-    description = "Robust enumerated type support in Python";
-    license = licenses.gpl2;
-  };
-
-}
diff --git a/pkgs/development/python-modules/env-canada/default.nix b/pkgs/development/python-modules/env-canada/default.nix
index f755d545598c8..32b3098ffc733 100644
--- a/pkgs/development/python-modules/env-canada/default.nix
+++ b/pkgs/development/python-modules/env-canada/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "env-canada";
-  version = "0.5.18";
+  version = "0.5.20";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "michaeldavie";
     repo = "env_canada";
     rev = "v${version}";
-    sha256 = "1w2fclpmcb41k2a3226jk62hdclc8b18kxih2ads90r4yxgpxc8p";
+    sha256 = "sha256-gYl5+rtOzci3nhgP74VM37tNk9pPWgcNBfcSSG1fSJs=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/environs/default.nix b/pkgs/development/python-modules/environs/default.nix
index 04bb5dda00eaf..4a8987b163464 100644
--- a/pkgs/development/python-modules/environs/default.nix
+++ b/pkgs/development/python-modules/environs/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "environs";
-  version = "9.3.5";
+  version = "9.5.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "sloria";
     repo = pname;
     rev = version;
-    sha256 = "sha256-4jyqdA/xoIEsfouIneGs3A9++sNG2kRUhDzteN0Td6w=";
+    sha256 = "sha256-hucApIn7ul7+MC2W811VTxZNO8Pqb6HDXz9VRcEdmIc=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/envisage/default.nix b/pkgs/development/python-modules/envisage/default.nix
index b8513fd1d9aec..f40ab66baabd3 100644
--- a/pkgs/development/python-modules/envisage/default.nix
+++ b/pkgs/development/python-modules/envisage/default.nix
@@ -1,19 +1,21 @@
 { lib
-, fetchPypi
-, isPy27
-, buildPythonPackage
-, traits
 , apptools
-, pytestCheckHook
+, buildPythonPackage
+, fetchPypi
 , ipython
+, pytestCheckHook
+, pythonAtLeast
+, pythonOlder
 , setuptools
+, traits
 }:
 
 buildPythonPackage rec {
   pname = "envisage";
   version = "6.0.1";
+  format = "setuptools";
 
-  disabled = isPy27;
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
@@ -22,7 +24,11 @@ buildPythonPackage rec {
 
   # 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 ];
+  propagatedBuildInputs = [
+    traits
+    apptools
+    setuptools
+  ];
 
   preCheck = ''
     export HOME=$PWD/HOME
@@ -33,10 +39,20 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  disabledTestPaths = lib.optionals (pythonAtLeast "3.10") [
+    # https://github.com/enthought/envisage/issues/455
+    "envisage/tests/test_egg_basket_plugin_manager.py"
+    "envisage/tests/test_egg_plugin_manager.py"
+  ];
+
+  pythonImportsCheck = [
+    "envisage"
+  ];
+
   meta = with lib; {
-    description = "Framework for building applications whose functionalities can be extended by adding 'plug-ins'";
+    description = "Framework for building applications whose functionalities can be extended by adding plug-ins";
     homepage = "https://github.com/enthought/envisage";
-    maintainers = with lib.maintainers; [ knedlsepp ];
     license = licenses.bsdOriginal;
+    maintainers = with lib.maintainers; [ knedlsepp ];
   };
 }
diff --git a/pkgs/development/python-modules/envoy-reader/default.nix b/pkgs/development/python-modules/envoy-reader/default.nix
index a327c3f457d29..497d46f2d8402 100644
--- a/pkgs/development/python-modules/envoy-reader/default.nix
+++ b/pkgs/development/python-modules/envoy-reader/default.nix
@@ -1,30 +1,37 @@
 { lib
+, beautifulsoup4
 , buildPythonPackage
 , envoy-utils
 , fetchFromGitHub
 , fetchpatch
 , httpx
+, pyjwt
 , pytest-asyncio
-, pytest-raises
 , pytestCheckHook
+, pytest-raises
+, pythonOlder
 , respx
 }:
 
 buildPythonPackage rec {
   pname = "envoy-reader";
-  version = "0.20.0";
+  version = "0.21.3";
   format = "setuptools";
 
+  disabled = pythonOlder "3.7";
+
   src = fetchFromGitHub {
     owner = "jesserizzo";
     repo = "envoy_reader";
     rev = version;
-    sha256 = "sha256-nPB1Fvb1qwLHeFkXP2jXixD2ZGA09MtS1qXRhYGt0fM=";
+    sha256 = "sha256-aIpZ4ln4L57HwK8H0FqsyNnXosnAp3ingrJI6/MPS90=";
   };
 
   propagatedBuildInputs = [
+    beautifulsoup4
     envoy-utils
     httpx
+    pyjwt
   ];
 
   checkInputs = [
@@ -36,18 +43,10 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "pytest-runner>=5.2" ""
+      --replace "pytest-runner>=5.2" "" \
+      --replace "pyjwt==2.1.0" "pyjwt>=2.1.0"
   '';
 
-  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"
   ];
diff --git a/pkgs/development/python-modules/ephem/default.nix b/pkgs/development/python-modules/ephem/default.nix
index 1e5db008dea9f..a5a87f908d4f3 100644
--- a/pkgs/development/python-modules/ephem/default.nix
+++ b/pkgs/development/python-modules/ephem/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "ephem";
-  version = "4.1.1";
+  version = "4.1.3";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-26ngXHjOkQrnWgY1GlWSR5GRqNxXCsDNbRinfpgTiHM=";
+    sha256 = "sha256-f6GGhZgbpSjt1QQFKp1SEqCapb8VwRpzTtxqhuiotWo=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/eth-typing/default.nix b/pkgs/development/python-modules/eth-typing/default.nix
index 66ff1ddc10ed7..c98a0fc515295 100644
--- a/pkgs/development/python-modules/eth-typing/default.nix
+++ b/pkgs/development/python-modules/eth-typing/default.nix
@@ -2,7 +2,7 @@
 
 buildPythonPackage rec {
   pname = "eth-typing";
-  version = "2.2.2";
+  version = "3.0.0";
 
   # Tests are missing from the PyPI source tarball so let's use GitHub
   # https://github.com/ethereum/eth-typing/issues/8
@@ -10,7 +10,7 @@ buildPythonPackage rec {
     owner = "ethereum";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0rkvkacxla4y2blkkfdsq1ywnyqsvg8pwhvadznbag1bfzja4xhv";
+    sha256 = "sha256-9rrnDFPWAmrUkr2mVTVi/8DTJdg4hzGaU0UbpwG5mtY=";
   };
 
   # setuptools-markdown uses pypandoc which is broken at the moment
diff --git a/pkgs/development/python-modules/eth-utils/default.nix b/pkgs/development/python-modules/eth-utils/default.nix
index 172647f0da701..9b26fb7024c06 100644
--- a/pkgs/development/python-modules/eth-utils/default.nix
+++ b/pkgs/development/python-modules/eth-utils/default.nix
@@ -3,7 +3,7 @@
 
 buildPythonPackage rec {
   pname = "eth-utils";
-  version = "1.10.0";
+  version = "2.0.0";
 
   # Tests are missing from the PyPI source tarball so let's use GitHub
   # https://github.com/ethereum/eth-utils/issues/130
@@ -11,7 +11,7 @@ buildPythonPackage rec {
     owner = "ethereum";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-sq3H4HmUFUipqVYleZxWLG1gBsQEoNwcZAXiKckacek=";
+    sha256 = "sha256-E2vUROc2FcAv00k50YpdxaaYIRDk1yGSPB8cHHw+7Yw=";
   };
 
   checkInputs = [ pytestCheckHook hypothesis ];
diff --git a/pkgs/development/python-modules/ev3dev2/default.nix b/pkgs/development/python-modules/ev3dev2/default.nix
index f6233db68dbcb..5afbb7da655fa 100644
--- a/pkgs/development/python-modules/ev3dev2/default.nix
+++ b/pkgs/development/python-modules/ev3dev2/default.nix
@@ -32,6 +32,6 @@ buildPythonPackage rec {
     description = "Python language bindings for ev3dev";
     homepage = "https://github.com/ev3dev/ev3dev-lang-python";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [ angustrau ];
+    maintainers = with maintainers; [ emilytrau ];
   };
 }
diff --git a/pkgs/development/python-modules/eventlet/default.nix b/pkgs/development/python-modules/eventlet/default.nix
index 038b66a8efed5..7c8f520647ee8 100644
--- a/pkgs/development/python-modules/eventlet/default.nix
+++ b/pkgs/development/python-modules/eventlet/default.nix
@@ -1,7 +1,7 @@
 { lib
 , stdenv
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , pythonOlder
 , dnspython
 , greenlet
@@ -10,22 +10,35 @@
 , nose
 , pyopenssl
 , iana-etc
+, pytestCheckHook
 , libredirect
 }:
 
 buildPythonPackage rec {
   pname = "eventlet";
   version = "0.33.0";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "80144f489c1bb273a51b6f96ff9785a382d2866b9bab1f5bd748385019f4141f";
+  src = fetchFromGitHub {
+    owner = "eventlet";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-kE/eYBbaTt1mPGoUIMhonvFBlQOdAfPU5GvCvPaRHvs=";
   };
 
-  propagatedBuildInputs = [ dnspython greenlet pyopenssl six ]
-    ++ lib.optional (pythonOlder "3.5") monotonic;
+  propagatedBuildInputs = [
+    dnspython
+    greenlet
+    pyopenssl
+    six
+  ] ++ lib.optional (pythonOlder "3.5") [
+    monotonic
+  ];
 
-  checkInputs = [ nose ];
+  checkInputs = [
+    pytestCheckHook
+    nose
+  ];
 
   doCheck = !stdenv.isDarwin;
 
@@ -37,23 +50,48 @@ buildPythonPackage rec {
     export EVENTLET_IMPORT_VERSION_ONLY=0
   '';
 
-  checkPhase = ''
-    runHook preCheck
+  disabledTests = [
+    # Tests requires network access
+    "test_017_ssl_zeroreturnerror"
+    "test_getaddrinfo"
+    "test_hosts_no_network"
+    "test_leakage_from_tracebacks"
+    "test_patcher_existing_locks_locked"
+  ];
 
-    # 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
-  '';
+  disabledTestPaths = [
+    # Tests are out-dated
+    "tests/stdlib/test_asynchat.py"
+    "tests/stdlib/test_asyncore.py"
+    "tests/stdlib/test_ftplib.py"
+    "tests/stdlib/test_httplib.py"
+    "tests/stdlib/test_httpservers.py"
+    "tests/stdlib/test_os.py"
+    "tests/stdlib/test_queue.py"
+    "tests/stdlib/test_select.py"
+    "tests/stdlib/test_SimpleHTTPServer.py"
+    "tests/stdlib/test_socket_ssl.py"
+    "tests/stdlib/test_socket.py"
+    "tests/stdlib/test_socketserver.py"
+    "tests/stdlib/test_ssl.py"
+    "tests/stdlib/test_subprocess.py"
+    "tests/stdlib/test_thread__boundedsem.py"
+    "tests/stdlib/test_thread.py"
+    "tests/stdlib/test_threading_local.py"
+    "tests/stdlib/test_threading.py"
+    "tests/stdlib/test_timeout.py"
+    "tests/stdlib/test_urllib.py"
+    "tests/stdlib/test_urllib2_localnet.py"
+    "tests/stdlib/test_urllib2.py"
+  ];
 
   # unfortunately, it needs /etc/protocol to be present to not fail
   # pythonImportsCheck = [ "eventlet" ];
 
   meta = with lib; {
-    homepage = "https://github.com/eventlet/eventlet/";
     description = "A concurrent networking library for Python";
-    maintainers = with maintainers; [ SuperSandro2000 ];
+    homepage = "https://github.com/eventlet/eventlet/";
     license = licenses.mit;
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/eventlib/default.nix b/pkgs/development/python-modules/eventlib/default.nix
deleted file mode 100644
index 4d4bff85842a6..0000000000000
--- a/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/pkgs/development/python-modules/exchangelib/default.nix b/pkgs/development/python-modules/exchangelib/default.nix
index 6ab7495fcb303..3550f1e17361c 100644
--- a/pkgs/development/python-modules/exchangelib/default.nix
+++ b/pkgs/development/python-modules/exchangelib/default.nix
@@ -1,5 +1,4 @@
 { lib
-, backports-datetime-fromisoformat
 , backports-zoneinfo
 , buildPythonPackage
 , cached-property
@@ -27,16 +26,16 @@
 
 buildPythonPackage rec {
   pname = "exchangelib";
-  version = "4.6.2";
+  version = "4.7.2";
   format = "setuptools";
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "ecederstrand";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1vax4xqjav6nr3kfkz390ism3cs69dxnbx6sc0f9ci4mn3rxjwdy";
+    sha256 = "sha256-fdYc+fJEePgCzAkUWz7pmL/CI/O9zm5G9xh1f4bhrH4=";
   };
 
   propagatedBuildInputs = [
@@ -55,8 +54,6 @@ buildPythonPackage rec {
     tzlocal
   ] ++ lib.optionals (pythonOlder "3.9") [
     backports-zoneinfo
-  ] ++ lib.optionals (pythonOlder "3.7") [
-    backports-datetime-fromisoformat
   ];
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/faker/default.nix b/pkgs/development/python-modules/faker/default.nix
index f363b6bb6f66d..048edf64d38f8 100644
--- a/pkgs/development/python-modules/faker/default.nix
+++ b/pkgs/development/python-modules/faker/default.nix
@@ -12,12 +12,12 @@
 
 buildPythonPackage rec {
   pname = "faker";
-  version = "9.3.1";
+  version = "11.3.0";
 
   src = fetchPypi {
     pname = "Faker";
     inherit version;
-    hash = "sha256-zdnpry+6XJbuLsSshBm7pFjia1iiuYwfZGfuZglr7lI=";
+    hash = "sha256-rb5WfmTaahCX/qyraZAA4a0W4Xplkqjwrh7gt/vxmIc=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/fakeredis/default.nix b/pkgs/development/python-modules/fakeredis/default.nix
index eff55de1d90ef..3127ac0dcdbf6 100644
--- a/pkgs/development/python-modules/fakeredis/default.nix
+++ b/pkgs/development/python-modules/fakeredis/default.nix
@@ -3,6 +3,7 @@
 , async_generator
 , buildPythonPackage
 , fetchPypi
+, fetchpatch
 , hypothesis
 , lupa
 , pytest-asyncio
@@ -17,15 +18,28 @@
 buildPythonPackage rec {
   pname = "fakeredis";
   version = "1.7.0";
-  format = "setuptools";
 
-  disabled = pythonOlder "3.5";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "sha256-yb0S5DAzbL0+GJ+uDpHrmZl7k+dtv91u1n+jUtxoTHE=";
   };
 
+  patches = [
+    (fetchpatch {
+      # redis 4.1.0 compatibility
+      # https://github.com/jamesls/fakeredis/pull/324
+      url = "https://github.com/jamesls/fakeredis/commit/8ef8dc6dacc9baf571d66a25ffbf0fadd7c70f78.patch";
+      sha256 = "sha256:03xlqmwq8nkzisrjk7y51j2jd6qdin8nbj5n9hc4wjabbvlgx4qr";
+      excludes = [
+        "setup.cfg"
+      ];
+    })
+  ];
+
   propagatedBuildInputs = [
     aioredis
     lupa
@@ -42,15 +56,15 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  disabledTestPaths = [
-    # AttributeError: 'AsyncGenerator' object has no attribute XXXX
-    "test/test_aioredis2.py"
-  ];
-
   pythonImportsCheck = [
     "fakeredis"
   ];
 
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "redis<4.1.0" "redis"
+  '';
+
   meta = with lib; {
     description = "Fake implementation of Redis API";
     homepage = "https://github.com/jamesls/fakeredis";
diff --git a/pkgs/development/python-modules/faraday-plugins/default.nix b/pkgs/development/python-modules/faraday-plugins/default.nix
index ebef907f91f5f..01857660a7497 100644
--- a/pkgs/development/python-modules/faraday-plugins/default.nix
+++ b/pkgs/development/python-modules/faraday-plugins/default.nix
@@ -16,14 +16,14 @@
 
 buildPythonPackage rec {
   pname = "faraday-plugins";
-  version = "1.5.9";
+  version = "1.6.0";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "infobyte";
     repo = "faraday_plugins";
     rev = "v${version}";
-    sha256 = "sha256-rU7BF1lXLgJYLed5FVKXroivxKpmmNE5woGCpAcKAwg=";
+    sha256 = "sha256-mvYbX8puqcT9kl1Abi785ptmmg9CxKZVTO6gPpk4sKU=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/fastapi/default.nix b/pkgs/development/python-modules/fastapi/default.nix
index 85594a2c4c227..ec14e956c3fde 100644
--- a/pkgs/development/python-modules/fastapi/default.nix
+++ b/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.73.0";
   format = "flit";
 
+  disabled = pythonOlder "3.6";
+
   src = fetchFromGitHub {
     owner = "tiangolo";
-    repo = "fastapi";
+    repo = pname;
     rev = version;
-    sha256 = "sha256-mLI+w9PeewnwUMuUnXj6J2r/3shinjlwXMnhNcQlhrM=";
+    sha256 = "0v3w9b8107b3g2rgy5y58f0p64inhwl1j9cybp627myypwpqx4b7";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace "starlette ==" "starlette >="
-  '';
-
   propagatedBuildInputs = [
     starlette
     pydantic
@@ -52,16 +50,24 @@ 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"
+    # Don't test docs and examples
+    "docs_src"
+  ];
+
   disabledTests = [
     "test_get_custom_response"
 
@@ -70,9 +76,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/pkgs/development/python-modules/fastavro/default.nix b/pkgs/development/python-modules/fastavro/default.nix
index 0bc1246eb3266..935eefa5182f8 100644
--- a/pkgs/development/python-modules/fastavro/default.nix
+++ b/pkgs/development/python-modules/fastavro/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "fastavro";
-  version = "1.4.4";
+  version = "1.4.9";
 
   disabled = pythonOlder "3.6";
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "1sf8nqifwp0cggk59s22ygj3rm1nysa8b91xl8bpv2knqyjy1q32";
+    sha256 = "0af6d67s6mi9ylqla8nga6cj4y0y4gp3l2q68br2mrdyivkml0g0";
   };
 
   preBuild = ''
diff --git a/pkgs/development/python-modules/fastjsonschema/default.nix b/pkgs/development/python-modules/fastjsonschema/default.nix
index 6a6cc6ea80462..415f226b783c8 100644
--- a/pkgs/development/python-modules/fastjsonschema/default.nix
+++ b/pkgs/development/python-modules/fastjsonschema/default.nix
@@ -1,14 +1,15 @@
 { lib
 , buildPythonPackage
-, pythonOlder
 , fetchFromGitHub
-  # Check inputs
+, fetchpatch
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "fastjsonschema";
-  version = "2.15.1";
+  version = "2.15.2";
+  format = "setuptools";
 
   disabled = pythonOlder "3.3";
 
@@ -17,11 +18,25 @@ buildPythonPackage rec {
     repo = "python-fastjsonschema";
     rev = "v${version}";
     fetchSubmodules = true;
-    sha256 = "sha256-ltxFJ3V5/bckusspQ5o0F4reMoB4KpYWPHF8ZNXGqVQ=";
+    hash = "sha256-zrdQVFfLZxZRr9qvss4CI3LJK97xl+bY+AcPzcweYeU=";
   };
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
+
   dontUseSetuptoolsCheck = true;
+
+  patches = [
+    # Can be removed with the next release, https://github.com/horejsek/python-fastjsonschema/pull/134
+    (fetchpatch {
+      name = "fix-exception-name.patch";
+      url = "https://github.com/horejsek/python-fastjsonschema/commit/f639dcba0299926d688e1d8d08a6a91bfe70ce8b.patch";
+      sha256 = "sha256-yPV5ZNeyAobLrYf5QHanPsEomBPJ/7ZN2148R8NO4/U=";
+    })
+  ];
+
+
   disabledTests = [
     "benchmark"
     # these tests require network access
@@ -29,10 +44,12 @@ buildPythonPackage rec {
     "definitions"
   ];
 
-  pythonImportsCheck = [ "fastjsonschema" ];
+  pythonImportsCheck = [
+    "fastjsonschema"
+  ];
 
   meta = with lib; {
-    description = "Fast JSON schema validator for Python.";
+    description = "JSON schema validator for Python";
     homepage = "https://horejsek.github.io/python-fastjsonschema/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ drewrisinger ];
diff --git a/pkgs/development/python-modules/fastnumbers/default.nix b/pkgs/development/python-modules/fastnumbers/default.nix
index 12c3175424d3f..779949b38fd7d 100644
--- a/pkgs/development/python-modules/fastnumbers/default.nix
+++ b/pkgs/development/python-modules/fastnumbers/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fastnumbers
 , fetchFromGitHub
@@ -26,6 +27,10 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
+  # Tests fail due to numeric precision differences on ARM
+  # See https://github.com/SethMMorton/fastnumbers/issues/28
+  doCheck = !(stdenv.isAarch64 || stdenv.isAarch32);
+
   checkInputs = [
     hypothesis
     pytestCheckHook
diff --git a/pkgs/development/python-modules/faulthandler/default.nix b/pkgs/development/python-modules/faulthandler/default.nix
deleted file mode 100644
index f1588690a774a..0000000000000
--- a/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/pkgs/development/python-modules/fdint/default.nix b/pkgs/development/python-modules/fdint/default.nix
deleted file mode 100644
index 413416c99a252..0000000000000
--- a/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/pkgs/development/python-modules/feedgenerator/default.nix b/pkgs/development/python-modules/feedgenerator/default.nix
index c1e988ca769a3..53f2c15401ec0 100644
--- a/pkgs/development/python-modules/feedgenerator/default.nix
+++ b/pkgs/development/python-modules/feedgenerator/default.nix
@@ -10,14 +10,18 @@
 
 buildPythonPackage rec {
   pname = "feedgenerator";
-  version = "1.9.2";
+  version = "2.0.0";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-sG1pQej9aiyecXkQeehsvno3iMciRKzAbwWTtJzaN5s=";
+    sha256 = "6836d456b8b0edbc5b6d3a42d1be852cebd43d2f28af4ff51789eb295f1860e2";
   };
 
+  postPatch = ''
+    sed -i '/cov/d' setup.cfg
+  '';
+
   buildInputs = [
     glibcLocales
   ];
diff --git a/pkgs/development/python-modules/feedparser/5.nix b/pkgs/development/python-modules/feedparser/5.nix
deleted file mode 100644
index 58cdad9884e93..0000000000000
--- a/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/pkgs/development/python-modules/feedparser/default.nix b/pkgs/development/python-modules/feedparser/default.nix
index 56059e6dfef77..39f13999d5c03 100644
--- a/pkgs/development/python-modules/feedparser/default.nix
+++ b/pkgs/development/python-modules/feedparser/default.nix
@@ -3,11 +3,14 @@
 , fetchPypi
 , pythonOlder
 , sgmllib3k
+, python
 }:
 
 buildPythonPackage rec {
   pname = "feedparser";
   version = "6.0.8";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
@@ -15,13 +18,20 @@ buildPythonPackage rec {
     sha256 = "sha256-XOBBCgWrJIyMfPyjoOoiA5aO6f9EhgZzea9IJ6WflmE=";
   };
 
-  propagatedBuildInputs = [ sgmllib3k ];
+  propagatedBuildInputs = [
+    sgmllib3k
+  ];
 
   checkPhase = ''
-    python -Wd tests/runtests.py
+    # Tests are failing
+    # AssertionError: unexpected '~' char in declaration
+    rm tests/wellformed/sanitize/xml_declaration_unexpected_character.xml
+    ${python.interpreter} -Wd tests/runtests.py
   '';
 
-  pythonImportsCheck = [ "feedparser" ];
+  pythonImportsCheck = [
+    "feedparser"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/kurtmckee/feedparser";
diff --git a/pkgs/development/python-modules/file-read-backwards/default.nix b/pkgs/development/python-modules/file-read-backwards/default.nix
new file mode 100644
index 0000000000000..80150a60de91d
--- /dev/null
+++ b/pkgs/development/python-modules/file-read-backwards/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, mock }:
+
+buildPythonPackage rec {
+  pname = "file-read-backwards";
+  version = "2.0.0";
+
+  src = fetchPypi {
+    pname = "file_read_backwards";
+    inherit version;
+    sha256 = "fd50d9089b412147ea3c6027e2ad905f977002db2918cf315d64eed23d6d6eb8";
+  };
+
+  checkInputs = [ mock ];
+  pythonImportsCheck = [ "file_read_backwards" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/RobinNil/file_read_backwards";
+    description = "Memory efficient way of reading files line-by-line from the end of file";
+    license = licenses.mit;
+    maintainers = with maintainers; [ j0hax ];
+  };
+}
diff --git a/pkgs/development/python-modules/filebrowser_safe/default.nix b/pkgs/development/python-modules/filebrowser_safe/default.nix
index d571f76f92270..28798dd838e3c 100644
--- a/pkgs/development/python-modules/filebrowser_safe/default.nix
+++ b/pkgs/development/python-modules/filebrowser_safe/default.nix
@@ -2,18 +2,25 @@
 , buildPythonPackage
 , fetchPypi
 , django
+, pythonOlder
 }:
 
 buildPythonPackage rec {
-  version = "1.1.0";
-  pname = "filebrowser_safe";
+  pname = "filebrowser-safe";
+  version = "1.1.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "14b6e0af9697f1d0f08508cc88bc8459273cd6453636cebe8504dccc80e926e4";
+    pname = "filebrowser_safe";
+    inherit version;
+    sha256 = "499c5dbd9e112dfc436cae7713b2fb664a59015021f6c9d131e3b7980aeb5c94";
   };
 
-  buildInputs = [ django ];
+  buildInputs = [
+    django
+  ];
 
   # There is no test embedded
   doCheck = false;
@@ -24,15 +31,10 @@ buildPythonPackage rec {
       filebrowser_safe was created to provide a snapshot of the
       FileBrowser asset manager for Django, to be referenced as a
       dependency for the Mezzanine CMS for Django.
-
-      At the time of filebrowser_safe's creation, FileBrowser was
-      incorrectly packaged on PyPI, and had also dropped compatibility
-      with Django 1.1 - filebrowser_safe was therefore created to
-      address these specific issues.
     '';
     homepage = "https://github.com/stephenmcd/filebrowser-safe";
     downloadPage = "https://pypi.python.org/pypi/filebrowser_safe/";
-    license = licenses.free;
+    license = licenses.bsd3;
     maintainers = with maintainers; [ prikhi ];
     platforms = platforms.unix;
   };
diff --git a/pkgs/development/python-modules/filelock/3.2.nix b/pkgs/development/python-modules/filelock/3.2.nix
deleted file mode 100644
index 401fdf582ffb1..0000000000000
--- a/pkgs/development/python-modules/filelock/3.2.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ 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/pkgs/development/python-modules/filelock/default.nix b/pkgs/development/python-modules/filelock/default.nix
index d5ccc117befff..8eaed65ca73c2 100644
--- a/pkgs/development/python-modules/filelock/default.nix
+++ b/pkgs/development/python-modules/filelock/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "filelock";
-  version = "3.3.0";
+  version = "3.4.2";
   format = "pyproject";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8c7eab13dc442dc249e95158bcc12dec724465919bdc9831fdbf0660f03d1785";
+    sha256 = "38b4f4c989f9d06d44524df1b24bd19e167d851f19b50bf3e3559952dddc5b80";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/filetype/default.nix b/pkgs/development/python-modules/filetype/default.nix
index f89b4e690914f..3c777d828b483 100644
--- a/pkgs/development/python-modules/filetype/default.nix
+++ b/pkgs/development/python-modules/filetype/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "filetype";
-  version = "1.0.9";
+  version = "1.0.10";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7124e1bc6a97ffc7c6bead5b8fb2e129baf312a9e60db5772bc27c741799d475";
+    sha256 = "sha256-MjoTUAcxtsZaJTvDkwu86aVt+6cekLYP/ZaKtp2a6Tc=";
   };
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/findimports/default.nix b/pkgs/development/python-modules/findimports/default.nix
new file mode 100644
index 0000000000000..44f1a29a8f2fd
--- /dev/null
+++ b/pkgs/development/python-modules/findimports/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, python
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "findimports";
+  version = "2.2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "mgedmin";
+    repo = pname;
+    rev = version;
+    hash = "sha256-p13GVDXDOzOiTnRgtF7UxN1vwZRMa7wVEXJQrFQV7RU=";
+  };
+
+  pythonImportsCheck = [
+    "findimports"
+  ];
+
+  checkPhase = ''
+    runHook preCheck
+    ${python.interpreter} testsuite.py
+    runHook postCheck
+  '';
+
+  meta = with lib; {
+    description = "Module for the analysis of Python import statements";
+    homepage = "https://github.com/mgedmin/findimports";
+    license = with licenses; [ gpl2Only /* or */ gpl3Only ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/fiona/default.nix b/pkgs/development/python-modules/fiona/default.nix
index 0c1a3bd2c6512..f8fc454e05eed 100644
--- a/pkgs/development/python-modules/fiona/default.nix
+++ b/pkgs/development/python-modules/fiona/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "fiona";
-  version = "1.8.20";
+  version = "1.8.21";
 
   src = fetchPypi {
     pname = "Fiona";
     inherit version;
-    sha256 = "a70502d2857b82f749c09cb0dea3726787747933a2a1599b5ab787d74e3c143b";
+    sha256 = "sha256-Og7coqegcNtAXXEYchSkPSMzpXtAl1RKP8woIGali/w=";
   };
 
   CXXFLAGS = lib.optionalString stdenv.cc.isClang "-std=c++11";
diff --git a/pkgs/development/python-modules/fixtures/default.nix b/pkgs/development/python-modules/fixtures/default.nix
index e802dbaa26914..3e9f9943327d5 100644
--- a/pkgs/development/python-modules/fixtures/default.nix
+++ b/pkgs/development/python-modules/fixtures/default.nix
@@ -7,6 +7,7 @@
 , testtools
 , mock
 , python
+, six
 }:
 
 buildPythonPackage rec {
@@ -33,6 +34,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     testtools
+    six # not in install_requires, but used in fixture.py
   ];
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/flake8-bugbear/default.nix b/pkgs/development/python-modules/flake8-bugbear/default.nix
new file mode 100644
index 0000000000000..083abcaf6b8c2
--- /dev/null
+++ b/pkgs/development/python-modules/flake8-bugbear/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, attrs
+, flake8
+, pytestCheckHook
+, hypothesis
+, hypothesmith
+}:
+
+buildPythonPackage rec {
+  pname = "flake8-bugbear";
+  version = "22.1.11";
+
+  src = fetchFromGitHub {
+    owner = "PyCQA";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-sTg69Hgvi77wtLWEH4JtcIAMFk7exr5CBXmyS0nE5Vc=";
+  };
+
+  propagatedBuildInputs = [
+    attrs
+    flake8
+  ];
+
+  checkInputs = [
+    flake8
+    pytestCheckHook
+    hypothesis
+    hypothesmith
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/PyCQA/flake8-bugbear";
+    changelog = "https://github.com/PyCQA/flake8-bugbear/blob/${version}/README.rst#change-log";
+    description = ''
+      A plugin for flake8 finding likely bugs and design problems in your
+      program.
+    '';
+    license = licenses.mit;
+    maintainers = with maintainers; [ newam ];
+  };
+}
diff --git a/pkgs/development/python-modules/flake8-docstrings/default.nix b/pkgs/development/python-modules/flake8-docstrings/default.nix
new file mode 100644
index 0000000000000..a02d900a7f07e
--- /dev/null
+++ b/pkgs/development/python-modules/flake8-docstrings/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, flake8
+, pydocstyle
+}:
+
+buildPythonPackage rec {
+  pname = "flake8-docstrings";
+  version = "1.6.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "9fe7c6a306064af8e62a055c2f61e9eb1da55f84bb39caef2b84ce53708ac34b";
+  };
+
+  propagatedBuildInputs = [ flake8 pydocstyle ];
+
+  pythonImportsCheck = [ "flake8_docstrings" ];
+
+  meta = with lib; {
+    description = "Extension for flake8 which uses pydocstyle to check docstrings";
+    homepage = "https://gitlab.com/pycqa/flake8-docstrings";
+    license = licenses.mit;
+    maintainers = with maintainers; [ smaret ];
+  };
+}
diff --git a/pkgs/development/python-modules/flake8-length/default.nix b/pkgs/development/python-modules/flake8-length/default.nix
index 34e226bd4635c..6f82b8dd50be4 100644
--- a/pkgs/development/python-modules/flake8-length/default.nix
+++ b/pkgs/development/python-modules/flake8-length/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "flake8-length";
-  version = "0.2.2";
+  version = "0.3.0";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3536fee1d2a19c01f56ebb909c4d81f686f8181091a9bc3ddf3a5621c464760a";
+    sha256 = "6e3c068005b0b3b5c8345923fe3e9a107c980baa1354dd19d820018f87409427";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/flashtext/default.nix b/pkgs/development/python-modules/flashtext/default.nix
index 52b54f4dceac8..b0623bd18d598 100644
--- a/pkgs/development/python-modules/flashtext/default.nix
+++ b/pkgs/development/python-modules/flashtext/default.nix
@@ -16,7 +16,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with lib; {
-    homepage = "http://github.com/vi3k6i5/flashtext";
+    homepage = "https://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/pkgs/development/python-modules/flask-admin/default.nix b/pkgs/development/python-modules/flask-admin/default.nix
index bfdf0e46ea58e..7187e8790529c 100644
--- a/pkgs/development/python-modules/flask-admin/default.nix
+++ b/pkgs/development/python-modules/flask-admin/default.nix
@@ -26,13 +26,13 @@
 
 buildPythonPackage rec {
   pname = "flask-admin";
-  version = "1.5.8";
+  version = "1.6.0";
   format = "setuptools";
 
   src = fetchPypi {
     pname = "Flask-Admin";
     inherit version;
-    sha256 = "sha256-6wah8xuYiB3uU6VcZPrr0ZkNaqw4gmNksoDfCyZ5/3Q=";
+    sha256 = "1209qhm51d4z66mbw55cmkzqvr465shnws2m2l2zzpxhnxwzqks2";
   };
 
   propagatedBuildInputs = [
@@ -69,6 +69,7 @@ buildPythonPackage rec {
     "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_inlineform.py"
     "flask_admin/tests/sqla/test_postgres.py"
     "flask_admin/tests/sqla/test_translation.py"
   ];
diff --git a/pkgs/development/python-modules/flask-appbuilder/default.nix b/pkgs/development/python-modules/flask-appbuilder/default.nix
index afb81cc103bc5..0129c98772307 100644
--- a/pkgs/development/python-modules/flask-appbuilder/default.nix
+++ b/pkgs/development/python-modules/flask-appbuilder/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, fetchpatch
 , apispec
 , colorama
 , click
@@ -17,6 +18,7 @@
 , marshmallow-enum
 , marshmallow-sqlalchemy
 , python-dateutil
+, pythonOlder
 , prison
 , pyjwt
 , pyyaml
@@ -25,18 +27,34 @@
 
 buildPythonPackage rec {
   pname = "flask-appbuilder";
-  version = "3.4.1";
+  version = "3.4.4";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "Flask-AppBuilder";
     inherit version;
-    sha256 = "c0830935077c4d06d57237ca4791fcabfc682fe3e315c1c9444a2bd6f94e7514";
+    sha256 = "sha256-uZzuvNusqMzAS/vmg3CuZ+D442J4LbFwsBboVIx/srE=";
   };
 
   # See here: https://github.com/dpgaspar/Flask-AppBuilder/commit/7097a7b133f27c78d2b54d2a46e4a4c24478a066.patch
   #           https://github.com/dpgaspar/Flask-AppBuilder/pull/1610
   # The patch from the PR doesn't apply cleanly so I edited it manually.
-  patches = [ ./upgrade-to-flask_jwt_extended-4.patch ];
+  patches = [
+    ./upgrade-to-flask_jwt_extended-4.patch
+    (fetchpatch {
+      # https://github.com/dpgaspar/Flask-AppBuilder/pull/1734
+      name = "flask-appbuilder-wtf3.patch";
+      url = "https://github.com/dpgaspar/Flask-AppBuilder/commit/bccb3d719cd3ceb872fe74a9ab304d74664fbf43.patch";
+      sha256 = "1rsci0ynb7y6k53j164faggjr2g6l5v78w7953qbxcy8f55sb2fv";
+      excludes = [
+        "requirements.txt"
+        "setup.py"
+        "examples/employees/app/views.py"
+      ];
+    })
+  ];
 
   propagatedBuildInputs = [
     apispec
@@ -68,7 +86,8 @@ buildPythonPackage rec {
       --replace "Flask-Login>=0.3, <0.5" "Flask-Login >=0.3, <0.6" \
       --replace "Flask-Babel>=1, <2" "Flask-Babel >=1, <3" \
       --replace "Flask-WTF>=0.14.2, <0.15.0" "Flask-WTF" \
-      --replace "marshmallow-sqlalchemy>=0.22.0, <0.24.0" "marshmallow-sqlalchemy" \
+      --replace "WTForms<3.0.0" "WTForms" \
+      --replace "marshmallow-sqlalchemy>=0.22.0, <0.27.0" "marshmallow-sqlalchemy" \
       --replace "Flask-JWT-Extended>=3.18, <4" "Flask-JWT-Extended>=4.1.0" \
       --replace "PyJWT>=1.7.1, <2.0.0" "PyJWT>=2.0.1" \
       --replace "prison>=0.2.1, <1.0.0" "prison" \
@@ -78,10 +97,12 @@ buildPythonPackage rec {
   # Majority of tests require network access or mongo
   doCheck = false;
 
-  pythonImportsCheck = [ "flask_appbuilder" ];
+  pythonImportsCheck = [
+    "flask_appbuilder"
+  ];
 
   meta = with lib; {
-    description = "Simple and rapid application development framework, built on top of Flask";
+    description = "Application development framework, built on top of Flask";
     homepage = "https://github.com/dpgaspar/flask-appbuilder/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ costrouc ];
diff --git a/pkgs/development/python-modules/flask-gravatar/default.nix b/pkgs/development/python-modules/flask-gravatar/default.nix
new file mode 100644
index 0000000000000..c0bbf7d014670
--- /dev/null
+++ b/pkgs/development/python-modules/flask-gravatar/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, flask
+, pytestCheckHook
+, pygments
+}:
+
+buildPythonPackage rec {
+  pname = "flask-gravatar";
+  version = "0.5.0";
+
+  src = fetchPypi {
+    pname = "Flask-Gravatar";
+    inherit version;
+    sha256 = "YGZfMcLGEokdto/4Aek+06CIHGyOw0arxk0qmSP1YuE=";
+  };
+
+  postPatch = ''
+    sed -i setup.py \
+     -e "s|tests_require=tests_require,||g" \
+     -e "s|extras_require=extras_require,||g" \
+     -e "s|setup_requires=setup_requires,||g"
+    # pep8 is deprecated and cov not needed
+    substituteInPlace pytest.ini \
+     --replace "--pep8" "" \
+     --replace "--cov=flask_gravatar --cov-report=term-missing" ""
+  '';
+
+  propagatedBuildInputs = [
+    flask
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    pygments
+  ];
+
+  pythonImportsCheck = [ "flask_gravatar" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/zzzsochi/Flask-Gravatar";
+    description = "Small and simple integration of gravatar into flask";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ gador ];
+  };
+}
diff --git a/pkgs/development/python-modules/flask-ldap-login/default.nix b/pkgs/development/python-modules/flask-ldap-login/default.nix
deleted file mode 100644
index 08aa2efb8f2ce..0000000000000
--- a/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/pkgs/development/python-modules/flask-login/default.nix b/pkgs/development/python-modules/flask-login/default.nix
index 9d54849e92d97..3c7058c1212d8 100644
--- a/pkgs/development/python-modules/flask-login/default.nix
+++ b/pkgs/development/python-modules/flask-login/default.nix
@@ -1,27 +1,51 @@
-{ lib, buildPythonPackage, fetchPypi, pythonAtLeast
-, flask, blinker, nose, mock, semantic-version }:
+{ lib
+, blinker
+, buildPythonPackage
+, fetchPypi
+, flask
+, pytestCheckHook
+, pythonAtLeast
+, pythonOlder
+, semantic-version
+, werkzeug
+}:
 
 buildPythonPackage rec {
-  pname = "Flask-Login";
+  pname = "flask-login";
   version = "0.5.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
-    inherit pname version;
+    pname = "Flask-Login";
+    inherit version;
     sha256 = "6d33aef15b5bcead780acc339464aae8a6e28f13c90d8b1cf9de8b549d1c0b4b";
   };
 
-  checkInputs = [ nose mock semantic-version ];
-  propagatedBuildInputs = [ flask blinker ];
+  propagatedBuildInputs = [
+    flask
+    werkzeug
+  ];
+
+  checkInputs = [
+    blinker
+    pytestCheckHook
+    semantic-version
+  ];
 
-  checkPhase = "nosetests -d";
+  disabledTests = lib.optionals (pythonAtLeast "3.10") [
+    "test_hashable"
+  ];
 
-  doCheck = pythonAtLeast "3.3";
+  pythonImportsCheck = [
+    "flask_login"
+  ];
 
   meta = with lib; {
-    homepage = "https://github.com/maxcountryman/flask-login";
     description = "User session management for Flask";
+    homepage = "https://github.com/maxcountryman/flask-login";
     license = licenses.mit;
-    platforms = platforms.all;
     maintainers = with maintainers; [ abbradar ];
   };
 }
diff --git a/pkgs/development/python-modules/flask-paginate/default.nix b/pkgs/development/python-modules/flask-paginate/default.nix
index d23306be62bdc..d73ad8d35c0d4 100644
--- a/pkgs/development/python-modules/flask-paginate/default.nix
+++ b/pkgs/development/python-modules/flask-paginate/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "flask-paginate";
-  version = "2021.12.28";
+  version = "2022.1.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c722a25067d722483e24cde16ed987a822292ca758a213299e445694d2b5b587";
+    sha256 = "a32996ec07ca004c45b768b0d50829728ab8f3986c0650ef538e42852c7aeba2";
   };
 
   propagatedBuildInputs = [ flask ];
diff --git a/pkgs/development/python-modules/flask-paranoid/default.nix b/pkgs/development/python-modules/flask-paranoid/default.nix
new file mode 100644
index 0000000000000..787b34a93b37f
--- /dev/null
+++ b/pkgs/development/python-modules/flask-paranoid/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, flask
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "flask-paranoid";
+  version = "0.2";
+
+  src = fetchFromGitHub {
+    owner = "miguelgrinberg";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0WWc/ktAOuTk4A75xI1jCj/aef2+1TjLKBA9+PRfJO0=";
+  };
+
+  postPatch = ''
+    # tests have a typo in one of the assertions
+    substituteInPlace tests/test_paranoid.py --replace "01-Jan-1970" "01 Jan 1970"
+  '';
+
+  propagatedBuildInputs = [
+    flask
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "flask_paranoid" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/miguelgrinberg/flask-paranoid/";
+    description = "Simple user session protection";
+    license = licenses.mit;
+    maintainers = with maintainers; [ gador ];
+  };
+}
diff --git a/pkgs/development/python-modules/flask-security-too/default.nix b/pkgs/development/python-modules/flask-security-too/default.nix
new file mode 100644
index 0000000000000..ddf5aa05c493b
--- /dev/null
+++ b/pkgs/development/python-modules/flask-security-too/default.nix
@@ -0,0 +1,76 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, flask
+, blinker
+, setuptools
+, itsdangerous
+, flask_principal
+, passlib
+, email_validator
+, flask_wtf
+, flask_login
+, pytestCheckHook
+, flask_mail
+, sqlalchemy
+, flask_sqlalchemy
+, flask-mongoengine
+, peewee
+, pony
+, zxcvbn
+, mongoengine
+, cryptography
+, pyqrcode
+, phonenumbers
+, bleach
+, mongomock
+}:
+
+buildPythonPackage rec {
+  pname = "flask-security-too";
+  version = "4.1.2";
+
+  src = fetchPypi {
+    pname = "Flask-Security-Too";
+    inherit version;
+    sha256 = "16ws5n08vm7wsa2f7lrkxvc7jl3ah1xfylhhyzb4vvqmlk7x9hw8";
+  };
+
+  propagatedBuildInputs = [
+    flask
+    flask_login
+    flask_principal
+    flask_wtf
+    email_validator
+    itsdangerous
+    passlib
+    blinker
+    setuptools
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    flask_mail
+    sqlalchemy
+    flask_sqlalchemy
+    flask-mongoengine
+    peewee
+    pony
+    zxcvbn
+    mongoengine
+    cryptography
+    pyqrcode
+    phonenumbers
+    bleach
+    mongomock
+  ];
+
+  pythonImportsCheck = [ "flask_security" ];
+
+  meta = with lib; {
+    homepage = "https://pypi.org/project/Flask-Security-Too/";
+    description = "Simple security for Flask apps (fork)";
+    license = licenses.mit;
+    maintainers = with maintainers; [ gador ];
+  };
+}
diff --git a/pkgs/development/python-modules/flask/1.nix b/pkgs/development/python-modules/flask/1.nix
deleted file mode 100644
index 27f436c3c53cb..0000000000000
--- a/pkgs/development/python-modules/flask/1.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi
-, itsdangerous, click, werkzeug, jinja2, pytest }:
-
-buildPythonPackage rec {
-  version = "1.1.2";
-  pname = "Flask";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060";
-  };
-
-  checkInputs = [ pytest ];
-  propagatedBuildInputs = [ itsdangerous click werkzeug jinja2 ];
-
-  checkPhase = ''
-    py.test
-  '';
-
-  # Tests require extra dependencies
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "http://flask.pocoo.org/";
-    description = "A microframework based on Werkzeug, Jinja 2, and good intentions";
-    license = licenses.bsd3;
-  };
-}
diff --git a/pkgs/development/python-modules/flask/default.nix b/pkgs/development/python-modules/flask/default.nix
index 2fe71c2d6db93..cf1079166b085 100644
--- a/pkgs/development/python-modules/flask/default.nix
+++ b/pkgs/development/python-modules/flask/default.nix
@@ -7,6 +7,7 @@
 , jinja2
 , python-dotenv
 , werkzeug
+, setuptools
 , pytestCheckHook
 }:
 
@@ -26,6 +27,10 @@ buildPythonPackage rec {
     itsdangerous
     jinja2
     werkzeug
+
+    # required for CLI subcommand autodiscovery
+    # see: https://github.com/pallets/flask/blob/fdac8a5404e3e3a316568107a293f134707c75bb/src/flask/cli.py#L498
+    setuptools
   ];
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/flatten-dict/default.nix b/pkgs/development/python-modules/flatten-dict/default.nix
new file mode 100644
index 0000000000000..e7bda9378b192
--- /dev/null
+++ b/pkgs/development/python-modules/flatten-dict/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pytestCheckHook
+, pythonOlder
+, six
+}:
+
+buildPythonPackage rec {
+  pname = "flatten-dict";
+  version = "0.4.2";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "ianlini";
+    repo = pname;
+    rev = version;
+    hash = "sha256-uHenKoD4eLm9sMREVuV0BB/oUgh4NMiuj+IWd0hlxNQ=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    six
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "flatten_dict"
+  ];
+
+  meta = with lib; {
+    description = "Module for flattening and unflattening dict-like objects";
+    homepage = "https://github.com/ianlini/flatten-dict";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/flax/default.nix b/pkgs/development/python-modules/flax/default.nix
new file mode 100644
index 0000000000000..3ac8166bbbdd6
--- /dev/null
+++ b/pkgs/development/python-modules/flax/default.nix
@@ -0,0 +1,63 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, jaxlib
+, keras
+, lib
+, matplotlib
+, msgpack
+, numpy
+, optax
+, pytestCheckHook
+, tensorflow
+}:
+
+buildPythonPackage rec {
+  pname = "flax";
+  version = "0.4.0";
+
+  src = fetchFromGitHub {
+    owner = "google";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0rvdaxyf68qmm5d77gbizpcibyz2ic2pb2x7rgf7p8qwijyc39ws";
+  };
+
+  buildInputs = [ jaxlib ];
+
+  propagatedBuildInputs = [
+    matplotlib
+    msgpack
+    numpy
+    optax
+  ];
+
+  pythonImportsCheck = [
+    "flax"
+  ];
+
+  checkInputs = [
+    keras
+    pytestCheckHook
+    tensorflow
+  ];
+
+  disabledTestPaths = [
+    # Docs test, needs extra deps + we're not interested in it.
+    "docs/_ext/codediff_test.py"
+
+    # The tests in `examples` are not designed to be executed from a single test
+    # session and thus either have the modules that conflict with each other or
+    # wrong import paths, depending on how they're invoked. Many tests also have
+    # dependencies that are not packaged in `nixpkgs` (`clu`, `jgraph`,
+    # `tensorflow_datasets`, `vocabulary`) so the benefits of trying to run them
+    # would be limited anyway.
+    "examples/*"
+  ];
+
+  meta = with lib; {
+    description = "Neural network library for JAX";
+    homepage = "https://github.com/google/flax";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ndl ];
+  };
+}
diff --git a/pkgs/development/python-modules/flexmock/default.nix b/pkgs/development/python-modules/flexmock/default.nix
index ae52c31b57756..434f9409dbb3c 100644
--- a/pkgs/development/python-modules/flexmock/default.nix
+++ b/pkgs/development/python-modules/flexmock/default.nix
@@ -1,26 +1,42 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pytest
+, pytestCheckHook
+, pythonOlder
+, teamcity-messages
+, testtools
 }:
 
 buildPythonPackage rec {
   pname = "flexmock";
-  version = "0.11.1";
+  version = "0.11.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1c51371767f968e1d2f505138de72b07704ecebc9b34e0b52ffdeeb510685c3f";
+    hash = "sha256-sf419qXzJUe1zTGhXAYNmrhj3Aiv8BjNc9x40bZR7dQ=";
   };
 
-  checkInputs = [ pytest ];
-  checkPhase = ''
-    py.test
-  '';
+  checkInputs = [
+    pytestCheckHook
+    teamcity-messages
+    testtools
+  ];
+
+  disabledTests = [
+    "test_failed_test_case"
+  ];
+
+  pythonImportsCheck = [
+    "flexmock"
+  ];
 
   meta = with lib; {
-    description = "flexmock is a testing library for Python that makes it easy to create mocks,stubs and fakes.";
+    description = "Testing library that makes it easy to create mocks,stubs and fakes";
     homepage = "https://flexmock.readthedocs.org";
     license = licenses.bsdOriginal;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/flit-core/default.nix b/pkgs/development/python-modules/flit-core/default.nix
index 7cb9ed2c6c451..35bba06f1f36e 100644
--- a/pkgs/development/python-modules/flit-core/default.nix
+++ b/pkgs/development/python-modules/flit-core/default.nix
@@ -2,12 +2,11 @@
 , buildPythonPackage
 , callPackage
 , flit
-, toml
 }:
 
 buildPythonPackage rec {
   pname = "flit-core";
-  version = "3.2.0";
+  version = "3.6.0";
   format = "pyproject";
 
   outputs = [
@@ -21,10 +20,6 @@ buildPythonPackage rec {
     cd flit_core
   '';
 
-  propagatedBuildInputs = [
-    toml
-  ];
-
   postInstall = ''
     mkdir $testsout
     cp -R ../tests $testsout/tests
diff --git a/pkgs/development/python-modules/flit/default.nix b/pkgs/development/python-modules/flit/default.nix
index 0a6d1ba3158a7..830ed2702b898 100644
--- a/pkgs/development/python-modules/flit/default.nix
+++ b/pkgs/development/python-modules/flit/default.nix
@@ -3,13 +3,12 @@
 , fetchFromGitHub
 , docutils
 , requests
-, requests_download
-, zipfile36
-, pythonOlder
 , pytest
 , testpath
 , responses
 , flit-core
+, tomli
+, tomli-w
 }:
 
 # Flit is actually an application to build universal wheels.
@@ -19,14 +18,14 @@
 
 buildPythonPackage rec {
   pname = "flit";
-  version = "3.2.0";
+  version = "3.6.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "takluyver";
     repo = "flit";
     rev = version;
-    sha256 = "sha256-zN+/oAyXBo6Ho7n/xhOQ2mjtPGKA1anCvl3sVf7t+Do=";
+    sha256 = "sha256-D3q/1g6njrrmizooGmzNd9g2nKs00dMGj9jrrv3Y6HQ=";
   };
 
   nativeBuildInputs = [
@@ -36,10 +35,9 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     docutils
     requests
-    requests_download
     flit-core
-  ] ++ lib.optionals (pythonOlder "3.6") [
-    zipfile36
+    tomli
+    tomli-w
   ];
 
   checkInputs = [ pytest testpath responses ];
diff --git a/pkgs/development/python-modules/flowlogs_reader/default.nix b/pkgs/development/python-modules/flowlogs_reader/default.nix
index 885c688225ca0..7045841245d3c 100644
--- a/pkgs/development/python-modules/flowlogs_reader/default.nix
+++ b/pkgs/development/python-modules/flowlogs_reader/default.nix
@@ -1,32 +1,48 @@
 { lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, botocore
 , boto3
-, docutils
-, unittest2
-, mock
+, botocore
+, buildPythonPackage
+, fetchFromGitHub
+, parquet
+, pytestCheckHook
+, python-dateutil
+, pythonOlder
 }:
 
 buildPythonPackage rec {
-  pname = "flowlogs_reader";
-  version = "3.1.0";
-  disabled = isPy27;
+  pname = "flowlogs-reader";
+  version = "3.2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "d99636423abc83bb4042d63edd56852ede9e2949cadcc3339eda8f3367826dd4";
+  src = fetchFromGitHub {
+    owner = "obsrvbl";
+    repo = pname;
+    # https://github.com/obsrvbl/flowlogs-reader/issues/57
+    rev = "fac4c6c63348ff67fd0a8f51d391ba7c9f59e5ed";
+    hash = "sha256-bGb2CLp33aIr0R/lBPWAF3CbtVTWpqmcvYgZ6bcARTc=";
   };
 
-  propagatedBuildInputs = [ botocore boto3 docutils ];
-  buildInputs = [ unittest2 mock ];
+  propagatedBuildInputs = [
+    botocore
+    boto3
+    parquet
+    python-dateutil
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "flowlogs_reader"
+  ];
 
   meta = with lib; {
     description = "Python library to make retrieving Amazon VPC Flow Logs from CloudWatch Logs a bit easier";
     homepage = "https://github.com/obsrvbl/flowlogs-reader";
-    maintainers = with maintainers; [ cransom ];
     license = licenses.asl20;
+    maintainers = with maintainers; [ cransom ];
   };
-
 }
diff --git a/pkgs/development/python-modules/flufl/i18n.nix b/pkgs/development/python-modules/flufl/i18n.nix
index 70b97a083d8f8..a670b4a9ba161 100644
--- a/pkgs/development/python-modules/flufl/i18n.nix
+++ b/pkgs/development/python-modules/flufl/i18n.nix
@@ -1,9 +1,14 @@
-{ buildPythonPackage, fetchPypi, atpublic }:
+{ buildPythonPackage, fetchPypi
+, atpublic
+, pdm-pep517
+}:
 
 buildPythonPackage rec {
   pname = "flufl.i18n";
-  version = "3.2";
+  version = "4.0";
+  format = "pyproject";
 
+  nativeBuildInputs = [ pdm-pep517 ];
   propagatedBuildInputs = [ atpublic ];
 
   doCheck = false;
@@ -12,6 +17,6 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-w1yPjqtmrbf9ZKFCCGAQUGbSs2y2VbM/+xSv6OIj7WI=";
+    sha256 = "sha256-MTq0djhFp/cEx0Ezt5EaMz3MzrAWjxZ0HQSkfFuasWY=";
   };
 }
diff --git a/pkgs/development/python-modules/flufl/lock.nix b/pkgs/development/python-modules/flufl/lock.nix
index c0f3ec60cf357..c2cc5723e4dfe 100644
--- a/pkgs/development/python-modules/flufl/lock.nix
+++ b/pkgs/development/python-modules/flufl/lock.nix
@@ -1,16 +1,19 @@
 { lib, buildPythonPackage, fetchPypi, pytestCheckHook
 , atpublic, psutil, pytest-cov, sybil
+, pdm-pep517
 }:
 
 buildPythonPackage rec {
   pname = "flufl.lock";
-  version = "6.0";
+  version = "7.0";
+  format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-/HSO5gnshktIOO9knb0RcPp53rDCE8L9URUb7mp/wkI=";
+    sha256 = "sha256-FBX30Z2N2WpYJC4O+5DOPLGHf7VFB0rYwcrky3GR/gE=";
   };
 
+  nativeBuildInputs = [ pdm-pep517 ];
   propagatedBuildInputs = [ atpublic psutil ];
   checkInputs = [ pytestCheckHook pytest-cov sybil ];
 
diff --git a/pkgs/development/python-modules/flup/default.nix b/pkgs/development/python-modules/flup/default.nix
deleted file mode 100644
index fa19d9bdf7a56..0000000000000
--- a/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/pkgs/development/python-modules/flux-led/default.nix b/pkgs/development/python-modules/flux-led/default.nix
index 9efe486bafa1c..873b26a29f9d1 100644
--- a/pkgs/development/python-modules/flux-led/default.nix
+++ b/pkgs/development/python-modules/flux-led/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "flux-led";
-  version = "0.27.20";
+  version = "0.28.26";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "Danielhiversen";
     repo = "flux_led";
     rev = version;
-    sha256 = "sha256-bkVhM6Em0kyIhfSCFtotZR5Ob4i8IWBL1oSc+BTVFuw=";
+    sha256 = "sha256-t8SE+TU9OW/iQHVLbEdTgX4azXendKSgJQ4/QpDSkL8=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/folium/default.nix b/pkgs/development/python-modules/folium/default.nix
index ff8c097d6ff32..48b98a8e10183 100644
--- a/pkgs/development/python-modules/folium/default.nix
+++ b/pkgs/development/python-modules/folium/default.nix
@@ -1,37 +1,60 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , pythonOlder
-, pytest
-, numpy
+, pytestCheckHook
+, branca
+, jinja2
 , nbconvert
+, numpy
 , pandas
-, mock
-, jinja2
-, branca
+, pillow
 , requests
+, selenium
+, setuptools-scm
 }:
 
 buildPythonPackage rec {
   pname = "folium";
   version = "0.12.1.post1";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "e91e57d8298f3ccf4cce3c5e065bea6eb17033e3c5432b8a22214009c266b2ab";
+  disabled = pythonOlder "3.5";
+
+  src = fetchFromGitHub {
+    owner = "python-visualization";
+    repo = "folium";
+    rev = "v${version}";
+    sha256 = "sha256-4UseN/3ojZdDUopwZLpHZEBon1qDDvCWfdzxodi/BeA=";
   };
 
-  disabled = pythonOlder "3.5";
+  SETUPTOOLS_SCM_PRETEND_VERSION = "v${version}";
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
 
-  checkInputs = [ pytest nbconvert pandas mock ];
-  propagatedBuildInputs = [ jinja2 branca requests numpy ];
+  propagatedBuildInputs = [
+    branca
+    jinja2
+    numpy
+    requests
+  ];
 
-  # No tests in archive
-  doCheck = false;
+  checkInputs = [
+    nbconvert
+    pytestCheckHook
+    pandas
+    pillow
+    selenium
+  ];
 
-  checkPhase = ''
-    py.test
-  '';
+  disabledTests = [
+    # requires internet connection
+    "test_geojson"
+    "test_heat_map_with_weights"
+    "test_json_request"
+    "test_notebook"
+  ];
 
   meta = {
     description = "Make beautiful maps with Leaflet.js & Python";
diff --git a/pkgs/development/python-modules/fontmath/default.nix b/pkgs/development/python-modules/fontmath/default.nix
index d9516ceb88b42..c0e4bc85773df 100644
--- a/pkgs/development/python-modules/fontmath/default.nix
+++ b/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/pkgs/development/python-modules/fontparts/default.nix b/pkgs/development/python-modules/fontparts/default.nix
index 9b9cc129c63bb..7c04c54d424c7 100644
--- a/pkgs/development/python-modules/fontparts/default.nix
+++ b/pkgs/development/python-modules/fontparts/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "fontParts";
-  version = "0.10.1";
+  version = "0.10.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "794ada47e19ba41ef39b59719be312b127672bcb56bb7208dd3234d2bb3e8218";
+    sha256 = "a3a3926e977f82ae19e6823760b59f2338085973da1eaad5badaf969f261a737";
     extension = "zip";
   };
 
diff --git a/pkgs/development/python-modules/fonttools/default.nix b/pkgs/development/python-modules/fonttools/default.nix
index ec3acfc775d0f..50f5e87a29f49 100644
--- a/pkgs/development/python-modules/fonttools/default.nix
+++ b/pkgs/development/python-modules/fonttools/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "fonttools";
-  version = "4.26.2";
+  version = "4.29.0";
 
   # Bump to 3.7 when https://github.com/fonttools/fonttools/pull/2417 is merged
   disabled = pythonOlder "3.6";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner  = pname;
     repo   = pname;
     rev    = version;
-    sha256 = "1zp9idjkn4bn1a4pn8x64vi8j1ijdsd4qvgf1f70dfwqvw6ak1i6";
+    sha256 = "LnkpTEpZbbRAyqGPJXdfpHjh4t7n6LkjZGLhirVNl7E=";
   };
 
   # all dependencies are optional, but
diff --git a/pkgs/development/python-modules/forecast-solar/default.nix b/pkgs/development/python-modules/forecast-solar/default.nix
index 3f776c970659a..6a77f57acf92e 100644
--- a/pkgs/development/python-modules/forecast-solar/default.nix
+++ b/pkgs/development/python-modules/forecast-solar/default.nix
@@ -18,6 +18,8 @@ buildPythonPackage rec {
     sha256 = "sha256-UrLy+j8YDWuS9pciEDKb/+UoCcw54XWiIUAEYC72/W0=";
   };
 
+  PACKAGE_VERSION = version;
+
   propagatedBuildInputs = [
     aiodns
     aiohttp
diff --git a/pkgs/development/python-modules/formbox/default.nix b/pkgs/development/python-modules/formbox/default.nix
index d099b7454544a..d5b85d4e5bd10 100644
--- a/pkgs/development/python-modules/formbox/default.nix
+++ b/pkgs/development/python-modules/formbox/default.nix
@@ -2,15 +2,15 @@
 
 buildPythonPackage rec {
   pname = "formbox";
-  version = "0.1.0";
+  version = "0.4.1";
   format = "flit";
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.6";
 
   src = fetchFromSourcehut {
     owner = "~cnx";
     repo = pname;
     rev = version;
-    sha256 = "sha256-6OzmYqUC3mmrAMeMExI4rdVGUoWrxRuBfjKFYbHUlgE=";
+    sha256 = "sha256-zOvXmSeBiwc0Z5mRMwMsHLU3A/iP7rpjXm0T0I2gUTk=";
   };
 
   propagatedBuildInputs = [ bleach markdown ];
diff --git a/pkgs/development/python-modules/fountains/default.nix b/pkgs/development/python-modules/fountains/default.nix
index ee9a22c58f2ec..b869d583fc8df 100644
--- a/pkgs/development/python-modules/fountains/default.nix
+++ b/pkgs/development/python-modules/fountains/default.nix
@@ -11,7 +11,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-bea8EXw3b0CibhEREdY4FZouiiXP4y+UbbDXed7Ltwo=";
+    sha256 = "6de6bc117c376f40a26e111111d638159a2e8a25cfe32f946db0d779decbb70a";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/fpylll/default.nix b/pkgs/development/python-modules/fpylll/default.nix
index da246966c9327..1bff69e460e5c 100644
--- a/pkgs/development/python-modules/fpylll/default.nix
+++ b/pkgs/development/python-modules/fpylll/default.nix
@@ -1,6 +1,5 @@
 { lib
 , fetchFromGitHub
-, fetchpatch
 , buildPythonPackage
 , pkgconfig
 , gmp
@@ -15,29 +14,15 @@
 
 buildPythonPackage rec {
   pname = "fpylll";
-  version = "0.5.1dev";
+  version = "0.5.6";
 
   src = fetchFromGitHub {
     owner = "fplll";
     repo = "fpylll";
     rev = version;
-    sha256 = "15vdfgx448mr1nf054h7lr2j3dd35fsfhikqzrh9zsng8n12hxa5";
+    sha256 = "sha256-Bxcc0941+pl2Uzam48qe+PFlcBWsJ0rDYZxrxIYQpEA=";
   };
 
-  patches = [
-    # two patches to fix the testsuite on aarch64 (https://github.com/fplll/fpylll/issues/162)
-    (fetchpatch {
-      url = "https://github.com/fplll/fpylll/commit/d5809a8fdb86b2693b1fa94e655bbbe4ad80e286.patch";
-      name = "less-precision-in-tests.patch";
-      sha256 = "0vkvi25nwwvk5r4a4xmkbf060di4hjq32bys75l2hsaysxmk93nz";
-    })
-    (fetchpatch {
-      url = "https://github.com/fplll/fpylll/commit/b5b146a010d50da219a313adc4b6f7deddcc146b.patch";
-      name = "dont-hardcode-precision.patch";
-      sha256 = "1rsbwh90i1j5p2rp6jd5n25v1jzw1n8728fzz1lhb91zmk0hlxc9";
-    })
-  ];
-
   buildInputs = [
     gmp
     pari
diff --git a/pkgs/development/python-modules/freezegun/0.3.nix b/pkgs/development/python-modules/freezegun/0.3.nix
deleted file mode 100644
index 7f77616f2a4ec..0000000000000
--- a/pkgs/development/python-modules/freezegun/0.3.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, python-dateutil
-, six
-, mock
-, nose
-, pytest
-}:
-
-buildPythonPackage rec {
-  pname = "freezegun";
-  version = "0.3.15";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "e2062f2c7f95cc276a834c22f1a17179467176b624cc6f936e8bc3be5535ad1b";
-  };
-
-  propagatedBuildInputs = [ python-dateutil six ];
-  checkInputs = [ mock nose pytest ];
-
-  meta = with lib; {
-    description = "FreezeGun: Let your Python tests travel through time";
-    homepage = "https://github.com/spulec/freezegun";
-    license = licenses.asl20;
-  };
-
-}
diff --git a/pkgs/development/python-modules/fritzconnection/default.nix b/pkgs/development/python-modules/fritzconnection/default.nix
index 0797d39c3125e..092b00f6b02e6 100644
--- a/pkgs/development/python-modules/fritzconnection/default.nix
+++ b/pkgs/development/python-modules/fritzconnection/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "fritzconnection";
-  version = "1.7.2";
+  version = "1.9.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "kbr";
     repo = pname;
     rev = version;
-    sha256 = "sha256-TT0mc3ID+R5Dhm0xSMpyg68wZR70xJfRfgPkHkvLstA=";
+    sha256 = "sha256-wapZ4lCG0tfE+LbFVeIxVlbMJN/sSwIeYK5GLCqoWLs=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/frozendict/default.nix b/pkgs/development/python-modules/frozendict/default.nix
index 02579d97d2879..d7e12cc061d59 100644
--- a/pkgs/development/python-modules/frozendict/default.nix
+++ b/pkgs/development/python-modules/frozendict/default.nix
@@ -8,21 +8,16 @@
 
 buildPythonPackage rec {
   pname = "frozendict";
-  version = "2.1.0";
+  version = "2.3.0";
   format = "setuptools";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0189168749ddea8601afd648146c502533f93ae33840eb76cd71f694742623cd";
+    sha256 = "1dd0bqhai4k3fj9ydcwmc9hvbmrsklk349ys21w8x4n5xynk2hns";
   };
 
-  postPatch = ''
-    # fixes build on non-x86_64 architectures
-    rm frozendict/src/3_9/cpython_src/Include/pyconfig.h
-  '';
-
   pythonImportsCheck = [
     "frozendict"
   ];
@@ -32,24 +27,12 @@ buildPythonPackage rec {
   ];
 
   preCheck = ''
-    rm -r frozendict
-    export PYTHONPATH=$out/${python.sitePackages}:$PYTHONPATH
+    pushd test
   '';
 
-  disabledTests = [
-    # TypeError: unsupported operand type(s) for |=: 'frozendict.frozendict' and 'dict'
-    "test_union"
-    # non-standard assertions
-    "test_repr"
-    "test_format"
-    "test_str"
-  ];
-
-  disabledTestPaths = [
-    # unpackaged test dependency: coold
-    "test/test_coold.py"
-    "test/test_coold_subclass.py"
-  ];
+  postCheck = ''
+    popd
+  '';
 
   meta = with lib; {
     homepage = "https://github.com/slezica/python-frozendict";
diff --git a/pkgs/development/python-modules/ftputil/default.nix b/pkgs/development/python-modules/ftputil/default.nix
index 501b95f81f14c..e9e445f11c3dd 100644
--- a/pkgs/development/python-modules/ftputil/default.nix
+++ b/pkgs/development/python-modules/ftputil/default.nix
@@ -1,32 +1,45 @@
-{ stdenv, lib, buildPythonPackage, fetchPypi, pythonOlder, pytest, freezegun }:
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchPypi
+, freezegun
+, pytestCheckHook
+, pythonOlder
+}:
 
 buildPythonPackage rec {
-  version = "5.0.2";
   pname = "ftputil";
+  version = "5.0.3";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "afa2ba402235e8c6583c1d2630269628344134c9246b961ff14f182047f3e633";
+    hash = "sha256-m4buZ8GYDOHYmxN1K8SLlJP+4GNJy0doKFlOduCPhIg=";
   };
 
-  checkInputs = [ pytest freezegun ];
+  checkInputs = [
+    freezegun
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Tests require network access
+    "test_public_servers"
+    "test_real_ftp"
+    "test_set_parser"
+    "test_upload"
+  ];
 
-  checkPhase = ''
-    touch Makefile
-    # Disable tests that require network access or access /home or assume execution before year 2020
-    py.test test \
-      -k "not test_public_servers and not test_real_ftp \
-          and not test_set_parser and not test_repr \
-          and not test_conditional_upload and not test_conditional_download_with_older_target \
-  ''
-  # need until https://ftputil.sschwarzer.net/trac/ticket/140#ticket is fixed
-  + lib.optionalString stdenv.isDarwin "and not test_error_message_reuse"
-  + ''"'';
+  pythonImportsCheck = [
+    "ftputil"
+  ];
 
   meta = with lib; {
     description = "High-level FTP client library (virtual file system and more)";
     homepage = "http://ftputil.sschwarzer.net/";
-    license = licenses.bsd2; # "Modified BSD license, says pypi"
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/fudge/default.nix b/pkgs/development/python-modules/fudge/default.nix
deleted file mode 100644
index ba97b2e8f47a8..0000000000000
--- a/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/pkgs/development/python-modules/funcsigs/default.nix b/pkgs/development/python-modules/funcsigs/default.nix
index 8a7335accda40..115d358cb7869 100644
--- a/pkgs/development/python-modules/funcsigs/default.nix
+++ b/pkgs/development/python-modules/funcsigs/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchPypi
-, isPyPy, isPy3k, unittest2
+, isPyPy, isPy3k
 }:
 
 buildPythonPackage rec {
@@ -11,11 +11,14 @@ buildPythonPackage rec {
     sha256 = "0l4g5818ffyfmfs1a924811azhjj8ax9xd1cffr1mzd3ycn0zfx7";
   };
 
-  buildInputs = [ unittest2 ];
-
   # https://github.com/testing-cabal/funcsigs/issues/10
   patches = lib.optional (isPyPy && isPy3k) [ ./fix-pypy3-tests.patch ];
 
+  # requires, unittest2 and package hasn't been maintained since 2013
+  doCheck = false;
+
+  pythonImportsCheck = [ "funcsigs" ];
+
   meta = with lib; {
     description = "Python function signatures from PEP362 for Python 2.6, 2.7 and 3.2+";
     homepage = "https://github.com/aliles/funcsigs";
diff --git a/pkgs/development/python-modules/furo/default.nix b/pkgs/development/python-modules/furo/default.nix
index 956c7da935806..dd517a2f547ed 100644
--- a/pkgs/development/python-modules/furo/default.nix
+++ b/pkgs/development/python-modules/furo/default.nix
@@ -8,13 +8,15 @@
 
 buildPythonPackage rec {
   pname = "furo";
-  version = "2021.10.9";
-  format = "flit";
+  version = "2022.2.14.1";
+  format = "wheel";
   disable = pythonOlder "3.6";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-K6pCoi7ePm6Vxhgqs2S6wuwVt5vH+cp/sJ/ZrsSzVAw=";
+    inherit pname version format;
+    dist = "py3";
+    python = "py3";
+    sha256 = "sha256-18uBJgNGNyEjMjUOyEkMuVcy02UGsCQxiljO4ufeD9o=";
   };
 
   propagatedBuildInputs = [
@@ -22,6 +24,17 @@ buildPythonPackage rec {
     beautifulsoup4
   ];
 
+  installCheckPhase = ''
+    # furo was built incorrectly if this directory is empty
+    # Ignore the hidden file .gitignore
+    cd "$out/lib/python"*
+    if [ "$(ls 'site-packages/furo/theme/furo/static/' | wc -l)" -le 0 ]; then
+      echo 'static directory must not be empty'
+      exit 1
+    fi
+    cd -
+  '';
+
   pythonImportsCheck = [ "furo" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/futures/default.nix b/pkgs/development/python-modules/futures/default.nix
deleted file mode 100644
index bc19a31927af1..0000000000000
--- a/pkgs/development/python-modules/futures/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, python, stdenv }:
-
-buildPythonPackage rec {
-  pname = "futures";
-  version = "3.3.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "7e033af76a5e35f58e56da7a91e687706faf4e7bdfb2cbc3f2cca6b9bcda9794";
-  };
-
-  # This module is for backporting functionality to Python 2.x, it's builtin in py3k
-  disabled = isPy3k;
-
-  checkPhase = ''
-    ${python.interpreter} test_futures.py
-  '';
-
-  doCheck = !stdenv.isDarwin;
-
-  meta = with lib; {
-    description = "Backport of the concurrent.futures package from Python 3.2";
-    homepage = "https://github.com/agronholm/pythonfutures";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [  ];
-  };
-}
diff --git a/pkgs/development/python-modules/gamble/default.nix b/pkgs/development/python-modules/gamble/default.nix
new file mode 100644
index 0000000000000..0df84510efd41
--- /dev/null
+++ b/pkgs/development/python-modules/gamble/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "gamble";
+  version = "0.10";
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1lb5x076blnnz2hj7k92pyq0drbjwsls6pmnabpvyvs4ddhz5w9w";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "gamble"
+  ];
+
+  meta = with lib; {
+    description = "Collection of gambling classes/tools";
+    homepage = "https://github.com/jpetrucciani/gamble";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jpetrucciani ];
+  };
+}
diff --git a/pkgs/development/python-modules/gaphas/default.nix b/pkgs/development/python-modules/gaphas/default.nix
index a6351aeeadd79..c3541bcc30a0b 100644
--- a/pkgs/development/python-modules/gaphas/default.nix
+++ b/pkgs/development/python-modules/gaphas/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "gaphas";
-  version = "3.1.9";
+  version = "3.5.0";
   disabled = pythonOlder "3.7";
 
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-S6cRsfqXYM4mSVSs2M8fET5ShFClKkGkod2w2y6F2gc=";
+    sha256 = "526f1943dd54efe91fbf45db38049103611fbac5939c42ad172ba9d2dce71fe1";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/garages-amsterdam/default.nix b/pkgs/development/python-modules/garages-amsterdam/default.nix
index 08a687d70601d..01ff36e637956 100644
--- a/pkgs/development/python-modules/garages-amsterdam/default.nix
+++ b/pkgs/development/python-modules/garages-amsterdam/default.nix
@@ -2,21 +2,32 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pythonOlder
+, poetry-core
 , aiohttp
 }:
 
 buildPythonPackage rec {
   pname = "garages-amsterdam";
-  version = "2.1.1";
+  version = "3.2.1";
+  format = "pyproject";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "klaasnicolaas";
     repo = "garages_amsterdam";
-    rev = version;
-    sha256 = "1m0bc3bzb83apprk412s7k5r2g6p5br2hrak2a976lh9ifk1d8hj";
+    rev = "v${version}";
+    sha256 = "16f2742r9p3mrg2nz8lnkgsxabbjga2qnp9vzq59026q6mmfwkm9";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace '"0.0.0"' '"${version}"'
+  '';
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
   propagatedBuildInputs = [
     aiohttp
   ];
@@ -28,7 +39,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python client for getting garage occupancy in Amsterdam";
-    homepage = "https://github.com/klaasnicolaas/garages_amsterdam";
+    homepage = "https://github.com/klaasnicolaas/python-garages-amsterdam";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/garminconnect-aio/default.nix b/pkgs/development/python-modules/garminconnect-aio/default.nix
index bb754118e0777..abdd1f9f2f26b 100644
--- a/pkgs/development/python-modules/garminconnect-aio/default.nix
+++ b/pkgs/development/python-modules/garminconnect-aio/default.nix
@@ -3,18 +3,22 @@
 , brotlipy
 , buildPythonPackage
 , fetchFromGitHub
+, pythonOlder
 , yarl
 }:
 
 buildPythonPackage rec {
   pname = "garminconnect-aio";
   version = "0.1.4";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "cyberjunky";
     repo = "python-garminconnect-aio";
     rev = version;
-    sha256 = "0s2gpy5hciv9akqqhxy0d2ywp6jp9mmdngx34q7fq3xn668kcrhr";
+    hash = "sha256-GWY2kTG2D+wOJqM/22pNV5rLvWjAd4jxVGlHBou/T2g=";
   };
 
   propagatedBuildInputs = [
@@ -26,7 +30,9 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "garminconnect_aio" ];
+  pythonImportsCheck = [
+    "garminconnect_aio"
+  ];
 
   meta = with lib; {
     description = "Python module to interact with Garmin Connect";
diff --git a/pkgs/development/python-modules/garminconnect-ha/default.nix b/pkgs/development/python-modules/garminconnect/default.nix
index c88af9b230e1e..62a85ea8bc367 100644
--- a/pkgs/development/python-modules/garminconnect-ha/default.nix
+++ b/pkgs/development/python-modules/garminconnect/default.nix
@@ -2,18 +2,22 @@
 , buildPythonPackage
 , cloudscraper
 , fetchFromGitHub
+, pythonOlder
 , requests
 }:
 
 buildPythonPackage rec {
-  pname = "garminconnect-ha";
-  version = "0.1.13";
+  pname = "garminconnect";
+  version = "0.1.44";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "cyberjunky";
-    repo = "python-garminconnect-ha";
+    repo = "python-garminconnect";
     rev = version;
-    sha256 = "sha256-1O1EcG5FvpwUvI8rwcdlQLzEEStyFAwvmkaL97u6hZ4=";
+    hash = "sha256-CUjMbh3eGPwoHW+oOjaVyr0g/txWmzGuP1usq2WCwZg=";
   };
 
   propagatedBuildInputs = [
@@ -21,14 +25,16 @@ buildPythonPackage rec {
     requests
   ];
 
-  # Project has no tests
+  # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "garminconnect_ha" ];
+  pythonImportsCheck = [
+    "garminconnect"
+  ];
 
   meta = with lib; {
-    description = "Minimal Garmin Connect Python 3 API wrapper for Home Assistant";
-    homepage = "https://github.com/cyberjunky/python-garminconnect-ha";
+    description = "Garmin Connect Python API wrapper";
+    homepage = "https://github.com/cyberjunky/python-garminconnect";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/gast/default.nix b/pkgs/development/python-modules/gast/default.nix
index f374378d9865c..110363b383227 100644
--- a/pkgs/development/python-modules/gast/default.nix
+++ b/pkgs/development/python-modules/gast/default.nix
@@ -1,24 +1,36 @@
 { lib
-, fetchFromGitHub
-, buildPythonPackage
 , astunparse
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "gast";
-  version = "0.5.1";
+  version = "0.5.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "serge-sans-paille";
-    repo = "gast";
+    repo = pname;
     rev = version;
-    sha256 = "1gph45frnj47lfr6idiyxrb3gk7vzc9rni9cijmcyz10dyx5kgwa";
+    sha256 = "sha256-0y2bHT7YEfTvDxTm6yLl3GmnPUYEieoGEnwkzfA6mOg=";
   };
 
-  checkInputs = [ astunparse ];
+  checkInputs = [
+    astunparse
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "gast"
+  ];
 
   meta = with lib; {
-    description = "GAST provides a compatibility layer between the AST of various Python versions, as produced by ast.parse from the standard ast module.";
+    description = "Compatibility layer between the AST of various Python versions";
     homepage = "https://github.com/serge-sans-paille/gast/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ jyp cpcloud ];
diff --git a/pkgs/development/python-modules/gateone/default.nix b/pkgs/development/python-modules/gateone/default.nix
deleted file mode 100644
index 5c45e875e5daf..0000000000000
--- a/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/pkgs/development/python-modules/gcsfs/default.nix b/pkgs/development/python-modules/gcsfs/default.nix
index c6e0dc18356b6..66d05f2a355b3 100644
--- a/pkgs/development/python-modules/gcsfs/default.nix
+++ b/pkgs/development/python-modules/gcsfs/default.nix
@@ -23,10 +23,10 @@ buildPythonPackage rec {
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
-    owner = "dask";
+    owner = "fsspec";
     repo = pname;
     rev = version;
-    sha256 = "sha256-BME40kyxZHx9+XrMCqWYp8+q6tjeYwAw/zISMNpQxDU=";
+    sha256 = "sha256-cpV+HKE39Yct1yu5xW9HZftx2Wy9ydFL2YLvPD3YM2M=";
   };
 
   propagatedBuildInputs = [
@@ -58,7 +58,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Convenient Filesystem interface over GCS";
-    homepage = "https://github.com/dask/gcsfs";
+    homepage = "https://github.com/fsspec/gcsfs";
     license = licenses.bsd3;
     maintainers = with maintainers; [ nbren12 ];
   };
diff --git a/pkgs/development/python-modules/gdown/default.nix b/pkgs/development/python-modules/gdown/default.nix
index 195a7e822d761..180624ea8168e 100644
--- a/pkgs/development/python-modules/gdown/default.nix
+++ b/pkgs/development/python-modules/gdown/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonApplication rec {
   pname = "gdown";
-  version = "4.2.0";
+  version = "4.3.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bd871c125242a9d3691aa74f360b6b5268a58c13991bb2405fdb3ec3028307dc";
+    sha256 = "sha256-KswYue892Mlpa8wnPf9bt8MEJGtjGaMjlDt0TXGoEdE=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/gdrivefs/default.nix b/pkgs/development/python-modules/gdrivefs/default.nix
deleted file mode 100644
index f33579f663271..0000000000000
--- a/pkgs/development/python-modules/gdrivefs/default.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, gipc
-, greenlet
-, httplib2
-, six
-, python-dateutil
-, fusepy
-, google-api-python-client
-}:
-
-buildPythonPackage rec {
-  version = "0.14.12";
-  pname = "gdrivefs";
-  disabled = isPy3k;
-
-  src = fetchFromGitHub {
-    owner = "dsoprea";
-    repo = "GDriveFS";
-    rev = version;
-    sha256 = "sha256-eDBy2rp3uitUrR9CG75x8mAio8+gaSckA/lEPAWO0Yo=";
-  };
-
-  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/pkgs/development/python-modules/gdtoolkit/default.nix b/pkgs/development/python-modules/gdtoolkit/default.nix
new file mode 100644
index 0000000000000..5323e12e4c557
--- /dev/null
+++ b/pkgs/development/python-modules/gdtoolkit/default.nix
@@ -0,0 +1,46 @@
+{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, lark, docopt, pyyaml, setuptools }:
+
+let lark080 = lark.overrideAttrs (old: rec {
+  # gdtoolkit needs exactly this lark version
+  version = "0.8.0";
+  src = fetchFromGitHub {
+    owner = "lark-parser";
+    repo = "lark";
+    rev = version;
+    sha256 = "su7kToZ05OESwRCMPG6Z+XlFUvbEb3d8DgsTEcPJMg4=";
+  };
+});
+
+in
+buildPythonPackage rec {
+  pname = "gdtoolkit";
+  version = "3.3.1";
+
+  propagatedBuildInputs = [
+    lark080
+    docopt
+    pyyaml
+    setuptools
+  ];
+
+  # If we try to get using fetchPypi it requires GeoIP (but the package dont has that dep!?)
+  src = fetchFromGitHub {
+    owner = "Scony";
+    repo = "godot-gdscript-toolkit";
+    rev = version;
+    sha256 = "13nnpwy550jf5qnm9ixpxl1bwfnhhbiys8vqfd25g3aim4bm3gnn";
+  };
+
+  disabled = pythonOlder "3.7";
+
+  # Tests cannot be run because they need network to install additional dependencies using pip and tox
+  doCheck = false;
+  pythonImportsCheck = [ "gdtoolkit" "gdtoolkit.formatter" "gdtoolkit.linter" "gdtoolkit.parser" ];
+
+  meta = with lib; {
+    description = "Independent set of tools for working with Godot's GDScript - parser, linter and formatter";
+    homepage = "https://github.com/Scony/godot-gdscript-toolkit";
+    license = licenses.mit;
+    maintainers = with maintainers; [ shiryel ];
+  };
+}
diff --git a/pkgs/development/python-modules/gehomesdk/default.nix b/pkgs/development/python-modules/gehomesdk/default.nix
index 855b671d2b648..b74ef29e54387 100644
--- a/pkgs/development/python-modules/gehomesdk/default.nix
+++ b/pkgs/development/python-modules/gehomesdk/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "gehomesdk";
-  version = "0.4.22";
+  version = "0.4.23";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-3HErbW9/YD8Jd6zr5O2hjoLZ9x5P/vzZLjqPmSm09EM=";
+    sha256 = "sha256-y8L0krMSAOFP97j5QQGiJJMhzRidhMgoHGsMYMyUdd8=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/genanki/default.nix b/pkgs/development/python-modules/genanki/default.nix
index 7b37be48f1002..3989cf6f72c67 100644
--- a/pkgs/development/python-modules/genanki/default.nix
+++ b/pkgs/development/python-modules/genanki/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "genanki";
-  version = "0.12.0";
+  version = "0.13.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f787ac440ff37a3ef3389030e992e3527f000f7a69498f797033ccfad07ebe62";
+    sha256 = "bfacdcadd7903ed6afce6168e1977e473b431677b358f8fd42e80b48cedd19ab";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/geniushub-client/default.nix b/pkgs/development/python-modules/geniushub-client/default.nix
new file mode 100644
index 0000000000000..019c1e1a21bce
--- /dev/null
+++ b/pkgs/development/python-modules/geniushub-client/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, aiohttp
+}:
+
+buildPythonPackage rec {
+  pname = "geniushub-client";
+  version = "0.6.30";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "390932b6e5051e221d104b2683d9deb6e352172c4ec4eeede0954bf2f9680211";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  # tests only implemented after 0.6.30
+  doCheck = false;
+
+  pythonImportsCheck = [ "geniushubclient" ];
+
+  meta = with lib; {
+    description = "Aiohttp-based client for Genius Hub systems";
+    homepage = "https://github.com/zxdavb/geniushub-client";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/geoalchemy2/default.nix b/pkgs/development/python-modules/geoalchemy2/default.nix
index d32eea8cedbcf..15ba87400e33e 100644
--- a/pkgs/development/python-modules/geoalchemy2/default.nix
+++ b/pkgs/development/python-modules/geoalchemy2/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "GeoAlchemy2";
-  version = "0.10.0";
+  version = "0.10.2";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d97f85a4ff84341c12b1d7a6fee5ab5e5e942271279684310bb2f507b6ee5c53";
+    sha256 = "3db833746e11bc802b754751ec94eaab81009a9ad8fe647d461fe76d1a47a3fd";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/geometric/default.nix b/pkgs/development/python-modules/geometric/default.nix
new file mode 100644
index 0000000000000..89f1e73ed9af2
--- /dev/null
+++ b/pkgs/development/python-modules/geometric/default.nix
@@ -0,0 +1,33 @@
+{ buildPythonPackage, lib, fetchFromGitHub
+, networkx, numpy, scipy, six
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "geometric";
+  version = "0.9.7.2";
+
+  src = fetchFromGitHub {
+    owner = "leeping";
+    repo = "geomeTRIC";
+    rev = version;
+    hash = "sha256-QFpfY6tWqcda6AJT17YBEuwu/4DYPbIMJU1c9/gHjaA=";
+  };
+
+  propagatedBuildInputs = [
+    networkx
+    numpy
+    scipy
+    six
+  ];
+
+  checkInputs = [ pytestCheckHook ];
+
+  meta = with lib; {
+    description = "Geometry optimization code for molecular structures";
+    homepage = "https://github.com/leeping/geomeTRIC";
+    license = [ licenses.bsd3 ];
+    maintainers = [ maintainers.markuskowa ];
+  };
+}
+
diff --git a/pkgs/development/python-modules/geopy/2.nix b/pkgs/development/python-modules/geopy/2.nix
deleted file mode 100644
index 48df43e221730..0000000000000
--- a/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/pkgs/development/python-modules/georss-client/default.nix b/pkgs/development/python-modules/georss-client/default.nix
index 2e5fc5da9e83e..09365ff585860 100644
--- a/pkgs/development/python-modules/georss-client/default.nix
+++ b/pkgs/development/python-modules/georss-client/default.nix
@@ -11,14 +11,16 @@
 
 buildPythonPackage rec {
   pname = "georss-client";
-  version = "0.14";
+  version = "0.15";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "exxamalte";
     repo = "python-georss-client";
     rev = "v${version}";
-    sha256 = "sha256-rviXXNmDLEVNYOCkqvLT9EXSuVpI5wMlCXnlpUUl1P0=";
+    sha256 = "sha256-D1ggfEDU+vlFmi1USwdHj1due0PrCQCpKF4zaarHCFs=";
   };
 
   propagatedBuildInputs = [
@@ -32,7 +34,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "georss_client" ];
+  pythonImportsCheck = [
+    "georss_client"
+  ];
 
   meta = with lib; {
     description = "Python library for accessing GeoRSS feeds";
diff --git a/pkgs/development/python-modules/georss-ign-sismologia-client/default.nix b/pkgs/development/python-modules/georss-ign-sismologia-client/default.nix
index e87c766c0caf0..ae923138d2959 100644
--- a/pkgs/development/python-modules/georss-ign-sismologia-client/default.nix
+++ b/pkgs/development/python-modules/georss-ign-sismologia-client/default.nix
@@ -8,14 +8,16 @@
 
 buildPythonPackage rec {
   pname = "georss-ign-sismologia-client";
-  version = "0.4";
+  version = "0.5";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "exxamalte";
     repo = "python-georss-ign-sismologia-client";
     rev = "v${version}";
-    sha256 = "sha256-g7lZC5ZiJV8dNZJceLROqyBRZSuqaivGFhaQrKe4B7g=";
+    hash = "sha256-i3VdxntFwieCmB4ihHRSCV5YKDyYytl3XnU/G1LwLhg=";
   };
 
   propagatedBuildInputs = [
@@ -26,7 +28,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "georss_ign_sismologia_client" ];
+  pythonImportsCheck = [
+    "georss_ign_sismologia_client"
+  ];
 
   meta = with lib; {
     description = "Python library for accessing the IGN Sismologia GeoRSS feed";
diff --git a/pkgs/development/python-modules/georss-ingv-centro-nazionale-terremoti-client/default.nix b/pkgs/development/python-modules/georss-ingv-centro-nazionale-terremoti-client/default.nix
index dc253dafe1e2f..512db4d8deeec 100644
--- a/pkgs/development/python-modules/georss-ingv-centro-nazionale-terremoti-client/default.nix
+++ b/pkgs/development/python-modules/georss-ingv-centro-nazionale-terremoti-client/default.nix
@@ -8,14 +8,16 @@
 
 buildPythonPackage rec {
   pname = "georss-ingv-centro-nazionale-terremoti-client";
-  version = "0.5";
+  version = "0.6";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "exxamalte";
     repo = "python-georss-ingv-centro-nazionale-terremoti-client";
     rev = "v${version}";
-    sha256 = "1pd0qsr0n8f1169p2nz8s0zrbrxh0rdzaxdb3jmdymzp4xz28wb0";
+    sha256 = "sha256-zqjo70NzpUt5zNEar0P1sl/gMb+ZcS+7GX7QGuFjMYY=";
   };
 
   propagatedBuildInputs = [
@@ -26,7 +28,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "georss_ingv_centro_nazionale_terremoti_client" ];
+  pythonImportsCheck = [
+    "georss_ingv_centro_nazionale_terremoti_client"
+  ];
 
   meta = with lib; {
     description = "Python library for accessing the INGV Centro Nazionale Terremoti GeoRSS feed";
diff --git a/pkgs/development/python-modules/georss-nrcan-earthquakes-client/default.nix b/pkgs/development/python-modules/georss-nrcan-earthquakes-client/default.nix
index 089a72ef81121..344c74b057f40 100644
--- a/pkgs/development/python-modules/georss-nrcan-earthquakes-client/default.nix
+++ b/pkgs/development/python-modules/georss-nrcan-earthquakes-client/default.nix
@@ -8,14 +8,16 @@
 
 buildPythonPackage rec {
   pname = "georss-nrcan-earthquakes-client";
-  version = "0.3";
+  version = "0.4";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "exxamalte";
     repo = "python-georss-nrcan-earthquakes-client";
     rev = "v${version}";
-    sha256 = "1brn6ycsw3d3znbqi2w2cxjw8hyfb44p2lra18rx2gyvgnkxg19l";
+    hash = "sha256-FFm37+dCkdoZXgvAjYhcHOYFf0oQ37bxJb7vzbWDTro=";
   };
 
   propagatedBuildInputs = [
@@ -26,7 +28,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "georss_nrcan_earthquakes_client" ];
+  pythonImportsCheck = [
+    "georss_nrcan_earthquakes_client"
+  ];
 
   meta = with lib; {
     description = "Python library for accessing Natural Resources Canada Earthquakes feed";
diff --git a/pkgs/development/python-modules/georss-qld-bushfire-alert-client/default.nix b/pkgs/development/python-modules/georss-qld-bushfire-alert-client/default.nix
index 954e4a6237fbc..e7ecd23b3c6e5 100644
--- a/pkgs/development/python-modules/georss-qld-bushfire-alert-client/default.nix
+++ b/pkgs/development/python-modules/georss-qld-bushfire-alert-client/default.nix
@@ -9,13 +9,15 @@
 buildPythonPackage rec {
   pname = "georss-qld-bushfire-alert-client";
   version = "0.5";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "exxamalte";
     repo = "python-georss-qld-bushfire-alert-client";
     rev = "v${version}";
-    sha256 = "sha256-G7rIoG48MTWngtXCT5xzcjntzsYxtVWVhXflLsWY/dk=";
+    hash = "sha256-G7rIoG48MTWngtXCT5xzcjntzsYxtVWVhXflLsWY/dk=";
   };
 
   propagatedBuildInputs = [
@@ -26,7 +28,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "georss_qld_bushfire_alert_client" ];
+  pythonImportsCheck = [
+    "georss_qld_bushfire_alert_client"
+  ];
 
   meta = with lib; {
     description = "Python library for accessing Queensland Bushfire Alert feed";
diff --git a/pkgs/development/python-modules/georss-tfs-incidents-client/default.nix b/pkgs/development/python-modules/georss-tfs-incidents-client/default.nix
index 5428dfcbc53a3..9328ac17aa5f1 100644
--- a/pkgs/development/python-modules/georss-tfs-incidents-client/default.nix
+++ b/pkgs/development/python-modules/georss-tfs-incidents-client/default.nix
@@ -9,13 +9,15 @@
 buildPythonPackage rec {
   pname = "georss-tfs-incidents-client";
   version = "0.3";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "exxamalte";
     repo = "python-georss-tfs-incidents-client";
     rev = "v${version}";
-    sha256 = "11nvwrjzax4yy6aj971yym05yyizwfafy4ccsyy1qpwbs6dwbw7m";
+    hash = "sha256-9fDFm9GLXxy814wR75TjP3pfQPU+nCSV8Z509WXm24Y=";
   };
 
   propagatedBuildInputs = [
@@ -26,7 +28,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "georss_tfs_incidents_client" ];
+  pythonImportsCheck = [
+    "georss_tfs_incidents_client"
+  ];
 
   meta = with lib; {
     description = "Python library for accessing Tasmania Fire Service Incidents feed";
diff --git a/pkgs/development/python-modules/georss-wa-dfes-client/default.nix b/pkgs/development/python-modules/georss-wa-dfes-client/default.nix
index ec6a5cd5f2e39..ff6c3a13ea7e8 100644
--- a/pkgs/development/python-modules/georss-wa-dfes-client/default.nix
+++ b/pkgs/development/python-modules/georss-wa-dfes-client/default.nix
@@ -9,13 +9,15 @@
 buildPythonPackage rec {
   pname = "georss-wa-dfes-client";
   version = "0.3";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "exxamalte";
     repo = "python-georss-wa-dfes-client";
     rev = "v${version}";
-    sha256 = "01fk67kc6ww88yzsans8g81i6j7s0276gma5fk76la1c8vj2ifs7";
+     hash = "sha256-R7so5EYsKGrOdEXVZ44A+kgTA3pIW6W/R4hzw+Yx0wU=";
   };
 
   propagatedBuildInputs = [
@@ -26,7 +28,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "georss_wa_dfes_client" ];
+  pythonImportsCheck = [
+    "georss_wa_dfes_client"
+  ];
 
   meta = with lib; {
     description = "Python library for accessing WA Department of Fire and Emergency Services (DFES) feed";
diff --git a/pkgs/development/python-modules/getmac/default.nix b/pkgs/development/python-modules/getmac/default.nix
index 483539bc221fc..79f85ad956743 100644
--- a/pkgs/development/python-modules/getmac/default.nix
+++ b/pkgs/development/python-modules/getmac/default.nix
@@ -8,13 +8,14 @@
 
 buildPythonPackage rec {
   pname = "getmac";
-  version = "0.8.2";
+  version = "0.8.3";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "GhostofGoes";
     repo = pname;
     rev = version;
-    sha256 = "08d4iv5bjl1s4i9qhzf3pzjgj1rgbwi0x26qypf3ycgdj0a6gvh2";
+    sha256 = "sha256-X4uuYisyobCxhoywaSXBZjVxrPAbBiZrWUJAi2/P5mw=";
   };
 
   checkInputs = [
@@ -33,7 +34,9 @@ buildPythonPackage rec {
     "test_uuid_lanscan_iface"
   ];
 
-  pythonImportsCheck = [ "getmac" ];
+  pythonImportsCheck = [
+    "getmac"
+  ];
 
   meta = with lib; {
     description = "Python package to get the MAC address of network interfaces and hosts on the local network";
diff --git a/pkgs/development/python-modules/gevent-socketio/default.nix b/pkgs/development/python-modules/gevent-socketio/default.nix
index 4a25e0d7e1484..3383987144945 100644
--- a/pkgs/development/python-modules/gevent-socketio/default.nix
+++ b/pkgs/development/python-modules/gevent-socketio/default.nix
@@ -1,29 +1,48 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, versiontools
+, gevent
 , gevent-websocket
 , mock
-, pytest
-, gevent
+, versiontools
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "gevent-socketio";
   version = "0.3.6";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1zra86hg2l1jcpl9nsnqagy3nl3akws8bvrbpgdxk15x7ywllfak";
+    hash = "sha256-UzlKuT+9hNnbuyvvhTSfalA7/FPYapvoZTJQ8aBBKv8=";
   };
 
-  buildInputs = [ versiontools gevent-websocket mock pytest ];
-  propagatedBuildInputs = [ gevent ];
+  nativeBuildInputs = [
+    versiontools
+  ];
+
+  buildInputs = [
+    gevent-websocket
+  ];
+
+  propagatedBuildInputs = [
+    gevent
+  ];
+
+  # Tests are not ported to Python 3
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "socketio"
+  ];
 
   meta = with lib; {
+    description = "SocketIO server based on the Gevent pywsgi server";
     homepage = "https://github.com/abourget/gevent-socketio";
-    description = "SocketIO server based on the Gevent pywsgi server, a Python network library";
     license = licenses.bsd0;
+    maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/gevent-websocket/default.nix b/pkgs/development/python-modules/gevent-websocket/default.nix
index 5e93fb32b9e72..66709d8fafa58 100644
--- a/pkgs/development/python-modules/gevent-websocket/default.nix
+++ b/pkgs/development/python-modules/gevent-websocket/default.nix
@@ -3,29 +3,37 @@
 , fetchPypi
 , gevent
 , gunicorn
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "gevent-websocket";
   version = "0.10.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1c2zv2rahp1gil3cj66hfsqgy0n35hz9fny3ywhr2319d0lz7bky";
+    hash = "sha256-fq7zKWgpDJEh98Nblz4swwL/sHbQGMkGjS9cqLLYX7A=";
   };
 
-  propagatedBuildInputs = [ gevent gunicorn ];
+  propagatedBuildInputs = [
+    gevent
+    gunicorn
+  ];
 
-  # zero tests run
+  # Module has no test
   doCheck = false;
 
-  pythonImportsCheck = [ "geventwebsocket" ];
+  pythonImportsCheck = [
+    "geventwebsocket"
+  ];
 
   meta = with lib; {
+    description = "Websocket handler for the gevent pywsgi server";
     homepage = "https://www.gitlab.com/noppo/gevent-websocket";
-    description = "Websocket handler for the gevent pywsgi server, a Python network library";
     license = licenses.asl20;
     maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/gevent/default.nix b/pkgs/development/python-modules/gevent/default.nix
index 3fe9e648ce32f..e2b1e11278b7e 100644
--- a/pkgs/development/python-modules/gevent/default.nix
+++ b/pkgs/development/python-modules/gevent/default.nix
@@ -1,35 +1,50 @@
-{ lib, fetchPypi, buildPythonPackage, isPyPy, python, libev, greenlet
+{ lib
+, fetchPypi
+, buildPythonPackage
+, isPyPy
+, python
+, libev
+, greenlet
+, zope_event
 , zope_interface
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "gevent";
-  version = "20.9.0";
+  version = "21.12.0";
   format = "pyproject";
 
+  disabled = pythonOlder "3.7";
+
   src = fetchPypi {
     inherit pname version;
-    sha256 = "13aw9x6imsy3b369kfjblqiwfni69pp32m4r13n62r9k3l2lhvaz";
+    hash = "sha256-9ItkV4w2e5H6eTv46qr0mVy5PIvEWGDkc7+GgHCtCU4=";
   };
 
-  buildInputs = [ libev ];
+  buildInputs = [
+    libev
+  ];
+
   propagatedBuildInputs = [
+    zope_event
     zope_interface
-  ] ++ lib.optionals (!isPyPy) [ greenlet ];
-
-  checkPhase = ''
-    cd greentest
-    ${python.interpreter} testrunner.py
-  '';
+  ] ++ lib.optionals (!isPyPy) [
+    greenlet
+  ];
 
   # Bunch of failures.
   doCheck = false;
 
+  pythonImportsCheck = [
+    "gevent"
+  ];
+
   meta = with lib; {
     description = "Coroutine-based networking library";
     homepage = "http://www.gevent.org/";
     license = licenses.mit;
-    platforms = platforms.unix;
     maintainers = with maintainers; [ bjornfor ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/geventhttpclient/default.nix b/pkgs/development/python-modules/geventhttpclient/default.nix
index 7e30b8e83f490..4a349106ac3f9 100644
--- a/pkgs/development/python-modules/geventhttpclient/default.nix
+++ b/pkgs/development/python-modules/geventhttpclient/default.nix
@@ -1,23 +1,25 @@
 { lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, backports_ssl_match_hostname
 , brotli
+, buildPythonPackage
 , certifi
-, gevent
-, six
 , dpkt
+, fetchPypi
+, gevent
 , pytestCheckHook
+, pythonOlder
+, six
 }:
 
 buildPythonPackage rec {
   pname = "geventhttpclient";
   version = "1.5.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d80ec9ff42b7219f33558185499d0b4365597fc55ff886207b45f5632e099780";
+    hash = "sha256-2A7J/0K3IZ8zVYGFSZ0LQ2VZf8Vf+IYge0X1Yy4Jl4A=";
   };
 
   propagatedBuildInputs = [
@@ -25,8 +27,6 @@ buildPythonPackage rec {
     certifi
     gevent
     six
-  ] ++ lib.optionals (pythonOlder "3.7") [
-    backports_ssl_match_hostname
   ];
 
   checkInputs = [
@@ -45,11 +45,14 @@ buildPythonPackage rec {
     "test_multi_queries_greenlet_safe"
   ];
 
+  pythonImportsCheck = [
+    "geventhttpclient"
+  ];
+
   meta = with lib; {
     homepage = "https://github.com/gwik/geventhttpclient";
     description = "HTTP client library for gevent";
     license = licenses.mit;
     maintainers = with maintainers; [ koral ];
   };
-
 }
diff --git a/pkgs/development/python-modules/gigalixir/default.nix b/pkgs/development/python-modules/gigalixir/default.nix
index e7d19091605d1..e1ca84e218616 100644
--- a/pkgs/development/python-modules/gigalixir/default.nix
+++ b/pkgs/development/python-modules/gigalixir/default.nix
@@ -1,9 +1,9 @@
-{ buildPythonApplication
+{ lib
+, buildPythonApplication
 , click
 , fetchPypi
 , git
 , httpretty
-, lib
 , qrcode
 , pygments
 , pyopenssl
@@ -11,40 +11,53 @@
 , requests
 , rollbar
 , stripe
+, pythonOlder
 , sure
 }:
 
 buildPythonApplication rec {
   pname = "gigalixir";
-  version = "1.2.4";
+  version = "1.2.5";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "894b7e5bef30abc2c003e6df47f7758de5649b6f593e33926fcd398cc88d9ce2";
+    hash = "sha256-P70xsI/zwsoSgK1XCPzJSI5NQ58M431kmgo5gHXbaNw=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py --replace "'pytest-runner'," ""
-  '';
-
   propagatedBuildInputs = [
     click
-    requests
-    stripe
-    rollbar
     pygments
-    qrcode
     pyopenssl
+    qrcode
+    requests
+    rollbar
+    stripe
   ];
 
   checkInputs = [
+    git
     httpretty
-    sure
     pytestCheckHook
-    git
+    sure
   ];
 
-  pythonImportsCheck = [ "gigalixir" ];
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "'pytest-runner'," "" \
+      --replace "cryptography==" "cryptography>="
+  '';
+
+  disabledTests = [
+    # Test requires network access
+    "test_rollback_without_version"
+  ];
+
+  pythonImportsCheck = [
+    "gigalixir"
+  ];
 
   meta = with lib; {
     description = "Gigalixir Command-Line Interface";
diff --git a/pkgs/development/python-modules/gipc/default.nix b/pkgs/development/python-modules/gipc/default.nix
index a059495d00fee..2bab62fbcb109 100644
--- a/pkgs/development/python-modules/gipc/default.nix
+++ b/pkgs/development/python-modules/gipc/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "gipc";
-  version = "1.3.0";
+  version = "1.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a25ccfd2f8c94b24d2113fa50a0de5c7a44499ca9f2ab7c91c3bec0ed96ddeb1";
+    sha256 = "sha256-P8d2GIxFAAHeXjXgIxKGwahiH1TW/9fE+V0f9Ra54wo=";
   };
 
   propagatedBuildInputs = [ gevent ];
diff --git a/pkgs/development/python-modules/git-revise/default.nix b/pkgs/development/python-modules/git-revise/default.nix
index a6dd3ecb7c803..b4a771a4c3be5 100644
--- a/pkgs/development/python-modules/git-revise/default.nix
+++ b/pkgs/development/python-modules/git-revise/default.nix
@@ -2,25 +2,26 @@
 , buildPythonPackage
 , pythonOlder
 , git
+, gnupg
 , fetchFromGitHub
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "git-revise";
-  version = "0.6.0";
+  version = "0.7.0";
 
   # Missing tests on PyPI
   src = fetchFromGitHub {
     owner = "mystor";
     repo = pname;
     rev = "v${version}";
-    sha256 = "03v791yhips9cxz9hr07rhsgxfhwyqq17rzi7ayjhwvy65s4hzs9";
+    sha256 = "sha256-xV1Z9O5FO4Q/XEpNwnX31tbv8CrXY+wF1Ltpfq+ITRg=";
   };
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
-  checkInputs = [ git pytestCheckHook ];
+  checkInputs = [ git gnupg pytestCheckHook ];
 
   meta = with lib; {
     description = "Efficiently update, split, and rearrange git commits";
diff --git a/pkgs/development/python-modules/glances-api/default.nix b/pkgs/development/python-modules/glances-api/default.nix
index e9d68685a3f19..2c52db8ab5ffd 100644
--- a/pkgs/development/python-modules/glances-api/default.nix
+++ b/pkgs/development/python-modules/glances-api/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "glances-api";
-  version = "0.3.2";
+  version = "0.3.4";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "home-assistant-ecosystem";
     repo = "python-glances-api";
     rev = version;
-    sha256 = "sha256-zVK63SI8ZeVrY2iEEkgp8pq6RDheKeApb9/RWgZCKGI=";
+    sha256 = "sha256-mV67mppzx3lka04bxQ5CdufknZTTqWqGJzqPaHb4C2o=";
   };
 
   nativeBuildInputs = [
@@ -37,11 +37,6 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace 'httpx = ">=0.20,<1"' 'httpx = ">=0.19,<1"'
-  '';
-
   pythonImportsCheck = [
     "glances_api"
   ];
diff --git a/pkgs/development/python-modules/glasgow/default.nix b/pkgs/development/python-modules/glasgow/default.nix
index 398ee8eedf13a..a8f658ac83a9c 100644
--- a/pkgs/development/python-modules/glasgow/default.nix
+++ b/pkgs/development/python-modules/glasgow/default.nix
@@ -5,7 +5,7 @@
 , setuptools-scm
 , pythonOlder
 , sdcc
-, nmigen
+, amaranth
 , fx2
 , libusb1
 , aiohttp
@@ -19,23 +19,23 @@
 
 buildPythonPackage rec {
   pname = "glasgow";
-  version = "unstable-2021-03-02";
+  version = "unstable-2021-12-12";
   disabled = pythonOlder "3.7";
   # python software/setup.py --version
-  realVersion = "0.1.dev1660+g${lib.substring 0 7 src.rev}";
+  realVersion = "0.1.dev1679+g${lib.substring 0 7 src.rev}";
 
   src = fetchFromGitHub {
     owner = "GlasgowEmbedded";
     repo = "glasgow";
-    rev = "41c48bbcee284d024e4249a81419fbbae674cf40";
-    sha256 = "1fg8ps228930d70bczwmcwnrd1gvm02a58mxbpn8pyakwbwwa6hq";
+    rev = "e640a778c446b7e9812727e73c560d12aeb41d7c";
+    sha256 = "EsQ9ZjalKDQ54JOonra4yPDI56cF5n86y/Rd798cZsU=";
   };
 
   nativeBuildInputs = [ setuptools-scm sdcc ];
 
   propagatedBuildInputs = [
     setuptools
-    nmigen
+    amaranth
     fx2
     libusb1
     aiohttp
@@ -72,6 +72,6 @@ buildPythonPackage rec {
     description = "Software for Glasgow, a digital interface multitool";
     homepage = "https://github.com/GlasgowEmbedded/Glasgow";
     license = licenses.bsd0;
-    maintainers = with maintainers; [ emily ];
+    maintainers = with maintainers; [ emily thoughtpolice ];
   };
 }
diff --git a/pkgs/development/python-modules/glcontext/default.nix b/pkgs/development/python-modules/glcontext/default.nix
index 32fdae1b3f2cc..b091d2583b6bd 100644
--- a/pkgs/development/python-modules/glcontext/default.nix
+++ b/pkgs/development/python-modules/glcontext/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "glcontext";
-  version = "2.3.3";
+  version = "2.3.4";
 
   src = fetchFromGitHub {
     owner = "moderngl";
     repo = pname;
     rev = version;
-    sha256 = "16kwrfjijn9bnb48rk17wapmhxq6g9s59zczh65imyncb9k82wkc";
+    sha256 = "1m2zkl696vqmgrd5k1c5kl0krk6qgjgsz88qhahwva0l40bswvhp";
   };
 
   disabled = !isPy3k;
diff --git a/pkgs/development/python-modules/glean-parser/default.nix b/pkgs/development/python-modules/glean-parser/default.nix
index 8a774e660751d..52fdf6745c9f0 100644
--- a/pkgs/development/python-modules/glean-parser/default.nix
+++ b/pkgs/development/python-modules/glean-parser/default.nix
@@ -16,13 +16,13 @@
 
 buildPythonPackage rec {
   pname = "glean_parser";
-  version = "4.3.1";
+  version = "5.0.1";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-wZSro1pX/50TlSfFMh71JlmXlJlONVutTDFL06tkw+s=";
+    sha256 = "sha256-MJ827VXy8e2CRyq4sY4d0B7etxBgRk4/hZybYOOLh9Q=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/glean-sdk/default.nix b/pkgs/development/python-modules/glean-sdk/default.nix
index e729d927cdaef..f2c2f92c9f0d2 100644
--- a/pkgs/development/python-modules/glean-sdk/default.nix
+++ b/pkgs/development/python-modules/glean-sdk/default.nix
@@ -12,23 +12,17 @@
 
 buildPythonPackage rec {
   pname = "glean-sdk";
-  version = "42.2.0";
+  version = "44.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-X2p6KQnEB6ZHdCHGFVEoEMiI+0R2vfGqel+jFKTcx74=";
+    sha256 = "sha256-gzLsBwq3wrFde5cEb5+oFLW4KrwoiZpr22JbJhNr1yk=";
   };
 
-  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=";
+    sha256 = "sha256-lWFv8eiA3QHp5bhcg4qon/dvKUbFbtH1Q2oXGkk0Me0=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/glean-sdk/fix-spawned-process-environment.patch b/pkgs/development/python-modules/glean-sdk/fix-spawned-process-environment.patch
deleted file mode 100644
index f9a7b2723eba2..0000000000000
--- a/pkgs/development/python-modules/glean-sdk/fix-spawned-process-environment.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-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/pkgs/development/python-modules/globus-sdk/default.nix b/pkgs/development/python-modules/globus-sdk/default.nix
index d251ec75ff596..98339c851cd42 100644
--- a/pkgs/development/python-modules/globus-sdk/default.nix
+++ b/pkgs/development/python-modules/globus-sdk/default.nix
@@ -1,42 +1,60 @@
 { lib
 , buildPythonPackage
+, cryptography
 , fetchFromGitHub
-, requests
+, mypy
 , pyjwt
 , pytestCheckHook
+, pythonOlder
+, requests
 , responses
+, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "globus-sdk";
-  version = "2.0.1";
+  version = "3.4.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "globus";
     repo = "globus-sdk-python";
     rev = version;
-    sha256 = "1kqnr50iwcq9nx40lblbqzf327cdcbkrir6vh70067hk33rq0gm9";
+    hash = "sha256-QdeEaOP+gPWMqtUofTwrHRqLBtjG8Kta0LfZtccTjCQ=";
   };
 
   propagatedBuildInputs = [
+    cryptography
     requests
     pyjwt
+  ] ++ lib.optionals (pythonOlder "3.10") [
+    typing-extensions
   ];
 
   checkInputs = [
+    mypy
     pytestCheckHook
     responses
   ];
 
   postPatch = ''
     substituteInPlace setup.py \
-    --replace "pyjwt[crypto]>=1.5.3,<2.0.0" "pyjwt[crypto] >=1.5.3, <3.0.0"
+    --replace "pyjwt[crypto]>=2.0.0,<3.0.0" "pyjwt[crypto]>=2.0.0,<3.0.0"
   '';
 
-  pythonImportsCheck = [ "globus_sdk" ];
+  pytestFlagsArray = [
+    "-W"
+    "ignore::DeprecationWarning"
+  ];
+
+  pythonImportsCheck = [
+    "globus_sdk"
+  ];
 
   meta = with lib; {
-    description = "A convenient Pythonic interface to Globus REST APIs, including the Transfer API and the Globus Auth API";
+    description = "Interface to Globus REST APIs, including the Transfer API and the Globus Auth API";
     homepage =  "https://github.com/globus/globus-sdk-python";
     license = licenses.asl20;
     maintainers = with maintainers; [ ixxie ];
diff --git a/pkgs/development/python-modules/glom/default.nix b/pkgs/development/python-modules/glom/default.nix
index d30a0c7eb1cb7..5f8ab55e9088c 100644
--- a/pkgs/development/python-modules/glom/default.nix
+++ b/pkgs/development/python-modules/glom/default.nix
@@ -4,24 +4,47 @@
 , boltons
 , attrs
 , face
-, pytest
+, pytestCheckHook
 , pyyaml
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "glom";
-  version = "20.11.0";
+  version = "22.1.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "54051072bccc9cdb3ebbd8af0559195137a61d308f04bff19678e4b61350eb12";
+    hash = "sha256-FRDGWHqPnGSiRmQbcAM8vF696Z8CrSRWk2eAOOghrrU=";
   };
 
-  propagatedBuildInputs = [ boltons attrs face ];
+  propagatedBuildInputs = [
+    boltons
+    attrs
+    face
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    pyyaml
+  ];
+
+  preCheck = ''
+    # test_cli.py checks the output of running "glom"
+    export PATH=$out/bin:$PATH
+  '';
+
+  disabledTests = [
+    # Test is outdated (was made for PyYAML 3.x)
+    "test_main_yaml_target"
+  ];
 
-  checkInputs = [ pytest pyyaml ];
-  # test_cli.py checks the output of running "glom"
-  checkPhase = "PATH=$out/bin:$PATH pytest glom/test";
+  pythonImportsCheck = [
+    "glom"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/mahmoud/glom";
diff --git a/pkgs/development/python-modules/gmpy2/default.nix b/pkgs/development/python-modules/gmpy2/default.nix
index c4b0dbf200b36..27f6d8538d8b7 100644
--- a/pkgs/development/python-modules/gmpy2/default.nix
+++ b/pkgs/development/python-modules/gmpy2/default.nix
@@ -9,7 +9,7 @@
 
 let
   pname = "gmpy2";
-  version = "2.1.0b5";
+  version = "2.1.2";
 in
 
 buildPythonPackage {
@@ -21,11 +21,13 @@ buildPythonPackage {
     owner = "aleaxit";
     repo = "gmpy";
     rev = "gmpy2-${version}";
-    sha256 = "1mqzyp7qwqqyk6jbicgx22svdy2106xwhmhfvdf0vpnmwswcxclb";
+    sha256 = "sha256-ARCttNzRA+Ji2j2NYaSCDXgvoEg01T9BnYadyqON2o0=";
   };
 
   buildInputs = [ gmp mpfr libmpc ];
 
+  pythonImportsCheck = [ "gmpy2" ];
+
   meta = with lib; {
     description = "GMP/MPIR, MPFR, and MPC interface to Python 2.6+ and 3.x";
     homepage = "https://github.com/aleaxit/gmpy/";
diff --git a/pkgs/development/python-modules/gnutls/default.nix b/pkgs/development/python-modules/gnutls/default.nix
deleted file mode 100644
index 3c68a1713a0ab..0000000000000
--- a/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/pkgs/development/python-modules/goodwe/default.nix b/pkgs/development/python-modules/goodwe/default.nix
index 567ffef56e69a..27c70c78a66ed 100644
--- a/pkgs/development/python-modules/goodwe/default.nix
+++ b/pkgs/development/python-modules/goodwe/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "goodwe";
-  version = "0.2.9";
+  version = "0.2.16";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "marcelblijleven";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0l895nyq2g7isvim2fx4ivdh3xzhyc10yzqvqnlg3fr56l5srfch";
+    sha256 = "sha256-qW1wD6QVLqGhEnpGqNjZ50jb/3HHooohfHz+p4/ZH74=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/google-api-core/default.nix b/pkgs/development/python-modules/google-api-core/default.nix
index 9d548b685efd8..468b2476de9b5 100644
--- a/pkgs/development/python-modules/google-api-core/default.nix
+++ b/pkgs/development/python-modules/google-api-core/default.nix
@@ -16,14 +16,14 @@
 
 buildPythonPackage rec {
   pname = "google-api-core";
-  version = "2.2.2";
+  version = "2.5.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "97349cc18c2bb2415f64f1353a80273a289a61294ce3eb2f7ce682d251bdd997";
+    sha256 = "sha256-8zhjpnCWUXA7ixi2cJNRSDjHnysE0CqlASAwefJLgBg=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/google-api-python-client/default.nix b/pkgs/development/python-modules/google-api-python-client/default.nix
index 185c7579e4f71..772f45411d397 100644
--- a/pkgs/development/python-modules/google-api-python-client/default.nix
+++ b/pkgs/development/python-modules/google-api-python-client/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "google-api-python-client";
-  version = "2.31.0";
+  version = "2.35.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3f64a5eee6fa03ab51806dccf48e342fda83fea60c290518c6a2dfdbf2de9efd";
+    sha256 = "038b12979ea86ef0e33962bd33f955c337bc28f0471522bd27a801d52bfb4ae2";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/google-apputils/default.nix b/pkgs/development/python-modules/google-apputils/default.nix
deleted file mode 100644
index 225adf348d1a2..0000000000000
--- a/pkgs/development/python-modules/google-apputils/default.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, pytz
-, gflags
-, python-dateutil
-, mox
-, python
-}:
-
-buildPythonPackage rec {
-  pname = "google-apputils";
-  version = "0.4.2";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0afw0gxmh0yw5g7xsmw49gs8bbp0zyhbh6fr1b0h48f3a439v5a7";
-  };
-
-  preConfigure = ''
-    sed -i '/ez_setup/d' setup.py
-  '';
-
-  propagatedBuildInputs = [ pytz gflags python-dateutil mox ];
-
-  checkPhase = ''
-    ${python.executable} setup.py google_test
-  '';
-
-  # ERROR:root:Trying to access flag test_tmpdir before flags were parsed.
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Google Application Utilities for Python";
-    homepage = "https://github.com/google/google-apputils";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ SuperSandro2000 ];
-  };
-}
diff --git a/pkgs/development/python-modules/google-auth/default.nix b/pkgs/development/python-modules/google-auth/default.nix
index b51a5569a5958..c7fcb1a48ed18 100644
--- a/pkgs/development/python-modules/google-auth/default.nix
+++ b/pkgs/development/python-modules/google-auth/default.nix
@@ -18,13 +18,18 @@
 
 buildPythonPackage rec {
   pname = "google-auth";
-  version = "2.3.3";
+  version = "2.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d83570a664c10b97a1dc6f8df87e5fdfff012f48f62be131e449c20dfc32630e";
+    sha256 = "sha256-rRYPweqPGeMxoWoUp589ZD2BOmlTS6lhHSyA3BBDna0=";
   };
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "cachetools>=2.0.0,<5.0" "cachetools"
+  '';
+
   propagatedBuildInputs = [
     cachetools
     pyasn1-modules
diff --git a/pkgs/development/python-modules/google-cloud-automl/default.nix b/pkgs/development/python-modules/google-cloud-automl/default.nix
index d901bb78cddb0..6cb405d3c146f 100644
--- a/pkgs/development/python-modules/google-cloud-automl/default.nix
+++ b/pkgs/development/python-modules/google-cloud-automl/default.nix
@@ -14,11 +14,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-automl";
-  version = "2.5.2";
+  version = "2.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4c759ae99979d9f94ed0bdfe4937f41c81634f934ec11d25eb089430781eafec";
+    sha256 = "bcd3b2913c2eb83e356a457ad6e89a2a9505b2e9cb7be37055d6ce1f0fef20cf";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix b/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
index 903db740c09ff..35c082e056328 100644
--- a/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
+++ b/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-bigquery-datatransfer";
-  version = "3.4.1";
+  version = "3.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "fdc8cb68a3ee54780f673f06b3cce83a5bb5d600db7ad363c85e38bf45afb59c";
+    sha256 = "sha256-1syubhGCY8sYgV2mdneAV/8YOdplf5YZNEeZ0RAJC6E=";
   };
 
   propagatedBuildInputs = [ google-api-core libcst proto-plus pytz ];
diff --git a/pkgs/development/python-modules/google-cloud-bigquery/default.nix b/pkgs/development/python-modules/google-cloud-bigquery/default.nix
index 5daa88ed94923..1d5d1b9a68906 100644
--- a/pkgs/development/python-modules/google-cloud-bigquery/default.nix
+++ b/pkgs/development/python-modules/google-cloud-bigquery/default.nix
@@ -18,12 +18,12 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-bigquery";
-  version = "2.30.1";
+  version = "2.34.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4e3b5e3dcc475d5a601d84872ac0b63e059540be2251b1c4165c51106d572855";
+    sha256 = "sha256-K3XhnlPIWSRBIBgMcqGqmehJFW48BBMHGkv7rgt0xTA=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/google-cloud-bigtable/default.nix b/pkgs/development/python-modules/google-cloud-bigtable/default.nix
index 747fdd07b041f..6ef36c17796d4 100644
--- a/pkgs/development/python-modules/google-cloud-bigtable/default.nix
+++ b/pkgs/development/python-modules/google-cloud-bigtable/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-bigtable";
-  version = "2.4.0";
+  version = "2.5.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b8472c91b05159f20121fcca6ebdc2a3b5648d68158ec747860914279b6b983b";
+    sha256 = "sha256-zqyLJX3ufjIpdiS7Qw85R6K/2p2m1KbYtmH2DH/r0nE=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/google-cloud-container/default.nix b/pkgs/development/python-modules/google-cloud-container/default.nix
index 7eb9808c7a2d3..c99d5d0a8bff9 100644
--- a/pkgs/development/python-modules/google-cloud-container/default.nix
+++ b/pkgs/development/python-modules/google-cloud-container/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-container";
-  version = "2.10.1";
+  version = "2.10.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "939970cd09384dde6d6f6758b03648fd8f52fe5c2f83f73300575f7e4e3b2ee0";
+    sha256 = "sha256-doxO6Q8SaRqXNNMQow8kPp2BawpiTtSm2yuzyaOl7RY=";
   };
 
   propagatedBuildInputs = [ google-api-core grpc-google-iam-v1 libcst proto-plus ];
diff --git a/pkgs/development/python-modules/google-cloud-core/default.nix b/pkgs/development/python-modules/google-cloud-core/default.nix
index 0351bd51e2eee..84937102ac324 100644
--- a/pkgs/development/python-modules/google-cloud-core/default.nix
+++ b/pkgs/development/python-modules/google-cloud-core/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-core";
-  version = "2.2.1";
+  version = "2.2.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "476d1f71ab78089e0638e0aaf34bfdc99bab4fce8f4170ba6321a5243d13c5c7";
+    sha256 = "sha256-fRm/iGi0ENC99aA0aKPz8tsjPA7oagI/TswreksV9zY=";
   };
 
   propagatedBuildInputs = [ google-api-core ];
diff --git a/pkgs/development/python-modules/google-cloud-datacatalog/default.nix b/pkgs/development/python-modules/google-cloud-datacatalog/default.nix
index 0e0d5982c6e2c..bf9e8552aec16 100644
--- a/pkgs/development/python-modules/google-cloud-datacatalog/default.nix
+++ b/pkgs/development/python-modules/google-cloud-datacatalog/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-datacatalog";
-  version = "3.6.1";
+  version = "3.6.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "136fb153740d4154d8c9ef306284f7f899399de45eef2c9027ca3e56249c4e2d";
+    sha256 = "sha256-9oixM+4HxHn0G3j8Hpg1iB5gM+7xyD5GBbWpEzzjdrE=";
   };
 
   propagatedBuildInputs = [ libcst google-api-core grpc-google-iam-v1 proto-plus ];
diff --git a/pkgs/development/python-modules/google-cloud-dataproc/default.nix b/pkgs/development/python-modules/google-cloud-dataproc/default.nix
index 7f26b2df28ca4..3badd796121e4 100644
--- a/pkgs/development/python-modules/google-cloud-dataproc/default.nix
+++ b/pkgs/development/python-modules/google-cloud-dataproc/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-dataproc";
-  version = "3.1.1";
+  version = "3.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e012d76aa32b918c71392c11e1c727328c1570364f8d8e0676e52bc64c57a7af";
+    sha256 = "c3b60ea9059070e6d0d5c3bd3a705b5c7216a54e6a586149f9caa9158d099c3f";
   };
 
   propagatedBuildInputs = [ google-api-core libcst proto-plus ];
diff --git a/pkgs/development/python-modules/google-cloud-dlp/default.nix b/pkgs/development/python-modules/google-cloud-dlp/default.nix
index 8773b09e59a98..d2e3abef82d1b 100644
--- a/pkgs/development/python-modules/google-cloud-dlp/default.nix
+++ b/pkgs/development/python-modules/google-cloud-dlp/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-dlp";
-  version = "3.4.0";
+  version = "3.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0b249fa87deb57f5c7107a7d5d303673590a6524a7f113fc95f87493f3328606";
+    sha256 = "20abce8d8d3939db243cbc0da62a73ff1a4e3b3b341f7ced0cfeb5e2c4a66621";
   };
 
   propagatedBuildInputs = [ google-api-core libcst proto-plus pytz ];
diff --git a/pkgs/development/python-modules/google-cloud-error-reporting/default.nix b/pkgs/development/python-modules/google-cloud-error-reporting/default.nix
index c8edb677c64bb..06c4d9e23696a 100644
--- a/pkgs/development/python-modules/google-cloud-error-reporting/default.nix
+++ b/pkgs/development/python-modules/google-cloud-error-reporting/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-error-reporting";
-  version = "1.4.1";
+  version = "1.5.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4a72a65586178daaacf6bbc4b718db0765b99a719fce88a95c2be4f82689b7c1";
+    sha256 = "sha256-qvhZU7T2fHA2uRyXJjRxqeEAFwShH+TpGwICczgX7Sk=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/google-cloud-kms/default.nix b/pkgs/development/python-modules/google-cloud-kms/default.nix
index 8f64e9950e0ef..1efbcf02de429 100644
--- a/pkgs/development/python-modules/google-cloud-kms/default.nix
+++ b/pkgs/development/python-modules/google-cloud-kms/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-kms";
-  version = "2.10.1";
+  version = "2.11.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6a1cedc549ee0886d8603f519cc8631de3112be6f84c0bbbaedab4ee3f9b58fc";
+    sha256 = "sha256-8JOa8HzYGJq1lrPXCWRvspXpopEK+qf5av7kmKbFIrQ=";
   };
 
   propagatedBuildInputs = [ grpc-google-iam-v1 google-api-core libcst proto-plus ];
diff --git a/pkgs/development/python-modules/google-cloud-language/default.nix b/pkgs/development/python-modules/google-cloud-language/default.nix
index 816e56364b16c..b817c50ad5a54 100644
--- a/pkgs/development/python-modules/google-cloud-language/default.nix
+++ b/pkgs/development/python-modules/google-cloud-language/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-language";
-  version = "2.3.1";
+  version = "2.3.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e0d71b72e2639af0424308a71f871c3fbf7ea86bdcbac1d91910fe2e1b419944";
+    sha256 = "90af7858911f52350191575bb729305114c3c80d1f585d0f6cea39ab1ab3e409";
   };
 
   propagatedBuildInputs = [ google-api-core libcst proto-plus ];
diff --git a/pkgs/development/python-modules/google-cloud-logging/default.nix b/pkgs/development/python-modules/google-cloud-logging/default.nix
index 21add76d0ad7c..dc60abddb6df3 100644
--- a/pkgs/development/python-modules/google-cloud-logging/default.nix
+++ b/pkgs/development/python-modules/google-cloud-logging/default.nix
@@ -16,11 +16,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-logging";
-  version = "2.7.0";
+  version = "3.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5a4ad2832be3b86c8f0fb57b2d382a1f67218137c6f6051372647ac5147d6421";
+    sha256 = "sha256-RS42Hh3Lwo8iCMCAXBp8usAwdkVWcD2XZW0FIYuTNwg=";
   };
 
   postPatch = ''
@@ -57,7 +57,7 @@ buildPythonPackage rec {
     rm tests/system/test_system.py tests/unit/test__gapic.py
   '';
 
-  pythonImortsCheck = [
+  pythonImportsCheck = [
     "google.cloud.logging"
     "google.cloud.logging_v2"
   ];
diff --git a/pkgs/development/python-modules/google-cloud-redis/default.nix b/pkgs/development/python-modules/google-cloud-redis/default.nix
index ceacab720aeeb..aa49340f24a3e 100644
--- a/pkgs/development/python-modules/google-cloud-redis/default.nix
+++ b/pkgs/development/python-modules/google-cloud-redis/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-redis";
-  version = "2.5.0";
+  version = "2.5.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c5aaf6dbdf8bb1425bd42ef482a6c0ecc4b4d1718d49267d510799015c6ff1d2";
+    sha256 = "ad81fed19af6af68426e76891e4acc8a021a8bc475e2ce4be51bf28a610a9713";
   };
 
   propagatedBuildInputs = [ google-api-core libcst proto-plus ];
diff --git a/pkgs/development/python-modules/google-cloud-securitycenter/default.nix b/pkgs/development/python-modules/google-cloud-securitycenter/default.nix
index 404a515299340..e982aefae5a9f 100644
--- a/pkgs/development/python-modules/google-cloud-securitycenter/default.nix
+++ b/pkgs/development/python-modules/google-cloud-securitycenter/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-securitycenter";
-  version = "1.7.0";
+  version = "1.8.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7321a88191d61ca0cc720b7ad07d9693e07726728492739930562bcd33ec1494";
+    sha256 = "c77a765415d5e5465a3d74fefee9ce8f9a914ff228f1b10dda70841400ce1320";
   };
 
   propagatedBuildInputs = [ grpc-google-iam-v1 google-api-core libcst proto-plus ];
diff --git a/pkgs/development/python-modules/google-cloud-spanner/default.nix b/pkgs/development/python-modules/google-cloud-spanner/default.nix
index b08f8fb31ff9d..d78766907191b 100644
--- a/pkgs/development/python-modules/google-cloud-spanner/default.nix
+++ b/pkgs/development/python-modules/google-cloud-spanner/default.nix
@@ -14,11 +14,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-spanner";
-  version = "3.12.0";
+  version = "3.13.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8f1390c3776fcfce71e1ef024d9ccde52c16d1cd728bc587c24065d6e4d21933";
+    sha256 = "sha256-Y+MA7Nlx3+8eaBptI6eZgSPGc4MvxSrA9YA+K+VSblw=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/google-cloud-speech/default.nix b/pkgs/development/python-modules/google-cloud-speech/default.nix
index f9aa3e43553fe..5f2737912e2cd 100644
--- a/pkgs/development/python-modules/google-cloud-speech/default.nix
+++ b/pkgs/development/python-modules/google-cloud-speech/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-speech";
-  version = "2.11.1";
+  version = "2.12.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3a15400d2fab2ec161c9b647730e8ba92feb9cbe6a1c0c7734ec8e8941290dbd";
+    sha256 = "acbf9948ce3870c72b45089356985de9df3cd881830d1127a10cb80ada9786c7";
   };
 
   propagatedBuildInputs = [ libcst google-api-core proto-plus ];
diff --git a/pkgs/development/python-modules/google-cloud-storage/default.nix b/pkgs/development/python-modules/google-cloud-storage/default.nix
index 9d97437b81515..f77c718ed8b93 100644
--- a/pkgs/development/python-modules/google-cloud-storage/default.nix
+++ b/pkgs/development/python-modules/google-cloud-storage/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-storage";
-  version = "1.43.0";
+  version = "2.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f3b4f4be5c8a1b5727a8f7136c94d3bacdd4b7bf11f9553f51ae4c1d876529d3";
+    sha256 = "0a5e7ab1a38d2c24be8e566e50b8b0daa8af8fd49d4ab312b1fda5c147429893";
   };
 
   propagatedBuildInputs = [
@@ -40,6 +40,7 @@ buildPythonPackage rec {
     "download"
     "get"
     "post"
+    "upload"
     "test_build_api_url"
     "test_ctor_mtls"
     "test_hmac_key_crud"
diff --git a/pkgs/development/python-modules/google-cloud-tasks/default.nix b/pkgs/development/python-modules/google-cloud-tasks/default.nix
index e055d462b1f31..c1b58c0e1c26c 100644
--- a/pkgs/development/python-modules/google-cloud-tasks/default.nix
+++ b/pkgs/development/python-modules/google-cloud-tasks/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-tasks";
-  version = "2.7.1";
+  version = "2.7.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2fd2222901a7d8ba65f28f9019cb41f5d4c952d012f020bdde105527a3f5ae43";
+    sha256 = "sha256-h/lmrrT8fu1YLDYF6s856EAB8+k7CMFfIMGZPDxC7Ys=";
   };
 
   propagatedBuildInputs = [ google-api-core grpc-google-iam-v1 libcst proto-plus ];
diff --git a/pkgs/development/python-modules/google-cloud-testutils/default.nix b/pkgs/development/python-modules/google-cloud-testutils/default.nix
index 24775464a120c..d4551b4954a5e 100644
--- a/pkgs/development/python-modules/google-cloud-testutils/default.nix
+++ b/pkgs/development/python-modules/google-cloud-testutils/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-testutils";
-  version = "1.2.0";
+  version = "1.3.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9c60ea86b28998935875b5aea0b89b0a3aac5e433e0039236f633c5d0ff5f8b8";
+    sha256 = "sha256-X85NRgGZt7+OpL4poOyS+UWec4fuABiTxEYyFpkUpqs=";
   };
 
   propagatedBuildInputs = [ click google-auth six ];
diff --git a/pkgs/development/python-modules/google-cloud-texttospeech/default.nix b/pkgs/development/python-modules/google-cloud-texttospeech/default.nix
index 06c1eeb857f99..c2ab6afafaa4a 100644
--- a/pkgs/development/python-modules/google-cloud-texttospeech/default.nix
+++ b/pkgs/development/python-modules/google-cloud-texttospeech/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-texttospeech";
-  version = "2.9.0";
+  version = "2.10.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e8e272ab54be00285c8f9451081d833980c9fc2a1eff828448dfe315dfa61250";
+    sha256 = "sha256-j2MSeQLw7udQrEqj9LtMqvaGSgTLiItdpN8dUTedYdI=";
   };
 
   propagatedBuildInputs = [ libcst google-api-core proto-plus ];
diff --git a/pkgs/development/python-modules/google-nest-sdm/default.nix b/pkgs/development/python-modules/google-nest-sdm/default.nix
index 93fa676f6f82f..ac40e446530df 100644
--- a/pkgs/development/python-modules/google-nest-sdm/default.nix
+++ b/pkgs/development/python-modules/google-nest-sdm/default.nix
@@ -1,19 +1,22 @@
 { lib
 , aiohttp
+, asynctest
 , buildPythonPackage
+, coreutils
 , fetchFromGitHub
 , google-auth
 , google-auth-oauthlib
 , google-cloud-pubsub
-, pythonOlder
-, requests_oauthlib
 , pytest-aiohttp
+, pytest-asyncio
 , pytestCheckHook
+, pythonOlder
+, requests_oauthlib
 }:
 
 buildPythonPackage rec {
   pname = "google-nest-sdm";
-  version = "1.2.1";
+  version = "1.7.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -22,7 +25,7 @@ buildPythonPackage rec {
     owner = "allenporter";
     repo = "python-google-nest-sdm";
     rev = version;
-    sha256 = "sha256-gg5JAkTUuch6HcRLl1Xm/LAoC32EcayG1w3Fk7GrZD8=";
+    sha256 = "sha256-c/Btc2CiYGb9ZGzNYDd1xJoGID6amTyv/Emdh1M6e/U=";
   };
 
   propagatedBuildInputs = [
@@ -34,7 +37,10 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
+    asynctest
+    coreutils
     pytest-aiohttp
+    pytest-asyncio
     pytestCheckHook
   ];
 
@@ -42,8 +48,13 @@ buildPythonPackage rec {
     "google_nest_sdm"
   ];
 
+  disabledTests = [
+    "test_clip_preview_transcode"
+    "test_event_manager_event_expiration_with_transcode"
+  ];
+
   meta = with lib; {
-    description = "Python module for Google Nest Device Access using the Smart Device Management API";
+    description = "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/pkgs/development/python-modules/google-re2/default.nix b/pkgs/development/python-modules/google-re2/default.nix
index f61599d827cd7..b04459bfa141c 100644
--- a/pkgs/development/python-modules/google-re2/default.nix
+++ b/pkgs/development/python-modules/google-re2/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "google-re2";
-  version = "0.2.20211101";
+  version = "0.2.20220201";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "305dc0f749c1abad51f8dc59b49b98a58dc06b976727f6b711c87c01944046d9";
+    sha256 = "sha256-H8eMC1dM+9ukuRIN4uWWs7oRuQ0tpGaCwaCl0tp+lE8=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/google-resumable-media/default.nix b/pkgs/development/python-modules/google-resumable-media/default.nix
index 0b10fbab29b5a..5d5d2fda18a6a 100644
--- a/pkgs/development/python-modules/google-resumable-media/default.nix
+++ b/pkgs/development/python-modules/google-resumable-media/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "google-resumable-media";
-  version = "2.1.0";
+  version = "2.2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "725b989e0dd387ef2703d1cc8e86217474217f4549593c477fd94f4024a0f911";
+    sha256 = "sha256-se37mIZ8n6Jap68S1kaGZbg8UytzSe/6uAWgJ+qLvuU=";
   };
 
   propagatedBuildInputs = [ google-auth google-crc32c requests ];
diff --git a/pkgs/development/python-modules/googleapis-common-protos/default.nix b/pkgs/development/python-modules/googleapis-common-protos/default.nix
index 3a7c0510ad010..55380e3081a7b 100644
--- a/pkgs/development/python-modules/googleapis-common-protos/default.nix
+++ b/pkgs/development/python-modules/googleapis-common-protos/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "googleapis-common-protos";
-  version = "1.53.0";
+  version = "1.54.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a88ee8903aa0a81f6c3cec2d5cf62d3c8aa67c06439b0496b49048fb1854ebf4";
+    sha256 = "sha256-pAMdbsbCsbbcPgvn4Qob1y+wsYsH75vntR8sEATOJDc=";
   };
 
   propagatedBuildInputs = [ grpc protobuf ];
diff --git a/pkgs/development/python-modules/googlemaps/default.nix b/pkgs/development/python-modules/googlemaps/default.nix
index 58b50f5f84f81..f00a694dfcf45 100644
--- a/pkgs/development/python-modules/googlemaps/default.nix
+++ b/pkgs/development/python-modules/googlemaps/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "googlemaps";
-  version = "4.5.3";
+  version = "4.6.0";
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "googlemaps";
     repo = "google-maps-services-python";
     rev = "v${version}";
-    sha256 = "1yfsfspvjngrb1lwaq04ahm94j9y2dwzdf4dsg3yl1c8w0vgf9yw";
+    sha256 = "sha256-pzCM1uZupqJgoogwacuuy1P8I9LF65w7ZS6vY10VgeU=";
   };
 
   propagatedBuildInputs = [ requests ];
diff --git a/pkgs/development/python-modules/gphoto2/default.nix b/pkgs/development/python-modules/gphoto2/default.nix
index ddc638b55cb36..f6fc6db7f387b 100644
--- a/pkgs/development/python-modules/gphoto2/default.nix
+++ b/pkgs/development/python-modules/gphoto2/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "gphoto2";
-  version = "2.3.0";
+  version = "2.3.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a208264ed252a39b29a0b0f7ccc4c4ffb941398715aec84c3a547281a43c4eb8";
+    sha256 = "3b1b52ec3004ad6a6927a015b0572878a0a56314caaf1e62b07550e7a2e09465";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/pkgs/development/python-modules/gpxpy/default.nix b/pkgs/development/python-modules/gpxpy/default.nix
index 4cd03103d8507..86e4a87a86812 100644
--- a/pkgs/development/python-modules/gpxpy/default.nix
+++ b/pkgs/development/python-modules/gpxpy/default.nix
@@ -1,15 +1,15 @@
-{ lib, fetchFromGitHub, buildPythonPackage, python, lxml, isPy3k }:
+{ lib, fetchFromGitHub, buildPythonPackage, python, lxml, pythonOlder }:
 
 buildPythonPackage rec {
   pname = "gpxpy";
-  version = "1.4.2";
-  disabled = !isPy3k;
+  version = "1.5.0";
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "tkrajina";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1r5gb660nrkrdbw5m5h1n5k10npcfv9bxqv92z55ds8r7rw2saz6";
+    sha256 = "sha256-Fkl2dte1WkPi2hBOdT23BMfNflR0j4GeNH86d46WNQk=";
   };
 
   propagatedBuildInputs = [ lxml ];
diff --git a/pkgs/development/python-modules/gql/default.nix b/pkgs/development/python-modules/gql/default.nix
new file mode 100644
index 0000000000000..3df5f4c8458d3
--- /dev/null
+++ b/pkgs/development/python-modules/gql/default.nix
@@ -0,0 +1,77 @@
+{ lib
+, aiofiles
+, aiohttp
+, botocore
+, buildPythonPackage
+, fetchFromGitHub
+, graphql-core
+, mock
+, parse
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, requests
+, requests-toolbelt
+, urllib3
+, vcrpy
+, websockets
+, yarl
+}:
+
+buildPythonPackage rec {
+  pname = "gql";
+  version = "3.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "graphql-python";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-c2OVBOIwQlwyqET8Q22O65VtWduVzQjYOhkE8GpD6LQ=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    botocore
+    graphql-core
+    requests
+    requests-toolbelt
+    urllib3
+    websockets
+    yarl
+  ];
+
+  checkInputs = [
+    aiofiles
+    mock
+    parse
+    pytest-asyncio
+    pytestCheckHook
+    vcrpy
+  ];
+
+  disabledTests = [
+    # Tests requires network access
+    "test_execute_result_error"
+    "test_http_transport"
+  ];
+
+  disabledTestPaths = [
+    # Exclude linter tests
+    "gql-checker/tests/test_flake8_linter.py"
+    "gql-checker/tests/test_pylama_linter.py"
+  ];
+
+  pythonImportsCheck = [
+    "gql"
+  ];
+
+  meta = with lib; {
+    description = "GraphQL client in Python";
+    homepage = "https://github.com/graphql-python/gql";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/gradient-utils/default.nix b/pkgs/development/python-modules/gradient-utils/default.nix
index b7424c44f6def..e81d815e8c20a 100644
--- a/pkgs/development/python-modules/gradient-utils/default.nix
+++ b/pkgs/development/python-modules/gradient-utils/default.nix
@@ -7,6 +7,7 @@
 , poetry-core
 , prometheus-client
 , pytestCheckHook
+, pythonOlder
 , requests
 }:
 
@@ -15,6 +16,8 @@ buildPythonPackage rec {
   version = "0.5.0";
   format = "pyproject";
 
+  disabled = pythonOlder "3.6";
+
   src = fetchFromGitHub {
     owner = "Paperspace";
     repo = pname;
@@ -22,15 +25,9 @@ buildPythonPackage rec {
     sha256 = "19plkgwwfs6298vjplgsvhirixi3jbngq5y07x9c0fjxk39fa2dk";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace 'numpy = "1.18.5"' 'numpy = "^1.18.5"' \
-      --replace 'hyperopt = "0.1.2"' 'hyperopt = ">=0.1.2"' \
-      --replace 'wheel = "^0.35.1"' 'wheel = "*"' \
-      --replace 'prometheus-client = ">=0.8,<0.10"' 'prometheus-client = "*"'
-  '';
-
-  nativeBuildInputs = [ poetry-core ];
+  nativeBuildInputs = [
+    poetry-core
+  ];
 
   propagatedBuildInputs = [
     hyperopt
@@ -44,15 +41,24 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'wheel = "^0.35.1"' 'wheel = "*"' \
+      --replace 'prometheus-client = ">=0.8,<0.10"' 'prometheus-client = "*"'
+  '';
+
   preCheck = ''
     export HOSTNAME=myhost-experimentId
   '';
 
-  disabledTests = [
-    "test_add_metrics_pushes_metrics" # requires a working prometheus push gateway
+  disabledTestPaths = [
+    # Requires a working Prometheus push gateway
+    "tests/integration/test_metrics.py"
   ];
 
-  pythonImportsCheck = [ "gradient_utils" ];
+  pythonImportsCheck = [
+    "gradient_utils"
+  ];
 
   meta = with lib; {
     description = "Python utils and helpers library for Gradient";
diff --git a/pkgs/development/python-modules/gradient/default.nix b/pkgs/development/python-modules/gradient/default.nix
index 735dc03b6df76..8daa95c53b868 100644
--- a/pkgs/development/python-modules/gradient/default.nix
+++ b/pkgs/development/python-modules/gradient/default.nix
@@ -9,6 +9,7 @@
 , fetchPypi
 , gradient_statsd
 , gradient-utils
+, gql
 , halo
 , marshmallow
 , progressbar2
@@ -22,17 +23,19 @@
 
 buildPythonPackage rec {
   pname = "gradient";
-  version = "1.8.13";
+  version = "1.10.0";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0fa4a0553c28839e364d3aac27ec7292d26c1df27b8c54701d57eb7eda0b14f2";
+    hash = "sha256-wLdxU+PSREmTlX51scazmTC+U/mE95sSpfaUgHb8/Oc=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
       --replace 'attrs<=' 'attrs>=' \
       --replace 'colorama==' 'colorama>=' \
+      --replace 'gql[requests]==3.0.0a6' 'gql' \
       --replace 'PyYAML==' 'PyYAML>=' \
       --replace 'marshmallow<' 'marshmallow>=' \
       --replace 'websocket-client==' 'websocket-client>='
@@ -45,6 +48,7 @@ buildPythonPackage rec {
     click-didyoumean
     click-help-colors
     colorama
+    gql
     gradient_statsd
     gradient-utils
     halo
@@ -58,17 +62,20 @@ buildPythonPackage rec {
     websocket-client
   ];
 
-  # tries to use /homeless-shelter to mimic container usage, etc
+  # Tries to use /homeless-shelter to mimic container usage, etc
   doCheck = false;
 
+  # marshmallow.exceptions.StringNotCollectionError: "only" should be a collection of strings.
+  # Support for marshmallow > 3
+  # pythonImportsCheck = [
+  #   "gradient"
+  # ];
+
   meta = with lib; {
     description = "The command line interface for Gradient";
     homepage = "https://github.com/Paperspace/gradient-cli";
     license = licenses.isc;
     platforms = platforms.unix;
     maintainers = with maintainers; [ thoughtpolice ];
-    # There is no support for click > 8
-    # https://github.com/Paperspace/gradient-cli/issues/368
-    broken = true;
   };
 }
diff --git a/pkgs/development/python-modules/grandalf/default.nix b/pkgs/development/python-modules/grandalf/default.nix
index 6056d215d2276..c4e7eb4d74462 100644
--- a/pkgs/development/python-modules/grandalf/default.nix
+++ b/pkgs/development/python-modules/grandalf/default.nix
@@ -3,20 +3,22 @@
 , fetchFromGitHub
 , pyparsing
 , future
-, pytest
-, pytest-runner
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "grandalf";
-  version = "0.6";
+  version = "0.7";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
-  # fetch from github to acquire tests
   src = fetchFromGitHub {
     owner = "bdcht";
-    repo = "grandalf";
+    repo = pname;
     rev = "v${version}";
-    sha256 = "1f1l288sqna0bca7dwwvyw7wzg9b2613g6vc0g0vfngm7k75b2jg";
+    hash = "sha256-j2SvpQvDMfwoj2PAQSxzEIyIzzJ61Eb9wgetKyni6A4=";
   };
 
   propagatedBuildInputs = [
@@ -24,18 +26,22 @@ buildPythonPackage rec {
     future
   ];
 
-  checkInputs = [ pytest pytest-runner ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  patches = [ ./no-setup-requires-pytestrunner.patch ];
+  patches = [
+    ./no-setup-requires-pytestrunner.patch
+  ];
 
-  checkPhase = ''
-    pytest tests
-  '';
+  pythonImportsCheck = [
+    "grandalf"
+  ];
 
   meta = with lib; {
-    description = "A python package made for experimentations with graphs and drawing algorithms";
+    description = "Module for experimentations with graphs and drawing algorithms";
     homepage = "https://github.com/bdcht/grandalf";
-    license = licenses.gpl2;
+    license = licenses.gpl2Only;
     maintainers = with maintainers; [ cmcdragonkai ];
   };
 }
diff --git a/pkgs/development/python-modules/graph-tool/2.x.x.nix b/pkgs/development/python-modules/graph-tool/default.nix
index c8725dfd1167b..c8725dfd1167b 100644
--- a/pkgs/development/python-modules/graph-tool/2.x.x.nix
+++ b/pkgs/development/python-modules/graph-tool/default.nix
diff --git a/pkgs/development/python-modules/grapheme/default.nix b/pkgs/development/python-modules/grapheme/default.nix
new file mode 100644
index 0000000000000..965b1a1d21975
--- /dev/null
+++ b/pkgs/development/python-modules/grapheme/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "grapheme";
+  version = "0.6.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1jiwc3w05c8kh22s3zk7a8km8na3plqc5zimb2qcyxxy3grbkhj4";
+  };
+
+  # Tests are no available on PyPI
+  # https://github.com/alvinlindstam/grapheme/issues/18
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "grapheme"
+  ];
+
+  meta = with lib; {
+    description = "Python package for grapheme aware string handling";
+    homepage = "https://github.com/alvinlindstam/grapheme";
+    license = licenses.mit;
+    maintainers = with maintainers; [ creator54 ];
+  };
+}
diff --git a/pkgs/development/python-modules/graphene/default.nix b/pkgs/development/python-modules/graphene/default.nix
index 7a28bc08cda42..e975bff8fee48 100644
--- a/pkgs/development/python-modules/graphene/default.nix
+++ b/pkgs/development/python-modules/graphene/default.nix
@@ -1,14 +1,16 @@
 { lib
+, aniso8601
 , buildPythonPackage
 , fetchFromGitHub
-, aniso8601
 , graphql-core
 , graphql-relay
 , promise
-, pytestCheckHook
 , pytest-asyncio
 , pytest-benchmark
 , pytest-mock
+, pytestCheckHook
+, pythonAtLeast
+, pythonOlder
 , pytz
 , snapshottest
 }:
@@ -16,6 +18,9 @@
 buildPythonPackage rec {
   pname = "graphene";
   version = "3.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "graphql-python";
@@ -40,15 +45,22 @@ buildPythonPackage rec {
     snapshottest
   ];
 
-  pytestFlagsArray = [ "--benchmark-disable" ];
+  pytestFlagsArray = [
+    "--benchmark-disable"
+  ];
 
   disabledTests = [
     # Expects different Exeception classes, but receives none of them
     # https://github.com/graphql-python/graphene/issues/1346
     "test_unexpected_error"
+  ] ++ lib.optionals (pythonAtLeast "3.10") [
+    "test_objecttype_as_container_extra_args"
+    "test_objecttype_as_container_invalid_kwargs"
   ];
 
-  pythonImportsCheck = [ "graphene" ];
+  pythonImportsCheck = [
+    "graphene"
+  ];
 
   meta = with lib; {
     description = "GraphQL Framework for Python";
diff --git a/pkgs/development/python-modules/graphql-core/default.nix b/pkgs/development/python-modules/graphql-core/default.nix
index 8906af53ce193..75583cdbfe399 100644
--- a/pkgs/development/python-modules/graphql-core/default.nix
+++ b/pkgs/development/python-modules/graphql-core/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "graphql-core";
-  version = "3.1.6";
+  version = "3.2.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "graphql-python";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1ip0yrqmnqncgpwvba18x020gkwr7csiw4zdy6mrdnvwf5qyam4x";
+    sha256 = "sha256-71Z+5nVvg+aozJAKmBGJg5Gqq1OIVH7Xv33Q82IHhXg=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/grappelli_safe/default.nix b/pkgs/development/python-modules/grappelli_safe/default.nix
index 8ef95b460ae27..33b4c437dde26 100644
--- a/pkgs/development/python-modules/grappelli_safe/default.nix
+++ b/pkgs/development/python-modules/grappelli_safe/default.nix
@@ -4,12 +4,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.0.0";
+  version = "1.1.1";
   pname = "grappelli_safe";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "84c03ec5373341d980a76480d992389e286fbc50048e91bc2e5c876d02873cc5";
+    sha256 = "ee34b3e2a3711498b1f8da3d9daa8a1239efdf255a212181742b6a5890fac039";
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/greeclimate/default.nix b/pkgs/development/python-modules/greeclimate/default.nix
index 5f72411e9e892..6fbefe827b450 100644
--- a/pkgs/development/python-modules/greeclimate/default.nix
+++ b/pkgs/development/python-modules/greeclimate/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "greeclimate";
-  version = "1.0.1";
+  version = "1.0.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "cmroche";
     repo = "greeclimate";
     rev = "v${version}";
-    hash = "sha256-O9SaEveZntb7VWL5k1WjTDK9fXhTWFIsVh5v7NKASnQ=";
+    hash = "sha256-z8X/AZx5Vam7nqYTjhhyXz7E23Crf5vLlNhWXLGSMcs=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/green/default.nix b/pkgs/development/python-modules/green/default.nix
index e4a3401109b4a..ccff2f21e1f96 100644
--- a/pkgs/development/python-modules/green/default.nix
+++ b/pkgs/development/python-modules/green/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "green";
-  version = "3.3.0";
+  version = "3.4.1";
   format = "setuptools";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a4d86f2dfa4ccbc86f24bcb9c9ab8bf34219c876c24e9f0603aab4dfe73bb575";
+    sha256 = "5dda2d2a277012227011f8f21523d70a550ebe5d47cc890fa16b9fcd9a91da53";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/groestlcoin_hash/default.nix b/pkgs/development/python-modules/groestlcoin_hash/default.nix
new file mode 100644
index 0000000000000..859573d1ca53b
--- /dev/null
+++ b/pkgs/development/python-modules/groestlcoin_hash/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "groestlcoin_hash";
+  version = "1.0.3";
+  format = "setuptools";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "31a8f6fa4c19db5258c3c73c071b71702102c815ba862b6015d9e4b75ece231e";
+  };
+
+  pythonImportsCheck = [
+    "groestlcoin_hash"
+  ];
+
+  meta = with lib; {
+    description = "Bindings for groestl key derivation function library used in Groestlcoin";
+    homepage = "https://pypi.org/project/groestlcoin_hash/";
+    maintainers = with maintainers; [ gruve-p ];
+    license = licenses.unfree;
+  };
+}
diff --git a/pkgs/development/python-modules/growattserver/default.nix b/pkgs/development/python-modules/growattserver/default.nix
index 18d6cd4dabb15..6347d9f55b8e9 100644
--- a/pkgs/development/python-modules/growattserver/default.nix
+++ b/pkgs/development/python-modules/growattserver/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "growattserver";
-  version = "1.1.0";
+  version = "1.2.0";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "indykoning";
     repo = "PyPi_GrowattServer";
     rev = version;
-    sha256 = "sha256-Vooy+czqhrsWVw35zJb5paC5G0WwOlI5hF8PXxJG0cY=";
+    sha256 = "0v9clmz4qg6krmbsbfsrhsan824y2mqvwxsxb0fzfgaszxwkpm30";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/gruut/default.nix b/pkgs/development/python-modules/gruut/default.nix
index 4718d8244d0c9..f1e490a65cb28 100644
--- a/pkgs/development/python-modules/gruut/default.nix
+++ b/pkgs/development/python-modules/gruut/default.nix
@@ -18,12 +18,15 @@
 
 let
   langPkgs = [
+    "ar"
     "cs"
     "de"
-    "es"
     "en"
+    "es"
+    "fa"
     "fr"
     "it"
+    "lb"
     "nl"
     "pt"
     "ru"
@@ -45,9 +48,9 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace requirements.txt \
-      --replace "Babel~=2.8.0" "Babel" \
       --replace "dateparser~=1.0.0" "dateparser" \
-      --replace "gruut_lang_en~=2.0.0" "gruut_lang_en"
+      --replace "gruut_lang_en~=2.0.0" "gruut_lang_en" \
+      --replace "jsonlines~=1.2.0" "jsonlines"
   '';
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/gsd/1.7.nix b/pkgs/development/python-modules/gsd/1.7.nix
deleted file mode 100644
index 8d19acdc70de4..0000000000000
--- a/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/pkgs/development/python-modules/gssapi/default.nix b/pkgs/development/python-modules/gssapi/default.nix
index 330172f56ceec..d500c64532133 100644
--- a/pkgs/development/python-modules/gssapi/default.nix
+++ b/pkgs/development/python-modules/gssapi/default.nix
@@ -67,7 +67,7 @@ buildPythonPackage rec {
     echo $'\ndel TestBaseUtilities.test_add_cred_impersonate_name' >> gssapi/tests/test_raw.py
 
     export PYTHONPATH="$out/${python.sitePackages}:$PYTHONPATH"
-    ${python.interpreter} setup.py nosetests -e 'ext_test_\d.*'
+    nosetests -e 'ext_test_\d.*'
   '';
   pythonImportsCheck = [ "gssapi" ];
 
diff --git a/pkgs/development/python-modules/gst-python/default.nix b/pkgs/development/python-modules/gst-python/default.nix
index a391d993cf0c7..c02e3b593b82c 100644
--- a/pkgs/development/python-modules/gst-python/default.nix
+++ b/pkgs/development/python-modules/gst-python/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "gst-python";
-  version = "1.18.4";
+  version = "1.20.0";
 
   format = "other";
 
@@ -22,7 +22,7 @@ buildPythonPackage rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-python/${pname}-${version}.tar.xz";
-    sha256 = "13h9qzfz8s1gyj2ar9q2gf5346sgdv6jv8hj7aw0hpl2gs5f0s6b";
+    sha256 = "j2e9xWBrozYGxryJbonefc2M9PykWfcTibG2/gdbXlQ=";
   };
 
   # Python 2.x is not supported.
diff --git a/pkgs/development/python-modules/gunicorn/19.nix b/pkgs/development/python-modules/gunicorn/19.nix
deleted file mode 100644
index a7a418afa18ca..0000000000000
--- a/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/pkgs/development/python-modules/gvm-tools/default.nix b/pkgs/development/python-modules/gvm-tools/default.nix
index 17fb02fd10d94..8de737eeeddcf 100644
--- a/pkgs/development/python-modules/gvm-tools/default.nix
+++ b/pkgs/development/python-modules/gvm-tools/default.nix
@@ -4,6 +4,7 @@
 , poetry-core
 , pytestCheckHook
 , python-gvm
+, pythonAtLeast
 , pythonOlder
 }:
 
@@ -36,6 +37,8 @@ buildPythonPackage rec {
   disabledTests = [
     # Don't test sending
     "SendTargetTestCase"
+  ] ++ lib.optionals (pythonAtLeast "3.10") [
+    "HelpFormattingParserTestCase"
   ];
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/gym/default.nix b/pkgs/development/python-modules/gym/default.nix
index 5bcfb64a184d8..1616343f8b436 100644
--- a/pkgs/development/python-modules/gym/default.nix
+++ b/pkgs/development/python-modules/gym/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "gym";
-  version = "0.19.0";
+  version = "0.21.0";
 
   src = fetchFromGitHub {
     owner = "openai";
     repo = pname;
-    rev = version;
-    sha256 = "sha256-0O/s9OVNGQmeX9j8B1x63RxdI6dhqfTEJcgDH2jtCv4=";
+    rev = "v${version}";
+    sha256 = "12b545xz0r2g4z5r7f8amxl7nm0lqymkzwcwhg1bni9h0sxwpv6c";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/h2/default.nix b/pkgs/development/python-modules/h2/default.nix
index fcd2836214934..a73d9960f6938 100644
--- a/pkgs/development/python-modules/h2/default.nix
+++ b/pkgs/development/python-modules/h2/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , pythonOlder
 , fetchPypi
-, fetchpatch
 , hpack
 , hyperframe
 , pytestCheckHook
@@ -11,24 +10,16 @@
 
 buildPythonPackage rec {
   pname = "h2";
-  version = "4.0.0";
+  version = "4.1.0";
   format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bb7ac7099dd67a857ed52c815a6192b6b1f5ba6b516237fc24a085341340593d";
+    sha256 = "sha256-qDrKCPvnqst5/seIycC6yTY0NWDtnsGLgqE6EsKNKrs=";
   };
 
-  patches = [
-    # Workaround issues with hypothesis 6.6
-    # https://github.com/python-hyper/h2/pull/1248
-    (fetchpatch {
-      url = "https://github.com/python-hyper/h2/commit/0646279dab694a89562846c810202ce2c0b49be3.patch";
-      sha256 = "1k0fsxwq9wbv15sc9ixls4qmxxghlzpflf3awm66ar9m2ikahiak";
-    })
-  ];
-
   propagatedBuildInputs = [
     hpack
     hyperframe
@@ -46,7 +37,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "HTTP/2 State-Machine based protocol implementation";
-    homepage = "http://hyper.rtfd.org/";
+    homepage = "https://github.com/python-hyper/h2";
     license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/h5py/default.nix b/pkgs/development/python-modules/h5py/default.nix
index 701b8f78f83b8..36b1322a88b31 100644
--- a/pkgs/development/python-modules/h5py/default.nix
+++ b/pkgs/development/python-modules/h5py/default.nix
@@ -20,7 +20,8 @@ in buildPythonPackage rec {
   # avoid strict pinning of numpy
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "numpy ==" "numpy >="
+      --replace "numpy ==" "numpy >=" \
+      --replace "mpi4py ==" "mpi4py >="
   '';
 
   HDF5_DIR = "${hdf5}";
diff --git a/pkgs/development/python-modules/ha-av/default.nix b/pkgs/development/python-modules/ha-av/default.nix
index af5f5f31ab616..78735b67d44d9 100644
--- a/pkgs/development/python-modules/ha-av/default.nix
+++ b/pkgs/development/python-modules/ha-av/default.nix
@@ -3,7 +3,7 @@
 , pythonOlder
 , fetchPypi
 , pkg-config
-, ffmpeg
+, ffmpeg_4
 }:
 
 buildPythonPackage rec {
@@ -23,7 +23,7 @@ buildPythonPackage rec {
   ];
 
   buildInputs = [
-    ffmpeg
+    ffmpeg_4
   ];
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/habanero/default.nix b/pkgs/development/python-modules/habanero/default.nix
index e24f2fc096911..9dc3193957f6c 100644
--- a/pkgs/development/python-modules/habanero/default.nix
+++ b/pkgs/development/python-modules/habanero/default.nix
@@ -1,24 +1,32 @@
 { buildPythonPackage, lib, fetchFromGitHub
 , requests, tqdm
 , nose, vcrpy
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "habanero";
-  version = "0.7.4";
+  version = "1.0.0";
 
   # Install from Pypi is failing because of a missing file (Changelog.rst)
   src = fetchFromGitHub {
     owner = "sckott";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1d8yj9xz5qabcj57rpjzvg0jcscvzrpb0739mll29nijbsaimfr1";
+    sha256 = "0lhbd5c4sypcd65nh4cgxddsqrxwg89nn1qiii6m5l4fzsvblggv";
   };
 
   propagatedBuildInputs = [ requests tqdm ];
 
-  checkInputs = [ nose vcrpy ];
-  checkPhase = "make test";
+  # almost the entirety of the test suite makes network calls
+  pytestFlagsArray = [
+    "test/test-filters.py"
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    vcrpy
+  ];
 
   meta = {
     description = "Python interface to Library Genesis";
diff --git a/pkgs/development/python-modules/hahomematic/default.nix b/pkgs/development/python-modules/hahomematic/default.nix
index 287e12afe78e1..2c1e308af66cb 100644
--- a/pkgs/development/python-modules/hahomematic/default.nix
+++ b/pkgs/development/python-modules/hahomematic/default.nix
@@ -1,7 +1,11 @@
 { lib
+, aiohttp
 , buildPythonPackage
 , fetchFromGitHub
-, aiohttp
+, pydevccu
+, pytest-aiohttp
+, pytestCheckHook
+, python-slugify
 , pythonOlder
 , voluptuous
 , websocket-client
@@ -10,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "hahomematic";
-  version = "0.9.1";
+  version = "0.34.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.9";
@@ -19,15 +23,22 @@ buildPythonPackage rec {
     owner = "danielperna84";
     repo = pname;
     rev = version;
-    sha256 = "sha256-sxYa0SCsX1NZlCRMIpwyU1KPEteVH5HGLx1dFsbiu/E=";
+    sha256 = "sha256-S2zbm0S6LhQSRW6wFdbvqZdXHqIqLRSkqxVTQdIRGT4=";
   };
 
   propagatedBuildInputs = [
     aiohttp
+    python-slugify
     voluptuous
   ];
 
-  # Module has no tests
+  checkInputs = [
+    pydevccu
+    pytest-aiohttp
+    pytestCheckHook
+  ];
+
+  # Starting with 0.30 the tests are broken, check with the next major release
   doCheck = false;
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/halohome/default.nix b/pkgs/development/python-modules/halohome/default.nix
index b87b59a46ec02..7d8dbe2efbb89 100644
--- a/pkgs/development/python-modules/halohome/default.nix
+++ b/pkgs/development/python-modules/halohome/default.nix
@@ -9,7 +9,8 @@
 
 buildPythonPackage rec {
   pname = "halohome";
-  version = "0.4.0";
+  version = "0.5.0";
+  format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
@@ -17,7 +18,7 @@ buildPythonPackage rec {
     owner = "nayaverdier";
     repo = pname;
     rev = version;
-    sha256 = "W7cqBJmoBUT0VvXeNKxUK0FfAuprjfvFv6rgyL2gqYQ=";
+    sha256 = "sha256-xnUOObqVg1E7mTDKHZMoC95KI9ZIn0YpkQjoASa5Dds=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/hangups/default.nix b/pkgs/development/python-modules/hangups/default.nix
index 1832803388fc9..3b5e0a218b78a 100644
--- a/pkgs/development/python-modules/hangups/default.nix
+++ b/pkgs/development/python-modules/hangups/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "hangups";
-  version = "0.4.15";
+  version = "0.4.17";
 
   disabled = pythonOlder "3.6";
 
@@ -26,13 +26,12 @@ buildPythonPackage rec {
     owner = "tdryer";
     repo = "hangups";
     rev = "v${version}";
-    sha256 = "sha256-47OvfFK92AtX6KiYnvro2B17RfQWyzgsgvOfl5T3Kag=";
+    hash = "sha256-8kNWcRAip9LkmazDUVeDjGWhy/TWzT01c959LA5hb1Q=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "protobuf>=3.1.0,<3.17" "protobuf" \
-      --replace "async-timeout>=2,<4" "async-timeout" \
+      --replace "protobuf>=3.1.0,<3.20" "protobuf" \
       --replace "MechanicalSoup>=0.6.0,<0.13" "MechanicalSoup"
   '';
 
diff --git a/pkgs/development/python-modules/hap-python/default.nix b/pkgs/development/python-modules/hap-python/default.nix
index c58e50bee868a..63a2e941f0fa5 100644
--- a/pkgs/development/python-modules/hap-python/default.nix
+++ b/pkgs/development/python-modules/hap-python/default.nix
@@ -16,14 +16,14 @@
 
 buildPythonPackage rec {
   pname = "hap-python";
-  version = "4.3.0";
+  version = "4.4.0";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "ikalchev";
     repo = "HAP-python";
     rev = "v${version}";
-    sha256 = "sha256-G4KL6iMeVn/tmvFtFL8vyqHGNfqk6j8iG4tDK9VpCyM=";
+    sha256 = "sha256-dSiI2W4U4FYwMRBInpxb/wkQLKxPzLHIkLPNgiZEhUA=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/hass-nabucasa/default.nix b/pkgs/development/python-modules/hass-nabucasa/default.nix
index 48788537a6607..2e3be091cef66 100644
--- a/pkgs/development/python-modules/hass-nabucasa/default.nix
+++ b/pkgs/development/python-modules/hass-nabucasa/default.nix
@@ -15,13 +15,13 @@
 
 buildPythonPackage rec {
   pname = "hass-nabucasa";
-  version = "0.50.0";
+  version = "0.52.0";
 
   src = fetchFromGitHub {
     owner = "nabucasa";
     repo = pname;
     rev = version;
-    sha256 = "sha256-0E8eiHzqbxHbtAd97MbvFMRDWTu25E9x/44oNGC4mUM=";
+    sha256 = "sha256-mTbNuER26BPQIjcmlpkdFNeBcNF1vTldaNpoEla0XbM=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/hdlparse/default.nix b/pkgs/development/python-modules/hdlparse/default.nix
deleted file mode 100644
index 4257f9b2e9a2f..0000000000000
--- a/pkgs/development/python-modules/hdlparse/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi }:
-
-buildPythonPackage rec {
-  pname = "hdlparse";
-  version = "1.0.4";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "fb6230ed1e7a04a8f82f8d3fb59791d0751ae35e5b8e58dbbf2cbcf100d0d0f2";
-  };
-
-  #This module does not contain any tests.
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://kevinpt.github.io/hdlparse/";
-    description = "Rudimentary parser for VHDL and Verilog";
-    license = licenses.mit;
-    maintainers = with maintainers; [ elliottvillars ];
-  };
-}
-
diff --git a/pkgs/development/python-modules/heatzypy/default.nix b/pkgs/development/python-modules/heatzypy/default.nix
index a0647d2dd77da..578a359778a6b 100644
--- a/pkgs/development/python-modules/heatzypy/default.nix
+++ b/pkgs/development/python-modules/heatzypy/default.nix
@@ -1,4 +1,5 @@
 { lib
+, aiohttp
 , buildPythonPackage
 , fetchFromGitHub
 , requests
@@ -8,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "heatzypy";
-  version = "1.4.2";
+  version = "2.0.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -17,10 +18,11 @@ buildPythonPackage rec {
     owner = "Cyr-ius";
     repo = pname;
     rev = version;
-    sha256 = "nENuH2u9RtWq86TW/sDFFeYS8GTWGj7qfcFS8AHFRGk=";
+    sha256 = "sha256-i5tGV9nJrLRqZwJZ3y5c65MHykz34bnr3yz+OdaQEoM=";
   };
 
   propagatedBuildInputs = [
+    aiohttp
     requests
   ];
 
diff --git a/pkgs/development/python-modules/hg-git/0.8.nix b/pkgs/development/python-modules/hg-git/0.8.nix
deleted file mode 100644
index b3bfdf708244f..0000000000000
--- a/pkgs/development/python-modules/hg-git/0.8.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, dulwich
-, isPy3k
-, fetchpatch
-}:
-
-buildPythonPackage rec {
-  pname = "hg-git";
-  version = "0.8.12";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "13hbm0ki6s88r6p65ibvrbxnskinzdz0m9gsshb8s571p91ymfjn";
-  };
-
-  propagatedBuildInputs = [ dulwich ];
-
-  # Needs patch to work with Mercurial 4.8
-  # https://foss.heptapod.net/mercurial/hg-git/-/issues/264
-  patches = [
-    (fetchpatch {
-      url = "https://foss.heptapod.net/mercurial/hg-git/-/commit/186b37af1ff61e8141e9eea5c75a03b3c82f1ab9.diff";
-      sha256 = "sha256-KS6fUJOVzCYX/r5sdRXuFDKtlgxz80bGDFb71ISnRgc=";
-    })
-  ];
-
-  meta = with lib; {
-    description = "Push and pull from a Git server using Mercurial";
-    homepage = "https://hg-git.github.io/";
-    maintainers = with maintainers; [ koral ];
-    license = licenses.gpl2Only;
-  };
-}
diff --git a/pkgs/development/python-modules/hgsvn/default.nix b/pkgs/development/python-modules/hgsvn/default.nix
deleted file mode 100644
index b8b6d43b54808..0000000000000
--- a/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/pkgs/development/python-modules/hijri-converter/default.nix b/pkgs/development/python-modules/hijri-converter/default.nix
index ba9511a078d50..450eee102372f 100644
--- a/pkgs/development/python-modules/hijri-converter/default.nix
+++ b/pkgs/development/python-modules/hijri-converter/default.nix
@@ -2,20 +2,28 @@
 , buildPythonPackage
 , fetchPypi
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "hijri-converter";
-  version = "2.2.2";
+  version = "2.2.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-1KENsAnBQXWSu/s96+yt+gTY2NXVG2Spcelp12Gp8+E=";
+    sha256 = "sha256-5xSc7OzKZHv0Bonsib9ZPHJSsx1pnqWHrQvOkbpC04I=";
   };
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  pythonImportsCheck = [ "hijri_converter" ];
+  pythonImportsCheck = [
+    "hijri_converter"
+  ];
 
   meta = with lib; {
     description = "Accurate Hijri-Gregorian date converter based on the Umm al-Qura calendar";
diff --git a/pkgs/development/python-modules/hiredis/default.nix b/pkgs/development/python-modules/hiredis/default.nix
index 00ce786b005dd..eea5e5bf80433 100644
--- a/pkgs/development/python-modules/hiredis/default.nix
+++ b/pkgs/development/python-modules/hiredis/default.nix
@@ -1,25 +1,30 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, redis
+, pythonOlder
+
+# tested using
 , python
 }:
 
 buildPythonPackage rec {
   pname = "hiredis";
   version = "2.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "81d6d8e39695f2c37954d1011c0480ef7cf444d4e3ae24bc5e89ee5de360139a";
   };
-  propagatedBuildInputs = [ redis ];
+
+  pythonImportsCheck = [ "hiredis" ];
 
   checkPhase = ''
     mv hiredis _hiredis
     ${python.interpreter} test.py
   '';
-  pythonImportsCheck = [ "hiredis" ];
 
   meta = with lib; {
     description = "Wraps protocol parsing code in hiredis, speeds up parsing of multi bulk replies";
diff --git a/pkgs/development/python-modules/holidays/default.nix b/pkgs/development/python-modules/holidays/default.nix
index 10d3333016419..ecefce19aedef 100644
--- a/pkgs/development/python-modules/holidays/default.nix
+++ b/pkgs/development/python-modules/holidays/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "holidays";
-  version = "0.11.3.1";
+  version = "0.12";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-SFWv4Ov0KO+8+EhHeCi4ifhRW+f08VriZoKRk2nZJ3Q=";
+    sha256 = "d99f2b6ddc5bfab7b7f8bbed457a82104f8980122a04b982bfc0e4f8820a1d46";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/holoviews/default.nix b/pkgs/development/python-modules/holoviews/default.nix
index 89d86ee4eb43f..18a5f0cd82aac 100644
--- a/pkgs/development/python-modules/holoviews/default.nix
+++ b/pkgs/development/python-modules/holoviews/default.nix
@@ -16,11 +16,11 @@
 
 buildPythonPackage rec {
   pname = "holoviews";
-  version = "1.14.7";
+  version = "1.14.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8d8d171227e9c9eaadd4b037b3ddaa01055a33bacbdbeb57a5efbd273986665f";
+    sha256 = "sha256-bDZVmaLLFnk7tifJtcVDCYK7WRyd6IhQAv+RtTm2ETM=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/homematicip/default.nix b/pkgs/development/python-modules/homematicip/default.nix
index fb10dc5168315..71752fede5399 100644
--- a/pkgs/development/python-modules/homematicip/default.nix
+++ b/pkgs/development/python-modules/homematicip/default.nix
@@ -5,8 +5,8 @@
 , async-timeout
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , pytestCheckHook
+, pythonAtLeast
 , pythonOlder
 , pytest-aiohttp
 , pytest-asyncio
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "homematicip";
-  version = "1.0.1";
+  version = "1.0.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -26,18 +26,9 @@ buildPythonPackage rec {
     owner = "coreGreenberet";
     repo = "homematicip-rest-api";
     rev = version;
-    sha256 = "008snxx9ijpi1zr1pi1v4a6g74j821hyw0khs9lmi08v2mcabm36";
+    sha256 = "sha256-j2ansly05auevlcDY5TFz6PZR/pNIGIbtkJuU8L5b0o=";
   };
 
-  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
@@ -54,11 +45,6 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  postPatch = ''
-    substituteInPlace homematicip/aio/connection.py \
-      --replace ", loop=self._loop" ""
-  '';
-
   disabledTests = [
     # Assert issues with datetime
     "test_contact_interface_device"
@@ -82,6 +68,11 @@ buildPythonPackage rec {
     "test_home_unknown_types"
     # Requires network access
     "test_websocket"
+  ] ++ lib.optionals (pythonAtLeast "3.10") [
+    "test_connection_lost"
+    "test_user_disconnect_and_reconnect"
+    "test_ws_message"
+    "test_ws_no_pong"
   ];
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/hsaudiotag/default.nix b/pkgs/development/python-modules/hsaudiotag/default.nix
deleted file mode 100644
index d38ceec7e131b..0000000000000
--- a/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/pkgs/development/python-modules/html-sanitizer/default.nix b/pkgs/development/python-modules/html-sanitizer/default.nix
index 546f1acad0944..111d7e00d1b2c 100644
--- a/pkgs/development/python-modules/html-sanitizer/default.nix
+++ b/pkgs/development/python-modules/html-sanitizer/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "html-sanitizer";
-  version = "1.9.1";
+  version = "1.9.3";
 
   src = fetchFromGitHub {
     owner = "matthiask";
     repo = pname;
     rev = version;
-    sha256 = "0nnv34924r0yn01rwlk749j5ijy7yxyj302s1i57yjrkqr3zlvas";
+    sha256 = "sha256-1JSdi1PFM+N+UuEPfgWkOZw8S2PZ4ntadU0wnVJNnjw=";
   };
 
   propagatedBuildInputs = [
@@ -26,9 +26,17 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [ "html_sanitizer/tests.py" ];
+  pytestFlagsArray = [
+    "html_sanitizer/tests.py"
+  ];
+
+  disabledTests = [
+    "test_billion_laughs"
+  ];
 
-  pythonImportsCheck = [ "html_sanitizer" ];
+  pythonImportsCheck = [
+    "html_sanitizer"
+  ];
 
   meta = with lib; {
     description = "Allowlist-based and very opinionated HTML sanitizer";
diff --git a/pkgs/development/python-modules/html2text/2018.nix b/pkgs/development/python-modules/html2text/2018.nix
deleted file mode 100644
index 06d0c14c7e435..0000000000000
--- a/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/pkgs/development/python-modules/html5lib/default.nix b/pkgs/development/python-modules/html5lib/default.nix
index 1172b01951323..58da63d02edd9 100644
--- a/pkgs/development/python-modules/html5lib/default.nix
+++ b/pkgs/development/python-modules/html5lib/default.nix
@@ -1,11 +1,12 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, fetchpatch
 , six
 , webencodings
 , mock
 , pytest-expect
-, pytestCheckHook_5
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
@@ -17,15 +18,26 @@ buildPythonPackage rec {
     sha256 = "b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f";
   };
 
+  patches = [
+    # Fix compatibility with pytest 6.
+    # Will be included in the next release after 1.1.
+    (fetchpatch {
+      url = "https://github.com/html5lib/html5lib-python/commit/2c19b9899ab3a3e8bd0ca35e5d78544334204169.patch";
+      sha256 = "sha256-VGCeB6o2QO/skeCZs8XLPfgEYVOSRL8cCpG7ajbZWEs=";
+    })
+  ];
+
   propagatedBuildInputs = [
     six
     webencodings
   ];
 
+  # latest release not compatible with pytest 6
+  doCheck = false;
   checkInputs = [
     mock
     pytest-expect
-    pytestCheckHook_5
+    pytestCheckHook
   ];
 
   meta = {
diff --git a/pkgs/development/python-modules/http_signature/default.nix b/pkgs/development/python-modules/http_signature/default.nix
deleted file mode 100644
index 9169f1e412663..0000000000000
--- a/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/pkgs/development/python-modules/httpagentparser/default.nix b/pkgs/development/python-modules/httpagentparser/default.nix
new file mode 100644
index 0000000000000..44c521ff3304b
--- /dev/null
+++ b/pkgs/development/python-modules/httpagentparser/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "httpagentparser";
+  version = "1.9.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "a190dfdc5e63b2f1c87729424b19cbc49263d6a1fb585a16ac1c9d9ce127a4bf";
+  };
+
+  # PyPi version does not include test directory
+  doCheck = false;
+
+  pythonImportsCheck = [ "httpagentparser" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/shon/httpagentparser";
+    description = "Extracts OS Browser etc information from http user agent string";
+    license = licenses.mit;
+    maintainers = with maintainers; [ gador ];
+  };
+}
diff --git a/pkgs/development/python-modules/httpbin/default.nix b/pkgs/development/python-modules/httpbin/default.nix
index ace9a7041e3fa..8359fcf0a096d 100644
--- a/pkgs/development/python-modules/httpbin/default.nix
+++ b/pkgs/development/python-modules/httpbin/default.nix
@@ -1,33 +1,65 @@
 { lib
+, brotlipy
 , buildPythonPackage
+, decorator
 , fetchPypi
 , flask
 , flask-limiter
-, markupsafe
-, decorator
 , itsdangerous
+, markupsafe
 , raven
 , six
-, brotlipy
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "httpbin";
   version = "0.7.0";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1yldvf3585zcwj4vxvfm4yr9wwlz3pa2mx2pazqz8x8mr687gcyb";
+    hash = "sha256-y7N3kMkVdfTxV1f0KtQdn3KesifV7b6J5OwXVIbbjfo=";
   };
 
-  propagatedBuildInputs = [ brotlipy flask flask-limiter markupsafe decorator itsdangerous raven six ];
+  propagatedBuildInputs = [
+    brotlipy
+    flask
+    flask-limiter
+    markupsafe
+    decorator
+    itsdangerous
+    raven
+    six
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "test_httpbin.py"
+  ];
+
+  disabledTests = [
+    # Tests seems to be outdated
+    "test_anything"
+    "test_get"
+    "test_redirect_n_equals_to_1"
+    "test_redirect_n_higher_than_1"
+    "test_redirect_to_post"
+    "test_relative_redirect_n_equals_to_1"
+    "test_relative_redirect_n_higher_than_1"
+  ];
 
-  # No tests
-  doCheck = false;
+  pythonImportsCheck = [
+    "httpbin"
+  ];
 
   meta = with lib; {
+    description = "HTTP Request and Response Service";
     homepage = "https://github.com/kennethreitz/httpbin";
-    description = "HTTP Request & Response Service";
     license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/httpcore/default.nix b/pkgs/development/python-modules/httpcore/default.nix
index 99eb08a35a9d4..79d979b10a97c 100644
--- a/pkgs/development/python-modules/httpcore/default.nix
+++ b/pkgs/development/python-modules/httpcore/default.nix
@@ -19,14 +19,14 @@
 
 buildPythonPackage rec {
   pname = "httpcore";
-  version = "0.14.3";
+  version = "0.14.4";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "encode";
     repo = pname;
     rev = version;
-    sha256 = "sha256-jPsbMhY1lWKBXlh6hsX6DGKXi/g7VQSU00tF6H7qkOo=";
+    sha256 = "19zsg8ijw0s1722ka67mjxx5z07lx9jq36z97l1fa6z1129wq240";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/httplib2/default.nix b/pkgs/development/python-modules/httplib2/default.nix
index 3f48af86e5816..9a8a8853780af 100644
--- a/pkgs/development/python-modules/httplib2/default.nix
+++ b/pkgs/development/python-modules/httplib2/default.nix
@@ -48,7 +48,11 @@ buildPythonPackage rec {
     sed -i "/--cov/d" setup.cfg
   '';
 
-  disabledTests = lib.optionals (stdenv.isDarwin) [
+  disabledTests = [
+    # ValueError: Unable to load PEM file.
+    # https://github.com/httplib2/httplib2/issues/192#issuecomment-993165140
+    "test_client_cert_password_verified"
+  ] ++ lib.optionals (stdenv.isDarwin) [
     # fails with HTTP 408 Request Timeout, instead of expected 200 OK
     "test_timeout_subsequent"
   ];
diff --git a/pkgs/development/python-modules/httpretty/0.nix b/pkgs/development/python-modules/httpretty/0.nix
deleted file mode 100644
index 92ed5c6616e08..0000000000000
--- a/pkgs/development/python-modules/httpretty/0.nix
+++ /dev/null
@@ -1,52 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, tornado
-, requests
-, httplib2
-, sure
-, nose
-, nose-exclude
-, coverage
-, rednose
-, nose-randomly
-, six
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "httpretty";
-  version = "0.9.7";
-
-  # drop this for version > 0.9.7
-  # Flaky tests: https://github.com/gabrielfalcao/HTTPretty/pull/394
-  doCheck = lib.versionAtLeast version "0.9.8";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "66216f26b9d2c52e81808f3e674a6fb65d4bf719721394a1a9be926177e55fbe";
-  };
-
-  propagatedBuildInputs = [ six ];
-
-  checkInputs = [ nose sure coverage mock rednose
-    # Following not declared in setup.py
-    nose-randomly requests tornado httplib2 nose-exclude
-  ];
-
-  __darwinAllowLocalNetworking = true;
-
-  # Those flaky tests are failing intermittently on all platforms
-  NOSE_EXCLUDE = lib.concatStringsSep "," [
-    "tests.functional.test_httplib2.test_callback_response"
-    "tests.functional.test_requests.test_streaming_responses"
-    "tests.functional.test_httplib2.test_callback_response"
-    "tests.functional.test_requests.test_httpretty_should_allow_adding_and_overwritting_by_kwargs_u2"
-  ];
-
-  meta = with lib; {
-    homepage = "https://httpretty.readthedocs.org/";
-    description = "HTTP client request mocking tool";
-    license = licenses.mit;
-  };
-}
diff --git a/pkgs/development/python-modules/httpx-ntlm/default.nix b/pkgs/development/python-modules/httpx-ntlm/default.nix
index b3ac17cf7f07a..40ef250401bf5 100644
--- a/pkgs/development/python-modules/httpx-ntlm/default.nix
+++ b/pkgs/development/python-modules/httpx-ntlm/default.nix
@@ -3,29 +3,35 @@
 , cryptography
 , fetchPypi
 , httpx
-, ntlm-auth
+, pyspnego
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "httpx-ntlm";
-  version = "0.0.10";
+  version = "1.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "httpx_ntlm";
     inherit version;
-    sha256 = "1rar6smz56y8k5qbgrpabpr639nwvf6whdi093hyakf0m3h9cpfz";
+    sha256 = "sha256-pv/OxgcO0JWk2nCZp+bKlOdX7NqV6V5xZRDy5dd13qQ=";
   };
 
   propagatedBuildInputs = [
     cryptography
     httpx
-    ntlm-auth
+    pyspnego
   ];
 
   # https://github.com/ulodciv/httpx-ntlm/issues/5
   doCheck = false;
 
-  pythonImportsCheck = [ "httpx_ntlm" ];
+  pythonImportsCheck = [
+    "httpx_ntlm"
+  ];
 
   meta = with lib; {
     description = "NTLM authentication support for HTTPX";
diff --git a/pkgs/development/python-modules/httpx-socks/default.nix b/pkgs/development/python-modules/httpx-socks/default.nix
index fac9ecba6ce9a..e45e6a85487a5 100644
--- a/pkgs/development/python-modules/httpx-socks/default.nix
+++ b/pkgs/development/python-modules/httpx-socks/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "httpx-socks";
-  version = "0.7.2";
+  version = "0.7.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = "romis2012";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1wigmkhn4ymfr12z9vhdaimjcma9llicwrr29q0cc8xmy23f3445";
+    sha256 = "11wnhx9nfsg5lsnlgh33zngyhc2klichpfrkwajbbyq95fdqj8ri";
   };
 
   propagatedBuildInputs = [
@@ -56,6 +56,12 @@ buildPythonPackage rec {
     "httpx_socks"
   ];
 
+  disabledTests = [
+    # Tests don't work in the sandbox
+    "test_proxy"
+    "test_secure_proxy"
+  ];
+
   meta = with lib; {
     description = "Proxy (HTTP, SOCKS) transports for httpx";
     homepage = "https://github.com/romis2012/httpx-socks";
diff --git a/pkgs/development/python-modules/httpx/default.nix b/pkgs/development/python-modules/httpx/default.nix
index 543308a3fdc12..d479cc1f13ced 100644
--- a/pkgs/development/python-modules/httpx/default.nix
+++ b/pkgs/development/python-modules/httpx/default.nix
@@ -1,11 +1,11 @@
 { lib
+, async_generator
 , buildPythonPackage
 , pythonOlder
 , fetchFromGitHub
 , brotlicffi
 , certifi
 , charset-normalizer
-, h2
 , httpcore
 , rfc3986
 , sniffio
@@ -20,24 +20,27 @@
 
 buildPythonPackage rec {
   pname = "httpx";
-  version = "0.21.1";
+  version = "0.21.3";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "encode";
     repo = pname;
     rev = version;
-    sha256 = "sha256-ayhLP+1hPWAx2ds227CKp5cebVkD5B2Z59L+3dzdINc=";
+    sha256 = "01069b0kj6vnb26xazlz06rj4yncy5nkq76pajvzx0pmpjkniiz9";
   };
 
   propagatedBuildInputs = [
     brotlicffi
     certifi
     charset-normalizer
-    h2
     httpcore
     rfc3986
     sniffio
+  ] ++ lib.optionals (pythonOlder "3.7") [
+    async_generator
   ];
 
   checkInputs = [
@@ -49,13 +52,21 @@ buildPythonPackage rec {
     uvicorn
   ];
 
-  pythonImportsCheck = [ "httpx" ];
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "rfc3986[idna2008]>=1.3,<2" "rfc3986>=1.3"
+  '';
 
   # testsuite wants to find installed packages for testing entrypoint
   preCheck = ''
     export PYTHONPATH=$out/${python.sitePackages}:$PYTHONPATH
   '';
 
+  pytestFlagsArray = [
+    "-W"
+    "ignore::DeprecationWarning"
+  ];
+
   disabledTests = [
     # httpcore.ConnectError: [Errno 101] Network is unreachable
     "test_connect_timeout"
@@ -71,6 +82,10 @@ buildPythonPackage rec {
     "tests/test_main.py"
   ];
 
+  pythonImportsCheck = [
+    "httpx"
+  ];
+
   __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/huey/default.nix b/pkgs/development/python-modules/huey/default.nix
index 28a801de71a66..38c25fa1b0c8d 100644
--- a/pkgs/development/python-modules/huey/default.nix
+++ b/pkgs/development/python-modules/huey/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "huey";
-  version = "2.2.0";
+  version = "2.4.2";
 
   src = fetchFromGitHub {
     owner = "coleifer";
     repo = pname;
     rev = version;
-    sha256 = "1hgic7qrmb1kxvfgf2qqiw39nqyknf17pjvli8jfzvd9mv7cb7hh";
+    sha256 = "00fi04991skq61gjrmig8ry6936pc8zs7p8py8spfipbxf1irkjg";
   };
 
   propagatedBuildInputs = [ redis ];
diff --git a/pkgs/development/python-modules/humanfriendly/default.nix b/pkgs/development/python-modules/humanfriendly/default.nix
index b88fc96337992..77f0c75e01039 100644
--- a/pkgs/development/python-modules/humanfriendly/default.nix
+++ b/pkgs/development/python-modules/humanfriendly/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "humanfriendly";
-  version = "9.2";
+  version = "10.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f7dba53ac7935fd0b4a2fc9a29e316ddd9ea135fb3052d3d0279d10c18ff9c48";
+    sha256 = "6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc";
   };
 
   propagatedBuildInputs = lib.optional (pythonOlder "3.3") monotonic;
diff --git a/pkgs/development/python-modules/hwi/default.nix b/pkgs/development/python-modules/hwi/default.nix
index d4d091c36f8be..332521d070401 100644
--- a/pkgs/development/python-modules/hwi/default.nix
+++ b/pkgs/development/python-modules/hwi/default.nix
@@ -8,11 +8,15 @@
 , mnemonic
 , pyaes
 , typing-extensions
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "hwi";
   version = "2.0.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "bitcoin-core";
@@ -34,18 +38,22 @@ buildPythonPackage rec {
   # make compatible with libusb1 2.x
   postPatch = ''
     substituteInPlace setup.py \
-      --replace 'libusb1>=1.7,<2.0' 'libusb1>=1.7'
+      --replace 'libusb1>=1.7,<2.0' 'libusb1>=1.7' \
+      --replace "'python_requires': '>=3.6,<3.10'," "'python_requires': '>=3.6,<4'," \
+      --replace 'typing-extensions>=3.7,<4.0' 'typing-extensions>=3.7'
   '';
 
   # tests require to clone quite a few firmwares
   doCheck = false;
 
-  pythonImportsCheck = [ "hwilib" ];
+  pythonImportsCheck = [
+    "hwilib"
+  ];
 
-  meta = {
+  meta = with lib; {
     description = "Bitcoin Hardware Wallet Interface";
     homepage = "https://github.com/bitcoin-core/hwi";
-    license = with lib.licenses; [ mit ];
-    maintainers = with lib.maintainers; [ prusnak ];
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ prusnak ];
   };
 }
diff --git a/pkgs/development/python-modules/hydra/default.nix b/pkgs/development/python-modules/hydra/default.nix
index 5fb15be0a3f94..645df973fa6aa 100644
--- a/pkgs/development/python-modules/hydra/default.nix
+++ b/pkgs/development/python-modules/hydra/default.nix
@@ -1,9 +1,18 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, pytestCheckHook
-, importlib-resources, omegaconf, jre_headless, antlr4-python3-runtime }:
+{ lib
+, antlr4-python3-runtime
+, buildPythonPackage
+, fetchFromGitHub
+, importlib-resources
+, jre_headless
+, omegaconf
+, pytestCheckHook
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "hydra";
   version = "1.1.1";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
@@ -14,17 +23,35 @@ buildPythonPackage rec {
     sha256 = "sha256:1svzysrjg47gb6lxx66fzd8wbhpbbsppprpbqssf5aqvhxgay3qk";
   };
 
-  nativeBuildInputs = [ jre_headless ];
-  checkInputs = [ pytestCheckHook ];
-  propagatedBuildInputs = [ omegaconf antlr4-python3-runtime ]
-    ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ];
+  nativeBuildInputs = [
+    jre_headless
+  ];
+
+  propagatedBuildInputs = [
+    antlr4-python3-runtime
+    omegaconf
+  ] ++ lib.optionals (pythonOlder "3.9") [
+    importlib-resources
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  # test environment setup broken under Nix for a few tests:
+  # Test environment setup broken under Nix for a few tests:
   disabledTests = [
     "test_bash_completion_with_dot_in_path"
     "test_install_uninstall"
+    "test_config_search_path"
+  ];
+
+  disabledTestPaths = [
+    "tests/test_hydra.py"
+  ];
+
+  pythonImportsCheck = [
+    "hydra"
   ];
-  disabledTestPaths = [ "tests/test_hydra.py" ];
 
   meta = with lib; {
     description = "A framework for configuring complex applications";
diff --git a/pkgs/development/python-modules/hypercorn/default.nix b/pkgs/development/python-modules/hypercorn/default.nix
index 5f38428353643..dc165f2b2cc48 100644
--- a/pkgs/development/python-modules/hypercorn/default.nix
+++ b/pkgs/development/python-modules/hypercorn/default.nix
@@ -8,6 +8,7 @@
 , h2
 , priority
 , mock
+, poetry-core
 , pytest-asyncio
 , pytest-cov
 , pytest-sugar
@@ -17,16 +18,21 @@
 
 buildPythonPackage rec {
   pname = "Hypercorn";
-  version = "0.11.2";
+  version = "0.13.2";
   disabled = pythonOlder "3.7";
+  format = "pyproject";
 
   src = fetchFromGitLab {
     owner = "pgjones";
     repo = pname;
     rev = version;
-    sha256 = "0v80v6l2xqac5mgrmh2im7y23wpvz4yc2v4h9ryhvl88c2jk9mvh";
+    sha256 = "sha256-fIjw5A6SvFUv8cU7xunVlPYphv+glypY4pzvHNifYLQ=";
   };
 
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
   propagatedBuildInputs = [ wsproto toml h2 priority ]
     ++ lib.optionals (pythonOlder "3.8") [ typing-extensions ];
 
diff --git a/pkgs/development/python-modules/hyperion-py/default.nix b/pkgs/development/python-modules/hyperion-py/default.nix
index c282be29c6559..719efb92d1da7 100644
--- a/pkgs/development/python-modules/hyperion-py/default.nix
+++ b/pkgs/development/python-modules/hyperion-py/default.nix
@@ -36,6 +36,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  pytestFlagsArray = [
+    # pytest-asyncio 0.17.0 compat
+    "--asyncio-mode=auto"
+  ];
+
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace " --timeout=9 --cov=hyperion" ""
diff --git a/pkgs/development/python-modules/hypothesis/2.nix b/pkgs/development/python-modules/hypothesis/2.nix
deleted file mode 100644
index 47bc8860bc54f..0000000000000
--- a/pkgs/development/python-modules/hypothesis/2.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{ lib, buildPythonPackage, fetchFromGitHub
-, isPy3k, attrs, coverage, enum34, pexpect
-, doCheck ? true, pytest, pytest-xdist, flaky, mock
-, sortedcontainers
-}:
-buildPythonPackage rec {
-  # https://hypothesis.readthedocs.org/en/latest/packaging.html
-
-  # Hypothesis has optional dependencies on the following libraries
-  # pytz fake_factory django numpy pytest
-  # If you need these, you can just add them to your environment.
-
-  version = "4.57.1";
-  pname = "hypothesis";
-
-  # Use github tarballs that includes tests
-  src = fetchFromGitHub {
-    owner = "HypothesisWorks";
-    repo = "hypothesis-python";
-    rev = "hypothesis-python-${version}";
-    sha256 = "1qcpcrk6892hzyjsdr581pw6i4fj9035nv89mcjrcrzcmycdlfds";
-  };
-
-  postUnpack = "sourceRoot=$sourceRoot/hypothesis-python";
-
-  propagatedBuildInputs = [
-    attrs
-    coverage
-    sortedcontainers
-  ] ++ lib.optional (!isPy3k) enum34;
-
-  checkInputs = [ pytest pytest-xdist flaky mock pexpect ];
-  inherit doCheck;
-
-  checkPhase = ''
-    rm tox.ini # This file changes how py.test runs and breaks it
-    py.test tests/cover
-  '';
-
-  meta = with lib; {
-    description = "A Python library for property based testing";
-    homepage = "https://github.com/HypothesisWorks/hypothesis";
-    license = licenses.mpl20;
-  };
-}
diff --git a/pkgs/development/python-modules/hypothesis/default.nix b/pkgs/development/python-modules/hypothesis/default.nix
index 4cf8acf708725..89aac153172d7 100644
--- a/pkgs/development/python-modules/hypothesis/default.nix
+++ b/pkgs/development/python-modules/hypothesis/default.nix
@@ -9,6 +9,7 @@
 , pytest-xdist
 , sortedcontainers
 , tzdata
+, pythonOlder
 }:
 buildPythonPackage rec {
   # https://hypothesis.readthedocs.org/en/latest/packaging.html
@@ -18,14 +19,16 @@ buildPythonPackage rec {
   # If you need these, you can just add them to your environment.
 
   pname = "hypothesis";
-  version = "6.27.1";
+  version = "6.35.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
-  # Use github tarballs that includes tests
   src = fetchFromGitHub {
     owner = "HypothesisWorks";
     repo = "hypothesis-python";
     rev = "hypothesis-python-${version}";
-    sha256 = "05kfz041vrd9fy8gl8ch05g806jj4j6l1cnwhqgygagn9z3aq1jx";
+    sha256 = "08wph7q3c08480ma2p7m7mamy0g7g7r5jqpwdyhdga4cfg734527";
   };
 
   postUnpack = "sourceRoot=$sourceRoot/hypothesis-python";
@@ -35,8 +38,13 @@ buildPythonPackage rec {
     sortedcontainers
   ];
 
-  checkInputs = [ pytestCheckHook pytest-xdist pexpect ]
-    ++ lib.optional (pythonAtLeast "3.9") tzdata;
+  checkInputs = [
+    pexpect
+    pytest-xdist
+    pytestCheckHook
+  ] ++ lib.optional (pythonAtLeast "3.9") [
+    tzdata
+  ];
 
   inherit doCheck;
 
@@ -45,10 +53,16 @@ buildPythonPackage rec {
     rm tox.ini
   '';
 
-  pytestFlagsArray = [ "tests/cover" ];
+  pytestFlagsArray = [
+    "tests/cover"
+  ];
+
+  pythonImportsCheck = [
+    "hypothesis"
+  ];
 
   meta = with lib; {
-    description = "A Python library for property based testing";
+    description = "Library for property based testing";
     homepage = "https://github.com/HypothesisWorks/hypothesis";
     license = licenses.mpl20;
     maintainers = with maintainers; [ SuperSandro2000 ];
diff --git a/pkgs/development/python-modules/hypothesmith/default.nix b/pkgs/development/python-modules/hypothesmith/default.nix
index 776ff77fce2f5..3ce0f068fec9f 100644
--- a/pkgs/development/python-modules/hypothesmith/default.nix
+++ b/pkgs/development/python-modules/hypothesmith/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, hypothesis, lark-parser, libcst, black, parso, pytestCheckHook, pytest-cov, pytest-xdist }:
+{ lib, buildPythonPackage, fetchPypi, hypothesis, lark, libcst, black, parso, pytestCheckHook, pytest-cov, pytest-xdist }:
 
 buildPythonPackage rec {
   pname = "hypothesmith";
@@ -9,7 +9,7 @@ buildPythonPackage rec {
     sha256 = "0fb7b3fd03d76eddd4474b0561e1c2662457593a74cc300fd27e5409cd4d7922";
   };
 
-  propagatedBuildInputs = [ hypothesis lark-parser libcst ];
+  propagatedBuildInputs = [ hypothesis lark libcst ];
 
   checkInputs = [ black parso pytestCheckHook pytest-cov pytest-xdist ];
 
diff --git a/pkgs/development/python-modules/i-pi/default.nix b/pkgs/development/python-modules/i-pi/default.nix
index 5f031197978a1..340e3618be1a6 100644
--- a/pkgs/development/python-modules/i-pi/default.nix
+++ b/pkgs/development/python-modules/i-pi/default.nix
@@ -3,7 +3,7 @@
 } :
 
 buildPythonPackage rec {
-  name = "i-pi";
+  pname = "i-pi";
   version = "2.4.0";
 
   src = fetchFromGitHub {
diff --git a/pkgs/development/python-modules/i2csense/default.nix b/pkgs/development/python-modules/i2csense/default.nix
new file mode 100644
index 0000000000000..475e77c218410
--- /dev/null
+++ b/pkgs/development/python-modules/i2csense/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, smbus-cffi
+}:
+
+buildPythonPackage rec {
+  pname = "i2csense";
+  version = "0.0.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "6f9c0a37d971e5b8a60c54982bd580cff84bf94fedc08c097e603a8e5609c33f";
+  };
+
+  propagatedBuildInputs = [
+    smbus-cffi
+  ];
+
+  # no tests implemented
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "i2csense.bme280"
+    "i2csense.bh1750"
+    "i2csense.htu21d"
+  ];
+
+  meta = with lib; {
+    description = "A library to handle i2c sensors with the Raspberry Pi";
+    homepage = "https://github.com/azogue/i2csense";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/ibis-framework/default.nix b/pkgs/development/python-modules/ibis-framework/default.nix
index 1627159e6fbdb..61b944b488369 100644
--- a/pkgs/development/python-modules/ibis-framework/default.nix
+++ b/pkgs/development/python-modules/ibis-framework/default.nix
@@ -1,10 +1,24 @@
-{ lib, buildPythonPackage, fetchPypi, fetchpatch, isPy27, pythonAtLeast
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, pytestCheckHook
+, atpublic
+, cached-property
+, clickhouse-driver
+, click
+, dask
 , graphviz
+, importlib-metadata
 , multipledispatch
 , numpy
 , pandas
+, parsy
+, poetry-core
 , pyarrow
 , pytest
+, pytest-mock
+, pytest-xdist
 , pytz
 , regex
 , requests
@@ -12,54 +26,135 @@
 , tables
 , toolz
 }:
+let
+  # ignore tests for which dependencies are not available
+  backends = [
+    "csv"
+    "dask"
+    "hdf5"
+    "pandas"
+    "parquet"
+    "sqlite"
+  ];
+
+  backendsString = lib.concatStringsSep " " backends;
+
+  ibisTestingData = fetchFromGitHub {
+    owner = "ibis-project";
+    repo = "testing-data";
+    rev = "743201a35c6b968cf55b054f9d28949ea15d1f0a";
+    sha256 = "sha256-xuSE6wHP3aF8lnEE2SuFbTRBu49ecRmc1F3HPcszptI=";
+  };
+in
 
 buildPythonPackage rec {
   pname = "ibis-framework";
-  version = "1.3.0";
-  disabled = isPy27 || pythonAtLeast "3.8";
+  version = "2.1.1";
+  format = "pyproject";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1my94a11jzg1hv6ln8wxklbqrg6z5l2l77vr89aq0829yyxacmv7";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    repo = "ibis";
+    owner = "ibis-project";
+    rev = version;
+    sha256 = "sha256-n3fR6wvcSfIo7760seB+5SxtoYSqQmqkzZ9VlNQF200=";
   };
 
-  patches = [
-    # fix tests for pandas 1.1
-    (fetchpatch {
-      url = "https://github.com/ibis-project/ibis/commit/53ef3cefc4ae90d61f3612310cb36da2bcd11305.diff";
-      sha256 = "1i5yjmqridjqpggiinsjaz5spcxca5bd48vy7a0mj4mm1b5flw2m";
-    })
-  ];
+  nativeBuildInputs = [ poetry-core ];
 
   propagatedBuildInputs = [
+    atpublic
+    cached-property
+    clickhouse-driver
+    dask
+    graphviz
     multipledispatch
     numpy
     pandas
+    parsy
+    pyarrow
     pytz
     regex
-    toolz
-    sqlalchemy
     requests
-    graphviz
+    sqlalchemy
     tables
-    pyarrow
+    toolz
+  ] ++ lib.optionals (pythonOlder "3.8" && lib.versionOlder version "3.0.0") [
+    importlib-metadata
   ];
 
   checkInputs = [
+    pytestCheckHook
+    click
     pytest
+    pytest-mock
+    pytest-xdist
   ];
 
-  # ignore tests which require test dataset, or frameworks not available
-  checkPhase = ''
-    pytest ibis \
-      --ignore=ibis/tests/all \
-      --ignore=ibis/{sql,spark}
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'atpublic = ">=2.3,<3"' 'atpublic = ">=2.3"'
   '';
 
+  preBuild = ''
+    # setup.py exists only for developer convenience and is automatically generated
+    rm setup.py
+  '';
+
+  disabledTests = [
+    # These tests are broken upstream: https://github.com/ibis-project/ibis/issues/3291
+    "test_summary_numeric"
+    "test_summary_non_numeric"
+    "test_batting_most_hits"
+    "test_join_with_window_function"
+    "test_where_long"
+    "test_quantile_groupby"
+    "test_summary_numeric"
+    "test_summary_numeric_group_by"
+    "test_summary_non_numeric"
+    "test_searched_case_column"
+    "test_simple_case_column"
+    "test_summary_non_numeric_group_by"
+  ];
+
+  pytestFlagsArray = [
+    "--numprocesses $NIX_BUILD_CORES"
+    "ibis/tests"
+    "ibis/backends/tests"
+    "ibis/backends/{${lib.concatStringsSep "," backends}}/tests"
+  ];
+
+  preCheck = ''
+    set -euo pipefail
+
+    export IBIS_TEST_DATA_DIRECTORY
+    IBIS_TEST_DATA_DIRECTORY="$(mktemp -d)"
+
+    # copy the test data to a writable directory
+    cp -r ${ibisTestingData}/* "$IBIS_TEST_DATA_DIRECTORY"
+
+    find "$IBIS_TEST_DATA_DIRECTORY" -type d -exec chmod u+rwx {} +
+    find "$IBIS_TEST_DATA_DIRECTORY" -type f -exec chmod u+rw {} +
+
+    # load data
+    for backend in ${backendsString}; do
+      python ci/datamgr.py "$backend" &
+    done
+
+    wait
+  '' + lib.optionalString (lib.versionOlder version "3.0.0") ''
+    export PYTEST_BACKENDS="${backendsString}"
+  '';
+
+  pythonImportsCheck = [
+    "ibis"
+  ] ++ (map (backend: "ibis.backends.${backend}") backends);
+
   meta = with lib; {
     description = "Productivity-centric Python Big Data Framework";
     homepage = "https://github.com/ibis-project/ibis";
     license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc cpcloud ];
   };
 }
diff --git a/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix b/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix
index 1f8b4063dd796..64ecd3c496bb5 100644
--- a/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix
+++ b/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "ibm-cloud-sdk-core";
-  version = "3.13.2";
+  version = "3.14.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9c615b3a6e9d9dc1c69d8f38742b156e12408521fa180a66558bbb7b850bbbc2";
+    sha256 = "695c4125436f4f8354a67bc85af9ac306b66911c75d19ade25072dd436b55c4e";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/ibm-watson/default.nix b/pkgs/development/python-modules/ibm-watson/default.nix
index a0c12758069b5..e8ecdfff32bab 100644
--- a/pkgs/development/python-modules/ibm-watson/default.nix
+++ b/pkgs/development/python-modules/ibm-watson/default.nix
@@ -10,19 +10,30 @@
 , python-dateutil
 , websocket-client
 , ibm-cloud-sdk-core
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "ibm-watson";
-  version = "5.3.0";
+  version = "5.3.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "watson-developer-cloud";
     repo = "python-sdk";
     rev = "v${version}";
-    sha256 = "0g63h7rf0710bxcsr115857bvz69sl2g5d13k5a7qi7hjh33bxrk";
+    sha256 = "1x6r8j0xyi81jb0q4pzr6l7aglykrwqz8nw45clv79v33i2sgdcs";
   };
 
+  propagatedBuildInputs = [
+    requests
+    python-dateutil
+    websocket-client
+    ibm-cloud-sdk-core
+  ];
+
   checkInputs = [
     responses
     pytestCheckHook
@@ -31,18 +42,15 @@ buildPythonPackage rec {
     tox
   ];
 
-  propagatedBuildInputs = [
-    requests
-    python-dateutil
-    websocket-client
-    ibm-cloud-sdk-core
-  ];
-
   postPatch = ''
     substituteInPlace setup.py \
       --replace websocket-client==1.1.0 websocket-client>=1.1.0
   '';
 
+  pythonImportsCheck = [
+    "ibm_watson"
+  ];
+
   meta = with lib; {
     description = "Client library to use the IBM Watson Services";
     homepage = "https://github.com/watson-developer-cloud/python-sdk";
diff --git a/pkgs/development/python-modules/icecream/default.nix b/pkgs/development/python-modules/icecream/default.nix
index 28fed3bcb7887..81fd7c8a693a7 100644
--- a/pkgs/development/python-modules/icecream/default.nix
+++ b/pkgs/development/python-modules/icecream/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "icecream";
-  version = "2.1.1";
+  version = "2.1.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "47e00e3f4e8477996e7dc420b6fa8ba53f8ced17de65320fedb5b15997b76589";
+    sha256 = "sha256-CTALLRxnhxJBDL1HyVGY6xtYD2bzEaVUzNa551js4O4=";
   };
 
   propagatedBuildInputs = [ asttokens colorama executing pygments ];
diff --git a/pkgs/development/python-modules/icmplib/default.nix b/pkgs/development/python-modules/icmplib/default.nix
index 82033321f8823..aae5785fccfb5 100644
--- a/pkgs/development/python-modules/icmplib/default.nix
+++ b/pkgs/development/python-modules/icmplib/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "icmplib";
-  version = "3.0.2";
+  version = "3.0.3";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "ValentinBELYN";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-4aq89Nw55OL7JQx3Ra6Ppp5yKLdS6Lc0YA8UJxVhz84=";
+    sha256 = "sha256-EQyu7lV8F/U8cZklYYIMk9ut1FTcoBvGc8Ggx6JerDk=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/ics/default.nix b/pkgs/development/python-modules/ics/default.nix
index ed87f3678b15a..34a36642976d6 100644
--- a/pkgs/development/python-modules/ics/default.nix
+++ b/pkgs/development/python-modules/ics/default.nix
@@ -40,6 +40,8 @@ buildPythonPackage rec {
   disabledTests = [
     # Failure seems to be related to arrow > 1.0
     "test_event"
+    # Broke with TatSu 5.7:
+    "test_many_lines"
   ];
 
   pythonImportsCheck = [ "ics" ];
diff --git a/pkgs/development/python-modules/idasen/default.nix b/pkgs/development/python-modules/idasen/default.nix
index 9031b7022d8e9..b0e9b7d57065a 100644
--- a/pkgs/development/python-modules/idasen/default.nix
+++ b/pkgs/development/python-modules/idasen/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "idasen";
-  version = "0.8.1";
+  version = "0.8.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "newAM";
     repo = "idasen";
     rev = "v${version}";
-    sha256 = "122bhbc3zqqm4x1x7a7mydvxxjrdssnqyxyqg0lbgxgn5rm8wbdd";
+    sha256 = "sha256-s8CnYMUVl2VbGbVxICSaKH5DxTA+NP/zPX1z7vfMqi4=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/identify/default.nix b/pkgs/development/python-modules/identify/default.nix
index 194dce3f88df9..949ae27273c66 100644
--- a/pkgs/development/python-modules/identify/default.nix
+++ b/pkgs/development/python-modules/identify/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "identify";
-  version = "2.4.1";
+  version = "2.4.10";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "pre-commit";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-+kfIpmJ6Gnb33MZ7NZrE8oVSBbZLuRfIvfCbstxJFX0=";
+    sha256 = "sha256-a12a4PvACkB+zpJts6syDqMPafjhZp1UWnob9UiKMbM=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/idna/2.nix b/pkgs/development/python-modules/idna/2.nix
deleted file mode 100644
index 9a1c1dc271f19..0000000000000
--- a/pkgs/development/python-modules/idna/2.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-}:
-
-buildPythonPackage rec {
-  pname = "idna";
-  version = "2.10";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6";
-  };
-
-  checkInputs = [ pytestCheckHook ];
-
-  meta = {
-    homepage = "https://github.com/kjd/idna/";
-    description = "Internationalized Domain Names in Applications (IDNA)";
-    license = lib.licenses.bsd3;
-  };
-}
diff --git a/pkgs/development/python-modules/ignite/default.nix b/pkgs/development/python-modules/ignite/default.nix
index c027eba987422..897b5975c90cd 100644
--- a/pkgs/development/python-modules/ignite/default.nix
+++ b/pkgs/development/python-modules/ignite/default.nix
@@ -14,13 +14,13 @@
 
 buildPythonPackage rec {
   pname = "ignite";
-  version = "0.4.7";
+  version = "0.4.8";
 
   src = fetchFromGitHub {
     owner = "pytorch";
     repo = pname;
     rev = "v${version}";
-    sha256 = "11gvw0yqb3y5ddifs5f38bgslvfmw1bmd9rga1ynlrmmgmhxym6h";
+    sha256 = "sha256-S4wL1RyQ6aDW16wbSl+86VhSJ2S9oanYhNtPQdBtdrA=";
   };
 
   checkInputs = [ pytestCheckHook matplotlib mock pytest-xdist torchvision ];
diff --git a/pkgs/development/python-modules/igraph/default.nix b/pkgs/development/python-modules/igraph/default.nix
index f5b21d58866a4..f7409dc082361 100644
--- a/pkgs/development/python-modules/igraph/default.nix
+++ b/pkgs/development/python-modules/igraph/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "igraph";
-  version = "0.9.8";
+  version = "0.9.9";
 
   disabled = pythonOlder "3.6";
 
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "igraph";
     repo = "python-igraph";
     rev = version;
-    sha256 = "sha256-RtvT5/LZ/xP68yBB7DDKJGeNCiX4HyPTCuk+Ijd2nFs=";
+    hash = "sha256-jHK8whCg+WitRSL5LmkqfdqiAdi9vZPicygzKThnW2U=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/ihatemoney/default.nix b/pkgs/development/python-modules/ihatemoney/default.nix
index 2c535ea79b576..4fe56c6161464 100644
--- a/pkgs/development/python-modules/ihatemoney/default.nix
+++ b/pkgs/development/python-modules/ihatemoney/default.nix
@@ -39,25 +39,9 @@
 , psycopg2 # optional, for postgresql support
 , flask_testing
 , pytestCheckHook
+, fetchpatch
 }:
 
-# 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
-  # sqlalchemy-continuum requires sqlalchemy < 1.4
-  pinned_sqlalchemy = sqlalchemy.overridePythonAttrs (
-    old: rec {
-      pname = "SQLAlchemy";
-      version = "1.3.24";
-
-      src = fetchPypi {
-        inherit pname version;
-        sha256 = "06bmxzssc66cblk1hamskyv5q3xf1nh1py3vi6dka4lkpxy7gfzb";
-      };
-    }
-  );
-in
-
 buildPythonPackage rec {
   pname = "ihatemoney";
   version = "5.1.1";
@@ -81,16 +65,7 @@ buildPythonPackage rec {
     flask-babel
     flask-cors
     flask_mail
-    (
-      flask_migrate.override {
-        flask_sqlalchemy = flask_sqlalchemy.override {
-          sqlalchemy = pinned_sqlalchemy;
-        };
-        alembic = alembic.override {
-          sqlalchemy = pinned_sqlalchemy;
-        };
-      }
-    )
+    flask_migrate
     flask-restful
     flask-talisman
     flask_wtf
@@ -103,40 +78,27 @@ buildPythonPackage rec {
     pytz
     requests
     six
-    (
-      (
-        sqlalchemy-continuum.override {
-          sqlalchemy = pinned_sqlalchemy;
-          sqlalchemy-utils = sqlalchemy-utils.override {
-            sqlalchemy = pinned_sqlalchemy;
-          };
-          sqlalchemy-i18n = sqlalchemy-i18n.override {
-            sqlalchemy = pinned_sqlalchemy;
-            sqlalchemy-utils = sqlalchemy-utils.override {
-              sqlalchemy = pinned_sqlalchemy;
-            };
-          };
-          flask_sqlalchemy = flask_sqlalchemy.override {
-            sqlalchemy = pinned_sqlalchemy;
-          };
-        }
-      ).overridePythonAttrs (
-        old: {
-          doCheck = false;
-        }
-      )
-    )
+    sqlalchemy-continuum
     werkzeug
     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
+  patches = [
+    # fix build with wtforms 3. remove with next release
+    (fetchpatch {
+      url = "https://github.com/spiral-project/ihatemoney/commit/40ce32d9fa58a60d26a4d0df547b8deb709c330d.patch";
+      sha256 = "sha256-2ewOu21qhq/AOZaE9qrF5J6HH0h6ohFgjDb+BYjJnuQ=";
+      excludes = [ "setup.cfg" ];
+    })
+  ];
+
   postPatch = ''
-    substituteInPlace setup.cfg --replace "Flask-WTF>=0.14.3,<1" "Flask-WTF>=0.14.3,<2"
+    substituteInPlace setup.cfg \
+      --replace "Flask-WTF>=0.14.3,<1" "Flask-WTF>=0.14.3,<2" \
+      --replace "SQLAlchemy>=1.3.0,<1.4" "SQLAlchemy>=1.3.0,<1.5" \
+      --replace "WTForms>=2.3.1,<2.4" "WTForms"
   '';
 
   checkInputs = [
@@ -144,6 +106,8 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  pythonImportChecks = [ "ihatemoney" ];
+
   disabledTests = [
     "test_notifications"  # requires running service.
     "test_invite"         # requires running service.
diff --git a/pkgs/development/python-modules/ilua/default.nix b/pkgs/development/python-modules/ilua/default.nix
new file mode 100644
index 0000000000000..5b5c129c27499
--- /dev/null
+++ b/pkgs/development/python-modules/ilua/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, jupyter_console
+, jupyter_core
+, pygments
+, termcolor
+, txzmq
+}:
+
+buildPythonPackage rec {
+  pname = "ilua";
+  version = "0.2.1";
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-YxV6xC7GS5NXyMPRZN9YIJxamgP2etwrZUAZjk5PjtU=";
+  };
+
+  propagatedBuildInputs = [
+    jupyter_console
+    jupyter_core
+    pygments
+    termcolor
+    txzmq
+  ];
+
+  # No tests found
+  doCheck = false;
+
+  pythonImportsCheck = [ "ilua" ];
+
+  meta = with lib; {
+    description = "Portable Lua kernel for Jupyter";
+    homepage = "https://github.com/guysv/ilua";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ wolfangaukang ];
+  };
+}
diff --git a/pkgs/development/python-modules/imageio-ffmpeg/default.nix b/pkgs/development/python-modules/imageio-ffmpeg/default.nix
index a249b2dbfe19d..6998ff330afc5 100644
--- a/pkgs/development/python-modules/imageio-ffmpeg/default.nix
+++ b/pkgs/development/python-modules/imageio-ffmpeg/default.nix
@@ -3,7 +3,7 @@
 , isPy3k
 , fetchPypi
 , substituteAll
-, ffmpeg
+, ffmpeg_4
 , python
 }:
 
@@ -21,7 +21,7 @@ buildPythonPackage rec {
   patches = [
     (substituteAll {
       src = ./ffmpeg-path.patch;
-      ffmpeg = "${ffmpeg}/bin/ffmpeg";
+      ffmpeg = "${ffmpeg_4}/bin/ffmpeg";
     })
   ];
 
@@ -30,7 +30,7 @@ buildPythonPackage rec {
 
     ${python.interpreter} << EOF
     from imageio_ffmpeg import get_ffmpeg_version
-    assert get_ffmpeg_version() == '${ffmpeg.version}'
+    assert get_ffmpeg_version() == '${ffmpeg_4.version}'
     EOF
 
     runHook postCheck
diff --git a/pkgs/development/python-modules/imageio/default.nix b/pkgs/development/python-modules/imageio/default.nix
index f27c9fded9b29..98495932fdaf1 100644
--- a/pkgs/development/python-modules/imageio/default.nix
+++ b/pkgs/development/python-modules/imageio/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , isPy27
 , fetchPypi
+, fetchpatch
 , imageio-ffmpeg
 , numpy
 , pillow
@@ -12,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "imageio";
-  version = "2.12.0";
+  version = "2.14.1";
   disabled = isPy27;
 
   src = fetchPypi {
-    sha256 = "c416dd68328ace8536ff333cbb8927954036be56e201fed416e53e8f95e08a6c";
+    sha256 = "sha256-cJwY+ACYHkKGq+S9hrbJtbtuKFtrkztboJYu+OeZQFg=";
     inherit pname version;
   };
 
diff --git a/pkgs/development/python-modules/imbalanced-learn/0.4.nix b/pkgs/development/python-modules/imbalanced-learn/0.4.nix
deleted file mode 100644
index 6709092ca955d..0000000000000
--- a/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/pkgs/development/python-modules/imbalanced-learn/default.nix b/pkgs/development/python-modules/imbalanced-learn/default.nix
index bb29504d63e68..b1e5e91975228 100644
--- a/pkgs/development/python-modules/imbalanced-learn/default.nix
+++ b/pkgs/development/python-modules/imbalanced-learn/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "imbalanced-learn";
-  version = "0.8.1";
+  version = "0.9.0";
   disabled = isPy27; # scikit-learn>=0.21 doesn't work on python2
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "eaf576b1ba3523a0facf3aaa483ca17e326301e53e7678c54d73b7e0250edd43";
+    sha256 = "836a4c137cc3c10310d4f6cd5ec34600ff488d7f8c243a997c3f9b551c91d0b2";
   };
 
   propagatedBuildInputs = [ scikit-learn ];
diff --git a/pkgs/development/python-modules/img2pdf/default.nix b/pkgs/development/python-modules/img2pdf/default.nix
index ee11e1280c159..58e3db524a82a 100644
--- a/pkgs/development/python-modules/img2pdf/default.nix
+++ b/pkgs/development/python-modules/img2pdf/default.nix
@@ -1,4 +1,21 @@
-{ lib, pillow, fetchPypi, buildPythonPackage, isPy27, pikepdf }:
+{ lib
+, buildPythonPackage
+, isPy27
+, fetchPypi
+, fetchpatch
+, pikepdf
+, pillow
+, stdenv
+, exiftool
+, ghostscript
+, imagemagick
+, mupdf
+, netpbm
+, numpy
+, poppler_utils
+, pytestCheckHook
+, scipy
+}:
 
 buildPythonPackage rec {
   pname = "img2pdf";
@@ -10,19 +27,49 @@ buildPythonPackage rec {
     sha256 = "sha256-jlHFBD76lddRSBtRYHGgBvh8KkBZlhqaxD7COJFd4J8=";
   };
 
+  patches = [
+    # Disable tests broken by Pillow 9.0.0
+    # https://gitlab.mister-muffin.de/josch/img2pdf/issues/130#issuecomment-586
+    (fetchpatch {
+      url = "https://salsa.debian.org/debian/img2pdf/-/raw/f77fefc81e7c4b235c47ae6777d222d391c59536/debian/patches/pillow9";
+      sha256 = "sha256-8giZCuv5PzSbrBQqslNqiLOhgxbg3LsdBVwt+DWnvh4=";
+    })
+  ];
+
   propagatedBuildInputs = [
     pikepdf
     pillow
   ];
 
-  # no tests exectuted
-  doCheck = false;
+  # https://gitlab.mister-muffin.de/josch/img2pdf/issues/128
+  doCheck = !stdenv.isAarch64;
+
+  checkInputs = [
+    exiftool
+    ghostscript
+    imagemagick
+    mupdf
+    netpbm
+    numpy
+    poppler_utils
+    pytestCheckHook
+    scipy
+  ];
+
+  preCheck = ''
+    export img2pdfprog="$out/bin/img2pdf"
+  '';
+
+  disabledTests = [
+    "test_tiff_rgb"
+  ];
+
+  pythonImportsCheck = [ "img2pdf" ];
 
   meta = with lib; {
     description = "Convert images to PDF via direct JPEG inclusion";
     homepage = "https://gitlab.mister-muffin.de/josch/img2pdf";
     license = licenses.lgpl2;
-    platforms = platforms.unix;
-    maintainers = [ maintainers.veprbl ];
+    maintainers = with maintainers; [ veprbl dotlambda ];
   };
 }
diff --git a/pkgs/development/python-modules/iminuit/default.nix b/pkgs/development/python-modules/iminuit/default.nix
index 3faf61d169bed..1b99cd05f03be 100644
--- a/pkgs/development/python-modules/iminuit/default.nix
+++ b/pkgs/development/python-modules/iminuit/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "iminuit";
-  version = "2.8.4";
+  version = "2.9.0";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4b09189f3094896cfc68596adc95b7f1d92772e1de1424e5dc4dd81def56e8b0";
+    sha256 = "656410ceffead79a52d3d727fdcd2bac78d7774239bef0efc3b7a86bae000ff3";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/development/python-modules/importlab/default.nix b/pkgs/development/python-modules/importlab/default.nix
new file mode 100644
index 0000000000000..2ea3f01d2ccb9
--- /dev/null
+++ b/pkgs/development/python-modules/importlab/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, networkx
+, pytestCheckHook
+}:
+
+buildPythonPackage {
+  pname = "importlab";
+  version = "0.7";
+
+  src = fetchFromGitHub {
+    owner = "google";
+    repo = "importlab";
+    rev = "676d17cd41ac68de6ebb48fb71780ad6110c4ae3";
+    sha256 = "sha256-O8y1c65NQ+19BnGnUnWrA0jYUqF+726CFAcWzHFOiHE=";
+  };
+
+  propagatedBuildInputs = [ networkx ];
+
+  checkInputs = [ pytestCheckHook ];
+
+  disabledTestPaths = [ "tests/test_parsepy.py" ];
+
+  pythonImportsCheck = [ "importlab" ];
+
+  meta = with lib; {
+    description = "A library that automatically infers dependencies for Python files";
+    homepage = "https://github.com/google/importlab";
+    license = licenses.mit;
+    maintainers = with maintainers; [ sei40kr ];
+  };
+}
diff --git a/pkgs/development/python-modules/importlib-metadata/2.nix b/pkgs/development/python-modules/importlib-metadata/2.nix
deleted file mode 100644
index f50b2c07c1dab..0000000000000
--- a/pkgs/development/python-modules/importlib-metadata/2.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, zipp
-, pathlib2
-, contextlib2
-, configparser
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "importlib-metadata";
-  version = "2.1.1";
-
-  src = fetchPypi {
-    pname = "importlib_metadata";
-    inherit version;
-    sha256 = "1pdmsmwagimn0lsl4x7sg3skcr2fvzqpv2pjd1rh7yrm5gzrxpmq";
-  };
-
-  nativeBuildInputs = [ setuptools-scm ];
-
-  propagatedBuildInputs = [ zipp ]
-    ++ lib.optionals (!isPy3k) [ pathlib2 contextlib2 configparser ];
-
-  # Cyclic dependencies
-  doCheck = false;
-
-  pythonImportsCheck = [ "importlib_metadata" ];
-
-  meta = with lib; {
-    description = "Read metadata from Python packages";
-    homepage = "https://importlib-metadata.readthedocs.io/";
-    license = licenses.asl20;
-  };
-}
diff --git a/pkgs/development/python-modules/importlib-metadata/default.nix b/pkgs/development/python-modules/importlib-metadata/default.nix
index e13f73616775a..13b26e337ac25 100644
--- a/pkgs/development/python-modules/importlib-metadata/default.nix
+++ b/pkgs/development/python-modules/importlib-metadata/default.nix
@@ -10,15 +10,15 @@
 
 buildPythonPackage rec {
   pname = "importlib-metadata";
-  version = "4.8.2";
+  version = "4.10.1";
   format = "setuptools";
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "importlib_metadata";
     inherit version;
-    sha256 = "sha256-db3sFMOX9ShyTBv9lwnWYLM6TS53OHozWPILhIu15fs=";
+    hash = "sha256-lR8NiltyYOnbXkHUKShbX0UekoR58Z2AgYh4Un026V4=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/importlib-resources/2.nix b/pkgs/development/python-modules/importlib-resources/2.nix
deleted file mode 100644
index 1034c3111306b..0000000000000
--- a/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/pkgs/development/python-modules/importlib-resources/default.nix b/pkgs/development/python-modules/importlib-resources/default.nix
index fda4fb00bfafe..b28932a74f057 100644
--- a/pkgs/development/python-modules/importlib-resources/default.nix
+++ b/pkgs/development/python-modules/importlib-resources/default.nix
@@ -1,10 +1,10 @@
 { lib
+, isPy27
 , buildPythonPackage
 , fetchPypi
 , setuptools-scm
 , importlib-metadata
 , typing ? null
-, singledispatch ? null
 , pythonOlder
 , python
 }:
@@ -12,6 +12,7 @@
 buildPythonPackage rec {
   pname = "importlib-resources";
   version = "5.4.0";
+  disabled = isPy27;
 
   src = fetchPypi {
     pname = "importlib_resources";
@@ -25,8 +26,6 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     importlib-metadata
-  ] ++ lib.optional (pythonOlder "3.4") [
-    singledispatch
   ] ++ lib.optional (pythonOlder "3.5") [
     typing
   ];
diff --git a/pkgs/development/python-modules/inflect/default.nix b/pkgs/development/python-modules/inflect/default.nix
index ca454d432317d..a6c549b61f1b7 100644
--- a/pkgs/development/python-modules/inflect/default.nix
+++ b/pkgs/development/python-modules/inflect/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "inflect";
-  version = "5.3.0";
+  version = "5.4.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "41a23f6788962e9775e40e2ecfb1d6455d02de315022afeedd3c5dc070019d73";
+    sha256 = "sha256-tY1YxOc//KmyXgdcHE/Jyt7LtcmdfNnzze3ac+zoPBw=";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/influxdb-client/default.nix b/pkgs/development/python-modules/influxdb-client/default.nix
index 9e3c7be8f4a17..9eb9bd48d47ea 100644
--- a/pkgs/development/python-modules/influxdb-client/default.nix
+++ b/pkgs/development/python-modules/influxdb-client/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "influxdb-client";
-  version = "1.24.0";
+  version = "1.25.0";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "influxdata";
     repo = "influxdb-client-python";
     rev = "v${version}";
-    sha256 = "0w0pw87fnxms88f3dadyhxdgms4rzvcww18h6l87wnqc6wxa6paw";
+    sha256 = "0anziqlczzc9qmz1mrk8yapn0pc18wz2pknyghyj5qpym3w2azas";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/influxdb/default.nix b/pkgs/development/python-modules/influxdb/default.nix
index 8ecd46e3b96bf..ec81f631ac30b 100644
--- a/pkgs/development/python-modules/influxdb/default.nix
+++ b/pkgs/development/python-modules/influxdb/default.nix
@@ -1,7 +1,7 @@
 { lib
 , buildPythonPackage
 , python-dateutil
-, fetchFromGitHub
+, fetchPypi
 , fetchpatch
 , mock
 , msgpack
@@ -16,13 +16,11 @@
 
 buildPythonPackage rec {
   pname = "influxdb";
-  version = "5.3.0";
+  version = "5.3.1";
 
-  src = fetchFromGitHub {
-    owner = "influxdata";
-    repo = "influxdb-python";
-    rev = "v${version}";
-    sha256 = "1jfkf53jcf8lcq98qc0bw5d1d0yp3558mh8l2dqc9jlsm0smigjs";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0ymjv322mv6y424fmpd70f87152w55mbwwj6i7p3sjzf0ixmxy26";
   };
 
   propagatedBuildInputs = [
@@ -41,14 +39,6 @@ buildPythonPackage rec {
     pandas
   ];
 
-  patches = [
-    (fetchpatch {
-      # Relaxes msgpack pinning
-      url = "https://github.com/influxdata/influxdb-python/commit/cc41e290f690c4eb67f75c98fa9f027bdb6eb16b.patch";
-      sha256 = "1fb9qrq1kp24pixjwvzhdy67z3h0wnj92aj0jw0a25fd0rdxdvg4";
-    })
-  ];
-
   disabledTests = [
     # Tests cause FutureWarning due to use of 'record' instead of 'records' in pandas.
     #   https://github.com/influxdata/influxdb-python/pull/845
diff --git a/pkgs/development/python-modules/inquirer/default.nix b/pkgs/development/python-modules/inquirer/default.nix
index 84e381f0b8c88..dd2db106aceab 100644
--- a/pkgs/development/python-modules/inquirer/default.nix
+++ b/pkgs/development/python-modules/inquirer/default.nix
@@ -1,30 +1,48 @@
-{ lib, buildPythonPackage, fetchFromGitHub, python-editor, readchar, blessed, pytest, pytest-cov, pexpect, pytest-mock }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+
+# native
+, poetry-core
+
+# propagated
+, blessed
+, python-editor
+, readchar
+
+# tests
+, pytest-mock
+, pytestCheckHook
+, pexpect
+}:
 
 buildPythonPackage rec {
   pname = "inquirer";
-  version = "2.7.0";
+  version = "2.9.1";
+  format = "pyproject";
 
-  # PyPi archive currently broken: https://github.com/magmax/python-inquirer/issues/106
   src = fetchFromGitHub rec {
     owner = "magmax";
     repo = "python-inquirer";
-    rev = version;
-    sha256 = "152l5qjgkag8zkr69ax2i5s8xcac1qvyngisrplbnbzwbpf77d0d";
+    rev = "v${version}";
+    sha256 = "sha256:0vdly2k4i7bfcqc8zh2miv9dbpmqvayxk72qn9d4hr7z15wph233";
   };
 
-  propagatedBuildInputs = [ blessed python-editor readchar ];
-
-  postPatch = ''
-   substituteInPlace requirements.txt \
-     --replace "blessed==1.17.6" "blessed~=1.17" \
-     --replace "readchar==2.0.1" "readchar>=2.0.0"
-  '';
+  nativeBuildInputs = [
+    poetry-core
+  ];
 
-  checkInputs = [ pytest pytest-cov pexpect pytest-mock ];
+  propagatedBuildInputs = [
+    blessed
+    python-editor
+    readchar
+  ];
 
-  checkPhase = ''
-    pytest --cov-report=term-missing  --cov inquirer --no-cov-on-fail tests/unit tests/integration
-  '';
+  checkInputs = [
+    pexpect
+    pytest-mock
+    pytestCheckHook
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/magmax/python-inquirer";
diff --git a/pkgs/development/python-modules/installer/default.nix b/pkgs/development/python-modules/installer/default.nix
new file mode 100644
index 0000000000000..a19f27a0a7534
--- /dev/null
+++ b/pkgs/development/python-modules/installer/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, pytestCheckHook
+, flit-core
+, mock
+}:
+
+buildPythonPackage rec {
+  pname = "installer";
+  version = "0.3.0";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "pradyunsg";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-AxAQgDhRFkb0HB7ttDb+pHuHzwnNDX6UOm9rswzIwmI=";
+  };
+
+  nativeBuildInputs = [ flit-core ];
+
+  checkInputs = [
+    pytestCheckHook
+    mock
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/pradyunsg/installer";
+    description = "A low-level library for installing a Python package from a wheel distribution.";
+    license = licenses.mit;
+    maintainers = with maintainers; [ cpcloud fridh ];
+  };
+}
diff --git a/pkgs/development/python-modules/intellifire4py/default.nix b/pkgs/development/python-modules/intellifire4py/default.nix
new file mode 100644
index 0000000000000..2297f88092636
--- /dev/null
+++ b/pkgs/development/python-modules/intellifire4py/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, pydantic
+, pytestCheckHook
+, pythonOlder
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "intellifire4py";
+  version = "0.9.8";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "jeeftor";
+    repo = pname;
+    rev = version;
+    hash = "sha256-xuFCikmoQX95h0rzkO03I0IpUzLB2rbPo9IoxmstlmE=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    pydantic
+    requests
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Test file is missing
+    "test_json_files"
+  ];
+
+  pythonImportsCheck = [
+    "intellifire4py"
+  ];
+
+  meta = with lib; {
+    description = "Module to read Intellifire fireplace status data";
+    homepage = "https://github.com/jeeftor/intellifire4py";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/intensity-normalization/default.nix b/pkgs/development/python-modules/intensity-normalization/default.nix
index 806153288216a..48260398f4907 100644
--- a/pkgs/development/python-modules/intensity-normalization/default.nix
+++ b/pkgs/development/python-modules/intensity-normalization/default.nix
@@ -15,25 +15,16 @@
 
 buildPythonPackage rec {
   pname = "intensity-normalization";
-  version = "2.1.1";
+  version = "2.1.4";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-aGuGdUqaUgoD95PLFch+lF9o7eeKwK0bNWTF1beslIY=";
+    sha256 = "e7b46039311bcbba40224d85eb07eefe1488bd8a6faa893a180e15e65c48b7f5";
   };
 
-  postPatch = ''
-    substituteInPlace setup.cfg --replace "pytest-runner" ""
-  '';
-
-  checkInputs = [ pytestCheckHook ];
-  pythonImportsCheck = [
-    "intensity_normalization"
-    "intensity_normalization.normalize"
-    "intensity_normalization.plot"
-    "intensity_normalization.util"
-  ];
   propagatedBuildInputs = [
     matplotlib
     nibabel
@@ -45,6 +36,22 @@ buildPythonPackage rec {
     statsmodels
   ];
 
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "pytest-runner" ""
+  '';
+
+  pythonImportsCheck = [
+    "intensity_normalization"
+    "intensity_normalization.normalize"
+    "intensity_normalization.plot"
+    "intensity_normalization.util"
+  ];
+
   meta = with lib; {
     homepage = "https://github.com/jcreinhold/intensity-normalization";
     description = "MRI intensity normalization tools";
diff --git a/pkgs/development/python-modules/internetarchive/default.nix b/pkgs/development/python-modules/internetarchive/default.nix
index b878929060725..d197ba9691bfd 100644
--- a/pkgs/development/python-modules/internetarchive/default.nix
+++ b/pkgs/development/python-modules/internetarchive/default.nix
@@ -20,11 +20,11 @@
 
 buildPythonPackage rec {
   pname = "internetarchive";
-  version = "2.2.0";
+  version = "2.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ebd11ecd038c71e75a3aef8d87750b46480169ecaefb23074c4ae48440bf2836";
+    sha256 = "fa89dc4be3e0a0aee24810a4a754e24adfd07edf710c645b4f642422c6078b8d";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/ipaddr/default.nix b/pkgs/development/python-modules/ipaddr/default.nix
deleted file mode 100644
index b29ee91792870..0000000000000
--- a/pkgs/development/python-modules/ipaddr/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "ipaddr";
-  version = "2.2.0";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1ml8r8z3f0mnn381qs1snbffa920i9ycp6mm2am1d3aqczkdz4j0";
-  };
-
-  meta = with lib; {
-    description = "Google's IP address manipulation library";
-    homepage = "https://github.com/google/ipaddr-py";
-    license = licenses.asl20;
-  };
-
-}
diff --git a/pkgs/development/python-modules/ipwhl/default.nix b/pkgs/development/python-modules/ipwhl/default.nix
new file mode 100644
index 0000000000000..1b8b7f002ae3f
--- /dev/null
+++ b/pkgs/development/python-modules/ipwhl/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, pythonOlder, fetchFromSourcehut
+, ipfs, packaging, tomli }:
+
+buildPythonPackage rec {
+  pname = "ipwhl";
+  version = "1.0.0";
+  format = "flit";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromSourcehut {
+    owner = "~cnx";
+    repo = "ipwhl-utils";
+    rev = version;
+    sha256 = "sha256-KstwdmHpn4ypBNpX56NeStqdzy5RElMTW1oR2hCtJ7c=";
+  };
+
+  buildInputs = [ ipfs ];
+  propagatedBuildInputs = [ packaging tomli ];
+  doCheck = false; # there's no test
+  pythonImportsCheck = [ "ipwhl" ];
+
+  meta = with lib; {
+    description = "Utilities for the InterPlanetary Wheels";
+    homepage = "https://git.sr.ht/~cnx/ipwhl-utils";
+    license = licenses.agpl3Plus;
+    maintainers = [ maintainers.McSinyx ];
+  };
+}
diff --git a/pkgs/development/python-modules/ipykernel/4.nix b/pkgs/development/python-modules/ipykernel/4.nix
deleted file mode 100644
index 7530b55524628..0000000000000
--- a/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/pkgs/development/python-modules/ipykernel/default.nix b/pkgs/development/python-modules/ipykernel/default.nix
index f18750af1ffb3..0827e611679e8 100644
--- a/pkgs/development/python-modules/ipykernel/default.nix
+++ b/pkgs/development/python-modules/ipykernel/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "ipykernel";
-  version = "6.5.1";
+  version = "6.7.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "dd27172bccbbcfef952991e49372e4c6fd1c14eed0df05ebd5b4335cb27a81a2";
+    sha256 = "d82b904fdc2fd8c7b1fbe0fa481c68a11b4cd4c8ef07e6517da1f10cc3114d24";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/ipympl/default.nix b/pkgs/development/python-modules/ipympl/default.nix
index f04b876f04871..3644442f7adaa 100644
--- a/pkgs/development/python-modules/ipympl/default.nix
+++ b/pkgs/development/python-modules/ipympl/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "ipympl";
-  version = "0.8.4";
+  version = "0.8.7";
   format = "wheel";
 
   src = fetchPypi {
     inherit pname version format;
-    sha256 = "2f955c1c04d8e6df883d57866450657040bfc568edeabcace801cbdbaf4d0295";
+    sha256 = "11c3d01f0555f855c51a960964e3ab4dff38e6ccd1a4695205fe250341a9eb99";
   };
 
 
diff --git a/pkgs/development/python-modules/ipyparallel/default.nix b/pkgs/development/python-modules/ipyparallel/default.nix
index 4c64fca34b768..51b76fc532bba 100644
--- a/pkgs/development/python-modules/ipyparallel/default.nix
+++ b/pkgs/development/python-modules/ipyparallel/default.nix
@@ -16,11 +16,11 @@
 
 buildPythonPackage rec {
   pname = "ipyparallel";
-  version = "6.3.0";
+  version = "8.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0a97b276c62db633e9e97a816282bdd166f9df74e28204f0c8fa54b71944cfdc";
+    sha256 = "63f7e136e88f890e9802522fa5475dd81e7614ba06a8cfe4f80cc3056fdb7d73";
   };
 
   buildInputs = [ nose ];
diff --git a/pkgs/development/python-modules/ipython/5.nix b/pkgs/development/python-modules/ipython/5.nix
deleted file mode 100644
index 45096bf778166..0000000000000
--- a/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/pkgs/development/python-modules/ipython/7.16.nix b/pkgs/development/python-modules/ipython/7.16.nix
deleted file mode 100644
index 1f62cc9bc18d0..0000000000000
--- a/pkgs/development/python-modules/ipython/7.16.nix
+++ /dev/null
@@ -1,69 +0,0 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-# Build dependencies
-, glibcLocales
-# Test dependencies
-, nose
-, pygments
-# Runtime dependencies
-, jedi
-, decorator
-, pickleshare
-, traitlets
-, prompt-toolkit
-, pexpect
-, appnope
-, backcall
-}:
-
-buildPythonPackage rec {
-  pname = "ipython";
-  version = "7.16.1";
-  disabled = pythonOlder "3.6";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "9f4fcb31d3b2c533333893b9172264e4821c1ac91839500f31bd43f2c59b3ccf";
-  };
-
-  prePatch = lib.optionalString stdenv.isDarwin ''
-    substituteInPlace setup.py --replace "'gnureadline'" " "
-  '';
-
-  buildInputs = [ glibcLocales ];
-
-  checkInputs = [ nose pygments ];
-
-  propagatedBuildInputs = [
-    jedi
-    decorator
-    pickleshare
-    traitlets
-    prompt-toolkit
-    pygments
-    pexpect
-    backcall
-  ] ++ lib.optionals stdenv.isDarwin [appnope];
-
-  LC_ALL="en_US.UTF-8";
-
-  doCheck = false; # Circular dependency with ipykernel
-
-  checkPhase = ''
-    nosetests
-  '';
-
-  pythonImportsCheck = [
-    "IPython"
-  ];
-
-  meta = with lib; {
-    description = "IPython: Productive Interactive Computing";
-    homepage = "http://ipython.org/";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ bjornfor fridh ];
-  };
-}
diff --git a/pkgs/development/python-modules/ipython/default.nix b/pkgs/development/python-modules/ipython/default.nix
index 2065dc2349fd6..cee9868cfacb1 100644
--- a/pkgs/development/python-modules/ipython/default.nix
+++ b/pkgs/development/python-modules/ipython/default.nix
@@ -3,63 +3,77 @@
 , buildPythonPackage
 , fetchPypi
 , pythonOlder
+
 # Build dependencies
 , glibcLocales
-# Test dependencies
-, nose
-, pygments
+
 # Runtime dependencies
-, jedi
+, appnope
+, backcall
+, black
 , decorator
+, jedi
 , matplotlib-inline
+, pexpect
 , pickleshare
-, traitlets
 , prompt-toolkit
-, pexpect
-, appnope
-, backcall
+, pygments
+, stack-data
+, traitlets
+
+# Test dependencies
+, pytestCheckHook
+, testpath
 }:
 
 buildPythonPackage rec {
   pname = "ipython";
-  version = "7.29.0";
-  disabled = pythonOlder "3.7";
+  version = "8.0.1";
+  format = "pyproject";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4f69d7423a5a1972f6347ff233e38bbf4df6a150ef20fbb00c635442ac3060aa";
+    sha256 = "0x19sj4dlq7r4p1mqnpx9245r8dwvpjwd8n34snfm37a452lsmmb";
   };
 
-  prePatch = lib.optionalString stdenv.isDarwin ''
-    substituteInPlace setup.py --replace "'gnureadline'" " "
-  '';
-
-  buildInputs = [ glibcLocales ];
-
-  checkInputs = [ nose pygments ];
+  buildInputs = [
+    glibcLocales
+  ];
 
   propagatedBuildInputs = [
-    jedi
+    backcall
+    black
     decorator
+    jedi
     matplotlib-inline
+    pexpect
     pickleshare
-    traitlets
     prompt-toolkit
     pygments
-    pexpect
-    backcall
-  ] ++ lib.optionals stdenv.isDarwin [appnope];
+    stack-data
+    traitlets
+  ] ++ lib.optionals stdenv.isDarwin [
+    appnope
+  ];
 
   LC_ALL="en_US.UTF-8";
 
-  doCheck = false; # Circular dependency with ipykernel
+  pythonImportsCheck = [
+    "IPython"
+  ];
+
+  preCheck = ''
+    export HOME=$TMPDIR
 
-  checkPhase = ''
-    nosetests
+    # doctests try to fetch an image from the internet
+    substituteInPlace pytest.ini \
+      --replace "--ipdoctest-modules" "--ipdoctest-modules --ignore=IPython/core/display.py"
   '';
 
-  pythonImportsCheck = [
-    "IPython"
+  checkInputs = [
+    pytestCheckHook
+    testpath
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/ipyvuetify/default.nix b/pkgs/development/python-modules/ipyvuetify/default.nix
index 61fd8d269bab3..567c033e243f7 100644
--- a/pkgs/development/python-modules/ipyvuetify/default.nix
+++ b/pkgs/development/python-modules/ipyvuetify/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "ipyvuetify";
-  version = "1.8.1";
+  version = "1.8.2";
 
   # GitHub version tries to run npm (Node JS)
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2d17367ce7da45a2622107d55c8b4c5475aace99ed5d95e5d7d3f93aa4c0c566";
+    sha256 = "sha256-uFjS7lv8kDRultRqqu2++1eieLs67dLolVurTXWls8A=";
   };
 
   propagatedBuildInputs = [ ipyvue ];
diff --git a/pkgs/development/python-modules/irc/default.nix b/pkgs/development/python-modules/irc/default.nix
index 423ec4ecf292c..15747d3f70d1c 100644
--- a/pkgs/development/python-modules/irc/default.nix
+++ b/pkgs/development/python-modules/irc/default.nix
@@ -5,13 +5,13 @@
 
 buildPythonPackage rec {
   pname = "irc";
-  version = "19.0.1";
+  version = "20.0.0";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "99fd5d1fa1d054dee4fbb81e0d5193dc1e8200db751d5da9a97850a62162b9ab";
+    sha256 = "59acb8d69d61a0cbd290e77e6ff10a8c7f2201fb8c7b7d5a195b5883d0c40b0a";
   };
 
   doCheck = false;
diff --git a/pkgs/development/python-modules/irctokens/default.nix b/pkgs/development/python-modules/irctokens/default.nix
index 037a5f0520fd9..3cd86abb0b2eb 100644
--- a/pkgs/development/python-modules/irctokens/default.nix
+++ b/pkgs/development/python-modules/irctokens/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "irctokens";
-  version = "2.0.0";
+  version = "2.0.1";
   disabled = pythonOlder "3.6";  # f-strings
 
   src = fetchFromGitHub {
     owner = "jesopo";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0kpxn5paailm4xpdlnzxrhjrfgvvg5pp327wd8kl41a0wbqkj4zb";
+    sha256 = "sha256-FgcLngS11U9eBNV/8jllwdrm89tCmthA1sUaFDovk6U=";
   };
 
   checkInputs = [ pyyaml ];
diff --git a/pkgs/development/python-modules/iso4217/default.nix b/pkgs/development/python-modules/iso4217/default.nix
index b1438f29a017f..12cf40a6764e0 100644
--- a/pkgs/development/python-modules/iso4217/default.nix
+++ b/pkgs/development/python-modules/iso4217/default.nix
@@ -16,14 +16,16 @@ let
 in
 buildPythonPackage rec {
   pname = "iso4217";
-  version = "1.7";
+  version = "1.8";
   format = "setuptools";
 
+  disabled = pythonOlder "3.7";
+
   src = fetchFromGitHub {
     owner = "dahlia";
     repo = pname;
     rev = version;
-    hash = "sha256-Ih2l6bGM7i5TUkzJPkgx8EOOL4a3/qE28SUZS6M4sQc=";
+    hash = "sha256-L0vx6Aan6D1lusgBh/pcT373ZTxbtWpQnFKB2V0dxlA=";
   };
 
   propagatedBuildInputs = lib.optionals (pythonOlder "3.9") [
diff --git a/pkgs/development/python-modules/iso8601/default.nix b/pkgs/development/python-modules/iso8601/default.nix
index 3a255ac047e5d..a5eb03dc8eb6e 100644
--- a/pkgs/development/python-modules/iso8601/default.nix
+++ b/pkgs/development/python-modules/iso8601/default.nix
@@ -1,25 +1,37 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, hypothesis
 , pytestCheckHook
+, pytz
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "iso8601";
-  version = "0.1.16";
+  version = "1.0.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-NlMvd8yABZTo8WZB7a5/G695MvBdjlCFRblfxTxtyFs=";
+    sha256 = "sha256-J/UDIg5oRdnblU+yErlbA2LYt+bBsjJqhwYcPek1lLE=";
   };
 
   checkInputs = [
+    hypothesis
     pytestCheckHook
+    pytz
   ];
 
-  pytestFlagsArray = [ "iso8601" ];
+  pytestFlagsArray = [
+    "iso8601"
+  ];
 
-  pythonImportsCheck = [ "iso8601" ];
+  pythonImportsCheck = [
+    "iso8601"
+  ];
 
   meta = with lib; {
     description = "Simple module to parse ISO 8601 dates";
diff --git a/pkgs/development/python-modules/isort/4.nix b/pkgs/development/python-modules/isort/4.nix
deleted file mode 100644
index 5da9a5c6b3062..0000000000000
--- a/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/pkgs/development/python-modules/isort/default.nix b/pkgs/development/python-modules/isort/default.nix
index b55fb9156814c..d21f79b6ba9be 100644
--- a/pkgs/development/python-modules/isort/default.nix
+++ b/pkgs/development/python-modules/isort/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "isort";
-  version = "5.9.3";
+  version = "5.10.1";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "PyCQA";
     repo = "isort";
     rev = version;
-    sha256 = "sha256-JbRZ/3Xz35tGoCNnQesR08Sjoz3yimxZyxhhOXGvmXw=";
+    sha256 = "09spgl2k9xrprr5gbpfc91a8p7mx7a0c64ydgc91b3jhrmnd9jg1";
   };
 
   nativeBuildInputs = [
@@ -52,6 +52,7 @@ buildPythonPackage rec {
 
   disabledTests = [
     "test_run" # doesn't like paths in /build
+    "test_fuzz_show_unified_diff" # flakey
     "test_pyi_formatting_issue_942"
     "test_requirements_finder"
     "test_pipfile_finder"
diff --git a/pkgs/development/python-modules/itanium_demangler/default.nix b/pkgs/development/python-modules/itanium_demangler/default.nix
index c67259eee0f6b..ade063a625aec 100644
--- a/pkgs/development/python-modules/itanium_demangler/default.nix
+++ b/pkgs/development/python-modules/itanium_demangler/default.nix
@@ -1,30 +1,36 @@
-{ buildPythonPackage
+{ lib
+, buildPythonPackage
 , fetchFromGitHub
-, lib
-, pytest
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
-  pname = "itanium_demangler";
+  pname = "itanium-demangler";
   version = "1.0"; # pulled from pypi version
 
   src = fetchFromGitHub {
     owner = "whitequark";
-    repo = "python-${pname}";
+    repo = "python-itanium_demangler";
     rev = "29c77860be48e6dafe3496e4d9d0963ce414e366";
-    sha256 = "0qm95l6542nk63986w9lgzkxg824l31714i584s02rh9xwfg1xfx";
+    hash = "sha256-3fXwHO8JZgE0QSWScMKgRKDX5380cYPSMNMKUgwtqWI=";
   };
 
-  checkInputs = [ pytest ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  checkPhase = ''
-    pytest tests/test.py
-  '';
+  pytestFlagsArray = [
+    "tests/test.py"
+  ];
+
+  pythonImportsCheck = [
+    " itanium_demangler "
+  ];
 
   meta = with lib; {
-    description = "A pure Python parser for the Itanium C++ ABI symbol mangling language";
+    description = "Python parser for the Itanium C++ ABI symbol mangling language";
     homepage = "https://github.com/whitequark/python-itanium_demangler";
     license = licenses.bsd0;
-    maintainers = [ maintainers.pamplemousse ];
+    maintainers = with maintainers; [ pamplemousse ];
   };
 }
diff --git a/pkgs/development/python-modules/itemdb/default.nix b/pkgs/development/python-modules/itemdb/default.nix
new file mode 100644
index 0000000000000..f9afc4c5cb36b
--- /dev/null
+++ b/pkgs/development/python-modules/itemdb/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+  pname = "itemdb";
+  version = "1.1.1";
+
+  # PyPI tarball doesn't include tests directory
+  src = fetchFromGitHub {
+    owner = "almarklein";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0ksad5j91nlbsn0a11clf994qz7r9ijand5hxnjhgd66i9hl3y78";
+  };
+
+  meta = with lib; {
+    description = "Easy transactional database for Python dicts, backed by SQLite";
+    license = licenses.bsd2;
+    homepage = "https://itemdb.readthedocs.io";
+    maintainers = [ maintainers.matthiasbeyer ];
+  };
+}
+
+
diff --git a/pkgs/development/python-modules/itsdangerous/1.nix b/pkgs/development/python-modules/itsdangerous/1.nix
deleted file mode 100644
index d1669a1ed5bf5..0000000000000
--- a/pkgs/development/python-modules/itsdangerous/1.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-}:
-
-buildPythonPackage rec {
-  pname = "itsdangerous";
-  version = "1.1.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19";
-  };
-
-  meta = with lib; {
-    description = "Helpers to pass trusted data to untrusted environments and back";
-    homepage = "https://pypi.python.org/pypi/itsdangerous/";
-    license = licenses.bsd0;
-  };
-
-}
diff --git a/pkgs/development/python-modules/janus/default.nix b/pkgs/development/python-modules/janus/default.nix
index c8a9efdb54f84..f4c52db722cd1 100644
--- a/pkgs/development/python-modules/janus/default.nix
+++ b/pkgs/development/python-modules/janus/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "janus";
-  version = "0.7.0";
+  version = "1.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f10dcf5776e8d49cc30ec86d5eb7268eeec39abaa24fe0332ee8fb8fa3611845";
+    sha256 = "df976f2cdcfb034b147a2d51edfc34ff6bfb12d4e2643d3ad0e10de058cb1612";
   };
 
   disabled = pythonOlder "3.6";
diff --git a/pkgs/development/python-modules/jaraco_collections/default.nix b/pkgs/development/python-modules/jaraco_collections/default.nix
index 46f2bfdff3fc1..d45d354b38e72 100644
--- a/pkgs/development/python-modules/jaraco_collections/default.nix
+++ b/pkgs/development/python-modules/jaraco_collections/default.nix
@@ -4,10 +4,10 @@
 
 buildPythonPackage rec {
   pname = "jaraco.collections";
-  version = "3.4.0";
+  version = "3.5.1";
   src = fetchPypi {
     inherit pname version;
-    sha256 = "344d14769d716e7496af879ac71b3c6ebdd46abc64bd9ec21d15248365aa3ac9";
+    sha256 = "b04f00bd4b3c4fc4ba5fe1baf8042c0efd192b13e386830ea23fff77bb69dc88";
   };
 
   pythonNamespaces = [ "jaraco" ];
diff --git a/pkgs/development/python-modules/jaraco_functools/2.nix b/pkgs/development/python-modules/jaraco_functools/2.nix
deleted file mode 100644
index e10a11018a5de..0000000000000
--- a/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/pkgs/development/python-modules/jaraco_functools/default.nix b/pkgs/development/python-modules/jaraco_functools/default.nix
index 1316c2b4e729d..73aa7708cf253 100644
--- a/pkgs/development/python-modules/jaraco_functools/default.nix
+++ b/pkgs/development/python-modules/jaraco_functools/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "jaraco.functools";
-  version = "3.4.0";
+  version = "3.5.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "659a64743047d00c6ae2a2aa60573c62cfc0b4b70eaa14fa50c80360ada32aa8";
+    sha256 = "31e0e93d1027592b7b0bec6ad468db850338981ebee76ba5e212e235f4c7dda0";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/jaraco_stream/2.nix b/pkgs/development/python-modules/jaraco_stream/2.nix
deleted file mode 100644
index 1f5a70477a3fe..0000000000000
--- a/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/pkgs/development/python-modules/jax/default.nix b/pkgs/development/python-modules/jax/default.nix
index 574341f216abd..c80629960d33f 100644
--- a/pkgs/development/python-modules/jax/default.nix
+++ b/pkgs/development/python-modules/jax/default.nix
@@ -6,6 +6,7 @@
 , numpy
 , opt-einsum
 , pytestCheckHook
+, pytest-xdist
 , pythonOlder
 , scipy
 , typing-extensions
@@ -13,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "jax";
-  version = "0.2.26";
+  version = "0.3.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -22,7 +23,7 @@ buildPythonPackage rec {
     owner = "google";
     repo = pname;
     rev = "${pname}-v${version}";
-    sha256 = "155hhwgq6axdrj4x4hw72322qv1wc068n4cv4z2vf5jpl05fg93g";
+    sha256 = "0ndpngx5k6lf6jqjck82bbp0gs943z0wh7vs9gwbyk2bw0da7w72";
   };
 
   patches = [
@@ -45,6 +46,7 @@ buildPythonPackage rec {
   checkInputs = [
     jaxlib
     pytestCheckHook
+    pytest-xdist
   ];
 
   # NOTE: Don't run the tests in the expiremental directory as they require flax
@@ -52,6 +54,7 @@ buildPythonPackage rec {
   # Not a big deal, this is how the JAX docs suggest running the test suite
   # anyhow.
   pytestFlagsArray = [
+    "-n auto"
     "-W ignore::DeprecationWarning"
     "tests/"
   ];
diff --git a/pkgs/development/python-modules/jaxlib/bin.nix b/pkgs/development/python-modules/jaxlib/bin.nix
index f597eeacfced4..6e70b24f67da7 100644
--- a/pkgs/development/python-modules/jaxlib/bin.nix
+++ b/pkgs/development/python-modules/jaxlib/bin.nix
@@ -13,22 +13,35 @@
 #   * 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:
+{ absl-py
+, addOpenGLRunpath
+, autoPatchelfHook
+, buildPythonPackage
+, config
+, cudatoolkit_11
+, cudnn
+, fetchurl
+, flatbuffers
+, isPy39
+, lib
+, scipy
+, stdenv
+  # Options:
 , cudaSupport ? config.cudaSupport or false
 }:
 
+# Note that these values are tied to the specific version of the GPU wheel that
+# we fetch. When updating, try to go for the latest possible versions that are
+# still compatible with the cudatoolkit and cudnn versions available in nixpkgs.
 assert cudaSupport -> lib.versionAtLeast cudatoolkit_11.version "11.1";
+assert cudaSupport -> lib.versionAtLeast cudnn.version "8.0.5";
 
 let
   device = if cudaSupport then "gpu" else "cpu";
 in
 buildPythonPackage rec {
   pname = "jaxlib";
-  version = "0.1.71";
+  version = "0.3.0";
   format = "wheel";
 
   # At the time of writing (8/19/21), there are releases for 3.7-3.9. Supporting
@@ -36,14 +49,23 @@ buildPythonPackage rec {
   # version.
   disabled = !isPy39;
 
+  # Find new releases at https://storage.googleapis.com/jax-releases.
   src = {
     cpu = fetchurl {
       url = "https://storage.googleapis.com/jax-releases/nocuda/jaxlib-${version}-cp39-none-manylinux2010_x86_64.whl";
-      sha256 = "sha256:0rqhs6qabydizlv5d3rb20dbv6612rr7dqfniy9r6h4kazdinsn6";
+      sha256 = "151p4vqli8x0iqgrzrr8piqk7d76a2xq2krf23jlb142iam5bw01";
     };
     gpu = fetchurl {
-      url = "https://storage.googleapis.com/jax-releases/cuda111/jaxlib-${version}+cuda111-cp39-none-manylinux2010_x86_64.whl";
-      sha256 = "sha256:065kyzjsk9m84d138p99iymdiiicm1qz8a3iwxz8rspl43rwrw89";
+      # Note that there's also a release targeting cuDNN 8.2, but unfortunately
+      # we don't yet have that packaged at the time of writing (02/03/2022).
+      # Check pkgs/development/libraries/science/math/cudnn/default.nix for more
+      # details.
+      url = "https://storage.googleapis.com/jax-releases/cuda11/jaxlib-${version}+cuda11.cudnn805-cp39-none-manylinux2010_x86_64.whl";
+      sha256 = "0z15rdw3a8sq51rpjmfc41ix1q095aasl79rvlib85ir6f3wh2h8";
+
+      # This is what the cuDNN 8.2 download looks like for future reference:
+      # url = "https://storage.googleapis.com/jax-releases/cuda11/jaxlib-${version}+cuda11.cudnn82-cp39-none-manylinux2010_x86_64.whl";
+      # sha256 = "000mnm2masm3sx3haddcmgw43j4gxa3m4fcm14p9nb8dnncjkgpb";
     };
   }.${device};
 
@@ -71,7 +93,7 @@ buildPythonPackage rec {
       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
+      patchelf --set-rpath "$rpath:${cudatoolkit_11}/lib:${lib.makeLibraryPath [ cudatoolkit_11.lib cudnn ]}" $file
     done
   '';
 
@@ -82,8 +104,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "XLA library for JAX";
-    homepage    = "https://github.com/google/jax";
-    license     = licenses.asl20;
+    homepage = "https://github.com/google/jax";
+    license = licenses.asl20;
     maintainers = with maintainers; [ samuela ];
     platforms = [ "x86_64-linux" ];
   };
diff --git a/pkgs/development/python-modules/jaxlib/default.nix b/pkgs/development/python-modules/jaxlib/default.nix
index bfb7f494ce1a3..664e109719adf 100644
--- a/pkgs/development/python-modules/jaxlib/default.nix
+++ b/pkgs/development/python-modules/jaxlib/default.nix
@@ -4,7 +4,7 @@
 
   # Build-time dependencies:
 , addOpenGLRunpath
-, bazel_4
+, bazel_5
 , binutils
 , buildBazelPackage
 , buildPythonPackage
@@ -50,7 +50,7 @@
 let
 
   pname = "jaxlib";
-  version = "0.1.75";
+  version = "0.3.0";
 
   meta = with lib; {
     description = "JAX is Autograd and XLA, brought together for high-performance machine learning research.";
@@ -82,13 +82,13 @@ let
   bazel-build = buildBazelPackage {
     name = "bazel-build-${pname}-${version}";
 
-    bazel = bazel_4;
+    bazel = bazel_5;
 
     src = fetchFromGitHub {
       owner = "google";
       repo = "jax";
       rev = "${pname}-v${version}";
-      sha256 = "01ks4djbpjsxjy2zwdwv3h00sgwi4ps3jz75swddrw2f56zjdmw4";
+      sha256 = "0ndpngx5k6lf6jqjck82bbp0gs943z0wh7vs9gwbyk2bw0da7w72";
     };
 
     nativeBuildInputs = [
@@ -216,9 +216,9 @@ let
     fetchAttrs = {
       sha256 =
         if cudaSupport then
-          "1lyipbflqd1y5cdj4hdml5h1inbr0wwfgp6xw5p5623qv3im16lh"
+          "1k0rjxqjm703gd9navwzx5x3874b4dxamr62m1fxhm79d271zxis"
         else
-          "09kapzpfwnlr6ghmgwac232bqf2a57mm1brz4cvfx8mlg8bbaw63";
+          "0ivah1w41jcj13jm740qzwx5h0ia8vbj71pjgd0zrfk3c92kll41";
     };
 
     buildAttrs = {
@@ -229,12 +229,17 @@ let
       # 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.
+      # 4) Patch tensorflow sources to work with later versions of protobuf. See
+      #    https://github.com/google/jax/issues/9534. Note that this should be
+      #    removed on the next release after 0.3.0.
       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
+        substituteInPlace ../output/external/org_tensorflow/tensorflow/compiler/xla/python/pprof_profile_builder.cc \
+          --replace "status.message()" "std::string{status.message()}"
       '' + lib.optionalString cudaSupport ''
         patchShebangs ../output/external/org_tensorflow/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc.tpl
       '';
diff --git a/pkgs/development/python-modules/jc/default.nix b/pkgs/development/python-modules/jc/default.nix
index 1a4ce8f7498a3..ba70918cde1f0 100644
--- a/pkgs/development/python-modules/jc/default.nix
+++ b/pkgs/development/python-modules/jc/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "jc";
-  version = "1.17.5";
+  version = "1.18.3";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "kellyjonbrazil";
     repo = pname;
     rev = "v${version}";
-    sha256 = "004773a1wsip1gnqvas78k0snv7yq83qv1spir891sz4mmg7fyin";
+    sha256 = "sha256-OMFW2xR6X/6H8ouHAe5qX8ltuwkNG9esjdosac+MiNw=";
   };
 
   propagatedBuildInputs = [ ruamel-yaml xmltodict pygments ];
diff --git a/pkgs/development/python-modules/jdatetime/default.nix b/pkgs/development/python-modules/jdatetime/default.nix
index c498a69d0a622..f2e9b66b7b3c0 100644
--- a/pkgs/development/python-modules/jdatetime/default.nix
+++ b/pkgs/development/python-modules/jdatetime/default.nix
@@ -1,19 +1,34 @@
-{ lib, buildPythonPackage, fetchPypi, six }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "jdatetime";
-  version = "3.7.0";
+  version = "4.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f06876c926b8cf88b2f0f68d6cda2b0ff86002385877c9867970e1d017ef82a8";
+    sha256 = "sha256-01uuou0hPk6Hu4QMYWNwAVQL0h6ORFS9EjUrBlkewI4=";
   };
 
-  propagatedBuildInputs = [ six ];
+  propagatedBuildInputs = [
+    six
+  ];
+
+  pythonImportsCheck = [
+    "jdatetime"
+  ];
 
   meta = with lib; {
-    description = "Jalali datetime binding for python";
-    homepage = "https://pypi.python.org/pypi/jdatetime";
+    description = "Jalali datetime binding";
+    homepage = "https://github.com/slashmili/python-jalali";
     license = licenses.psfl;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/jedi-language-server/default.nix b/pkgs/development/python-modules/jedi-language-server/default.nix
index 90e4634b46c97..4603b8708c4e8 100644
--- a/pkgs/development/python-modules/jedi-language-server/default.nix
+++ b/pkgs/development/python-modules/jedi-language-server/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "jedi-language-server";
-  version = "0.34.11";
+  version = "0.35.1";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "pappasam";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0gxpq93mfyzhjz5yvjwv2jjda1djpf20x38893ngswsm7lrh62x5";
+    sha256 = "sha256-+bhvWWiG0cA36oc2PFvgRTIvqnjIt5BUN82DY0tvuPo=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/jedi/default.nix b/pkgs/development/python-modules/jedi/default.nix
index ad94a3a3f7bc9..d9884ab3d9f51 100644
--- a/pkgs/development/python-modules/jedi/default.nix
+++ b/pkgs/development/python-modules/jedi/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "jedi";
-  version = "0.18.0";
+  version = "0.18.1";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "davidhalter";
     repo = "jedi";
     rev = "v${version}";
-    sha256 = "0d8zdj56hyxbsvvrid6r3nprm0ygxaad6zpsbhbj6k7p3dcx7acw";
+    sha256 = "sha256-wWNPNi16WtefvB7GcQBnWMbHVlVzxSFs4TKRqEasuR0=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/development/python-modules/jellyfish/default.nix b/pkgs/development/python-modules/jellyfish/default.nix
index 546e56f702f66..a275b97310d91 100644
--- a/pkgs/development/python-modules/jellyfish/default.nix
+++ b/pkgs/development/python-modules/jellyfish/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "jellyfish";
-  version = "0.8.9";
+  version = "0.9.0";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "90d25e8f5971ebbcf56f216ff5bb65d6466572b78908c88c47ab588d4ea436c2";
+    sha256 = "40c9a2ffd8bd3016f7611d424120442f627f56d518a106847dc93f0ead6ad79a";
   };
 
   checkInputs = [ pytest unicodecsv ];
diff --git a/pkgs/development/python-modules/jenkins-job-builder/default.nix b/pkgs/development/python-modules/jenkins-job-builder/default.nix
index 5613b904f63df..bc5432cb6e3f6 100644
--- a/pkgs/development/python-modules/jenkins-job-builder/default.nix
+++ b/pkgs/development/python-modules/jenkins-job-builder/default.nix
@@ -9,14 +9,17 @@
 
 buildPythonPackage rec {
   pname = "jenkins-job-builder";
-  version = "3.11.0";
+  version = "3.12.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "42ea423f44beafee0e985009124968e300447f6e3be4180e83568cf21520d1b1";
+    sha256 = "sha256-gpsot4LW1IBfYt8eb72WJqMzWEAMt4gqWOD1KhTQjds=";
   };
 
   postPatch = ''
+    # relax version constraint, https://storyboard.openstack.org/#!/story/2009723
+    substituteInPlace requirements.txt --replace 'PyYAML>=3.10.0,<6' 'PyYAML>=3.10.0'
+
     export HOME=$TMPDIR
   '';
 
diff --git a/pkgs/development/python-modules/jinja2/2.nix b/pkgs/development/python-modules/jinja2/2.nix
deleted file mode 100644
index 02127a50df746..0000000000000
--- a/pkgs/development/python-modules/jinja2/2.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{ lib, stdenv
-, buildPythonPackage
-, isPy3k
-, fetchPypi
-, pytest
-, markupsafe
-, setuptools
-}:
-
-buildPythonPackage rec {
-  pname = "Jinja2";
-  version = "2.11.3";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6";
-  };
-
-  checkInputs = [ pytest ];
-  propagatedBuildInputs = [ markupsafe setuptools ];
-
-  # Multiple tests run out of stack space on 32bit systems with python2.
-  # See https://github.com/pallets/jinja/issues/1158
-  # warnings are no longer being filtered correctly for python2
-  doCheck = !stdenv.is32bit && isPy3k;
-
-  checkPhase = ''
-    pytest -v tests -W ignore::DeprecationWarning
-  '';
-
-  meta = with lib; {
-    homepage = "http://jinja.pocoo.org/";
-    description = "Stand-alone template engine";
-    license = licenses.bsd3;
-    longDescription = ''
-      Jinja2 is a template engine written in pure Python. It provides a
-      Django inspired non-XML syntax but supports inline expressions and
-      an optional sandboxed environment.
-    '';
-    maintainers = with maintainers; [ pierron sjourdois ];
-  };
-}
diff --git a/pkgs/development/python-modules/jira/default.nix b/pkgs/development/python-modules/jira/default.nix
index c7d8207aa3d95..b22f5ccd73a4d 100644
--- a/pkgs/development/python-modules/jira/default.nix
+++ b/pkgs/development/python-modules/jira/default.nix
@@ -14,13 +14,13 @@
 
 buildPythonPackage rec {
   pname = "jira";
-  version = "3.0.1";
+  version = "3.1.1";
 
   src = fetchFromGitHub {
     owner = "pycontribs";
     repo = pname;
     rev = version;
-    sha256 = "sha256-hAUAzkHPXFDlKEom+dkzr8GQ+sqK2Ci1/k+QuSNvifE=";
+    sha256 = "04s2zgwxip54g894hps2cm081cp07mbi7qipmsv4dvailhsg43nn";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/jmp/default.nix b/pkgs/development/python-modules/jmp/default.nix
new file mode 100644
index 0000000000000..09c41a7ededd6
--- /dev/null
+++ b/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 `jax`.
+  propagatedBuildInputs = [
+    jax
+  ];
+
+  pythonImportsCheck = [
+    "jmp"
+  ];
+
+  checkInputs = [
+    jaxlib
+    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/pkgs/development/python-modules/johnnycanencrypt/default.nix b/pkgs/development/python-modules/johnnycanencrypt/default.nix
index 2f7921374e754..9f247c2d75698 100644
--- a/pkgs/development/python-modules/johnnycanencrypt/default.nix
+++ b/pkgs/development/python-modules/johnnycanencrypt/default.nix
@@ -18,20 +18,20 @@
 
 buildPythonPackage rec {
   pname = "johnnycanencrypt";
-  version = "0.5.0";
+  version = "0.6.0";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "kushaldas";
     repo = "johnnycanencrypt";
     rev = "v${version}";
-    sha256 = "192wfrlyylrpzq70yki421mi1smk8q2cyki2a1d03q7h6apib3j4";
+    sha256 = "0b1yfddf38dicmjgnw9mk5g0iisa5yq6l9cj6kfskhyrznasvz3g";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit patches src;
     name = "${pname}-${version}";
-    hash = "sha256-2XhXCKyXVlFgbcOoMy/A5ajiIVxBii56YeI29mO720U=";
+    hash = "sha256-1dRFC59GY7M99LvQWy2eXPesmLX5k46rN8l4suLYkQY=";
   };
 
   format = "pyproject";
diff --git a/pkgs/development/python-modules/josepy/default.nix b/pkgs/development/python-modules/josepy/default.nix
index c091480f63c6a..036b60e9eca25 100644
--- a/pkgs/development/python-modules/josepy/default.nix
+++ b/pkgs/development/python-modules/josepy/default.nix
@@ -1,28 +1,25 @@
 { lib
-, fetchPypi
 , buildPythonPackage
 , cryptography
+, fetchPypi
 , pyopenssl
-, setuptools
-, mock
 , pytestCheckHook
+, pythonOlder
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "josepy";
-  version = "1.11.0";
+  version = "1.12.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "40ef59f2f537ec01bafe698dad66281f6ccf4642f747411647db403ab8fa9a2d";
+    sha256 = "267004a64f08c016cd54b7aaf7c323fa3ef3679fb62f4b086cd56448d0fecb25";
   };
 
-  postPatch = ''
-    # remove coverage flags
-    sed -i '/addopts/d' pytest.ini
-    sed -i '/flake8-ignore/d' pytest.ini
-  '';
-
   propagatedBuildInputs = [
     pyopenssl
     cryptography
@@ -30,15 +27,23 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    mock
     pytestCheckHook
   ];
 
+  postPatch = ''
+    substituteInPlace pytest.ini \
+      --replace " --flake8 --cov-report xml --cov-report=term-missing --cov=josepy --cov-config .coveragerc" ""
+    sed -i '/flake8-ignore/d' pytest.ini
+  '';
+
+  pythonImportsCheck = [
+    "josepy"
+  ];
+
   meta = with lib; {
     description = "JOSE protocol implementation in Python";
     homepage = "https://github.com/jezdez/josepy";
     license = licenses.asl20;
-    maintainers = with maintainers; [  ];
+    maintainers = with maintainers; [ ];
   };
 }
-
diff --git a/pkgs/development/python-modules/jpylyzer/default.nix b/pkgs/development/python-modules/jpylyzer/default.nix
index 442267b52ea05..92c78895eb620 100644
--- a/pkgs/development/python-modules/jpylyzer/default.nix
+++ b/pkgs/development/python-modules/jpylyzer/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "jpylyzer";
-  version = "2.0.0";
+  version = "2.0.1";
 
   src = fetchFromGitHub {
     owner = "openpreserve";
     repo = pname;
     rev = version;
-    sha256 = "01wfbb1bgby9b7m6q7483kvpyc1qhj80dg8d5a6smcxvmy8y6x5n";
+    sha256 = "1cd9klq83g9p4nkg7x78axqid5vcsqzggp431hcfdiixa50yjxjg";
   };
 
   propagatedBuildInputs = [ six ];
diff --git a/pkgs/development/python-modules/jq/default.nix b/pkgs/development/python-modules/jq/default.nix
index 3833bf9850f89..ed80bc9f81f71 100644
--- a/pkgs/development/python-modules/jq/default.nix
+++ b/pkgs/development/python-modules/jq/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "jq";
-  version = "1.2.1";
+  version = "1.2.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "73ce588025495e6ebcda20bb9e64b6d9f3f1657c22895143ae243899ac710cbc";
+    sha256 = "sha256-hqzixD8XtaZKOIh+3nLHuM4qsLz6ge4o/2Q06TUBCr4=";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/jsmin/default.nix b/pkgs/development/python-modules/jsmin/default.nix
index f11fccb086bcd..58759393bbed2 100644
--- a/pkgs/development/python-modules/jsmin/default.nix
+++ b/pkgs/development/python-modules/jsmin/default.nix
@@ -1,17 +1,38 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "jsmin";
-  version = "2.2.2";
+  version = "3.0.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0fsmqbjvpxvff0984x7c0y8xmf49ax9mncz48b9xjx8wrnr9kpxn";
+    sha256 = "c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc";
   };
 
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "jsmin/test.py"
+  ];
+
+  pythonImportsCheck = [
+    "jsmin"
+  ];
+
   meta = with lib; {
     description = "JavaScript minifier";
     homepage = "https://github.com/tikitu/jsmin/";
     license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/json-schema-for-humans/default.nix b/pkgs/development/python-modules/json-schema-for-humans/default.nix
index 5f2c5ac7fdde0..a9faf437f80fe 100644
--- a/pkgs/development/python-modules/json-schema-for-humans/default.nix
+++ b/pkgs/development/python-modules/json-schema-for-humans/default.nix
@@ -19,7 +19,7 @@
 
 buildPythonPackage rec {
   pname = "json-schema-for-humans";
-  version = "0.39.3";
+  version = "0.40";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -28,7 +28,7 @@ buildPythonPackage rec {
     owner = "coveooss";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-rg50AE30R1OErtOKppnkhg8MTuhEY6gdBgc7ipEkONA=";
+    hash = "sha256-H0jvOnrWE4/xxRYNehshHBRNc/qLX1+sCV7O1ACCdew=";
   };
 
   nativeBuildInputs = [
@@ -54,6 +54,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  postPatch = ''
+    # https://github.com/coveooss/json-schema-for-humans/issues/127
+    substituteInPlace pyproject.toml \
+      --replace 'PyYAML = "^5.4.1"' 'PyYAML = "*"'
+  '';
+
   disabledTests = [
     # Tests require network access
     "test_references_url"
diff --git a/pkgs/development/python-modules/json-tricks/default.nix b/pkgs/development/python-modules/json-tricks/default.nix
new file mode 100644
index 0000000000000..9995e537c5410
--- /dev/null
+++ b/pkgs/development/python-modules/json-tricks/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, pythonOlder
+, pytestCheckHook
+, numpy
+, pandas
+, pytz
+}:
+
+buildPythonPackage rec {
+  pname = "json-tricks";
+  version = "3.15.5";
+  disabled = pythonOlder "3.5";
+
+  src = fetchFromGitHub {
+    owner = "mverleg";
+    repo = "pyjson_tricks";
+    rev = "v${version}";
+    sha256 = "wdpqCqMO0EzKyqE4ishL3CTsSw3sZPGvJ0HEktKFgZU=";
+  };
+
+  checkInputs = [ numpy pandas pytz pytestCheckHook ];
+
+  pythonImportsCheck = [ "json_tricks" ];
+
+  meta = with lib; {
+    description = "Extra features for Python JSON handling";
+    homepage = "https://github.com/mverleg/pyjson_tricks";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ bcdarwin ];
+  };
+}
diff --git a/pkgs/development/python-modules/jsonlines/default.nix b/pkgs/development/python-modules/jsonlines/default.nix
index d16fa89a97c44..4892d72aae91a 100644
--- a/pkgs/development/python-modules/jsonlines/default.nix
+++ b/pkgs/development/python-modules/jsonlines/default.nix
@@ -3,13 +3,13 @@
 
 buildPythonPackage rec {
   pname = "jsonlines";
-  version = "1.2.0";
+  version = "3.0.0";
 
   src = fetchFromGitHub {
     owner = "wbolster";
     repo = pname;
     rev = version;
-    sha256 = "1f8zsqy8p9a41gqg2a5x7sppc5qhhq7gw58id2aigb270yxzs7jw";
+    sha256 = "1242bvk208vjaw8zl1d7ydb0i05v8fwdgi92d3bi1vaji9s2hv65";
   };
 
   propagatedBuildInputs = [ six ];
diff --git a/pkgs/development/python-modules/jsonrpclib/default.nix b/pkgs/development/python-modules/jsonrpclib/default.nix
deleted file mode 100644
index b1b4648e903db..0000000000000
--- a/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/pkgs/development/python-modules/jsonschema/default.nix b/pkgs/development/python-modules/jsonschema/default.nix
index b78165fc4f324..dd2a47f1bcb63 100644
--- a/pkgs/development/python-modules/jsonschema/default.nix
+++ b/pkgs/development/python-modules/jsonschema/default.nix
@@ -1,38 +1,59 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
+{ lib
 , attrs
-, functools32
+, buildPythonPackage
+, fetchPypi
 , importlib-metadata
-, mock
-, nose
+, importlib-resources
 , pyperf
 , pyrsistent
+, pytestCheckHook
+, pythonOlder
 , setuptools-scm
 , twisted
-, vcversioner
+, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "jsonschema";
-  version = "3.2.0";
+  version = "4.4.0";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a";
+    sha256 = "636694eb41b3535ed608fe04129f26542b59ed99808b4f688aa32dcf55317a83";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
-  propagatedBuildInputs = [ attrs importlib-metadata functools32 pyrsistent ];
-  checkInputs = [ nose mock pyperf twisted vcversioner ];
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    attrs
+    pyrsistent
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    importlib-metadata
+    typing-extensions
+  ] ++ lib.optionals (pythonOlder "3.9") [
+    importlib-resources
+  ];
 
-  # zope namespace collides on py27
-  doCheck = !isPy27;
-  checkPhase = ''
-    nosetests
-  '';
+  checkInputs = [
+    pyperf
+    pytestCheckHook
+    twisted
+  ];
+
+  pythonImportsCheck = [
+    "jsonschema"
+  ];
 
   meta = with lib; {
-    homepage = "https://github.com/Julian/jsonschema";
     description = "An implementation of JSON Schema validation for Python";
+    homepage = "https://github.com/Julian/jsonschema";
     license = licenses.mit;
     maintainers = with maintainers; [ domenkozar ];
   };
diff --git a/pkgs/development/python-modules/jupyter-client/5.nix b/pkgs/development/python-modules/jupyter-client/5.nix
deleted file mode 100644
index 0894744bf0b75..0000000000000
--- a/pkgs/development/python-modules/jupyter-client/5.nix
+++ /dev/null
@@ -1,40 +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 {
-    pname = "jupyter_client";
-    inherit 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/pkgs/development/python-modules/jupyter-packaging/default.nix b/pkgs/development/python-modules/jupyter-packaging/default.nix
index f6ea3fc610f14..f3fd7747ff86c 100644
--- a/pkgs/development/python-modules/jupyter-packaging/default.nix
+++ b/pkgs/development/python-modules/jupyter-packaging/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "jupyter-packaging";
-  version = "0.10.2";
+  version = "0.11.1";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "jupyter_packaging";
     inherit version;
-    sha256 = "sha256-iEX0ht1IwWYM+tGOUJHRwDVA6y6fvzzs8h7LIrabh3A=";
+    sha256 = "6f5c7eeea98f7f3c8fb41d565a94bf59791768a93f93148b3c2dfb7ebade8eec";
   };
 
   propagatedBuildInputs = [ deprecation packaging tomlkit ];
diff --git a/pkgs/development/python-modules/jupyter-repo2docker/default.nix b/pkgs/development/python-modules/jupyter-repo2docker/default.nix
index c3971c687505d..b1389889b59a1 100644
--- a/pkgs/development/python-modules/jupyter-repo2docker/default.nix
+++ b/pkgs/development/python-modules/jupyter-repo2docker/default.nix
@@ -16,7 +16,7 @@
 }:
 
 buildPythonPackage rec {
-  version = "2021.08.0";
+  version = "2022.02.0";
   pname = "jupyter-repo2docker";
   format = "setuptools";
 
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "jupyterhub";
     repo = "repo2docker";
     rev = version;
-    sha256 = "10hcdag7ivyqyiqrmr9c48zynp8d81ic3px1ffgnaysih7lvkwb6";
+    sha256 = "sha256-L7jUaGRea5HJnb/SX2K2qfvtFwkq9jfhrpvsu+LHH3M=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/jupyter-server-mathjax/default.nix b/pkgs/development/python-modules/jupyter-server-mathjax/default.nix
index 9aff01cd9d380..47f5f8e58407b 100644
--- a/pkgs/development/python-modules/jupyter-server-mathjax/default.nix
+++ b/pkgs/development/python-modules/jupyter-server-mathjax/default.nix
@@ -32,7 +32,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "MathJax resources as a Jupyter Server Extension";
-    homepage = "http://jupyter.org";
+    homepage = "https://jupyter.org";
     license = licenses.bsd3;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/pkgs/development/python-modules/jupyter_console/5.nix b/pkgs/development/python-modules/jupyter_console/5.nix
deleted file mode 100644
index 5e2436acc7355..0000000000000
--- a/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/pkgs/development/python-modules/jupyterhub/default.nix b/pkgs/development/python-modules/jupyterhub/default.nix
index a90fa0eb9a13b..66344e408a8f0 100644
--- a/pkgs/development/python-modules/jupyterhub/default.nix
+++ b/pkgs/development/python-modules/jupyterhub/default.nix
@@ -149,6 +149,8 @@ buildPythonPackage rec {
     "test_upgrade"
     # Testcase fails to find requests import
     "test_external_service"
+    # attempts to do ssl connection
+    "test_connection_notebook_wrong_certs"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/jupyterlab-git/default.nix b/pkgs/development/python-modules/jupyterlab-git/default.nix
index 46c76ebfe20e7..9d2907072e62a 100644
--- a/pkgs/development/python-modules/jupyterlab-git/default.nix
+++ b/pkgs/development/python-modules/jupyterlab-git/default.nix
@@ -17,14 +17,14 @@
 
 buildPythonPackage rec {
   pname = "jupyterlab-git";
-  version = "0.34.0";
+  version = "0.34.1";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     pname = "jupyterlab_git";
     inherit version;
-    sha256 = "3b9ee3a577834c0f021d41069be7b03068297ce0c2a73c76b17e8018eb3eb62f";
+    sha256 = "c7a03f526eb19175df73fedd5dee3cdae2d39e0474eef8f55c1c55b219ab26d9";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/jupyterlab-pygments/default.nix b/pkgs/development/python-modules/jupyterlab-pygments/default.nix
index f3ea20842aa50..3d6b9fa933508 100644
--- a/pkgs/development/python-modules/jupyterlab-pygments/default.nix
+++ b/pkgs/development/python-modules/jupyterlab-pygments/default.nix
@@ -20,7 +20,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Jupyterlab syntax coloring theme for pygments";
-    homepage = "https://github.com/jupyterlab/jupyterlab-pygments/";
+    homepage = "https://github.com/jupyterlab/jupyterlab_pygments";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/pkgs/development/python-modules/jupyterlab-widgets/default.nix b/pkgs/development/python-modules/jupyterlab-widgets/default.nix
index c4589ce1b933b..26794fbc77b52 100644
--- a/pkgs/development/python-modules/jupyterlab-widgets/default.nix
+++ b/pkgs/development/python-modules/jupyterlab-widgets/default.nix
@@ -4,12 +4,12 @@
 
 buildPythonPackage rec {
   pname = "jupyterlab-widgets";
-  version = "1.0.0";
+  version = "2.0.0b1";
 
   src = fetchPypi {
     pname = "jupyterlab_widgets";
     inherit version;
-    sha256 = "0y7vhhas3qndiypcpcfnhrj9n92v2w4hdc86nn620s9h9nl2j6jw";
+    sha256 = "1xinfk3bhqmfp9ygfpi8b87h4ky8dv3sdr96035psx1jjgyyw8bi";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/jupyterlab/default.nix b/pkgs/development/python-modules/jupyterlab/default.nix
index 76b160eb97c35..21158ebb5393b 100644
--- a/pkgs/development/python-modules/jupyterlab/default.nix
+++ b/pkgs/development/python-modules/jupyterlab/default.nix
@@ -10,29 +10,41 @@
 
 buildPythonPackage rec {
   pname = "jupyterlab";
-  version = "3.2.5";
-  disabled = pythonOlder "3.5";
+  version = "3.2.9";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "31b28f473b0f5826d2020583973c385526f0559b5b26efac6b8035ac1562874a";
+    sha256 = "sha256-Zd3DTl2hp2RgbjjE9wz51KwcBRgoE88Kst/qMSxwESQ=";
   };
 
-  nativeBuildInputs = [ jupyter-packaging ];
+  nativeBuildInputs = [
+    jupyter-packaging
+  ];
 
-  propagatedBuildInputs = [ jupyterlab_server notebook nbclassic ];
+  propagatedBuildInputs = [
+    jupyterlab_server
+    notebook
+    nbclassic
+  ];
 
   makeWrapperArgs = [
-    "--set" "JUPYTERLAB_DIR" "$out/share/jupyter/lab"
+    "--set"
+    "JUPYTERLAB_DIR"
+    "$out/share/jupyter/lab"
   ];
 
   # Depends on npm
   doCheck = false;
 
-  pythonImportsCheck = [ "jupyterlab" ];
+  pythonImportsCheck = [
+    "jupyterlab"
+  ];
 
   meta = with lib; {
-    description = "Jupyter lab environment notebook server extension.";
+    description = "Jupyter lab environment notebook server extension";
     license = with licenses; [ bsd3 ];
     homepage = "https://jupyter.org/";
     maintainers = with maintainers; [ zimbatm costrouc ];
diff --git a/pkgs/development/python-modules/jupyterlab_server/default.nix b/pkgs/development/python-modules/jupyterlab_server/default.nix
index 7216421a86c73..ed0fe4bca2d76 100644
--- a/pkgs/development/python-modules/jupyterlab_server/default.nix
+++ b/pkgs/development/python-modules/jupyterlab_server/default.nix
@@ -16,12 +16,12 @@
 
 buildPythonPackage rec {
   pname = "jupyterlab_server";
-  version = "2.10.2";
+  version = "2.10.3";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bf1ec9e49d4e26f14d70055cc293b3f8ec8410f95a4d5b4bd55c442d9b8b266c";
+    sha256 = "3fb84a5813d6d836ceda773fb2d4e9ef3c7944dbc1b45a8d59d98641a80de80a";
   };
 
   postPatch = ''
@@ -35,25 +35,10 @@ buildPythonPackage rec {
     pytestCheckHook
     pytest-tornasync
     ruamel-yaml
-    strict-rfc3339
   ];
 
   pytestFlagsArray = [ "--pyargs" "jupyterlab_server" ];
 
-  disabledTests = [
-    # AttributeError: 'SpecPath' object has no attribute 'paths'
-    "test_get_listing"
-    "test_get_settings"
-    "test_get_federated"
-    "test_listing"
-    "test_patch"
-    "test_patch_unicode"
-    "test_get_theme"
-    "test_delete"
-    "test_get_non_existant"
-    "test_get"
-  ];
-
   __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/jupytext/default.nix b/pkgs/development/python-modules/jupytext/default.nix
index 777f82a3e5adf..6e0668de1470d 100644
--- a/pkgs/development/python-modules/jupytext/default.nix
+++ b/pkgs/development/python-modules/jupytext/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , fetchFromGitHub
 , GitPython
+, isort
 , jupyter-client
 , jupyter-packaging
 , jupyterlab
@@ -17,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "jupytext";
-  version = "1.13.5";
+  version = "1.13.7";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -26,7 +27,7 @@ buildPythonPackage rec {
     owner = "mwouts";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0rapp2baqml1z3n8k7ijf5461b3p8wgr45y3njz54q75v0jk7v45";
+    sha256 = "sha256-DWK5ZoPL6Ek3dXHOlZfecQKLNwBqDjMZ77XZ7YLCXKI=";
   };
 
   buildInputs = [
@@ -44,6 +45,7 @@ buildPythonPackage rec {
 
   checkInputs = [
     GitPython
+    isort
     jupyter-client
     notebook
     pytestCheckHook
@@ -65,6 +67,10 @@ buildPythonPackage rec {
     "--ignore-glob='tests/test_pre_commit_*.py'"
   ];
 
+  disabledTests = [
+    "test_apply_black_through_jupytext" # we can't do anything about ill-formatted notebooks
+  ];
+
   pythonImportsCheck = [
     "jupytext"
     "jupytext.cli"
diff --git a/pkgs/development/python-modules/kaldi-active-grammar/default.nix b/pkgs/development/python-modules/kaldi-active-grammar/default.nix
index f7d4738ebcabd..d5a906dd733b1 100644
--- a/pkgs/development/python-modules/kaldi-active-grammar/default.nix
+++ b/pkgs/development/python-modules/kaldi-active-grammar/default.nix
@@ -17,13 +17,13 @@ let
 in
 buildPythonPackage rec {
   pname = "kaldi-active-grammar";
-  version = "2.1.0";
+  version = "3.1.0";
 
   src = fetchFromGitHub {
     owner = "daanzu";
     repo = pname;
     rev = "v${version}";
-    sha256 = "ArbwduoH7mMmIjlFfYAFvcpR39rrkVUJhYEyQzZqsbY=";
+    sha256 = "0lilk6yjzcy31avy2z36bl9lr60gzwhmyqwqn8akq11qc3mbffsk";
   };
 
   KALDI_BRANCH = "foo";
diff --git a/pkgs/development/python-modules/kaptan/default.nix b/pkgs/development/python-modules/kaptan/default.nix
index c5f00393839e5..309ecda49ccc0 100644
--- a/pkgs/development/python-modules/kaptan/default.nix
+++ b/pkgs/development/python-modules/kaptan/default.nix
@@ -16,6 +16,8 @@ buildPythonPackage rec {
 
   postPatch = ''
     sed -i "s/==.*//g" requirements/test.txt
+
+    substituteInPlace requirements/base.txt --replace 'PyYAML>=3.13,<6' 'PyYAML>=3.13'
   '';
 
   propagatedBuildInputs = [ pyyaml ];
diff --git a/pkgs/development/python-modules/keyring/default.nix b/pkgs/development/python-modules/keyring/default.nix
index 68043f268ba56..71e9be548e5bd 100644
--- a/pkgs/development/python-modules/keyring/default.nix
+++ b/pkgs/development/python-modules/keyring/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "keyring";
-  version = "23.4.0";
-  disabled = pythonOlder "3.6";
+  version = "23.5.0";
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-iPIGAkKV48b7FrsKYPtLt+wRhWKdxacp8SqnwjbQE4c=";
+    hash = "sha256-kBJQjhQagL0cC2d41cYQ3Z+MRk11rGd0JIUAUD+XL7k=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/kiwisolver/1_1.nix b/pkgs/development/python-modules/kiwisolver/1_1.nix
deleted file mode 100644
index 762b5bc0b7b39..0000000000000
--- a/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/pkgs/development/python-modules/koji/default.nix b/pkgs/development/python-modules/koji/default.nix
deleted file mode 100644
index cd3b5ff62c26d..0000000000000
--- a/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/pkgs/development/python-modules/kombu/default.nix b/pkgs/development/python-modules/kombu/default.nix
index 319461b98344d..bb39b29c0d515 100644
--- a/pkgs/development/python-modules/kombu/default.nix
+++ b/pkgs/development/python-modules/kombu/default.nix
@@ -1,27 +1,28 @@
 { lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
 , amqp
-, vine
-, cached-property
-, importlib-metadata
 , azure-servicebus
+, buildPythonPackage
+, cached-property
 , case
+, fetchPypi
+, importlib-metadata
 , Pyro4
 , pytestCheckHook
+, pythonOlder
 , pytz
+, vine
 }:
 
 buildPythonPackage rec {
   pname = "kombu";
-  version = "5.2.2";
+  version = "5.2.3";
+  format = "setuptools";
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0f5d0763fb916808f617b886697b2be28e6bc35026f08e679697fc814b48a608";
+    hash = "sha256-gakMHel+CNPbN9vxY+qvZnRF4QaMmL/YnwUaQOn2270=";
   };
 
   propagatedBuildInputs = [
@@ -40,9 +41,14 @@ buildPythonPackage rec {
     pytz
   ];
 
+  pythonImportsCheck = [
+    "kombu"
+  ];
+
   meta = with lib; {
     description = "Messaging library for Python";
-    homepage    = "https://github.com/celery/kombu";
-    license     = licenses.bsd3;
+    homepage = "https://github.com/celery/kombu";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/konfig/default.nix b/pkgs/development/python-modules/konfig/default.nix
deleted file mode 100644
index e7062bad5ee77..0000000000000
--- a/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/pkgs/development/python-modules/labelbox/default.nix b/pkgs/development/python-modules/labelbox/default.nix
index ba7579d10670b..c89782d4027e5 100644
--- a/pkgs/development/python-modules/labelbox/default.nix
+++ b/pkgs/development/python-modules/labelbox/default.nix
@@ -19,14 +19,14 @@
 
 buildPythonPackage rec {
   pname = "labelbox";
-  version = "3.10.0";
+  version = "3.11.1";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "Labelbox";
     repo = "labelbox-python";
     rev = "v${version}";
-    sha256 = "0afrzxy8hmsvqp84mf89k7sqlzzyh6xwp2pz5abj0981mqlzf2x9";
+    sha256 = "114h9phvbdknyvqdnjba3pd7i4iznffhgx9d569lq0hfla3hl61a";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/labmath/default.nix b/pkgs/development/python-modules/labmath/default.nix
index 24018fd7420ec..5eaeeba9a06d2 100644
--- a/pkgs/development/python-modules/labmath/default.nix
+++ b/pkgs/development/python-modules/labmath/default.nix
@@ -2,17 +2,14 @@
 
 buildPythonPackage rec {
   pname = "labmath";
-  version = "1.2.0";
+  version = "2.2.0";
+  format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-/fZ61tJ6PVZsubr3OXlbg/VxyyKimz36uPV+r33kgD0=";
+    sha256 = "sha256-dzJ4szPxnck0Cgc5IEp5FBmHvIyAC0rqKRVrkt20ntQ=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py --replace "labmath/DESCRIPTION.rst" "PKG-INFO"
-  '';
-
   pythonImportsCheck = [ "labmath" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/larch/default.nix b/pkgs/development/python-modules/larch/default.nix
deleted file mode 100644
index 630430b8270b7..0000000000000
--- a/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/pkgs/development/python-modules/lark-parser/default.nix b/pkgs/development/python-modules/lark/default.nix
index c1c67fd4c1ea4..6c29a662524cc 100644
--- a/pkgs/development/python-modules/lark-parser/default.nix
+++ b/pkgs/development/python-modules/lark/default.nix
@@ -6,19 +6,26 @@
 }:
 
 buildPythonPackage rec {
-  pname = "lark-parser";
-  version = "0.12.0";
+  pname = "lark";
+  version = "1.0.0";
 
   src = fetchFromGitHub {
     owner = "lark-parser";
     repo = "lark";
     rev = version;
-    sha256 = "sha256-zcMGCn3ixD3dJg3GlC/ijs+U1JN1BodHLTXZc/5UR7Y=";
+    sha256 = "0pfvjh4ydc49gs6m8b3ip85c8nd4da2bhz9714fwcyl3hdp33q7n";
   };
 
   # Optional import, but fixes some re known bugs & allows advanced regex features
   propagatedBuildInputs = [ regex ];
 
+  pythonImportsCheck = [
+    "lark"
+    "lark.parsers"
+    "lark.tools"
+    "lark.grammars"
+  ];
+
   checkPhase = ''
     runHook preCheck
 
diff --git a/pkgs/development/python-modules/lasagne/default.nix b/pkgs/development/python-modules/lasagne/default.nix
deleted file mode 100644
index 5db149708ff31..0000000000000
--- a/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/pkgs/development/python-modules/launchpadlib/default.nix b/pkgs/development/python-modules/launchpadlib/default.nix
index a9f2923bd073c..a5fabd195db2b 100644
--- a/pkgs/development/python-modules/launchpadlib/default.nix
+++ b/pkgs/development/python-modules/launchpadlib/default.nix
@@ -15,11 +15,11 @@
 
 buildPythonPackage rec {
   pname = "launchpadlib";
-  version = "1.10.15.1";
+  version = "1.10.16";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4891f5b0c9bafbbb78aa06eeba1635629663c6aa80f621bcd1fc1057c8dd14b5";
+    sha256 = "0df4b13936f988afd0ee485f40fa6922eab783b48c38ca0108cb73c8788fca80";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/lazy-object-proxy/default.nix b/pkgs/development/python-modules/lazy-object-proxy/default.nix
index 09232cbc62423..0619a62fa32d9 100644
--- a/pkgs/development/python-modules/lazy-object-proxy/default.nix
+++ b/pkgs/development/python-modules/lazy-object-proxy/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "lazy-object-proxy";
-  version = "1.6.0";
+  version = "1.7.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "489000d368377571c6f982fba6497f2aa13c6d1facc40660963da62f5c379726";
+    sha256 = "d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/ldaptor/19.nix b/pkgs/development/python-modules/ldaptor/19.nix
deleted file mode 100644
index 42141371c534f..0000000000000
--- a/pkgs/development/python-modules/ldaptor/19.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, twisted
-, passlib
-, pyopenssl
-, pyparsing
-, service-identity
-, zope_interface
-, isPy3k
-}:
-
-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/pkgs/development/python-modules/le/default.nix b/pkgs/development/python-modules/le/default.nix
deleted file mode 100644
index 134a143a3b0f8..0000000000000
--- a/pkgs/development/python-modules/le/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, simplejson
-, psutil
-}:
-
-buildPythonPackage rec {
-  pname = "le";
-  version = "1.4.29";
-
-  src = fetchFromGitHub {
-    owner = "logentries";
-    repo = "le";
-    rev = "v${version}";
-    sha256 = "sha256-67JPnof0olReu90rM78e1px8NvbGcj8pphFhPaiSVmA=";
-  };
-
-  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/pkgs/development/python-modules/lektor/default.nix b/pkgs/development/python-modules/lektor/default.nix
index a094bf6b37e64..f88e14d0a3e7c 100644
--- a/pkgs/development/python-modules/lektor/default.nix
+++ b/pkgs/development/python-modules/lektor/default.nix
@@ -24,13 +24,13 @@
 
 buildPythonPackage rec {
   pname = "lektor";
-  version = "3.1.3";
+  version = "3.3.1";
 
   src = fetchFromGitHub {
     owner = "lektor";
     repo = "lektor";
     rev = version;
-    sha256 = "16qw68rz5q77w84lwyhjpfd3bm4mfrhcjrnxwwnz3vmi610h68hx";
+    sha256 = "04gn3jybqf9wc6l9mi0djpki60adnk7gppmv987ik676k5x8f1kk";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/levenshtein/default.nix b/pkgs/development/python-modules/levenshtein/default.nix
index cc4a029b7b559..64a9a3b5e996b 100644
--- a/pkgs/development/python-modules/levenshtein/default.nix
+++ b/pkgs/development/python-modules/levenshtein/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "levenshtein";
-  version = "0.16.0";
+  version = "0.17.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "maxbachmann";
     repo = "Levenshtein";
     rev = "v${version}";
-    sha256 = "agshUVkkqogj4FbonFd/rrGisMOomS62NND66YKZvjg=";
+    sha256 = "1a14cw2314jb5lrm979zipzk3av4630lxdr4jzj2wl5qh3yw4w52";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/libagent/default.nix b/pkgs/development/python-modules/libagent/default.nix
index a485bf3a604b0..2deb4f18d1238 100644
--- a/pkgs/development/python-modules/libagent/default.nix
+++ b/pkgs/development/python-modules/libagent/default.nix
@@ -1,22 +1,22 @@
-{ lib, fetchFromGitHub, buildPythonPackage, ed25519, ecdsa , semver, mnemonic,
-  unidecode, mock, pytest , backports-shutil-which, configargparse,
-  python-daemon, pymsgbox }:
+{ lib, fetchFromGitHub, buildPythonPackage, ed25519, ecdsa , semver, mnemonic
+, unidecode, mock, pytest , backports-shutil-which, configargparse
+, python-daemon, pymsgbox, pynacl }:
 
 # XXX: when changing this package, please test the package onlykey-agent.
 
 buildPythonPackage rec {
   pname = "libagent";
-  version = "0.14.1";
+  version = "0.14.4";
 
   src = fetchFromGitHub {
     owner = "romanz";
     repo = "trezor-agent";
     rev = "v${version}";
-    sha256 = "16y1y9ahcv3wj7f0v4mfiwzkmn2hz1iv7y13cgr57sxa3ymyqx6c";
+    sha256 = "1ksv494xpga27ifrjyn1bkqaya5h769lqb9rx1ng0n4kvmnrqr3l";
   };
 
   propagatedBuildInputs = [ unidecode backports-shutil-which configargparse
-    python-daemon pymsgbox ecdsa ed25519 mnemonic semver ];
+    python-daemon pymsgbox ecdsa ed25519 mnemonic semver pynacl ];
 
   checkInputs = [ mock pytest ];
 
diff --git a/pkgs/development/python-modules/libarchive-c/default.nix b/pkgs/development/python-modules/libarchive-c/default.nix
index 13f61c6aa9494..aafe92e730891 100644
--- a/pkgs/development/python-modules/libarchive-c/default.nix
+++ b/pkgs/development/python-modules/libarchive-c/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "libarchive-c";
-  version = "3.2";
+  version = "4.0";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "Changaco";
     repo = "python-${pname}";
     rev = version;
-    sha256 = "1kj3y9vnsc9m2hvnvgk5inawxfknz5drj3q51hqgcbq8p4dm8vli";
+    sha256 = "1ar7lj1lpisklq2q07d95yhlbfq25g9g61hcj8whj17mq8vrvml1";
   };
 
   LC_ALL="en_US.UTF-8";
diff --git a/pkgs/development/python-modules/libcloud/2.nix b/pkgs/development/python-modules/libcloud/2.nix
deleted file mode 100644
index c59e026fe4f31..0000000000000
--- a/pkgs/development/python-modules/libcloud/2.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, mock
-, pycrypto
-, requests
-, pytest-runner
-, pytest
-, requests-mock
-, typing
-, backports_ssl_match_hostname
-}:
-
-buildPythonPackage rec {
-  pname = "apache-libcloud";
-  version = "2.8.3";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "70096690b24a7832cc5abdfda1954b49fddc1c09a348a1e6caa781ac867ed4c6";
-  };
-
-  checkInputs = [ mock pytest pytest-runner requests-mock ];
-  propagatedBuildInputs = [ pycrypto requests ]
-    ++ lib.optionals isPy27 [ typing backports_ssl_match_hostname ];
-
-  preConfigure = "cp libcloud/test/secrets.py-dist libcloud/test/secrets.py";
-
-  # requires a certificates file
-  doCheck = false;
-
-  meta = with lib; {
-    description = "A unified interface to many cloud providers";
-    homepage = "http://incubator.apache.org/libcloud/";
-    license = licenses.asl20;
-  };
-
-}
diff --git a/pkgs/development/python-modules/librosa/default.nix b/pkgs/development/python-modules/librosa/default.nix
index cb8f4c023bc23..c23b9df7cd78b 100644
--- a/pkgs/development/python-modules/librosa/default.nix
+++ b/pkgs/development/python-modules/librosa/default.nix
@@ -14,11 +14,11 @@
 
 buildPythonPackage rec {
   pname = "librosa";
-  version = "0.8.1";
+  version = "0.9.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c53d05e768ae4a3e553ae21c2e5015293e5efbfd5c12d497f1104cb519cca6b3";
+    sha256 = "sha256-zSFnXTuYWPjRs7FDKzYONoFFvtN4B+HxOwcRqozTkP0=";
   };
 
   propagatedBuildInputs = [ joblib matplotlib six scikit-learn decorator audioread resampy soundfile pooch ];
diff --git a/pkgs/development/python-modules/libtmux/default.nix b/pkgs/development/python-modules/libtmux/default.nix
index 5b251f842bff8..7a7e116aa2212 100644
--- a/pkgs/development/python-modules/libtmux/default.nix
+++ b/pkgs/development/python-modules/libtmux/default.nix
@@ -1,21 +1,32 @@
-{ lib, fetchPypi, buildPythonPackage, pytest }:
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, poetry-core
+, pytestCheckHook
+, pkgs
+}:
 
 buildPythonPackage rec {
   pname = "libtmux";
-  version = "0.10.2";
+  version = "0.10.3";
+  format = "pyproject";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "a0e958b85ec14cdaabecfa738a0dd51846f05e5c5e9d6749a2bf5160b9f7e1d2";
+  src = fetchFromGitHub {
+    owner = "tmux-python";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256:0syj8m4x2mcq96b76b7h75dsmcai22m15pfgkk90rpg7rp6sn772";
   };
 
-  checkInputs = [ pytest ];
-  postPatch = ''
-    sed -i 's/==.*$//' requirements/test.txt
-  '';
+  nativeBuildInputs = [
+    poetry-core
+  ];
 
-  # No tests in archive
-  doCheck = false;
+  checkInputs = [
+    pkgs.procps
+    pkgs.tmux
+    pytestCheckHook
+  ];
 
   meta = with lib; {
     description = "Scripting library for tmux";
diff --git a/pkgs/development/python-modules/libusb1/default.nix b/pkgs/development/python-modules/libusb1/default.nix
index f1b474b960f67..da84d890ecedf 100644
--- a/pkgs/development/python-modules/libusb1/default.nix
+++ b/pkgs/development/python-modules/libusb1/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "libusb1";
-  version = "2.0.1";
+  version = "3.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d3ba82ecf7ab6a48d21dac6697e26504670cc3522b8e5941bd28fb56cf3f6c46";
+    sha256 = "5792a9defee40f15d330a40d9b1800545c32e47ba7fc66b6f28f133c9fcc8538";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/libvirt/5.9.0.nix b/pkgs/development/python-modules/libvirt/5.9.0.nix
deleted file mode 100644
index 9cbd042c55aea..0000000000000
--- a/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/pkgs/development/python-modules/libvirt/default.nix b/pkgs/development/python-modules/libvirt/default.nix
index c2c0469aa8198..a8e21a698f7f6 100644
--- a/pkgs/development/python-modules/libvirt/default.nix
+++ b/pkgs/development/python-modules/libvirt/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "libvirt";
-  version = "7.9.0";
+  version = "7.10.0";
 
   src = assert version == libvirt.version; fetchFromGitLab {
     owner = "libvirt";
     repo = "libvirt-python";
     rev = "v${version}";
-    sha256 = "sha256-cfCyQ3KTv0lYTZMriUhm6psBAcJJIcmR/M9V/lrLmVE=";
+    sha256 = "sha256-I1FNjNwWRyDAUSq2Co9EnjAbzKQtS0Rx8vHgPsFzSYw=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/pkgs/development/python-modules/lightblue/default.nix b/pkgs/development/python-modules/lightblue/default.nix
deleted file mode 100644
index feb2718124431..0000000000000
--- a/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/pkgs/development/python-modules/lightgbm/default.nix b/pkgs/development/python-modules/lightgbm/default.nix
index 7e241be4aafee..015417151b7a2 100644
--- a/pkgs/development/python-modules/lightgbm/default.nix
+++ b/pkgs/development/python-modules/lightgbm/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "lightgbm";
-  version = "3.3.1";
+  version = "3.3.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5b9f31759ab4e94d9409deb03104c55b0a40058a6ccea804022046d926bc4904";
+    sha256 = "5d25d16e77c844c297ece2044df57651139bc3c8ad8c4108916374267ac68b64";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/lightwave/default.nix b/pkgs/development/python-modules/lightwave/default.nix
new file mode 100644
index 0000000000000..ba937f7700d9c
--- /dev/null
+++ b/pkgs/development/python-modules/lightwave/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "lightwave";
+  version = "0.20";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-jhffMDhgQ257ZQxvidiRgBSnZvzLJFKNU2NZ8AyGTGc=";
+  };
+
+  pythonImportsCheck = [
+    "lightwave"
+  ];
+
+  # Requires phyiscal hardware
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Module for interacting with LightwaveRF hubs";
+    homepage = "https://github.com/GeoffAtHome/lightwave";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/lightwave2/default.nix b/pkgs/development/python-modules/lightwave2/default.nix
index 61bb86b8f7697..f840a2186cfb7 100644
--- a/pkgs/development/python-modules/lightwave2/default.nix
+++ b/pkgs/development/python-modules/lightwave2/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "lightwave2";
-  version = "0.8.0";
+  version = "0.8.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2f18ee4aba0431236a4c48a032de6714cfb56ff1e97c86d48cfe619eb961b21a";
+    sha256 = "sha256-UULOQawsY2N0xxYlgIZKs8Xyl0XDqC6fSSKvo8ZBEcY=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/limiter/default.nix b/pkgs/development/python-modules/limiter/default.nix
index 21217f34673f7..f550651c104d6 100644
--- a/pkgs/development/python-modules/limiter/default.nix
+++ b/pkgs/development/python-modules/limiter/default.nix
@@ -2,32 +2,30 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pythonOlder
+, strenum
 , token-bucket
 }:
 
 buildPythonPackage rec {
   pname = "limiter";
-  version = "0.1.2";
+  version = "0.3.1";
+  format = "setuptools";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "alexdelorenzo";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0cdqw08qw3cid1yjknlh4hqfl46xh4madkjrl7sxk2c1pbwils8r";
+    hash = "sha256-2Et4ozVf9t+tp2XtLbDk/LgLIU+jQAEAlU8hA5lpxdk=";
   };
 
   propagatedBuildInputs = [
+    strenum
     token-bucket
   ];
 
-  postPatch = ''
-    substituteInPlace requirements.txt \
-      --replace "token-bucket==0.2.0" "token-bucket>=0.2.0"
-  '';
-
-  # Project has no tests
+  # Module has no tests
   doCheck = false;
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/limits/default.nix b/pkgs/development/python-modules/limits/default.nix
index fc6982440d63e..9a19dda15789a 100644
--- a/pkgs/development/python-modules/limits/default.nix
+++ b/pkgs/development/python-modules/limits/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "limits";
-  version = "1.5.1";
+  version = "2.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f0c3319f032c4bfad68438ed1325c0fac86dac64582c7c25cddc87a0b658fa20";
+    sha256 = "da6346f0dcf85f17f0f1cc709c3408a3058cf6fee68313c288127c287237b411";
   };
 
   propagatedBuildInputs = [ six ];
diff --git a/pkgs/development/python-modules/limnoria/default.nix b/pkgs/development/python-modules/limnoria/default.nix
index ba45ffbdeac4e..0467790c29763 100644
--- a/pkgs/development/python-modules/limnoria/default.nix
+++ b/pkgs/development/python-modules/limnoria/default.nix
@@ -1,27 +1,62 @@
 { lib
 , buildPythonPackage
+, chardet
+, cryptography
+, feedparser
 , fetchPypi
-, isPy27
-, git
+, mock
+, pysocks
+, pytestCheckHook
+, python-dateutil
+, python-gnupg
+, pythonOlder
+, pytz
 }:
 
 buildPythonPackage rec {
   pname = "limnoria";
-  version = "2021.11.20";
-  disabled = isPy27; # abandoned upstream
+  version = "2022.2.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "da9c33497a09b4ed0cff6ed44954bbde6cb317edb68d56c73ef235128a802c11";
+    hash = "sha256-Jc11hS+WrRnjgYOUpc+GdkRoNV/DUJhQK6rI2lUkEIA=";
   };
 
+  propagatedBuildInputs = [
+    chardet
+    cryptography
+    feedparser
+    mock
+    pysocks
+    python-dateutil
+    python-gnupg
+  ] ++ lib.optionals (pythonOlder "3.9") [
+    pytz
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
   postPatch = ''
-    sed -i 's/version=version/version="${version}"/' setup.py
+    substituteInPlace setup.py \
+      --replace "version=version" 'version="${version}"'
   '';
-  buildInputs = [ git ];
 
-  # cannot be imported
-  doCheck = false;
+  checkPhase = ''
+    runHook preCheck
+    export PATH="$PATH:$out/bin";
+    supybot-test test -v --no-network
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [
+    # Uses the same names as Supybot
+    "supybot"
+  ];
 
   meta = with lib; {
     description = "A modified version of Supybot, an IRC bot";
@@ -29,5 +64,4 @@ buildPythonPackage rec {
     license = licenses.bsd3;
     maintainers = with maintainers; [ goibhniu ];
   };
-
 }
diff --git a/pkgs/development/python-modules/liquidctl/default.nix b/pkgs/development/python-modules/liquidctl/default.nix
index c37183e22ec0f..ddf73ee56b86c 100644
--- a/pkgs/development/python-modules/liquidctl/default.nix
+++ b/pkgs/development/python-modules/liquidctl/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "liquidctl";
-  version = "1.7.2";
+  version = "1.8.1";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-fPSvxdr329SxAe4N7lTa7hddFp1WVUplkhYD1oDQXAI=";
+    sha256 = "0cl1xg3rqpn4yjflwcz667pwfjnbq0g41pkg2nak7x9mxqnbdk70";
   };
 
   nativeBuildInputs = [ installShellFiles ];
diff --git a/pkgs/development/python-modules/llvmlite/default.nix b/pkgs/development/python-modules/llvmlite/default.nix
index e3b9e3bb7c8a1..637a4deb3abb6 100644
--- a/pkgs/development/python-modules/llvmlite/default.nix
+++ b/pkgs/development/python-modules/llvmlite/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "llvmlite";
-  version = "0.37.0";
+  version = "0.38.0";
 
   disabled = isPyPy || !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6392b870cd018ec0c645d6bbb918d6aa0eeca8c62674baaee30862d6b6865b15";
+    sha256 = "a99d166ccf3b116f3b9ed23b9b70ba2415640a9c978f3aaa13fad49c58f4965c";
   };
 
   nativeBuildInputs = [ llvm ];
diff --git a/pkgs/development/python-modules/lmdb/default.nix b/pkgs/development/python-modules/lmdb/default.nix
index 3e78626238a7a..8efc1e3fb12ca 100644
--- a/pkgs/development/python-modules/lmdb/default.nix
+++ b/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/pkgs/development/python-modules/locationsharinglib/default.nix b/pkgs/development/python-modules/locationsharinglib/default.nix
index 42cf477ca1607..2004f962098b6 100644
--- a/pkgs/development/python-modules/locationsharinglib/default.nix
+++ b/pkgs/development/python-modules/locationsharinglib/default.nix
@@ -6,7 +6,6 @@
 , emoji
 , fetchPypi
 , nose
-, python
 , pythonOlder
 , pytz
 , requests
@@ -46,7 +45,7 @@ buildPythonPackage rec {
   checkPhase = ''
     runHook preCheck
     # Only coverage no real unit tests
-    ${python.interpreter} setup.py nosetests
+    nosetests
     runHook postCheck
   '';
 
diff --git a/pkgs/development/python-modules/logfury/default.nix b/pkgs/development/python-modules/logfury/default.nix
index 64766c232cdb7..d25278a4e57c2 100644
--- a/pkgs/development/python-modules/logfury/default.nix
+++ b/pkgs/development/python-modules/logfury/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, funcsigs
 , setuptools-scm
 , pytestCheckHook
 , pythonOlder
@@ -11,22 +10,19 @@
 buildPythonPackage rec {
   pname = "logfury";
   version = "1.0.1";
+  format = "setuptools";
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-EwpdrOq5rVNJJCUt33BIKqLJZmKzo4JafTCYHQO3aiY=";
+    hash = "sha256-EwpdrOq5rVNJJCUt33BIKqLJZmKzo4JafTCYHQO3aiY=";
   };
 
   nativeBuildInputs = [
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
-    funcsigs
-  ];
-
   checkInputs = [
     pytestCheckHook
     testfixtures
diff --git a/pkgs/development/python-modules/loguru/default.nix b/pkgs/development/python-modules/loguru/default.nix
index 3134d956af786..1a7982026bcd7 100644
--- a/pkgs/development/python-modules/loguru/default.nix
+++ b/pkgs/development/python-modules/loguru/default.nix
@@ -1,42 +1,55 @@
 { lib
 , stdenv
+, aiocontextvars
 , buildPythonPackage
-, fetchPypi
-, fetchpatch
-, isPy27
 , colorama
+, fetchpatch
+, fetchPypi
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "loguru";
-  version = "0.5.3";
+  version = "0.6.0";
+  format = "setuptools";
 
-  disabled = isPy27;
+  disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b28e72ac7a98be3d28ad28570299a393dfcd32e5e3f6a353dec94675767b6319";
+    sha256 = "sha256-BmvQZ1jQpRPpg2/ZxrWnW/s/02hB9LmWvGC1R6MJ1Bw=";
   };
 
-  patches = [
-    # Fixes tests with pytest>=6.2.2. Will be part of the next release after 0.5.3
-    (fetchpatch {
-      url = "https://github.com/Delgan/loguru/commit/31cf758ee9d22dbfa125f38153782fe20ac9dce5.patch";
-      sha256 = "1lzbs8akg1s7s6xjl3samf4c4bpssqvwg5fn3mwlm4ysr7jd5y67";
-    })
-    # fix tests with Python 3.9
-    (fetchpatch {
-      url = "https://github.com/Delgan/loguru/commit/19f518c5f1f355703ffc4ee62f0e1e397605863e.patch";
-      sha256 = "0yn6smik58wdffr4svqsy2n212fwdlcfcwpgqhl9hq2zlivmsdc6";
-    })
+  propagatedBuildInputs = lib.optionals (pythonOlder "3.7") [
+    aiocontextvars
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    colorama
   ];
 
-  checkInputs = [ pytestCheckHook colorama ];
+  disabledTestPaths = lib.optionals stdenv.isDarwin [
+    "tests/test_multiprocessing.py"
+  ];
 
-  disabledTestPaths = lib.optionals stdenv.isDarwin [ "tests/test_multiprocessing.py" ];
-  disabledTests = [ "test_time_rotation_reopening" "test_file_buffering" ]
-    ++ lib.optionals stdenv.isDarwin [ "test_rotation_and_retention" "test_rotation_and_retention_timed_file" "test_renaming" "test_await_complete_inheritance" ];
+  disabledTests = [
+    "test_time_rotation_reopening"
+    "test_file_buffering"
+    # Tests are failing with Python 3.10
+    "test_exception_others"
+    ""
+  ] ++ lib.optionals stdenv.isDarwin [
+    "test_rotation_and_retention"
+    "test_rotation_and_retention_timed_file"
+    "test_renaming"
+    "test_await_complete_inheritance"
+  ];
+
+  pythonImportsCheck = [
+    "loguru"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/Delgan/loguru";
diff --git a/pkgs/development/python-modules/loo-py/default.nix b/pkgs/development/python-modules/loo-py/default.nix
index 16060c1c030e8..d16b06a284abe 100644
--- a/pkgs/development/python-modules/loo-py/default.nix
+++ b/pkgs/development/python-modules/loo-py/default.nix
@@ -15,12 +15,12 @@
 
 buildPythonPackage rec {
   pname = "loo-py";
-  version = "2017.2";
+  version = "2020.2";
 
   src = fetchPypi {
     pname = "loo.py";
     inherit version;
-    sha256 = "c656992de48b328cdaccd7d1f14eb522b9dd5a1d0d15f54623f4ab18fd219abc";
+    sha256 = "c0aba31f8b61f6487e84120a154fab862d19c3b374ad4285b987c4f2d746d51f";
   };
 
   checkInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/losant-rest/default.nix b/pkgs/development/python-modules/losant-rest/default.nix
index 36b6efa724e29..83ff792a62a34 100644
--- a/pkgs/development/python-modules/losant-rest/default.nix
+++ b/pkgs/development/python-modules/losant-rest/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "losant-rest";
-  version = "1.15.1";
+  version = "1.15.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "Losant";
     repo = "losant-rest-python";
     rev = "v${version}";
-    sha256 = "sha256-j8Vzr83pvl/AnXfA+nl5uRXf+y6ndKmQHM3bl306wFM=";
+    sha256 = "sha256-JmLQ3Hj9WnL/XfMxDiVAizGFASWMwF36ohp8asErUMM=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/lpod/default.nix b/pkgs/development/python-modules/lpod/default.nix
deleted file mode 100644
index 9c719d234f897..0000000000000
--- a/pkgs/development/python-modules/lpod/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, lxml
-, docutils
-, pillow
-, isPy3k
-}:
-
-buildPythonPackage {
-  version = "1.1.7";
-  pname = "python-lpod";
-  # lpod library currently does not support Python 3.x
-  disabled = isPy3k;
-
-  propagatedBuildInputs = [ lxml docutils pillow ];
-
-  src = fetchFromGitHub {
-    owner = "lpod";
-    repo = "lpod-python";
-    rev = "dee32120ee582ff337b0c52a95a9a87cca71fd67";
-    sha256 = "1mikvzp27wxkzpr2lii4wg1hhx8h610agckqynvsrdc8v3nw9ciw";
-  };
-
-  meta = with lib; {
-    homepage = "https://github.com/lpod/lpod-python/";
-    description = "Library implementing the ISO/IEC 26300 OpenDocument Format standard (ODF) ";
-    license = licenses.gpl3;
-  };
-
-}
diff --git a/pkgs/development/python-modules/lsi/default.nix b/pkgs/development/python-modules/lsi/default.nix
deleted file mode 100644
index b570a62d9e344..0000000000000
--- a/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/pkgs/development/python-modules/luddite/default.nix b/pkgs/development/python-modules/luddite/default.nix
index 7e8a1c5dfedd0..46a5f2952902b 100644
--- a/pkgs/development/python-modules/luddite/default.nix
+++ b/pkgs/development/python-modules/luddite/default.nix
@@ -32,6 +32,6 @@ buildPythonPackage rec {
     description = "Checks for out-of-date package versions";
     homepage = "https://github.com/jumptrading/luddite";
     license = licenses.asl20;
-    maintainers = with maintainers; [ angustrau ];
+    maintainers = with maintainers; [ emilytrau ];
   };
 }
diff --git a/pkgs/development/python-modules/luftdaten/default.nix b/pkgs/development/python-modules/luftdaten/default.nix
index c8ca8254b3633..e14db125fba52 100644
--- a/pkgs/development/python-modules/luftdaten/default.nix
+++ b/pkgs/development/python-modules/luftdaten/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "luftdaten";
-  version = "0.7.1";
+  version = "0.7.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "home-assistant-ecosystem";
     repo = "python-luftdaten";
     rev = version;
-    sha256 = "sha256-76Y5TJet0WtzYXuK8Og0rmpsUIlXK7b37oesh+MliU8=";
+    sha256 = "sha256-tYaY/F4mdO5k+Oj+RkNFWP8xqh1xuDyoAKBFzAhamkA=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/lupupy/default.nix b/pkgs/development/python-modules/lupupy/default.nix
index 23ec7c33c2052..8daee818d9dde 100644
--- a/pkgs/development/python-modules/lupupy/default.nix
+++ b/pkgs/development/python-modules/lupupy/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "lupupy";
-  version = "0.1.1";
+  version = "0.1.9";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-bWBiM+u5wl9fWqL8k+R2IaYXSNnc4IxgWgUzyJVxkKk=";
+    sha256 = "sha256-UclKPuWcIa1nNFKqPIEnqlnJh0aXP50k2nMbHhT1aFs=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/luxtronik/default.nix b/pkgs/development/python-modules/luxtronik/default.nix
index 9aab07b016653..7df8532a4e2ae 100644
--- a/pkgs/development/python-modules/luxtronik/default.nix
+++ b/pkgs/development/python-modules/luxtronik/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "luxtronik";
-  version = "0.3.9";
+  version = "0.3.10";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "Bouni";
     repo = "python-luxtronik";
     rev = version;
-    sha256 = "mScdTQ82tV5fyy1S0YDDOz1UC4VB0OmSXD5gHp53WsE=";
+    sha256 = "sha256-JPY1HbNZanEsUpQ5W2kAwEFvwNGQI2hoogTZUGIg3YY=";
   };
 
   # Project has no tests
diff --git a/pkgs/development/python-modules/lxc/default.nix b/pkgs/development/python-modules/lxc/default.nix
deleted file mode 100644
index 4534e0a01ef39..0000000000000
--- a/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/pkgs/development/python-modules/lxml/default.nix b/pkgs/development/python-modules/lxml/default.nix
index 60deaa5af1272..2c549b6830a16 100644
--- a/pkgs/development/python-modules/lxml/default.nix
+++ b/pkgs/development/python-modules/lxml/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "lxml";
-  version = "4.6.4-5";
+  version = "4.7.1";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "lxml-${version}";
-    sha256 = "159cc48nl40qsx8pc8sasgny5xc0s3y0xrq3w3aw53s3ijncsgfl";
+    sha256 = "0xji4kcw1fl3nqg04q6zlympkx2kv2s1r1p18763dshgpisqgiq4";
   };
 
   # setuptoolsBuildPhase needs dependencies to be passed through nativeBuildInputs
diff --git a/pkgs/development/python-modules/lz4/default.nix b/pkgs/development/python-modules/lz4/default.nix
index cc84fa75c6997..9e2cc9b31e155 100644
--- a/pkgs/development/python-modules/lz4/default.nix
+++ b/pkgs/development/python-modules/lz4/default.nix
@@ -1,41 +1,68 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, future
-, isPy3k
+, pythonOlder
+
+# native inputs
 , pkgconfig
-, psutil
-, pytest
-, pytest-cov
-, pytest-runner
 , setuptools-scm
+
+# tests
+, psutil
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "python-lz4";
-  version = "3.1.10";
+  version = "3.1.12";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.5";
 
-  # get full repository inorder to run tests
+  # get full repository in order to run tests
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
-    rev = version;
-    sha256 = "0a4gic8xh3simkk5k8302rxwf765pr6y63k3js79mkl983vpxcim";
+    rev = "v${version}";
+    sha256 = "sha256-fqt9aJGqZpfbiYtU8cmm7UQaixZwbTKFBwRfR1B/qic=";
   };
 
-  nativeBuildInputs = [ setuptools-scm pkgconfig pytest-runner ];
-  checkInputs = [ pytest pytest-cov psutil ];
-  propagatedBuildInputs = lib.optionals (!isPy3k) [ future ];
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  postPatch = ''
+    sed -i '/pytest-cov/d' setup.py
+  '';
+
+  nativeBuildInputs = [
+    setuptools-scm
+    pkgconfig
+  ];
+
+  pythonImportsCheck = [
+    "lz4"
+    "lz4.block"
+    "lz4.frame"
+    "lz4.stream"
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    psutil
+  ];
+
+  # leave build directory, so the installed library gets imported
+  preCheck = ''
+    pushd tests
+  '';
 
-  # give a hint to setuptools-scm on package version
-  preBuild = ''
-    export SETUPTOOLS_SCM_PRETEND_VERSION="v${version}"
+  postCheck = ''
+    popd
   '';
 
-  meta = {
-     description = "LZ4 Bindings for Python";
-     homepage = "https://github.com/python-lz4/python-lz4";
-     license = lib.licenses.bsd3;
-     maintainers = with lib.maintainers; [ costrouc ];
+  meta = with lib; {
+    description = "LZ4 Bindings for Python";
+    homepage = "https://github.com/python-lz4/python-lz4";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/pkgs/development/python-modules/magicgui/default.nix b/pkgs/development/python-modules/magicgui/default.nix
new file mode 100644
index 0000000000000..03ca9d7915971
--- /dev/null
+++ b/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/pkgs/development/python-modules/mailchecker/default.nix b/pkgs/development/python-modules/mailchecker/default.nix
new file mode 100644
index 0000000000000..23146a4f5a7ce
--- /dev/null
+++ b/pkgs/development/python-modules/mailchecker/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "mailchecker";
+  version = "4.1.12";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-AqpT2Mqo5bjmKsu6WzVw/+AUOaSwlDfmXO0ufB6uc8A=";
+  };
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "MailChecker"
+  ];
+
+  meta = with lib; {
+    description = "Module for temporary (disposable/throwaway) email detection";
+    homepage = "https://github.com/FGRibreau/mailchecker";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/mailman-rss/default.nix b/pkgs/development/python-modules/mailman-rss/default.nix
deleted file mode 100644
index f71b62c67fc40..0000000000000
--- a/pkgs/development/python-modules/mailman-rss/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib, python3Packages, withTwitter ? false}:
-
-python3Packages.buildPythonApplication rec {
-  pname = "mailman-rss";
-  version = "0.2.4";
-
-  src = python3Packages.fetchPypi {
-    inherit pname version;
-    sha256 = "1brrik70jyagxa9l0cfmlxvqpilwj1q655bphxnvjxyganxf4c00";
-  };
-
-  propagatedBuildInputs = with python3Packages; [ python-dateutil future requests beautifulsoup4 ]
-    ++ lib.optional withTwitter python3Packages.twitter
-  ;
-
-  # No tests in Pypi Tarball
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Mailman archive -> rss converter";
-    homepage = "https://github.com/kyamagu/mailman-rss";
-    license = licenses.mit;
-    maintainers = with maintainers; [ samueldr ];
-  };
-}
diff --git a/pkgs/development/python-modules/makefun/default.nix b/pkgs/development/python-modules/makefun/default.nix
index aeb13abd0dfed..1d4ae635800c9 100644
--- a/pkgs/development/python-modules/makefun/default.nix
+++ b/pkgs/development/python-modules/makefun/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "makefun";
-  version = "1.12.1";
+  version = "1.13.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4d0e90ca3fdbdeb6a4a0891e2da7d4b8e80386e19e6db91ce29b8aa5c876ecfe";
+    sha256 = "985bb8b670ffbbb95d2a8aa996d318e6e9a3f26fc6f3ef2da93ebdf8f9c616bf";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/manimpango/default.nix b/pkgs/development/python-modules/manimpango/default.nix
index 5ff88388818f7..b717b44911739 100644
--- a/pkgs/development/python-modules/manimpango/default.nix
+++ b/pkgs/development/python-modules/manimpango/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "manimpango";
-  version = "0.4.0";
+  version = "0.4.0.post2";
 
   src = fetchFromGitHub {
     owner = "ManimCommunity";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1qffb04bz4s2anb6a7nm6dpqwdlvq6626z1whqwrwsvn8z9sry76";
+    sha256 = "sha256-BMRlEdvJJOUbsvKEoZx2qJqHSbL475dhBthUpnsXkn4=";
   };
 
   postPatch = ''
@@ -30,8 +30,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     homepage = "https://github.com/ManimCommunity/ManimPango";
-    license = licenses.gpl3Plus;
+    license = licenses.mit;
     description = "Binding for Pango";
-    maintainers = [ maintainers.angustrau ];
+    maintainers = [ maintainers.emilytrau ];
   };
 }
diff --git a/pkgs/development/python-modules/mapsplotlib/default.nix b/pkgs/development/python-modules/mapsplotlib/default.nix
deleted file mode 100644
index 28a6e9c0c5c4d..0000000000000
--- a/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/pkgs/development/python-modules/marionette-harness/default.nix b/pkgs/development/python-modules/marionette-harness/default.nix
deleted file mode 100644
index 187e3a646a029..0000000000000
--- a/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/pkgs/development/python-modules/marionette-harness/marionette_driver.nix b/pkgs/development/python-modules/marionette-harness/marionette_driver.nix
deleted file mode 100644
index 28193528ed289..0000000000000
--- a/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/pkgs/development/python-modules/marionette-harness/mozcrash.nix b/pkgs/development/python-modules/marionette-harness/mozcrash.nix
deleted file mode 100644
index 18b39307a17ed..0000000000000
--- a/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/pkgs/development/python-modules/marionette-harness/mozdevice.nix b/pkgs/development/python-modules/marionette-harness/mozdevice.nix
deleted file mode 100644
index 56c8fc5254d2e..0000000000000
--- a/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/pkgs/development/python-modules/marionette-harness/mozfile.nix b/pkgs/development/python-modules/marionette-harness/mozfile.nix
deleted file mode 100644
index 2cce0a221244e..0000000000000
--- a/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/pkgs/development/python-modules/marionette-harness/mozhttpd.nix b/pkgs/development/python-modules/marionette-harness/mozhttpd.nix
deleted file mode 100644
index a7cbb7ece08cc..0000000000000
--- a/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/pkgs/development/python-modules/marionette-harness/mozinfo.nix b/pkgs/development/python-modules/marionette-harness/mozinfo.nix
deleted file mode 100644
index 99f3afc31f615..0000000000000
--- a/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/pkgs/development/python-modules/marionette-harness/mozlog.nix b/pkgs/development/python-modules/marionette-harness/mozlog.nix
deleted file mode 100644
index ee1aed055e742..0000000000000
--- a/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/pkgs/development/python-modules/marionette-harness/moznetwork.nix b/pkgs/development/python-modules/marionette-harness/moznetwork.nix
deleted file mode 100644
index 6bdc93f680a75..0000000000000
--- a/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/pkgs/development/python-modules/marionette-harness/mozprocess.nix b/pkgs/development/python-modules/marionette-harness/mozprocess.nix
deleted file mode 100644
index 91ed225ecb80c..0000000000000
--- a/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/pkgs/development/python-modules/marionette-harness/mozprofile.nix b/pkgs/development/python-modules/marionette-harness/mozprofile.nix
deleted file mode 100644
index 7075a37263b32..0000000000000
--- a/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/pkgs/development/python-modules/marionette-harness/mozrunner.nix b/pkgs/development/python-modules/marionette-harness/mozrunner.nix
deleted file mode 100644
index fc1d8a7bc7c83..0000000000000
--- a/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/pkgs/development/python-modules/marionette-harness/moztest.nix b/pkgs/development/python-modules/marionette-harness/moztest.nix
deleted file mode 100644
index 1c9f9259d995f..0000000000000
--- a/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/pkgs/development/python-modules/marionette-harness/mozversion.nix b/pkgs/development/python-modules/marionette-harness/mozversion.nix
deleted file mode 100644
index 9717a847d3596..0000000000000
--- a/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/pkgs/development/python-modules/marisa/default.nix b/pkgs/development/python-modules/marisa/default.nix
deleted file mode 100644
index 93a4ccb959f79..0000000000000
--- a/pkgs/development/python-modules/marisa/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib, buildPythonPackage, fetchFromGitHub, marisa, swig
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "marisa";
-  version = "1.3.40";
-
-  disabled = isPy3k;
-
-  src = fetchFromGitHub {
-    owner = "s-yata";
-    repo  = "marisa-trie";
-    rev   = "8dba9850b89d7828ebf33b8ab84df2b54d31260b";
-    sha256 = "0pkp9fggk53lxlicfwrskgx33qplc4v6njbavlnz4x4z63zd4933";
-  };
-
-  nativeBuildInputs = [ swig marisa ];
-  buildInputs = [ marisa ];
-
-  sourceRoot = "${src.name}/bindings/python";
-
-  meta = with lib; {
-    description = "Python binding for marisa package (do not confuse with marisa-trie python bindings)";
-    homepage    = "https://github.com/s-yata/marisa-trie";
-    license     = with licenses; [ bsd2 lgpl2 ];
-    maintainers = with maintainers; [ vanzef ];
-  };
-}
diff --git a/pkgs/development/python-modules/markdown-it-py/default.nix b/pkgs/development/python-modules/markdown-it-py/default.nix
index f056c104e759b..c1a0f58789bda 100644
--- a/pkgs/development/python-modules/markdown-it-py/default.nix
+++ b/pkgs/development/python-modules/markdown-it-py/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "markdown-it-py";
-  version = "2.0.0";
+  version = "2.0.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "executablebooks";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-ahg+aAVpAh07PZ1mfrne0EP9K2J4tb8eLp5XXFpWp00=";
+    sha256 = "0qrsl4ajhi2263i5q1kivp2s3n7naq3byfbsv11rni18skw3i2a6";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/markdown/3_1.nix b/pkgs/development/python-modules/markdown/3_1.nix
deleted file mode 100644
index 13ed2f1744a27..0000000000000
--- a/pkgs/development/python-modules/markdown/3_1.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
-, nose
-, pyyaml
-, pythonOlder
-, importlib-metadata
-}:
-
-buildPythonPackage rec {
-  pname = "Markdown";
-  version = "3.1.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a";
-  };
-
-  propagatedBuildInputs = [
-    setuptools
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
-
-  checkInputs = [ nose pyyaml ];
-
-  meta = {
-    description = "A Python implementation of John Gruber's Markdown with Extension support";
-    homepage = "https://github.com/Python-Markdown/markdown";
-    license = lib.licenses.bsd3;
-  };
-}
diff --git a/pkgs/development/python-modules/markdown/default.nix b/pkgs/development/python-modules/markdown/default.nix
index 83a4f224f2fb1..2c91e46d13d1b 100644
--- a/pkgs/development/python-modules/markdown/default.nix
+++ b/pkgs/development/python-modules/markdown/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "markdown";
-  version = "3.3.5";
+  version = "3.3.6";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     pname = "Markdown";
     inherit version;
-    sha256 = "sha256-JulUa/vN5fzQcr2PYSycG24md8uKrb32UgZnT0bd4Gk=";
+    sha256 = "sha256-dt+K4yKU7Dnc+JNAOCiC36Epdfh/RcPtHs2x6M78cAY=";
   };
 
   propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [
diff --git a/pkgs/development/python-modules/markups/default.nix b/pkgs/development/python-modules/markups/default.nix
new file mode 100644
index 0000000000000..2a0db14d96e7d
--- /dev/null
+++ b/pkgs/development/python-modules/markups/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, buildPythonPackage
+, docutils
+, fetchPypi
+, importlib-metadata
+, markdown
+, pygments
+, pytestCheckHook
+, python-markdown-math
+, pythonOlder
+, pyyaml
+, textile
+}:
+
+buildPythonPackage rec {
+  pname = "markups";
+  version = "3.1.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    pname = "Markups";
+    inherit version;
+    hash = "sha256-q5dHpywcZFdBjrQnbHmHGXfBOmVGGOTxLiofCZD78vw=";
+  };
+
+  propagatedBuildInputs = [
+    docutils
+    markdown
+    pygments
+    python-markdown-math
+    pyyaml
+    textile
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    importlib-metadata
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # AssertionError: '.selector .ch { color: #408080' not found in 'pre...
+    "test_get_pygments_stylesheet"
+  ];
+
+  pythonImportsCheck = [
+    "markups"
+  ];
+
+  meta = with lib; {
+    description = "Wrapper around various text markup languages";
+    homepage = "https://github.com/retext-project/pymarkups";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ klntsky ];
+  };
+}
diff --git a/pkgs/development/python-modules/markupsafe/1.nix b/pkgs/development/python-modules/markupsafe/1.nix
deleted file mode 100644
index ae0878c7a9723..0000000000000
--- a/pkgs/development/python-modules/markupsafe/1.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-}:
-
-buildPythonPackage rec {
-  pname = "MarkupSafe";
-  version = "1.1.1";
-
- src = fetchPypi {
-    inherit pname version;
-    sha256 = "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b";
-  };
-
-  meta = with lib; {
-    description = "Implements a XML/HTML/XHTML Markup safe string";
-    homepage = "http://dev.pocoo.org";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ domenkozar ];
-  };
-
-}
diff --git a/pkgs/development/python-modules/marshmallow-dataclass/default.nix b/pkgs/development/python-modules/marshmallow-dataclass/default.nix
index 145005fd5e39a..4b36ee9b74ef1 100644
--- a/pkgs/development/python-modules/marshmallow-dataclass/default.nix
+++ b/pkgs/development/python-modules/marshmallow-dataclass/default.nix
@@ -4,6 +4,7 @@
 , marshmallow
 , marshmallow-enum
 , pytestCheckHook
+, pythonAtLeast
 , pythonOlder
 , typeguard
 , typing-inspect
@@ -34,7 +35,20 @@ buildPythonPackage rec {
     typeguard
   ];
 
-  pythonImportsCheck = [ "marshmallow_dataclass" ];
+  pytestFlagsArray = [
+    # DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12.
+    "-W"
+    "ignore::DeprecationWarning"
+  ];
+
+  disabledTests = lib.optionals (pythonAtLeast "3.10") [
+    # TypeError: UserId is not a dataclass and cannot be turned into one.
+    "test_newtype"
+  ];
+
+  pythonImportsCheck = [
+    "marshmallow_dataclass"
+  ];
 
   meta = with lib; {
     description = "Automatic generation of marshmallow schemas from dataclasses";
diff --git a/pkgs/development/python-modules/marshmallow-sqlalchemy/default.nix b/pkgs/development/python-modules/marshmallow-sqlalchemy/default.nix
index 1aeaa04e1721c..9887f42bd8f39 100644
--- a/pkgs/development/python-modules/marshmallow-sqlalchemy/default.nix
+++ b/pkgs/development/python-modules/marshmallow-sqlalchemy/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "marshmallow-sqlalchemy";
-  version = "0.26.1";
+  version = "0.27.0";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d8525f74de51554b5c8491effe036f60629a426229befa33ff614c8569a16a73";
+    sha256 = "1521b129564444648c523a38f6446c137f1aae5c9c7de1ec151d5ebf03fd407d";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/mat2/default.nix b/pkgs/development/python-modules/mat2/default.nix
index 0d54656c1586c..97b52855f6bad 100644
--- a/pkgs/development/python-modules/mat2/default.nix
+++ b/pkgs/development/python-modules/mat2/default.nix
@@ -7,7 +7,7 @@
 , bubblewrap
 , exiftool
 , ffmpeg
-, mime-types
+, mailcap
 , wrapGAppsHook
 , gdk-pixbuf
 , gobject-introspection
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "mat2";
-  version = "0.12.2";
+  version = "0.12.3";
 
   disabled = pythonOlder "3.5";
 
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     owner = "jvoisin";
     repo = "mat2";
     rev = version;
-    sha256 = "sha256-KaHdBmTeBlCRaVkG3WsfDtFo45s/X69x7VGDYY7W5O8=";
+    hash = "sha256-TW+FwlZ+J1tanPL5WuwXtZJmtYB9LaimeIaPlN/jzqo=";
   };
 
   patches = [
@@ -40,8 +40,6 @@ buildPythonPackage rec {
       bwrap = "${bubblewrap}/bin/bwrap";
       exiftool = "${exiftool}/bin/exiftool";
       ffmpeg = "${ffmpeg}/bin/ffmpeg";
-      # remove once faf0f8a8a4134edbeec0a73de7f938453444186d is in master
-      mimetypes = "${mime-types}/etc/mime.types";
     } // lib.optionalAttrs dolphinIntegration {
       kdialog = "${plasma5Packages.kdialog}/bin/kdialog";
     }))
@@ -49,6 +47,11 @@ buildPythonPackage rec {
     ./executable-name.patch
     # hardcode path to mat2 executable
     ./tests.patch
+    # fix gobject-introspection typelib path for Nautilus extension
+    (substituteAll {
+      src = ./fix_poppler.patch;
+      poppler_path = "${poppler_gi}/lib/girepository-1.0";
+    })
   ];
 
   postPatch = ''
@@ -78,7 +81,7 @@ buildPythonPackage rec {
     install -Dm 444 data/mat2.svg -t "$out/share/icons/hicolor/scalable/apps"
     install -Dm 444 doc/mat2.1 -t "$out/share/man/man1"
     install -Dm 444 nautilus/mat2.py -t "$out/share/nautilus-python/extensions"
-    buildPythonPath "$out $pythonPath"
+    buildPythonPath "$out $pythonPath $propagatedBuildInputs"
     patchPythonScript "$out/share/nautilus-python/extensions/mat2.py"
   '' + lib.optionalString dolphinIntegration ''
     install -Dm 444 dolphin/mat2.desktop -t "$out/share/kservices5/ServiceMenus"
diff --git a/pkgs/development/python-modules/mat2/fix_poppler.patch b/pkgs/development/python-modules/mat2/fix_poppler.patch
new file mode 100644
index 0000000000000..02bdbb6345dc0
--- /dev/null
+++ b/pkgs/development/python-modules/mat2/fix_poppler.patch
@@ -0,0 +1,14 @@
+diff --git a/nautilus/mat2.py b/nautilus/mat2.py
+index 11e6986..5a0e68f 100644
+--- a/nautilus/mat2.py
++++ b/nautilus/mat2.py
+@@ -22,6 +22,9 @@ import gi
+ gi.require_version('Nautilus', '3.0')
+ gi.require_version('Gtk', '3.0')
+ gi.require_version('GdkPixbuf', '2.0')
++gi.require_version('GIRepository', '2.0')
++from gi.repository import GIRepository
++GIRepository.Repository.prepend_search_path('@poppler_path@')
+ from gi.repository import Nautilus, GObject, Gtk, Gio, GLib, GdkPixbuf
+ 
+ from libmat2 import parser_factory
diff --git a/pkgs/development/python-modules/mat2/paths.patch b/pkgs/development/python-modules/mat2/paths.patch
index 7e828d3f53399..50b0c9aaa7893 100644
--- a/pkgs/development/python-modules/mat2/paths.patch
+++ b/pkgs/development/python-modules/mat2/paths.patch
@@ -1,5 +1,5 @@
 diff --git a/dolphin/mat2.desktop b/dolphin/mat2.desktop
-index d365bc5..56313e2 100644
+index 41c8de4..11df258 100644
 --- a/dolphin/mat2.desktop
 +++ b/dolphin/mat2.desktop
 @@ -8,6 +8,6 @@ Type=Service
@@ -7,11 +7,11 @@ index d365bc5..56313e2 100644
  Name[de]=Metadaten löschen
  Name[es]=Limpiar metadatos
 -Icon=/usr/share/icons/hicolor/scalable/apps/mat2.svg
--Exec=kdialog --yesno  "$( mat2 -s %U )" --title "Clean Metadata?" && mat2 %U
--Exec[de]=kdialog --yesno  "$( mat2 -s %U )" --title "Metadaten löschen?" && mat2 %U
+-Exec=kdialog --yesno  "$( mat2 -s %F )" --title "Clean Metadata?" && mat2 %U
+-Exec[de]=kdialog --yesno  "$( mat2 -s %F )" --title "Metadaten löschen?" && mat2 %U
 +Icon=@mat2svg@
-+Exec=@kdialog@ --yesno  "$( mat2 -s %U )" --title "Clean Metadata?" && mat2 %U
-+Exec[de]=@kdialog@ --yesno  "$( mat2 -s %U )" --title "Metadaten löschen?" && mat2 %U
++Exec=@kdialog@ --yesno  "$( @mat2@ -s %F )" --title "Clean Metadata?" && @mat2@ %U
++Exec[de]=@kdialog@ --yesno  "$( @mat2@ -s %F )" --title "Metadaten löschen?" && @mat2@ %U
 diff --git a/libmat2/bubblewrap.py b/libmat2/bubblewrap.py
 index 970d5dd..5d3c0b7 100644
 --- a/libmat2/bubblewrap.py
@@ -76,20 +76,8 @@ index eb65b2a..51a0fa1 100644
 -
 -    raise RuntimeError("Unable to find exiftool")
 +    return '@exiftool@'
-diff --git a/libmat2/parser_factory.py b/libmat2/parser_factory.py
-index 9965432..bd45179 100644
---- a/libmat2/parser_factory.py
-+++ b/libmat2/parser_factory.py
-@@ -8,6 +8,7 @@ from . import abstract, UNSUPPORTED_EXTENSIONS
- 
- T = TypeVar('T', bound='abstract.AbstractParser')
- 
-+mimetypes.init(['@mimetypes@'])
- mimetypes.add_type('application/epub+zip', '.epub')
- mimetypes.add_type('application/x-dtbncx+xml', '.ncx')  # EPUB Navigation Control XML File
- 
 diff --git a/libmat2/video.py b/libmat2/video.py
-index b4a3232..3dd7ee5 100644
+index ae9e463..2acc65c 100644
 --- a/libmat2/video.py
 +++ b/libmat2/video.py
 @@ -1,6 +1,4 @@
diff --git a/pkgs/development/python-modules/matplotlib-inline/default.nix b/pkgs/development/python-modules/matplotlib-inline/default.nix
index 9ee23b87ee81a..d863239430dc1 100644
--- a/pkgs/development/python-modules/matplotlib-inline/default.nix
+++ b/pkgs/development/python-modules/matplotlib-inline/default.nix
@@ -1,5 +1,4 @@
 { lib, buildPythonPackage, fetchPypi
-, matplotlib
 , traitlets
 
 # tests
@@ -16,7 +15,6 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [
-    matplotlib # not documented, but required
     traitlets
   ];
 
diff --git a/pkgs/development/python-modules/matplotlib/2.nix b/pkgs/development/python-modules/matplotlib/2.nix
deleted file mode 100644
index 96d33b681ebce..0000000000000
--- a/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/pkgs/development/python-modules/matrix-common/default.nix b/pkgs/development/python-modules/matrix-common/default.nix
new file mode 100644
index 0000000000000..44d37b988a7de
--- /dev/null
+++ b/pkgs/development/python-modules/matrix-common/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, lib
+, buildPythonPackage
+, fetchPypi
+, attrs
+}:
+
+buildPythonPackage rec {
+  pname = "matrix_common";
+  version = "1.0.0";
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-ZmiKRoJ8hv1USuJBDzV2U1uIFt2lRxmT+iAOqOShJK4=";
+  };
+
+  propagatedBuildInputs = [ attrs ];
+  pythonImportsCheck = [ "matrix_common" ];
+
+  meta = with lib; {
+    description = "Common utilities for Synapse, Sydent and Sygnal";
+    homepage = "https://github.com/matrix-org/matrix-python-common";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ sumnerevans ];
+  };
+}
diff --git a/pkgs/development/python-modules/matrix-nio/default.nix b/pkgs/development/python-modules/matrix-nio/default.nix
index 69721aeb82801..665167e290ea9 100644
--- a/pkgs/development/python-modules/matrix-nio/default.nix
+++ b/pkgs/development/python-modules/matrix-nio/default.nix
@@ -28,22 +28,21 @@
 
 buildPythonPackage rec {
   pname = "matrix-nio";
-  version = "0.18.7";
+  version = "0.19.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "poljar";
     repo = "matrix-nio";
     rev = version;
-    hash = "sha256-eti9kvfv3y7m+mJzcxftyn8OyVSd2Ehqd3eU2ezMV5Q=";
+    hash = "sha256-+WZk2m05y/bYj8zSuWTzm+rnCC0L9H9WNQ2RLXv7hDk=";
   };
 
   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"'
+      --replace 'aiofiles = "^0.6.0"' 'aiofiles = "*"' \
+      --replace 'jsonschema = "^3.2.0"' 'jsonschema = "*"' \
+      --replace 'cachetools = { version = "^4.2.1", optional = true }' 'cachetools = { version = "*", optional = true }'
   '';
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/mattermostdriver/default.nix b/pkgs/development/python-modules/mattermostdriver/default.nix
index 6a0be0696063c..2564670c8b996 100644
--- a/pkgs/development/python-modules/mattermostdriver/default.nix
+++ b/pkgs/development/python-modules/mattermostdriver/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "mattermostdriver";
-  version = "7.3.1";
+  version = "7.3.2";
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bf629c4b8f825bd7196208aa93995ac5077bd60939ba67cca314a7f13c1dbcea";
+    sha256 = "2e4d7b4a17d3013e279c6f993746ea18cd60b45d8fa3be24f47bc2de22b9b3b4";
   };
 
   propagatedBuildInputs = [ websockets requests ];
diff --git a/pkgs/development/python-modules/mautrix/default.nix b/pkgs/development/python-modules/mautrix/default.nix
index 1be685e013b49..683b3c099e054 100644
--- a/pkgs/development/python-modules/mautrix/default.nix
+++ b/pkgs/development/python-modules/mautrix/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "mautrix";
-  version = "0.14.0";
+  version = "0.14.10";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5ad04e87bcf31eb3479fdd3cabd5082b257013e5c00f6b369539a2b584afadaf";
+    sha256 = "sha256-mO0bKUepIjb50UKEOvFIaepHAskehkBajevsTRST8e4=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/mayavi/default.nix b/pkgs/development/python-modules/mayavi/default.nix
index 6f13e63b93415..7ffbbf888f340 100644
--- a/pkgs/development/python-modules/mayavi/default.nix
+++ b/pkgs/development/python-modules/mayavi/default.nix
@@ -1,16 +1,27 @@
-{ lib, buildPythonPackage, pythonOlder, fetchPypi, wrapQtAppsHook
-, pyface, pygments, numpy, vtk, traitsui, envisage, apptools, pyqt5
+{ lib
+, apptools
+, buildPythonPackage
+, envisage
+, fetchPypi
+, numpy
+, pyface
+, pygments
+, pyqt5
+, pythonOlder
+, traitsui
+, vtk
+, wrapQtAppsHook
 }:
 
 buildPythonPackage rec {
   pname = "mayavi";
   version = "4.7.4";
+  format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    extension = "tar.gz";
     sha256 = "ec50e7ec6afb0f9224ad1863d104a0d1ded6c8deb13e720652007aaca2303332";
   };
 
@@ -24,14 +35,27 @@ buildPythonPackage rec {
       --replace "build.build.run(self)" "build.build.run(self); return"
   '';
 
-  nativeBuildInputs = [ wrapQtAppsHook ];
+  nativeBuildInputs = [
+    wrapQtAppsHook
+  ];
 
   propagatedBuildInputs = [
-    pyface pygments numpy vtk traitsui envisage apptools pyqt5
+    apptools
+    envisage
+    numpy
+    pyface
+    pygments
+    pyqt5
+    traitsui
+    vtk
   ];
 
-  doCheck = false; # Needs X server
-  pythonImportsCheck = [ "mayavi" ];
+  # Needs X server
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "mayavi"
+  ];
 
   preFixup = ''
     makeWrapperArgs+=("''${qtWrapperArgs[@]}")
@@ -40,7 +64,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "3D visualization of scientific data in Python";
     homepage = "https://github.com/enthought/mayavi";
-    maintainers = with maintainers; [ knedlsepp ];
     license = licenses.bsdOriginal;
+    maintainers = with maintainers; [ knedlsepp ];
   };
 }
diff --git a/pkgs/development/python-modules/mcstatus/default.nix b/pkgs/development/python-modules/mcstatus/default.nix
index f5c6c276867ff..5045964ffde7d 100644
--- a/pkgs/development/python-modules/mcstatus/default.nix
+++ b/pkgs/development/python-modules/mcstatus/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "mcstatus";
-  version = "7.0.0";
+  version = "8.0.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "Dinnerbone";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-/EoVM3wEiA2suJHxMu2zZktQhO6T9grWcvWuzmUe6V0=";
+    sha256 = "sha256-19VO5L5abVGm5zEMt88o67ArLjBCnGO2DxfAD+u1hF4=";
   };
 
   nativeBuildInputs = [
@@ -46,6 +46,7 @@ buildPythonPackage rec {
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace 'asyncio-dgram = "1.2.0"' 'asyncio-dgram = ">=1.2.0"' \
+      --replace 'dnspython = "2.1.0"' 'dnspython = "^2.1.0"' \
       --replace 'six = "1.14.0"' 'six = ">=1.14.0"' \
       --replace 'click = "7.1.2"' 'click = ">=7.1.2"'
   '';
diff --git a/pkgs/development/python-modules/md-toc/default.nix b/pkgs/development/python-modules/md-toc/default.nix
index 58670c49a90b9..a37e82a62d34e 100644
--- a/pkgs/development/python-modules/md-toc/default.nix
+++ b/pkgs/development/python-modules/md-toc/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "md-toc";
-  version = "8.1.0";
+  version = "8.1.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.5";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "frnmst";
     repo = pname;
     rev = version;
-    sha256 = "sha256-FTvHPV/QIpKRF7wcZ6yuik4GzPrwyg4Oxc5/cdCs6Qo=";
+    sha256 = "sha256-Dlqia+B7WJZlFGlIhgUWdND1qhSS/FOPoFH+uim6i8I=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/md2gemini/default.nix b/pkgs/development/python-modules/md2gemini/default.nix
index 7b4686dcac405..5d7b53f77a444 100644
--- a/pkgs/development/python-modules/md2gemini/default.nix
+++ b/pkgs/development/python-modules/md2gemini/default.nix
@@ -3,7 +3,7 @@
 
 buildPythonPackage rec {
   pname = "md2gemini";
-  version = "1.8.1";
+  version = "1.9.0";
 
   propagatedBuildInputs = [ mistune_2_0 cjkwrap wcwidth ];
   checkInputs = [ pytestCheckHook ];
@@ -11,7 +11,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0mfa0f0m762168fbsxjr1cx9yhj82dr8z1d28jl6hj9bkqnvvwiy";
+    sha256 = "sha256-d1zuK+NqoPS36ihh8qx9gOET94tApY+SGStsc/bITnU=";
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/mdformat/default.nix b/pkgs/development/python-modules/mdformat/default.nix
index 02aafd3302a94..1ab425ade551e 100644
--- a/pkgs/development/python-modules/mdformat/default.nix
+++ b/pkgs/development/python-modules/mdformat/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "mdformat";
-  version = "0.7.11";
+  version = "0.7.13";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "executablebooks";
     repo = pname;
     rev = version;
-    sha256 = "sha256-EhMoGSCtlEcm1+1aHn9DhBnLQvolhq62SMF/AdaY1/E=";
+    sha256 = "sha256-9ssDe7Wjuwuq2j7xwRyLqKouqeIt6NCUbEXjPdu2VZ8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/meliae/default.nix b/pkgs/development/python-modules/meliae/default.nix
deleted file mode 100644
index 4c6aa746448e4..0000000000000
--- a/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/pkgs/development/python-modules/memcached/default.nix b/pkgs/development/python-modules/memcached/default.nix
index 02f4bc3aa44bf..e7a41d7b238d0 100644
--- a/pkgs/development/python-modules/memcached/default.nix
+++ b/pkgs/development/python-modules/memcached/default.nix
@@ -20,7 +20,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python API for communicating with the memcached distributed memory object cache daemon";
-    homepage = "http://www.tummy.com/Community/software/python-memcached/";
+    homepage = "https://github.com/linsomniac/python-memcached";
     license = licenses.psfl;
   };
 
diff --git a/pkgs/development/python-modules/meross-iot/default.nix b/pkgs/development/python-modules/meross-iot/default.nix
index 5c2bbe9222b7b..064d8a8d203bd 100644
--- a/pkgs/development/python-modules/meross-iot/default.nix
+++ b/pkgs/development/python-modules/meross-iot/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "meross-iot";
-  version = "0.4.3.0";
+  version = "0.4.4.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "albertogeniola";
     repo = "MerossIot";
     rev = version;
-    sha256 = "sha256-PZ1+Bjw7k6EFZEuPhbkGrdQzdLGiM4U0ecAAN8SxWU4=";
+    sha256 = "sha256-bazAhCsxr8UNV51UnaGbP7kTC6mcDNM7N78f0jy26ew=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/meshio/default.nix b/pkgs/development/python-modules/meshio/default.nix
index e9b74d02b0705..54f8431ba2792 100644
--- a/pkgs/development/python-modules/meshio/default.nix
+++ b/pkgs/development/python-modules/meshio/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "meshio";
-  version = "4.4.6";
+  version = "5.2.2";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0kv832s2vyff30zz8yqypw5jifwdanvh5x56d2bzkvy94h4jlddy";
+    sha256 = "209885ac31b00155e43c27859d1aff0ba7f97f319ee7bed453a8b9e1677a4e52";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/meshtastic/default.nix b/pkgs/development/python-modules/meshtastic/default.nix
index 359bed40b1ec9..0af337bc13ff9 100644
--- a/pkgs/development/python-modules/meshtastic/default.nix
+++ b/pkgs/development/python-modules/meshtastic/default.nix
@@ -12,12 +12,13 @@
 , pythonOlder
 , pyyaml
 , tabulate
+, pytap2
 , timeago
 }:
 
 buildPythonPackage rec {
   pname = "meshtastic";
-  version = "1.2.48";
+  version = "1.2.85";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -26,7 +27,7 @@ buildPythonPackage rec {
     owner = "meshtastic";
     repo = "Meshtastic-python";
     rev = version;
-    sha256 = "sha256-hf+9WmYLRN53cSipNRA+mRYzSLu6NAO6HSQ3NOeCPM8=";
+    sha256 = "sha256-DFRnyWBQ3/g5NwZH5hoVYJfj3gN/UP57JvNSnNaqws4=";
   };
 
   propagatedBuildInputs = [
@@ -43,6 +44,7 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
+    pytap2
     pytestCheckHook
   ];
 
diff --git a/pkgs/development/python-modules/metakernel/default.nix b/pkgs/development/python-modules/metakernel/default.nix
index b07f68401e253..f94ddb12ac5d2 100644
--- a/pkgs/development/python-modules/metakernel/default.nix
+++ b/pkgs/development/python-modules/metakernel/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "metakernel";
-  version = "0.28.1";
+  version = "0.28.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3b57eb7b3b332614dcba1fa53c8cc1253dbccf962b111517ea16cbecce9a11d5";
+    sha256 = "8811a4497444495639ef000902f4c6e8a7e2c57da1d47a8a24bcc9083548b389";
   };
 
   propagatedBuildInputs = [ ipykernel ];
diff --git a/pkgs/development/python-modules/metaphone/default.nix b/pkgs/development/python-modules/metaphone/default.nix
deleted file mode 100644
index d6b0c30c504ce..0000000000000
--- a/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/pkgs/development/python-modules/metar/default.nix b/pkgs/development/python-modules/metar/default.nix
index e832c7cf56fe3..4a7bf9edc5aea 100644
--- a/pkgs/development/python-modules/metar/default.nix
+++ b/pkgs/development/python-modules/metar/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "metar";
-  version = "1.8.0";
+  version = "1.9.0";
 
   src = fetchFromGitHub {
     owner = "python-metar";
     repo = "python-metar";
     rev = "v${version}";
-    sha256 = "019vfq9191cdvvq1afdcdgdgbzpj7wq6pz9li8ggim71azjnv5nn";
+    sha256 = "sha256-pl2NWRfFCYyM2qvBt4Ic3wgbGkYZvAO6pX2Set8zYW8=";
   };
 
   checkInputs = [ pytestCheckHook ];
diff --git a/pkgs/development/python-modules/mezzanine/default.nix b/pkgs/development/python-modules/mezzanine/default.nix
index c157cd2a6be81..2c78575d3704a 100644
--- a/pkgs/development/python-modules/mezzanine/default.nix
+++ b/pkgs/development/python-modules/mezzanine/default.nix
@@ -20,12 +20,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "4.3.1";
+  version = "5.1.0";
   pname = "Mezzanine";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "42c7909953cc5aea91921b47d804b61e14893bf48a2a476ce49a96559a0fa1d3";
+    sha256 = "ce1117c81416d2e0a77981419312e200aec1cf3cb3ea9630083bd29e74bbb265";
   };
 
   disabled = isPyPy || lib.versionOlder django.version "1.11"
diff --git a/pkgs/development/python-modules/micloud/default.nix b/pkgs/development/python-modules/micloud/default.nix
index 8fdc7910fe831..07db8906c5d3c 100644
--- a/pkgs/development/python-modules/micloud/default.nix
+++ b/pkgs/development/python-modules/micloud/default.nix
@@ -2,23 +2,25 @@
 , buildPythonPackage
 , fetchFromGitHub
 , click
+, pycryptodome
 , requests
 , tzlocal
 }:
 
 buildPythonPackage rec {
   pname = "micloud";
-  version = "0.4";
+  version = "0.5";
 
   src = fetchFromGitHub {
     owner = "Squachen";
     repo = "micloud";
     rev = "v_${version}";
-    sha256 = "01z1qfln6f7pnxb4ssmyygyamnfgh36fzgn85s8axdwy8wrch20x";
+    sha256 = "sha256-1qtOsEH+G5ASsRyVCa4U0WQ/9kDRn1WpPNkvuvWFovQ=";
   };
 
   propagatedBuildInputs = [
     click
+    pycryptodome
     requests
     tzlocal
   ];
diff --git a/pkgs/development/python-modules/mill-local/default.nix b/pkgs/development/python-modules/mill-local/default.nix
index 9d00bb71c8bcc..003fbc974f1da 100644
--- a/pkgs/development/python-modules/mill-local/default.nix
+++ b/pkgs/development/python-modules/mill-local/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "mill-local";
-  version = "0.1.0";
+  version = "0.1.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "Danielhiversen";
     repo = "pyMillLocal";
     rev = version;
-    sha256 = "0q0frwj9yxdmqi5axl7gxirfflgn8xh1932c6lhp9my2v1d0gdrk";
+    sha256 = "sha256-OKaR0hpNVBlaZrEmEmHxqRG1i03XP2Z4c7c35YIqe+I=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/minexr/default.nix b/pkgs/development/python-modules/minexr/default.nix
new file mode 100644
index 0000000000000..0417fe7594fdb
--- /dev/null
+++ b/pkgs/development/python-modules/minexr/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, numpy
+, pillow
+}:
+
+buildPythonPackage rec {
+  pname = "minexr";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner = "cheind";
+    repo = "py-minexr";
+    rev = "v${version}";
+    sha256 = "sha256-Om67ttAHxu7C3IwPB+JHYi78E9qBi1E6layMVg4+S3M=";
+  };
+
+  propagatedBuildInputs = [ numpy ];
+
+  pythonImportsCheck = [ "minexr" ];
+  checkInputs = [ pytestCheckHook pillow ];
+
+  meta = with lib; {
+    description = "Minimal, standalone OpenEXR reader for single-part, uncompressed scan line files.";
+    homepage = "https://github.com/cheind/py-minexr";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lucasew ];
+  };
+}
diff --git a/pkgs/development/python-modules/miniaudio/default.nix b/pkgs/development/python-modules/miniaudio/default.nix
index 0f3372a6048c7..f0e5db4f0ecd4 100644
--- a/pkgs/development/python-modules/miniaudio/default.nix
+++ b/pkgs/development/python-modules/miniaudio/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "miniaudio";
-  version = "1.45";
+  version = "1.46";
 
   disabled = pythonOlder "3.6";
 
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "irmen";
     repo = "pyminiaudio";
     rev = "v${version}";
-    sha256 = "1yx4n4zax103fmjzdiqzw37zibsh68b2p2l5qvgcnx2zrrjd31yl";
+    sha256 = "16llwmbbd9445rwhl4v66kf5zd7yl3a94zm9xyllq6ij7vnhg5jb";
   };
 
   propagatedNativeBuildInputs = [ cffi ];
diff --git a/pkgs/development/python-modules/minikerberos/default.nix b/pkgs/development/python-modules/minikerberos/default.nix
index d1e0616cfb685..f242ac69c25e7 100644
--- a/pkgs/development/python-modules/minikerberos/default.nix
+++ b/pkgs/development/python-modules/minikerberos/default.nix
@@ -4,15 +4,19 @@
 , buildPythonPackage
 , fetchPypi
 , oscrypto
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "minikerberos";
-  version = "0.2.14";
+  version = "0.2.17";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-MND7r4Gkx9RnEMgEl62QXFYr1NEloihQ2HeU9hyhsx8=";
+    sha256 = "sha256-yoPUTwpsk8wimN9DXFFz6ZJi1tI0uAVcfAi5BiwsfJM=";
   };
 
   propagatedBuildInputs = [
@@ -24,7 +28,9 @@ buildPythonPackage rec {
   # no tests are published: https://github.com/skelsec/minikerberos/pull/5
   doCheck = false;
 
-  pythonImportsCheck = [ "minikerberos" ];
+  pythonImportsCheck = [
+    "minikerberos"
+  ];
 
   meta = with lib; {
     description = "Kerberos manipulation library in Python";
diff --git a/pkgs/development/python-modules/mistletoe/default.nix b/pkgs/development/python-modules/mistletoe/default.nix
index 0de5077ebee89..814a93e9c5447 100644
--- a/pkgs/development/python-modules/mistletoe/default.nix
+++ b/pkgs/development/python-modules/mistletoe/default.nix
@@ -5,12 +5,12 @@
 
 buildPythonPackage rec {
   pname = "mistletoe";
-  version = "0.8.1";
+  version = "0.8.2";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "468c6a42fd98b85e05b318033f63d76e02712e1ea1328a7ebcba7e47fb6f1e41";
+    sha256 = "sha256-ouNU5lPym8r1WZ2JSFEhGaxgN+nC+O53851VRQ59Gmw=";
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/mistune/common.nix b/pkgs/development/python-modules/mistune/common.nix
index 7aba4ade4141c..9610b735c79bc 100644
--- a/pkgs/development/python-modules/mistune/common.nix
+++ b/pkgs/development/python-modules/mistune/common.nix
@@ -1,7 +1,7 @@
-{ lib, buildPythonPackage, fetchPypi, nose, version, sha256 }:
+{ lib, buildPythonPackage, fetchPypi, nose, version, sha256, format ? "setuptools" }:
 
 buildPythonPackage rec {
-  inherit version;
+  inherit version format;
   pname = "mistune";
 
   src = fetchPypi {
diff --git a/pkgs/development/python-modules/mistune/default.nix b/pkgs/development/python-modules/mistune/default.nix
index c7e7d6d54c737..bb9d25d558e2f 100644
--- a/pkgs/development/python-modules/mistune/default.nix
+++ b/pkgs/development/python-modules/mistune/default.nix
@@ -4,8 +4,9 @@ self: rec {
     sha256 = "59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e";
   };
   mistune_2_0 = self.callPackage ./common.nix {
-    version = "2.0.0rc1";
-    sha256 = "1nd7iav1ixh9hlj4hxn6lmpava88d86ys8rqm30wgvr7gjlxnas5";
+    version = "2.0.2";
+    sha256 = "sha256-b8iMPLSduosWaHtBcl5mHPhXhMEuiXSim50zbdWWw6E=";
+    format = "pyproject";
   };
   mistune = mistune_0_8;
 }
diff --git a/pkgs/development/python-modules/mitogen/default.nix b/pkgs/development/python-modules/mitogen/default.nix
index 789d68c7f93e0..d99bdec4b0da0 100644
--- a/pkgs/development/python-modules/mitogen/default.nix
+++ b/pkgs/development/python-modules/mitogen/default.nix
@@ -1,23 +1,29 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "mitogen";
-  version = "0.3.0";
+  version = "0.3.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "mitogen-hq";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-SotxlsJDIeFd4BN9C7afyyybET5ST2yaoWVEyT/lr48=";
+    sha256 = "sha256-ACd1z9h9RLu6Kho59L2YkXkLtBEywYbO+drUvoZaVlg=";
   };
 
   # Tests require network access and Docker support
   doCheck = false;
 
-  pythonImportsCheck = [ "mitogen" ];
+  pythonImportsCheck = [
+    "mitogen"
+  ];
 
   meta = with lib; {
     description = "Python Library for writing distributed self-replicating programs";
diff --git a/pkgs/development/python-modules/mizani/default.nix b/pkgs/development/python-modules/mizani/default.nix
index f7bf273f1a276..9136f1b8e5942 100644
--- a/pkgs/development/python-modules/mizani/default.nix
+++ b/pkgs/development/python-modules/mizani/default.nix
@@ -1,15 +1,20 @@
-{ buildPythonPackage
+{ lib
+, buildPythonPackage
 , fetchFromGitHub
-, lib
 , matplotlib
 , palettable
 , pandas
 , pytestCheckHook
+, pythonOlder
+, scipy
 }:
 
 buildPythonPackage rec {
   pname = "mizani";
   version = "0.7.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "has2k1";
@@ -18,15 +23,25 @@ buildPythonPackage rec {
     sha256 = "04r53dp5jbklv8l9ncgc5wiq0gx25y73h65gmmbbfkxwgsl3w78l";
   };
 
-  postPatch = ''
-    substituteInPlace pytest.ini --replace " --cov=mizani --cov-report=xml" ""
-  '';
+  propagatedBuildInputs = [
+    matplotlib
+    palettable
+    pandas
+    scipy
+  ];
 
-  propagatedBuildInputs = [ matplotlib palettable pandas ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  checkInputs = [ pytestCheckHook ];
+  postPatch = ''
+    substituteInPlace pytest.ini \
+      --replace " --cov=mizani --cov-report=xml" ""
+  '';
 
-  pythonImportsCheck = [ "mizani" ];
+  pythonImportsCheck = [
+    "mizani"
+  ];
 
   meta = with lib; {
     description = "Scales for Python";
diff --git a/pkgs/development/python-modules/mkdocs/default.nix b/pkgs/development/python-modules/mkdocs/default.nix
new file mode 100644
index 0000000000000..7d4f1cc66c6e2
--- /dev/null
+++ b/pkgs/development/python-modules/mkdocs/default.nix
@@ -0,0 +1,90 @@
+{
+  # eval time deps
+  lib
+, buildPythonPackage
+, fetchFromGitHub
+, fetchpatch
+, pythonOlder
+  # runtime deps
+, click
+, ghp-import
+, importlib-metadata
+, jinja2
+, markdown
+, mergedeep
+, packaging
+, pyyaml
+, pyyaml-env-tag
+, watchdog
+  # testing deps
+, Babel
+, mock
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "mkdocs";
+  version = "1.2.3";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-LBw2ftGyeNvARQ8xiYUho8BiQh+aIEqROP51gKvNxEo=";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/mkdocs/mkdocs/commit/c93fc91e4dc0ef33e2ea418aaa32b0584a8d354a.patch";
+      sha256 = "sha256-7uLIuQOt6KU/+iS9cwhXkWPAHzZkQdMyNBxSMut5WK4=";
+      excludes = [ "tox.ini" ];
+    })
+  ];
+
+  propagatedBuildInputs = [
+    click
+    jinja2
+    markdown
+    mergedeep
+    pyyaml
+    pyyaml-env-tag
+    ghp-import
+    importlib-metadata
+    watchdog
+    packaging
+  ];
+
+  checkInputs = [
+    Babel
+    mock
+  ];
+
+
+  checkPhase = ''
+    set -euo pipefail
+
+    runHook preCheck
+
+    python -m unittest discover -v -p '*tests.py' mkdocs --top-level-directory .
+
+    runHook postCheck
+  '';
+
+  pythonImportsCheck = [ "mkdocs" ];
+
+  meta = with lib; {
+    description = "Project documentation with Markdown / static website generator";
+    longDescription = ''
+      MkDocs is a fast, simple and downright gorgeous static site generator that's
+      geared towards building project documentation. Documentation source files
+      are written in Markdown, and configured with a single YAML configuration file.
+
+      MkDocs can also be used to generate general-purpose websites.
+    '';
+    homepage = "http://mkdocs.org/";
+    license = licenses.bsd2;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ rkoe ];
+  };
+}
diff --git a/pkgs/development/python-modules/mlflow/default.nix b/pkgs/development/python-modules/mlflow/default.nix
index 255c9039ae973..658470ec72b8f 100644
--- a/pkgs/development/python-modules/mlflow/default.nix
+++ b/pkgs/development/python-modules/mlflow/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
+{ lib, buildPythonPackage, fetchPypi, isPy27, fetchpatch
 , alembic
 , click
 , cloudpickle
@@ -20,16 +20,18 @@
 , sqlalchemy
 , gorilla
 , gunicorn
+, prometheus-flask-exporter
+, importlib-metadata
 }:
 
 buildPythonPackage rec {
   pname = "mlflow";
-  version = "1.21.0";
+  version = "1.22.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5524a371f19c66a18e7ebe9b1085a77f63a6ae514271e487428f28187d79fc8f";
+    sha256 = "f680390715e436ae38cf7056ec91030fc9eb67cc631226f28ff9504fbe395add";
   };
 
   # run into https://stackoverflow.com/questions/51203641/attributeerror-module-alembic-context-has-no-attribute-config
@@ -58,6 +60,17 @@ buildPythonPackage rec {
     sqlalchemy
     gorilla
     gunicorn
+    prometheus-flask-exporter
+    importlib-metadata
+  ];
+
+  patches = [
+    # Relex alembic version, https://github.com/mlflow/mlflow/pull/5245
+    (fetchpatch {
+      name = "relax-alembic-version.patch";
+      url = "https://github.com/mlflow/mlflow/commit/945eb4b67f315c0b2c4018b1df006fde910f115f.patch";
+      sha256 = "sha256-jETVEPzlNe0PvFZVOi1SwgJELfx/KCeq6REL3vl+YT0=";
+    })
   ];
 
   meta = with lib; {
@@ -65,7 +78,5 @@ buildPythonPackage rec {
     description = "Open source platform for the machine learning lifecycle";
     license = licenses.asl20;
     maintainers = with maintainers; [ tbenst ];
-    # missing prometheus-flask-exporter, not packaged in nixpkgs
-    broken = true; # 2020-08-15
   };
 }
diff --git a/pkgs/development/python-modules/mlxtend/default.nix b/pkgs/development/python-modules/mlxtend/default.nix
index 4692dc61c229a..05fc6b4bb59ac 100644
--- a/pkgs/development/python-modules/mlxtend/default.nix
+++ b/pkgs/development/python-modules/mlxtend/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "mlxtend";
-  version = "0.17.3";
+  version = "0.19.0";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "rasbt";
     repo = pname;
     rev = version;
-    sha256 = "1515wgmj5rhwpmky7apmmvys1630sfg534fai6559s13hp11pdcl";
+    sha256 = "0qawzlzv4zf612n9n03fxnz6gxmzschq0ykh9dgv70l33ihmjbaw";
   };
 
   checkInputs = [ pytestCheckHook ];
diff --git a/pkgs/development/python-modules/mock/2.nix b/pkgs/development/python-modules/mock/2.nix
deleted file mode 100644
index 190297b41a2d0..0000000000000
--- a/pkgs/development/python-modules/mock/2.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
-, funcsigs
-, six
-, pbr
-, python
-, pytest
-}:
-
-buildPythonPackage rec {
-  pname = "mock";
-  version = "3.0.5";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "83657d894c90d5681d62155c82bda9c1187827525880eda8ff5df4ec813437c3";
-  };
-
-  propagatedBuildInputs = [ six pbr ] ++ lib.optionals isPy27 [ funcsigs ];
-
-  # On PyPy for Python 2.7 in particular, Mock's tests have a known failure.
-  # Mock upstream has a decoration to disable the failing test and make
-  # everything pass, but it is not yet released. The commit:
-  # https://github.com/testing-cabal/mock/commit/73bfd51b7185#diff-354f30a63fb0907d4ad57269548329e3L12
-  #doCheck = !(python.isPyPy && python.isPy27);
-  doCheck = false; # Infinite recursion pytest
-
-  checkPhase = ''
-    ${python.interpreter} -m unittest discover
-  '';
-
-  checkInputs = [
-    pytest
-  ];
-
-  meta = with lib; {
-    description = "Mock objects for Python";
-    homepage = "http://python-mock.sourceforge.net/";
-    license = licenses.bsd2;
-  };
-
-}
diff --git a/pkgs/development/python-modules/mocket/default.nix b/pkgs/development/python-modules/mocket/default.nix
index 9d6c64da2153d..1a0b7ee907bcb 100644
--- a/pkgs/development/python-modules/mocket/default.nix
+++ b/pkgs/development/python-modules/mocket/default.nix
@@ -19,12 +19,12 @@
 
 buildPythonPackage rec {
   pname = "mocket";
-  version = "3.10.2";
+  version = "3.10.4";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-bb/Uf9xWKRNr27SHzTzI14a0At9Ua5xxBr7XN2d6qfQ=";
+    sha256 = "831c23bf891c525828b7da49a358c6e0698481e4c8b3a61a69e87f36d06ef969";
   };
 
   propagatedBuildInputs = [
@@ -45,6 +45,8 @@ buildPythonPackage rec {
     pook
   ];
 
+  # skip http tests
+  SKIP_TRUE_HTTP = true;
   pytestFlagsArray = [
     # Requires a live Redis instance
     "--ignore=tests/main/test_redis.py"
diff --git a/pkgs/development/python-modules/moderngl_window/default.nix b/pkgs/development/python-modules/moderngl_window/default.nix
index e06d5aa3780bf..6888356ec4312 100644
--- a/pkgs/development/python-modules/moderngl_window/default.nix
+++ b/pkgs/development/python-modules/moderngl_window/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "moderngl_window";
-  version = "2.1.0";
+  version = "2.4.1";
 
   src = fetchFromGitHub {
     owner = "moderngl";
     repo = pname;
     rev = version;
-    sha256 = "1p03j91pk2bwycd13p0qi8kns1sf357180hd2mkaip8mfaf33x3q";
+    sha256 = "12a5nl01c9b1ww7sj7i02xa7zmlrgg8jvi8cz004hw98kjcs9li8";
   };
 
   propagatedBuildInputs = [ numpy moderngl pyglet pillow pyrr glcontext ];
diff --git a/pkgs/development/python-modules/mongomock/default.nix b/pkgs/development/python-modules/mongomock/default.nix
new file mode 100644
index 0000000000000..85e574f0b6d58
--- /dev/null
+++ b/pkgs/development/python-modules/mongomock/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pbr
+, sentinels
+, six
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "mongomock";
+  version = "4.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-sYMsN0jUdETBiGc3PlzqdUwub2RKDPv9Zn8Xj2i97Pw=";
+  };
+
+  nativeBuildInputs = [
+    pbr
+  ];
+
+  propagatedBuildInputs = [
+    sentinels
+    six
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "mongomock" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/mongomock/mongomock";
+    description = "Fake pymongo stub for testing simple MongoDB-dependent code";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ gador ];
+  };
+}
diff --git a/pkgs/development/python-modules/monty/default.nix b/pkgs/development/python-modules/monty/default.nix
index 36d798e5504d8..16205286c003a 100644
--- a/pkgs/development/python-modules/monty/default.nix
+++ b/pkgs/development/python-modules/monty/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "monty";
-  version = "2021.12.1";
+  version = "2022.1.12.1";
   disabled = pythonOlder "3.5"; # uses type annotations
 
   src = fetchFromGitHub {
     owner = "materialsvirtuallab";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0zcbdh7pqv4dq3fan0zh912w9bvmf2p0zj1fhp0ayhdsc50cwldh";
+    sha256 = "11bp3zkmqffc6rqw93qfk8d905mzc10nqbjmvj2bay8h197q0dg2";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/moonraker-api/default.nix b/pkgs/development/python-modules/moonraker-api/default.nix
index 2888ff1e06d1f..9f6ca7e91a785 100644
--- a/pkgs/development/python-modules/moonraker-api/default.nix
+++ b/pkgs/development/python-modules/moonraker-api/default.nix
@@ -21,6 +21,12 @@ buildPythonPackage rec {
     sha256 = "1hhm3jnl9qm44y4k927fzw1n32c3551kgsk7i57qw25nca9x3k61";
   };
 
+  postPatch = ''
+    # see comment on https://github.com/cmroche/moonraker-api/commit/e5ca8ab60d2839e150a81182fbe65255d84b4e4e
+    substituteInPlace setup.py \
+      --replace 'name="moonraker-api",' 'name="moonraker-api",version="${version}",'
+  '';
+
   propagatedBuildInputs = [
     aiohttp
   ];
diff --git a/pkgs/development/python-modules/more-itertools/2.7.nix b/pkgs/development/python-modules/more-itertools/2.7.nix
deleted file mode 100644
index f9a6ac732e2ea..0000000000000
--- a/pkgs/development/python-modules/more-itertools/2.7.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, nose
-, six
-, stdenv
-}:
-
-
-buildPythonPackage rec {
-  pname = "more-itertools";
-  version = "5.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "38a936c0a6d98a38bcc2d03fdaaedaba9f412879461dd2ceff8d37564d6522e4";
-  };
-
-  checkInputs = [ nose ];
-  propagatedBuildInputs = [ six ];
-
-  # iterable = range(10 ** 10)  # Is efficiently reversible
-  # OverflowError: Python int too large to convert to C long
-  doCheck = !stdenv.hostPlatform.is32bit;
-
-  meta = {
-    homepage = "https://more-itertools.readthedocs.org";
-    description = "Expansion of the itertools module";
-    license = lib.licenses.mit;
-  };
-}
diff --git a/pkgs/development/python-modules/motionblinds/default.nix b/pkgs/development/python-modules/motionblinds/default.nix
index a8fb0ae58dd41..57a5531390aa8 100644
--- a/pkgs/development/python-modules/motionblinds/default.nix
+++ b/pkgs/development/python-modules/motionblinds/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "motionblinds";
-  version = "0.5.8.2";
+  version = "0.5.12";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "starkillerOG";
     repo = "motion-blinds";
     rev = version;
-    sha256 = "6aSwUuH5IpfcuVGXWVmb0DHglsUtGh/ATOe6iih6fXk=";
+    sha256 = "sha256-MnW5Un5iLapfvU2TTP6NekCFPUIunfRNp7+L4LUA0bc=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/moto/default.nix b/pkgs/development/python-modules/moto/default.nix
index 4d9156349e4ac..a998e7b74b414 100644
--- a/pkgs/development/python-modules/moto/default.nix
+++ b/pkgs/development/python-modules/moto/default.nix
@@ -6,6 +6,7 @@
 , cfn-lint
 , docker
 , flask
+, flask-cors
 , freezegun
 , jinja2
 , jsondiff
@@ -24,15 +25,16 @@
 , idna
 , nose
 , pytestCheckHook
+, pytest-xdist
 }:
 
 buildPythonPackage rec {
   pname = "moto";
-  version = "1.3.16";
+  version = "3.0.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0zy0prsyip264i6h03lxsn1qg1n3dc8c4iyfawckjqvm24gnns3c";
+    sha256 = "sha256-vZ1oofOYUkFETDFKwSmifvvn+bCi/6NQAxu950NYk5k=";
   };
 
   postPatch = ''
@@ -42,22 +44,6 @@ buildPythonPackage rec {
       --replace "MarkupSafe<2.0" "MarkupSafe" \
   '';
 
-  patches = [
-    # Remove dependence on boto. The boto library  (long ago superseded by boto3)
-    # has not had an official release in over two years or even a commit in the
-    # last 18 months. These patches should be included in the next moto release
-    # after 1.3.16
-    (fetchpatch {
-      url = "https://github.com/spulec/moto/pull/3503/commits/ae85c539fd57034c4d5cfd0f95af41ff19862dd1.patch";
-      sha256 = "16hr2py6q701d8ih6zcvs3lbanshpbk15ixckgdqngjf160k5m9p";
-      excludes = ["tests/test_ec2/test_ec2_cloudformation.py"];
-    })
-    (fetchpatch {
-      url = "https://github.com/spulec/moto/pull/3468/commits/6ee39bd7fda4d3623569e10dcd9561bf2cd1d0bd.patch";
-      sha256 = "10m3xdqxgys7spav9mkbhcn4z0124rlprwxnw6ysb10610xlna0i";
-    })
-  ];
-
   propagatedBuildInputs = [
     aws-xray-sdk
     boto3
@@ -80,8 +66,15 @@ buildPythonPackage rec {
     idna
   ] ++ lib.optionals isPy27 [ backports_tempfile ];
 
-  # Next release after 1.3.16 will not require `nose`
-  checkInputs = [ boto3 nose freezegun pytestCheckHook sure parameterized ];
+  checkInputs = [
+    boto3
+    flask-cors
+    freezegun
+    parameterized
+    pytestCheckHook
+    pytest-xdist
+    sure
+  ];
 
   # Multiple test files still import boto, rather than boto3 like
   # boto is long-deprecated and broken on python3.9
@@ -89,6 +82,7 @@ buildPythonPackage rec {
   # NOTE: This should change to use disabledTestFiles / disabledTestPaths once that
   # feature stabalizes: see #113153 (mostly the discussion therein), #113167, #110700
   pytestFlagsArray = [
+    "-n $NIX_BUILD_CORES"
     "--ignore=tests/test_awslambda/test_policy.py"
     "--ignore=tests/test_autoscaling/test_autoscaling.py"
     "--ignore=tests/test_autoscaling/test_cloudformation.py"
@@ -226,6 +220,12 @@ buildPythonPackage rec {
     "--ignore=tests/test_swf/responses/test_timeouts.py"
     "--ignore=tests/test_swf/responses/test_workflow_executions.py"
     "--ignore=tests/test_swf/responses/test_workflow_types.py"
+    # attempts web connections
+    "--ignore=tests/test_appsync/test_appsync_schema.py"
+    "--ignore=tests/test_awslambda/test_lambda_eventsourcemapping.py"
+    "--ignore=tests/test_awslambda/test_lambda_invoke.py"
+    "--ignore=tests/test_batch/test_batch_jobs.py"
+    "--ignore=tests/**/*_integration.py"
   ];
 
   disabledTests = [
@@ -256,6 +256,14 @@ buildPythonPackage rec {
     "test_get_records_seq"
     "test_stream_with_range_key"
     "test_create_notebook_instance_bad_volume_size"
+    "http_destination"
+    "test_invoke_function_from_sqs_exception"
+    "test_state_machine_list_executions_with_pagination"
+    "test_put_subscription_filter_with_lambda"
+    "test_create_custom_lambda_resource__verify_cfnresponse_failed"
+    "test_state_machine_creation_fails_with_invalid_names"
+    # needs graphql
+    "test_get_schema_creation_status"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/mozsvc/default.nix b/pkgs/development/python-modules/mozsvc/default.nix
deleted file mode 100644
index 0caa347edacf1..0000000000000
--- a/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/pkgs/development/python-modules/mozterm/default.nix b/pkgs/development/python-modules/mozterm/default.nix
deleted file mode 100644
index c7f2b4cbc349b..0000000000000
--- a/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/pkgs/development/python-modules/mpd/default.nix b/pkgs/development/python-modules/mpd/default.nix
deleted file mode 100644
index b535144fac911..0000000000000
--- a/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/pkgs/development/python-modules/mpd2/default.nix b/pkgs/development/python-modules/mpd2/default.nix
index 8d17d8b3b0cfc..282d4a71c9620 100644
--- a/pkgs/development/python-modules/mpd2/default.nix
+++ b/pkgs/development/python-modules/mpd2/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "python-mpd2";
-  version = "3.0.4";
+  version = "3.0.5";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1r8saq1460yfa0sxfrvxqs2r453wz2xchlc9gzbpqznr49786rvs";
+    sha256 = "sha256-bxv/2TuaMvwBipu/NIdQW1Lg11fsNAZpBcYKkS1JI4Q=";
   };
 
   buildInputs = [ mock ];
diff --git a/pkgs/development/python-modules/mpi4py/default.nix b/pkgs/development/python-modules/mpi4py/default.nix
index 6e8fd896d913c..aa5a74c2cfe86 100644
--- a/pkgs/development/python-modules/mpi4py/default.nix
+++ b/pkgs/development/python-modules/mpi4py/default.nix
@@ -2,19 +2,13 @@
 
 buildPythonPackage rec {
   pname = "mpi4py";
-  version = "3.0.3";
+  version = "3.1.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "012d716c8b9ed1e513fcc4b18e5af16a8791f51e6d1716baccf988ad355c5a1f";
+    sha256 = "sha256-8en64QefQ+r92fgXzbP9MNcJ7cCTtdXa2lekYbLbMAg=";
   };
 
-  patches = [ (fetchpatch {
-    name = "disable-broken-test"; # upstream patch
-    url = "https://github.com/mpi4py/mpi4py/commit/e13cc3ee59ec6ec2c6ee20e384e1e649d5027e8a.patch";
-    sha256 = "0iwknrhxnfmsqjj8ahpn50c8pcdyv9p3wmcqi1jhr4i5y7lnmvvx";
-  })];
-
   passthru = {
     inherit mpi;
   };
diff --git a/pkgs/development/python-modules/mrbob/default.nix b/pkgs/development/python-modules/mrbob/default.nix
deleted file mode 100644
index 8921719a3ae20..0000000000000
--- a/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/pkgs/development/python-modules/msal-extensions/default.nix b/pkgs/development/python-modules/msal-extensions/default.nix
index a673d96893fa7..f81395f0245b7 100644
--- a/pkgs/development/python-modules/msal-extensions/default.nix
+++ b/pkgs/development/python-modules/msal-extensions/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "msal-extensions";
-  version = "0.3.0";
+  version = "0.3.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0qbq5qn46053aclpwyzac5zs2xgqirn4hwrf1plrg0m8bnhxy8sm";
+    sha256 = "d9029af70f2cbdc5ad7ecfed61cb432ebe900484843ccf72825445dbfe62d311";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/msal/default.nix b/pkgs/development/python-modules/msal/default.nix
index aca7def34a179..95b5bbf7ce96d 100644
--- a/pkgs/development/python-modules/msal/default.nix
+++ b/pkgs/development/python-modules/msal/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "msal";
-  version = "1.16.0";
+  version = "1.17.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "240fb04dba46a27fd6a3178db8334412d0d02e0be85166f9e05bb45d03399084";
+    sha256 = "sha256-BOPLe7dcUfVtKQOB8jBWIH3x8+tZTtA9OFUfOxbSo24=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/msoffcrypto-tool/default.nix b/pkgs/development/python-modules/msoffcrypto-tool/default.nix
index 4f3dbc60d18af..a1d8349290552 100644
--- a/pkgs/development/python-modules/msoffcrypto-tool/default.nix
+++ b/pkgs/development/python-modules/msoffcrypto-tool/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "msoffcrypto-tool";
-  version = "4.12.0";
+  version = "5.0.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "nolze";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-EBEwldh2Ct/4oxnAF1hWeW/uRrVsCYEi0cJaZubofFk=";
+    sha256 = "sha256-A5A578JZrxRXX6ewkFzittGTOebeNb99fuKsEm5QGoI=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/msrplib/default.nix b/pkgs/development/python-modules/msrplib/default.nix
deleted file mode 100644
index e615b3e34e2cc..0000000000000
--- a/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/pkgs/development/python-modules/multiset/default.nix b/pkgs/development/python-modules/multiset/default.nix
index fa2fa87d0e895..e511ab1004596 100644
--- a/pkgs/development/python-modules/multiset/default.nix
+++ b/pkgs/development/python-modules/multiset/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "multiset";
-  version = "2.1.1";
+  version = "3.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4801569c08bfcecfe7b0927b17f079c90f8607aca8fecaf42ded92b737162bc7";
+    sha256 = "e45671cae8385a8e6248a9b07a3a83280c2d0cc4312713058cfbacdc5ec9973e";
   };
 
   buildInputs = [ setuptools-scm pytest-runner ];
diff --git a/pkgs/development/python-modules/mutagen/1.43.nix b/pkgs/development/python-modules/mutagen/1.43.nix
deleted file mode 100644
index 7f2e9f452b4de..0000000000000
--- a/pkgs/development/python-modules/mutagen/1.43.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, hypothesis
-, pycodestyle
-, pyflakes
-, pytest
-, setuptools
-, pkgs
-}:
-
-buildPythonPackage rec {
-  pname = "mutagen";
-  version = "1.43.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "d873baeb7815311d3420aab0a1d83f050f628228cbc2d6045a14a16460411bc9";
-  };
-
-  propagatedBuildInputs = [ setuptools ];
-  checkInputs = [
-    pkgs.faad2 pkgs.flac pkgs.vorbis-tools pkgs.liboggz
-    pkgs.glibcLocales pycodestyle pyflakes pytest hypothesis
-  ];
-  LC_ALL = "en_US.UTF-8";
-
-  meta = with lib; {
-    description = "Python multimedia tagging library";
-    homepage = "https://mutagen.readthedocs.io";
-    license = licenses.lgpl2Plus;
-    platforms = platforms.all;
-  };
-}
diff --git a/pkgs/development/python-modules/mutmut/default.nix b/pkgs/development/python-modules/mutmut/default.nix
new file mode 100644
index 0000000000000..ae0f06213a87d
--- /dev/null
+++ b/pkgs/development/python-modules/mutmut/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, fetchFromGitHub
+, buildPythonApplication
+, click
+, glob2
+, parso
+, pony
+, junit-xml
+, pythonOlder
+, testVersion
+}:
+
+let self = buildPythonApplication rec {
+  pname = "mutmut";
+  version = "2.2.0";
+
+  src = fetchFromGitHub {
+    repo = pname;
+    owner = "boxed";
+    rev = version;
+    hash = "sha256-G+OL/9km2iUeZ1QCpU73CIWVWMexcs3r9RdCnAsESnY=";
+  };
+
+  postPatch = ''
+    substituteInPlace requirements.txt --replace 'junit-xml==1.8' 'junit-xml==1.9'
+  '';
+
+  disabled = pythonOlder "3.7";
+
+  doCheck = false;
+
+  propagatedBuildInputs = [ click glob2 parso pony junit-xml ];
+
+  passthru.tests.version = testVersion { package = self; };
+
+  meta = with lib; {
+    description = "mutation testing system for Python, with a strong focus on ease of use";
+    homepage = "https://github.com/boxed/mutmut";
+    changelog = "https://github.com/boxed/mutmut/blob/${version}/HISTORY.rst";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ synthetica ];
+  };
+};
+in self
diff --git a/pkgs/development/python-modules/muttils/default.nix b/pkgs/development/python-modules/muttils/default.nix
deleted file mode 100644
index 98f96d1321233..0000000000000
--- a/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/pkgs/development/python-modules/mwlib-ext/default.nix b/pkgs/development/python-modules/mwlib-ext/default.nix
deleted file mode 100644
index b9b18eaf9e5f1..0000000000000
--- a/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/pkgs/development/python-modules/mwlib-rl/default.nix b/pkgs/development/python-modules/mwlib-rl/default.nix
deleted file mode 100644
index fdb70726eb6e2..0000000000000
--- a/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/pkgs/development/python-modules/mwlib/default.nix b/pkgs/development/python-modules/mwlib/default.nix
deleted file mode 100644
index d9edb2ef3ba5b..0000000000000
--- a/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/pkgs/development/python-modules/mypy-boto3-builder/default.nix b/pkgs/development/python-modules/mypy-boto3-builder/default.nix
index 0a82522345690..b47c6701a0082 100644
--- a/pkgs/development/python-modules/mypy-boto3-builder/default.nix
+++ b/pkgs/development/python-modules/mypy-boto3-builder/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "mypy-boto3-builder";
-  version = "5.5.0";
+  version = "6.3.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "vemel";
     repo = "mypy_boto3_builder";
     rev = version;
-    sha256 = "sha256-cFe8d6w28VFTNyj/ABWHkFQDfnM4aTrNZ+WUw5g8H5I=";
+    sha256 = "1krsh8pmxigpzz21gvsy7qnpnwfkyyjbz92bqp9iflf7kklfhb79";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/mypy-boto3-s3/default.nix b/pkgs/development/python-modules/mypy-boto3-s3/default.nix
index b26086f00ae08..bddccabf067fd 100644
--- a/pkgs/development/python-modules/mypy-boto3-s3/default.nix
+++ b/pkgs/development/python-modules/mypy-boto3-s3/default.nix
@@ -8,13 +8,14 @@
 
 buildPythonPackage rec {
   pname = "mypy-boto3-s3";
-  version = "1.20.17";
+  version = "1.21.0";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-7Zw8NxOEXDRmLChxHQXVU/HzR8z6HuLxX8bB3pZuCqc=";
+    hash = "sha256-3P3dThYXpmtZ/cn+NCDS9RNtu6N48Vb78ZqmCdkTK50=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/mypy-protobuf/default.nix b/pkgs/development/python-modules/mypy-protobuf/default.nix
index fdcfed839c782..f1c7d83a6bae0 100644
--- a/pkgs/development/python-modules/mypy-protobuf/default.nix
+++ b/pkgs/development/python-modules/mypy-protobuf/default.nix
@@ -2,14 +2,14 @@
 
 buildPythonApplication rec {
   pname = "mypy-protobuf";
-  version = "2.10";
+  version = "3.2.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1fed214e16351b09946770794a321a818abb744078b1d863a479da070028684c";
+    sha256 = "sha256-cwqhUzfDjwRG++CPbGwjcO4B05USU2nUtw4IseLuMO4=";
   };
 
   propagatedBuildInputs = [ protobuf types-protobuf grpcio-tools ];
diff --git a/pkgs/development/python-modules/mypy/default.nix b/pkgs/development/python-modules/mypy/default.nix
index 99580e2de37d6..5c5e985641ff7 100644
--- a/pkgs/development/python-modules/mypy/default.nix
+++ b/pkgs/development/python-modules/mypy/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "mypy";
-  version = "unstable-2021-11-14";
+  version = "0.931";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "python";
     repo = "mypy";
-    rev = "053a1beb94ee4e5b3260725594315d1b6776e42f";
-    sha256 = "sha256-q2ntj3y3GgXrw4v+yMvcqWFv4y/6YwunIj3bNzU9CH0=";
+    rev = "v${version}";
+    sha256 = "1v83flrdxh8grcp40qw04q4hzjflih9xwib64078vsxv2w36f817";
   };
 
   patches = [
@@ -33,11 +33,6 @@ buildPythonPackage rec {
     })
   ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "tomli>=1.1.0,<1.2.0" "tomli"
-  '';
-
   buildInputs = [
     types-typed-ast
   ];
diff --git a/pkgs/development/python-modules/nagiosplugin/default.nix b/pkgs/development/python-modules/nagiosplugin/default.nix
index 6b6e889b5d5de..fab05cd4acdeb 100644
--- a/pkgs/development/python-modules/nagiosplugin/default.nix
+++ b/pkgs/development/python-modules/nagiosplugin/default.nix
@@ -1,31 +1,45 @@
 { lib
 , buildPythonPackage
-, twine
-, numpy
-, pytest
 , fetchPypi
+, numpy
+, pytestCheckHook
+, pythonOlder
+, twine
 }:
 
 buildPythonPackage rec {
   pname = "nagiosplugin";
-  version = "1.3.2";
+  version = "1.3.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1vr3zy0zfvbrqc4nf81zxv4gs2q82sv5sjamdm4573ld529mk2nv";
+    hash = "sha256-vOr67DWfAyOT3dVgrizI0WNhODPsY8k85xifhZBOU9Y=";
   };
 
-  nativeBuildInputs = [ twine ];
-  checkInputs = [ pytest numpy ];
+  nativeBuildInputs = [
+    twine
+  ];
+
+  checkInputs = [
+    numpy
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Test relies on who, which does not work in the sandbox
+    "test_check_users"
+  ];
 
-  checkPhase = ''
-    # this test relies on who, which does not work in the sandbox
-    pytest -k "not test_check_users" tests/
-  '';
+  pythonImportsCheck = [
+    "nagiosplugin"
+  ];
 
   meta = with lib; {
-    description = "A Python class library which helps with writing Nagios (Icinga) compatible plugins";
-    homepage =  "https://github.com/mpounsett/nagiosplugin";
+    description = "Python class library which helps with writing Nagios (Icinga) compatible plugins";
+    homepage = "https://github.com/mpounsett/nagiosplugin";
     license = licenses.zpl21;
     maintainers = with maintainers; [ symphorien ];
   };
diff --git a/pkgs/development/python-modules/namebench/default.nix b/pkgs/development/python-modules/namebench/default.nix
deleted file mode 100644
index b7b542b8a7a9b..0000000000000
--- a/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/pkgs/development/python-modules/nameparser/default.nix b/pkgs/development/python-modules/nameparser/default.nix
index 0d7b53f03cbe0..63e795f98c854 100644
--- a/pkgs/development/python-modules/nameparser/default.nix
+++ b/pkgs/development/python-modules/nameparser/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "nameparser";
-  version = "1.0.6";
+  version = "1.1.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0av5kraczczp0hvwpkdaw7kl2hk9k4dyll08rg180n52a2dm0pra";
+    sha256 = "sha256-zoM27XRk+nubh0X0i5xi3qa+2TG5lxXKlHk2BUSZIUM=";
   };
 
   LC_ALL="en_US.UTF-8";
diff --git a/pkgs/development/python-modules/napari-console/default.nix b/pkgs/development/python-modules/napari-console/default.nix
new file mode 100644
index 0000000000000..f809587f75f2f
--- /dev/null
+++ b/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/pkgs/development/python-modules/napari-plugin-engine/default.nix b/pkgs/development/python-modules/napari-plugin-engine/default.nix
new file mode 100644
index 0000000000000..802b25e8df14f
--- /dev/null
+++ b/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/pkgs/development/python-modules/napari-svg/default.nix b/pkgs/development/python-modules/napari-svg/default.nix
new file mode 100644
index 0000000000000..89101e824445b
--- /dev/null
+++ b/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/pkgs/development/python-modules/napari/default.nix b/pkgs/development/python-modules/napari/default.nix
new file mode 100644
index 0000000000000..74936da4f7254
--- /dev/null
+++ b/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/pkgs/development/python-modules/asyncio-nats-client/default.nix b/pkgs/development/python-modules/nats-py/default.nix
index 46dbcdbacd5e5..f87eb269da7a3 100644
--- a/pkgs/development/python-modules/asyncio-nats-client/default.nix
+++ b/pkgs/development/python-modules/nats-py/default.nix
@@ -9,15 +9,17 @@
 }:
 
 buildPythonPackage rec {
-  pname = "asyncio-nats-client";
-  version = "0.11.5";
-  disabled = pythonOlder "3.6";
+  pname = "nats-py";
+  version = "2.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "nats-io";
     repo = "nats.py";
     rev = "v${version}";
-    sha256 = "0zwiijaswmfdk71diqmdpb6nx54fmgi8hy0vwx2m3ihhsyjxj82h";
+    hash = "sha256-BraT30J7OIcW2NXAwjcg9PYu+kgf8f1iDjKiN9J6l7Y=";
   };
 
   propagatedBuildInputs = [
@@ -38,12 +40,24 @@ buildPythonPackage rec {
   disabledTests = [
     # 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"
+    "test_publish"
+    "test_publish_verbose"
+    "test_fetch_max_waiting_fetch_one"
+    "test_fetch_n"
+    "test_consumer_management"
+    "test_ephemeral_subscribe"
+    "test_queue_subscribe_deliver_group"
+    "test_subscribe_push_bound"
+    "test_double_acking_subscribe"
+    "test_flow_control"
+    "test_ordered_consumer"
+    "test_ordered_consumer_single_loss"
+    "test_kv_simple"
   ];
 
-  pythonImportsCheck = [ "nats.aio" ];
+  pythonImportsCheck = [
+    "nats"
+  ];
 
   meta = with lib; {
     description = "Python client for NATS.io";
diff --git a/pkgs/development/python-modules/natsort/default.nix b/pkgs/development/python-modules/natsort/default.nix
index 3c9d625db70f9..3b3682b335e96 100644
--- a/pkgs/development/python-modules/natsort/default.nix
+++ b/pkgs/development/python-modules/natsort/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "natsort";
-  version = "7.2.0";
+  version = "8.1.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e7054b4e1f47365f141602a742685165a552291b643a214652d0dd9d6cea58d1";
+    hash = "sha256-x8Hz8nw3Vxmk38qzU5Cf458mwgMqBiqMgMyETqrKBEU=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/nbclassic/default.nix b/pkgs/development/python-modules/nbclassic/default.nix
index 0e6630281c0d8..2c062d3ff99ec 100644
--- a/pkgs/development/python-modules/nbclassic/default.nix
+++ b/pkgs/development/python-modules/nbclassic/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, python
 , notebook
 , pythonOlder
 , jupyter_server
@@ -10,19 +11,26 @@
 
 buildPythonPackage rec {
   pname = "nbclassic";
-  version = "0.3.1";
+  version = "0.3.5";
   disabled = pythonOlder "3.6";
 
   # tests only on github
   src = fetchFromGitHub {
     owner = "jupyterlab";
     repo = pname;
-    rev = version;
-    sha256 = "sha256-gx086w/qYB02UFEDly+0mUsV5BvAVAuhqih4wev2p/w=";
+    rev = "v${version}";
+    sha256 = "1d0x7nwsaw5qjw4iaylc2sxlpiq3hlg9sy3i2nh7sn3wckwl76lc";
   };
 
   propagatedBuildInputs = [ jupyter_server notebook ];
 
+  preCheck = ''
+    cd nbclassic
+    mv conftest.py tests
+    cd tests
+
+    export PYTHONPATH=$out/${python.sitePackages}:$PYTHONPATH
+  '';
   checkInputs = [
     pytestCheckHook
     pytest-tornasync
diff --git a/pkgs/development/python-modules/nbclient/default.nix b/pkgs/development/python-modules/nbclient/default.nix
index c10b442bac924..c5e3facc06224 100644
--- a/pkgs/development/python-modules/nbclient/default.nix
+++ b/pkgs/development/python-modules/nbclient/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "nbclient";
-  version = "0.5.9";
-  disabled = pythonOlder "3.6";
+  version = "0.5.10";
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-meRt2vrNC4YSk78kb+2FQKGErfo6p9ZB+JAx7AcHAeA=";
+    sha256 = "b5fdea88d6fa52ca38de6c2361401cfe7aaa7cd24c74effc5e489cec04d79088";
   };
 
   inherit doCheck;
diff --git a/pkgs/development/python-modules/nbconvert/default.nix b/pkgs/development/python-modules/nbconvert/default.nix
index 400d59272ee1d..ab91f22acc442 100644
--- a/pkgs/development/python-modules/nbconvert/default.nix
+++ b/pkgs/development/python-modules/nbconvert/default.nix
@@ -23,11 +23,11 @@
 
 buildPythonPackage rec {
   pname = "nbconvert";
-  version = "6.3.0";
+  version = "6.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5e77d6203854944520105e38f2563a813a4a3708e8563aa598928a3b5ee1081a";
+    sha256 = "5412ec774c6db4fccecb8c4ba07ec5d37d6dcf5762593cb3d6ecbbeb562ebbe5";
   };
 
   # Add $out/share/jupyter to the list of paths that are used to search for
diff --git a/pkgs/development/python-modules/nbformat/2.nix b/pkgs/development/python-modules/nbformat/2.nix
deleted file mode 100644
index 06d02520b20d4..0000000000000
--- a/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/pkgs/development/python-modules/nbsmoke/default.nix b/pkgs/development/python-modules/nbsmoke/default.nix
index a7c5425963aa3..7d1d827cc20f0 100644
--- a/pkgs/development/python-modules/nbsmoke/default.nix
+++ b/pkgs/development/python-modules/nbsmoke/default.nix
@@ -14,11 +14,11 @@
 
 buildPythonPackage rec {
   pname = "nbsmoke";
-  version = "0.5.0";
+  version = "0.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2400d7878e97714e822ab200a71fc71ede487e671f42b4b411745dba95f9cb32";
+    sha256 = "8b55333e2face27bc7ff80c266c468ca5633947cb0697727348020dd445b0874";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/nbsphinx/default.nix b/pkgs/development/python-modules/nbsphinx/default.nix
index 1b0a95f3d76fb..38234c1486e1f 100644
--- a/pkgs/development/python-modules/nbsphinx/default.nix
+++ b/pkgs/development/python-modules/nbsphinx/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "nbsphinx";
-  version = "0.8.7";
+  version = "0.8.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ff91b5b14ceb1a9d44193b5fc3dd3617e7b8ab59c788f7710049ce5faff2750c";
+    sha256 = "b5090c824b330b36c2715065a1a179ad36526bff208485a9865453d1ddfc34ec";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/ncclient/default.nix b/pkgs/development/python-modules/ncclient/default.nix
index 010e2a5bae3fc..2cb040ed8a38d 100644
--- a/pkgs/development/python-modules/ncclient/default.nix
+++ b/pkgs/development/python-modules/ncclient/default.nix
@@ -21,7 +21,6 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     paramiko
     lxml
-    selectors2
   ];
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/nengo/default.nix b/pkgs/development/python-modules/nengo/default.nix
index 566540a4c9724..c422278c830ce 100644
--- a/pkgs/development/python-modules/nengo/default.nix
+++ b/pkgs/development/python-modules/nengo/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "nengo";
-  version = "3.1.0";
+  version = "3.2.0";
 
   src = fetchFromGitHub {
     owner = "nengo";
     repo = "nengo";
     rev = "v${version}";
-    sha256 = "1wkayimf2jqkbr6piikh5zd6yw8gf2qv4v4bfrprs4laa6wzh2qh";
+    sha256 = "12lz8lzirxvwnpa74k9k48c64gs6gi092928rh97siya3i6gjs6i";
   };
 
   propagatedBuildInputs = [ numpy ]
diff --git a/pkgs/development/python-modules/nest-asyncio/default.nix b/pkgs/development/python-modules/nest-asyncio/default.nix
index 33c37d5e98073..384b6db360b95 100644
--- a/pkgs/development/python-modules/nest-asyncio/default.nix
+++ b/pkgs/development/python-modules/nest-asyncio/default.nix
@@ -5,13 +5,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.5.1";
+  version = "1.5.4";
   pname = "nest_asyncio";
   disabled = !(pythonAtLeast "3.5");
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "afc5a1c515210a23c461932765691ad39e8eba6551c055ac8d5546e69250d0aa";
+    sha256 = "f969f6013a16fadb4adcf09d11a68a4f617c6049d7af7ac2c676110169a63abd";
   };
 
   # tests not packaged with source dist as of 1.3.2/1.3.2, and
diff --git a/pkgs/development/python-modules/net2grid/default.nix b/pkgs/development/python-modules/net2grid/default.nix
new file mode 100644
index 0000000000000..05b5321a69cfa
--- /dev/null
+++ b/pkgs/development/python-modules/net2grid/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, aiohttp
+, aresponses
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, yarl
+}:
+
+buildPythonPackage rec {
+  pname = "net2grid";
+  version = "3.0.0";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "klaasnicolaas";
+    repo = "python-net2grid";
+    rev = "v${version}";
+    hash = "sha256-nT9qMv4Zr7SjNwHRN3HRR11yl+Oue8VVCfJr2n1D02Q=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    yarl
+  ];
+
+  checkInputs = [
+    aresponses
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace '"0.0.0"' '"${version}"' \
+      --replace 'addopts = "--cov"' ""
+  '';
+
+  pythonImportsCheck = [
+    "net2grid"
+  ];
+
+  meta = with lib; {
+    description = "Module for interacting with NET2GRID devices";
+    homepage = "https://github.com/klaasnicolaas/python-net2grid";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/netdata/default.nix b/pkgs/development/python-modules/netdata/default.nix
index c54719b696b11..e3071ea437d31 100644
--- a/pkgs/development/python-modules/netdata/default.nix
+++ b/pkgs/development/python-modules/netdata/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "netdata";
-  version = "1.0.1";
+  version = "1.0.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "home-assistant-ecosystem";
     repo = "python-netdata";
     rev = version;
-    sha256 = "sha256-4+cTIqytHrCPG7lUZv1IhL7Bk5GlTEveQTtuCkFIepo=";
+    sha256 = "sha256-D0W+zOpD2+iynhHMZh4obUSJJKmP3DnzA7blNWi6eHk=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/netio/default.nix b/pkgs/development/python-modules/netio/default.nix
new file mode 100644
index 0000000000000..dbc988191846f
--- /dev/null
+++ b/pkgs/development/python-modules/netio/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, requests
+, pyopenssl
+}:
+
+buildPythonPackage rec {
+  pname = "netio";
+  version = "1.0.6";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    pname = "Netio";
+    inherit version;
+    hash = "sha256-G1NSCchoRjgX2K9URNXsxpp9jxrQo0RgZ00tzWdexGU=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+    pyopenssl
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "import py2exe" ""
+  '';
+
+  pythonImportsCheck = [
+    "Netio"
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Module for interacting with NETIO devices";
+    homepage = "https://github.com/netioproducts/PyNetio";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/networkx/2.2.nix b/pkgs/development/python-modules/networkx/2.2.nix
deleted file mode 100644
index a4c66048953be..0000000000000
--- a/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/pkgs/development/python-modules/nexia/default.nix b/pkgs/development/python-modules/nexia/default.nix
index 5bb8b15f68349..79c48e57f2b0f 100644
--- a/pkgs/development/python-modules/nexia/default.nix
+++ b/pkgs/development/python-modules/nexia/default.nix
@@ -9,14 +9,16 @@
 
 buildPythonPackage rec {
   pname = "nexia";
-  version = "0.9.12";
+  version = "0.9.13";
+  format = "setuptools";
+
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "bdraco";
     repo = pname;
     rev = version;
-    sha256 = "sha256-YZHAWRTYquUm3Ymi/3mSQqxYZuoxsH5Q/LZOPDftEzU=";
+    sha256 = "sha256-0VG8tSwbVTIIsQYAEwzQfXLTDy4df/nS/rbHjYo7xf0=";
   };
 
   propagatedBuildInputs = [
@@ -29,10 +31,13 @@ buildPythonPackage rec {
   ];
 
   postPatch = ''
-    substituteInPlace setup.py --replace '"pytest-runner",' ""
+    substituteInPlace setup.py \
+      --replace '"pytest-runner",' ""
   '';
 
-  pythonImportsCheck = [ "nexia" ];
+  pythonImportsCheck = [
+    "nexia"
+  ];
 
   meta = with lib; {
     description = "Python module for Nexia thermostats";
diff --git a/pkgs/development/python-modules/nibabel/default.nix b/pkgs/development/python-modules/nibabel/default.nix
index 91195abce1cd1..60f5fcde63fe9 100644
--- a/pkgs/development/python-modules/nibabel/default.nix
+++ b/pkgs/development/python-modules/nibabel/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "nibabel";
-  version = "3.2.1";
+  version = "3.2.2";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4d2ff9426b740011a1c916b54fc25da9348282e727eaa2ea163f42e00f1fc29e";
+    sha256 = "sha256-sNzBdLMEBc6ej+weqzy7sg9cXkkgl2wIsi4FC3wST5Q=";
   };
 
   propagatedBuildInputs = [ numpy scipy h5py packaging pydicom ];
diff --git a/pkgs/development/python-modules/nidaqmx/default.nix b/pkgs/development/python-modules/nidaqmx/default.nix
index 9d916cc9324d1..60c9f271011c3 100644
--- a/pkgs/development/python-modules/nidaqmx/default.nix
+++ b/pkgs/development/python-modules/nidaqmx/default.nix
@@ -7,6 +7,7 @@
 , pykka
 , enum34
 , pythonOlder
+, pythonAtLeast
 }:
 
 # Note we currently do not patch the path to the drivers
@@ -17,6 +18,9 @@ buildPythonPackage rec {
   pname = "nidaqmx";
   version = src.rev;
 
+  # 3.10 is not supported, upstream inactive
+  disabled = pythonAtLeast "3.10";
+
   src = fetchFromGitHub {
     owner = "ni";
     repo = "nidaqmx-python";
diff --git a/pkgs/development/python-modules/nix-prefetch-github/default.nix b/pkgs/development/python-modules/nix-prefetch-github/default.nix
index 0821e0b763d08..6df6f15c068be 100644
--- a/pkgs/development/python-modules/nix-prefetch-github/default.nix
+++ b/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/pkgs/development/python-modules/nkdfu/default.nix b/pkgs/development/python-modules/nkdfu/default.nix
new file mode 100644
index 0000000000000..fa094404b8b1d
--- /dev/null
+++ b/pkgs/development/python-modules/nkdfu/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildPythonPackage, fetchPypi, fire, tqdm, intelhex, libusb1 }:
+
+buildPythonPackage rec {
+  pname = "nkdfu";
+  version = "0.1";
+  format = "flit";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-Y8GonfCBi3BNMhZ99SN6/SDSa0+dbfPIMPoVzALwH5A=";
+  };
+
+  propagatedBuildInputs = [
+    fire
+    tqdm
+    intelhex
+    libusb1
+  ];
+
+  # no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "nkdfu" ];
+
+  meta = with lib; {
+    description = "Python tool for Nitrokeys' firmware update";
+    homepage = "https://github.com/Nitrokey/nkdfu";
+    license = with licenses; [ gpl2Only ];
+    maintainers = with maintainers; [ frogamic ];
+  };
+}
diff --git a/pkgs/development/python-modules/nltk/default.nix b/pkgs/development/python-modules/nltk/default.nix
index 9267f70c2c016..9beeb4cb0a696 100644
--- a/pkgs/development/python-modules/nltk/default.nix
+++ b/pkgs/development/python-modules/nltk/default.nix
@@ -1,4 +1,7 @@
-{ fetchPypi, buildPythonPackage, lib, singledispatch ? null, isPy3k
+{ lib
+, fetchPypi
+, buildPythonPackage
+, pythonOlder
 , click
 , joblib
 , regex
@@ -6,13 +9,16 @@
 }:
 
 buildPythonPackage rec {
-  version = "3.6.7";
   pname = "nltk";
+  version = "3.7";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "51bf1aef5304740a708be7c8e683f7798f03dc5c7a7e7feb758be9e95f4585e3";
+    hash = "sha256-1lB9ZGDOx21wr+pCQqImp1QvhcZpF3ucf1YrfPGwVQI=";
   };
 
   propagatedBuildInputs = [
@@ -20,7 +26,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
@@ -30,10 +36,14 @@ buildPythonPackage rec {
   # best.
   doCheck = false;
 
-  meta = {
+  pythonImportsCheck = [
+    "nltk"
+  ];
+
+  meta = with lib; {
     description = "Natural Language Processing ToolKit";
     homepage = "http://nltk.org/";
-    license = lib.licenses.asl20;
-    maintainers = with lib.maintainers; [ lheckemann ];
+    license = licenses.asl20;
+    maintainers = with maintainers; [ lheckemann ];
   };
 }
diff --git a/pkgs/development/python-modules/nmapthon2/default.nix b/pkgs/development/python-modules/nmapthon2/default.nix
index 2567e70b0d677..a19dd946b8fdf 100644
--- a/pkgs/development/python-modules/nmapthon2/default.nix
+++ b/pkgs/development/python-modules/nmapthon2/default.nix
@@ -1,25 +1,32 @@
 { lib
 , appdirs
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
+, pytestCheckHook
 , pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "nmapthon2";
-  version = "0.1.2";
+  version = "0.1.5";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-6mGMB8nW6CqTPxgc1fveh6fJo/t+jpUS6rJ2VR2gU/g=";
+  src = fetchFromGitHub {
+    owner = "cblopez";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-4Na75TdKDywUomJF4tDWUWwCCtcOSxBUMOF7+FDhbpY=";
   };
 
-  # Tests are not part of the PyPI source and source is not tagged
-  # https://github.com/cblopez/nmapthon2/issues/3
-  doCheck = false;
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "tests/scanner_tests.py"
+  ];
 
   pythonImportsCheck = [
     "nmapthon2"
diff --git a/pkgs/development/python-modules/nmigen-boards/default.nix b/pkgs/development/python-modules/nmigen-boards/default.nix
deleted file mode 100644
index 209d1f0907794..0000000000000
--- a/pkgs/development/python-modules/nmigen-boards/default.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nmigen
-, setuptools
-, setuptools-scm
-}:
-
-buildPythonPackage rec {
-  pname = "nmigen-boards";
-  version = "unstable-2021-02-09";
-  # python setup.py --version
-  realVersion = "0.1.dev173+g${lib.substring 0 7 src.rev}";
-
-  src = fetchFromGitHub {
-    owner = "nmigen";
-    repo = "nmigen-boards";
-    rev = "a35d870a994c2919116b2c06166dc127febb1512";
-    sha256 = "1flbcyb2xz174dgqv2964qra80xj2vbzbqwjb27shvxm6knj9ikf";
-  };
-
-  nativeBuildInputs = [ setuptools-scm ];
-  propagatedBuildInputs = [ setuptools nmigen ];
-
-  preBuild = ''
-    export SETUPTOOLS_SCM_PRETEND_VERSION="${realVersion}"
-  '';
-
-  # no tests
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Board and connector definitions for nMigen";
-    homepage = "https://github.com/nmigen/nmigen-boards";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ emily ];
-  };
-}
diff --git a/pkgs/development/python-modules/nmigen-soc/default.nix b/pkgs/development/python-modules/nmigen-soc/default.nix
deleted file mode 100644
index 22422adad92ac..0000000000000
--- a/pkgs/development/python-modules/nmigen-soc/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, nmigen
-, setuptools
-, setuptools-scm
-}:
-
-buildPythonPackage rec {
-  pname = "nmigen-soc";
-  version = "unstable-2021-02-09";
-  # python setup.py --version
-  realVersion = "0.1.dev43+g${lib.substring 0 7 src.rev}";
-
-  src = fetchFromGitHub {
-    owner = "nmigen";
-    repo = "nmigen-soc";
-    rev = "ecfad4d9abacf903a525f0a252c38844eda0d2dd";
-    sha256 = "0afmnfs1ms7p1r4c1nc0sfvlcq36zjwaim7775v5i2vajcn3020c";
-  };
-
-  nativeBuildInputs = [ setuptools-scm ];
-  propagatedBuildInputs = [ setuptools nmigen ];
-
-  preBuild = ''
-    export SETUPTOOLS_SCM_PRETEND_VERSION="${realVersion}"
-  '';
-
-  meta = with lib; {
-    description = "System on Chip toolkit for nMigen";
-    homepage = "https://github.com/nmigen/nmigen-soc";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ emily ];
-  };
-}
diff --git a/pkgs/development/python-modules/nose-focus/default.nix b/pkgs/development/python-modules/nose-focus/default.nix
deleted file mode 100644
index 2805dc4545af1..0000000000000
--- a/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/pkgs/development/python-modules/nose-of-yeti/default.nix b/pkgs/development/python-modules/nose-of-yeti/default.nix
deleted file mode 100644
index 16fb264b39aee..0000000000000
--- a/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/pkgs/development/python-modules/nose/default.nix b/pkgs/development/python-modules/nose/default.nix
index 456bbfd9aedd8..451c71897da9a 100644
--- a/pkgs/development/python-modules/nose/default.nix
+++ b/pkgs/development/python-modules/nose/default.nix
@@ -14,6 +14,19 @@ buildPythonPackage rec {
     sha256 = "f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98";
   };
 
+  # 2to3 was removed in setuptools 58
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "'use_2to3': True," ""
+
+    substituteInPlace setup3lib.py \
+      --replace "from setuptools.command.build_py import Mixin2to3" "from distutils.util import Mixin2to3"
+  '';
+
+  preBuild = ''
+    2to3 -wn nose functional_tests unit_tests
+  '';
+
   propagatedBuildInputs = [ coverage ];
 
   doCheck = false;  # lot's of transient errors, too much hassle
diff --git a/pkgs/development/python-modules/nose2/default.nix b/pkgs/development/python-modules/nose2/default.nix
index 004991e1ce9dc..15850119c8403 100644
--- a/pkgs/development/python-modules/nose2/default.nix
+++ b/pkgs/development/python-modules/nose2/default.nix
@@ -9,26 +9,33 @@
 
 buildPythonPackage rec {
   pname = "nose2";
-  version = "0.10.0";
+  version = "0.11.0";
+  format = "setuptools";
 
-  # Requires mock 2.0.0 if python < 3.6, but NixPkgs has mock 3.0.5.
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "886ba617a96de0130c54b24479bd5c2d74d5c940d40f3809c3a275511a0c4a60";
+    hash = "sha256-bSCNfW7J+dVcdNrIHJOUvDkG2++BqMpUILK5t/jmnek=";
   };
 
-  propagatedBuildInputs = [ six coverage ];
+  propagatedBuildInputs = [
+    coverage
+    six
+  ];
 
   checkPhase = ''
     ${python.interpreter} -m unittest
   '';
 
+  pythonImportsCheck = [
+    "nose2"
+  ];
+
   meta = with lib; {
-    description = "nose2 is the next generation of nicer testing for Python";
+    description = "Test runner for Python";
     homepage = "https://github.com/nose-devs/nose2";
     license = licenses.bsd0;
+    maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/notebook/2.nix b/pkgs/development/python-modules/notebook/2.nix
deleted file mode 100644
index aec27eab59a92..0000000000000
--- a/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/pkgs/development/python-modules/notebook/default.nix b/pkgs/development/python-modules/notebook/default.nix
index 1cb5f1b75708a..7a1902cb21144 100644
--- a/pkgs/development/python-modules/notebook/default.nix
+++ b/pkgs/development/python-modules/notebook/default.nix
@@ -27,12 +27,12 @@
 
 buildPythonPackage rec {
   pname = "notebook";
-  version = "6.4.6";
+  version = "6.4.7";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7bcdf79bd1cda534735bd9830d2cbedab4ee34d8fe1df6e7b946b3aab0902ba3";
+    sha256 = "b01da66f11a203b3839d6afa4013674bcfff41c36552f9ad0fbcb2d93c92764a";
   };
 
   LC_ALL = "en_US.utf8";
diff --git a/pkgs/development/python-modules/notify/default.nix b/pkgs/development/python-modules/notify/default.nix
deleted file mode 100644
index 8aa70b43e665d..0000000000000
--- a/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/pkgs/development/python-modules/notmuch/2.nix b/pkgs/development/python-modules/notmuch/2.nix
deleted file mode 100644
index bd195b52d44e1..0000000000000
--- a/pkgs/development/python-modules/notmuch/2.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-
-, buildPythonPackage
-, notmuch
-, python
-, cffi
-}:
-
-buildPythonPackage {
-  pname = "notmuch2";
-  inherit (notmuch) version src;
-
-  sourceRoot = "notmuch-${notmuch.version}/bindings/python-cffi";
-
-  buildInputs = [ python notmuch cffi ];
-
-  # no tests
-  doCheck = false;
-  pythonImportsCheck = [ "notmuch2" ];
-
-  meta = with lib; {
-    description = "Pythonic bindings for the notmuch mail database using CFFI";
-    homepage = "https://notmuchmail.org/";
-    license = licenses.gpl3;
-    maintainers = with maintainers; [ teto ];
-  };
-}
diff --git a/pkgs/development/python-modules/numba/default.nix b/pkgs/development/python-modules/numba/default.nix
index c45419c5c88c3..8bead014e34a7 100644
--- a/pkgs/development/python-modules/numba/default.nix
+++ b/pkgs/development/python-modules/numba/default.nix
@@ -12,13 +12,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "0.54.1";
+  version = "0.55.0";
   pname = "numba";
   disabled = pythonOlder "3.6" || pythonAtLeast "3.10";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f9dfc803c864edcc2381219b800abf366793400aea55e26d4d5b7d953e14f43f";
+    sha256 = "sha256-siHr2ZdmKh3Ld+TwkUDgIvv+dXetB4H8LgIUE126bL0=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/numexpr/default.nix b/pkgs/development/python-modules/numexpr/default.nix
index 31b529c83dab4..ffc422e9b421d 100644
--- a/pkgs/development/python-modules/numexpr/default.nix
+++ b/pkgs/development/python-modules/numexpr/default.nix
@@ -1,32 +1,38 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, python
 , numpy
+, packaging
+, python
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "numexpr";
-  version = "2.8.0";
+  version = "2.8.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9fec076b76c90a5f3929373f548834bb203c6d23a81a895e60d0fe9cca075e99";
+    hash = "sha256-zXeapE3ZhsTvEBY1GSOWArAnvgalJ5RmViB6zx9YETs=";
   };
 
-  # Remove existing site.cfg, use the one we built for numpy.
-  preBuild = ''
-    ln -s ${numpy.cfg} site.cfg
-  '';
-
   nativeBuildInputs = [
     numpy
   ];
 
   propagatedBuildInputs = [
     numpy
+    packaging
   ];
 
+  preBuild = ''
+    # Remove existing site.cfg, use the one we built for numpy
+    ln -s ${numpy.cfg} site.cfg
+  '';
+
   checkPhase = ''
     runtest="$(pwd)/numexpr/tests/test_numexpr.py"
     pushd "$out"
@@ -34,9 +40,14 @@ buildPythonPackage rec {
     popd
   '';
 
-  meta = {
+  pythonImportsCheck = [
+    "numexpr"
+  ];
+
+  meta = with lib; {
     description = "Fast numerical array expression evaluator for NumPy";
     homepage = "https://github.com/pydata/numexpr";
-    license = lib.licenses.mit;
+    license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/numpy/1.16.nix b/pkgs/development/python-modules/numpy/1.16.nix
deleted file mode 100644
index 1ab958a15f073..0000000000000
--- a/pkgs/development/python-modules/numpy/1.16.nix
+++ /dev/null
@@ -1,99 +0,0 @@
-{ lib
-, fetchPypi
-, python
-, buildPythonPackage
-, gfortran
-, pytest
-, blas
-, lapack
-, writeTextFile
-, isPyPy
-, cython
-, setuptoolsBuildHook
- }:
-
-assert (!blas.isILP64) && (!lapack.isILP64);
-
-let
-  cfg = writeTextFile {
-    name = "site.cfg";
-    text = (lib.generators.toINI {} {
-      ${blas.implementation} = {
-        include_dirs = "${lib.getDev blas}/include:${lib.getDev lapack}/include";
-        library_dirs = "${blas}/lib:${lapack}/lib";
-        runtime_library_dirs = "${blas}/lib:${lapack}/lib";
-        libraries = "lapack,lapacke,blas,cblas";
-      };
-      lapack = {
-        include_dirs = "${lib.getDev lapack}/include";
-        library_dirs = "${lapack}/lib";
-        runtime_library_dirs = "${lapack}/lib";
-      };
-      blas = {
-        include_dirs = "${lib.getDev blas}/include";
-        library_dirs = "${blas}/lib";
-        runtime_library_dirs = "${blas}/lib";
-      };
-    });
-  };
-in buildPythonPackage rec {
-  pname = "numpy";
-  version = "1.16.6";
-  format = "pyproject.toml";
-
-  src = fetchPypi {
-    inherit pname version;
-    extension = "zip";
-    sha256 = "e5cf3fdf13401885e8eea8170624ec96225e2174eb0c611c6f26dd33b489e3ff";
-  };
-
-  nativeBuildInputs = [ gfortran pytest cython setuptoolsBuildHook ];
-  buildInputs = [ blas lapack ];
-
-  patches = lib.optionals python.hasDistutilsCxxPatch [
-    # We patch cpython/distutils to fix https://bugs.python.org/issue1222585
-    # Patching of numpy.distutils is needed to prevent it from undoing the
-    # patch to distutils.
-    ./numpy-distutils-C++_1.16.patch
-  ];
-
-  preConfigure = ''
-    sed -i 's/-faltivec//' numpy/distutils/system_info.py
-    export NPY_NUM_BUILD_JOBS=$NIX_BUILD_CORES
-    export OMP_NUM_THREADS=$((NIX_BUILD_CORES > 64 ? 64 : NIX_BUILD_CORES))
-  '';
-
-  preBuild = ''
-    ln -s ${cfg} site.cfg
-  '';
-
-  enableParallelBuilding = true;
-
-  doCheck = !isPyPy; # numpy 1.16+ hits a bug in pypy's ctypes, using either numpy or pypy HEAD fixes this (https://github.com/numpy/numpy/issues/13807)
-
-  checkPhase = ''
-    runHook preCheck
-    pushd dist
-    ${python.interpreter} -c 'import numpy; numpy.test("fast", verbose=10)'
-    popd
-    runHook postCheck
-  '';
-
-  passthru = {
-    # just for backwards compatibility
-    blas = blas.provider;
-    blasImplementation = blas.implementation;
-    inherit cfg;
-  };
-
-  # Disable test
-  # - test_large_file_support: takes a long time and can cause the machine to run out of disk space
-  NOSE_EXCLUDE="test_large_file_support";
-
-  meta = {
-    description = "Scientific tools for Python";
-    homepage = "https://numpy.org/";
-    license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ fridh ];
-  };
-}
diff --git a/pkgs/development/python-modules/numpy/default.nix b/pkgs/development/python-modules/numpy/default.nix
index 945828fbc19fd..2fbe1a7a694cb 100644
--- a/pkgs/development/python-modules/numpy/default.nix
+++ b/pkgs/development/python-modules/numpy/default.nix
@@ -40,14 +40,19 @@ let
   };
 in buildPythonPackage rec {
   pname = "numpy";
-  version = "1.21.4";
+
+  # Attention! v1.22.0 breaks scipy and by extension scikit-learn, so
+  # build both to verify they don't break.
+  # https://github.com/scipy/scipy/issues/15414
+  version = "1.21.5";
+
   format = "pyproject.toml";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "e6c76a87633aa3fa16614b61ccedfae45b91df2767cf097aa9c933932a7ed1e0";
+    sha256 = "sha256-alkovGJBJk3OXtUJ5m8zZ2/Jf0ZOepGe3GcvtVMiIe4=";
   };
 
   patches = lib.optionals python.hasDistutilsCxxPatch [
diff --git a/pkgs/development/python-modules/numpy/numpy-distutils-C++_1.16.patch b/pkgs/development/python-modules/numpy/numpy-distutils-C++_1.16.patch
deleted file mode 100644
index b2626ea26e5b5..0000000000000
--- a/pkgs/development/python-modules/numpy/numpy-distutils-C++_1.16.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-diff --git a/numpy/distutils/unixccompiler.py b/numpy/distutils/unixccompiler.py
---- a/numpy/distutils/unixccompiler.py
-+++ b/numpy/distutils/unixccompiler.py
-@@ -44,8 +44,6 @@ def UnixCCompiler__compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts
-         if opt not in llink_s:
-             self.linker_so = llink_s.split() + opt.split()
- 
--    display = '%s: %s' % (os.path.basename(self.compiler_so[0]), src)
--
-     # gcc style automatic dependencies, outputs a makefile (-MF) that lists
-     # all headers needed by a c file as a side effect of compilation (-MMD)
-     if getattr(self, '_auto_depends', False):
-@@ -54,8 +52,15 @@ def UnixCCompiler__compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts
-         deps = []
- 
-     try:
--        self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + deps +
--                   extra_postargs, display = display)
-+        if self.detect_language(src) == 'c++':
-+            display = '%s: %s' % (os.path.basename(self.compiler_so_cxx[0]), src)
-+            self.spawn(self.compiler_so_cxx + cc_args + [src, '-o', obj] + deps +
-+                       extra_postargs, display = display)
-+        else:
-+            display = '%s: %s' % (os.path.basename(self.compiler_so[0]), src)
-+            self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + deps +
-+                       extra_postargs, display = display)
-+
-     except DistutilsExecError:
-         msg = str(get_exception())
-         raise CompileError(msg)
diff --git a/pkgs/development/python-modules/nunavut/default.nix b/pkgs/development/python-modules/nunavut/default.nix
index 8c4c8e1fbc5f7..f4cc9d3140e46 100644
--- a/pkgs/development/python-modules/nunavut/default.nix
+++ b/pkgs/development/python-modules/nunavut/default.nix
@@ -8,13 +8,13 @@
 
  buildPythonPackage rec {
   pname = "nunavut";
-  version = "1.5.2";
+  version = "1.6.2";
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "12703306872404be556648ab2282dc1566f4e77bfb9f14747fb13294c9235081";
+    sha256 = "c6f99eaa65935b2c8a3f004025fb3c0309e11655c391d0fcd318d2a8665ca5c4";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/nvchecker/default.nix b/pkgs/development/python-modules/nvchecker/default.nix
index f8b434a7a1291..73819188c49c3 100644
--- a/pkgs/development/python-modules/nvchecker/default.nix
+++ b/pkgs/development/python-modules/nvchecker/default.nix
@@ -5,7 +5,7 @@
 , pytestCheckHook
 , setuptools
 , packaging
-, toml
+, tomli
 , structlog
 , appdirs
 , pytest-asyncio
@@ -20,18 +20,18 @@
 
 buildPythonPackage rec {
   pname = "nvchecker";
-  version = "2.5";
+  version = "2.6.1";
 
   # Tests not included in PyPI tarball
   src = fetchFromGitHub {
     owner = "lilydjwg";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0jzmpra87dlj88d20ihnva9fj81wqbbd9qbzsjwwvzdx062136mg";
+    sha256 = "sha256-Lfo/VzsklEbv/kiKV5GbzvycwekqykRLrZBhehC1MjY=";
   };
 
   nativeBuildInputs = [ installShellFiles docutils ];
-  propagatedBuildInputs = [ setuptools packaging toml structlog appdirs tornado pycurl aiohttp ];
+  propagatedBuildInputs = [ setuptools packaging tomli structlog appdirs tornado pycurl aiohttp ];
   checkInputs = [ pytestCheckHook pytest-asyncio flaky pytest-httpbin ];
 
   disabled = pythonOlder "3.7";
diff --git a/pkgs/development/python-modules/nxt-python/default.nix b/pkgs/development/python-modules/nxt-python/default.nix
deleted file mode 100644
index 38920dc55429d..0000000000000
--- a/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/pkgs/development/python-modules/oauthlib/3.1.nix b/pkgs/development/python-modules/oauthlib/3.1.nix
deleted file mode 100644
index 10757812037ae..0000000000000
--- a/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/pkgs/development/python-modules/oauthlib/default.nix b/pkgs/development/python-modules/oauthlib/default.nix
index 5c4cbc78adb7e..01e6ca29b5d9b 100644
--- a/pkgs/development/python-modules/oauthlib/default.nix
+++ b/pkgs/development/python-modules/oauthlib/default.nix
@@ -1,31 +1,40 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, mock
-, pytest
-, cryptography
+
+# propagates
 , blinker
+, cryptography
 , pyjwt
+
+# test
+, mock
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "oauthlib";
-  version = "unstable-2020-05-08";
+  version = "3.1.1";
+  format = "setuptools";
 
   # master supports pyjwt==1.7.1
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
-    rev = "46647402896db5f0d979eba9594623e889739060";
-    sha256 = "1wrdjdvlfcd74lckcgascnasrffg8sip0z673si4ag5kv4afiz3l";
+    rev = "v${version}";
+    hash = "sha256:1bgxpzh11i0x7h9py3a29cz5z714b3p498b62znnn5ciy0cr80sv";
   };
 
-  checkInputs = [ mock pytest ];
-  propagatedBuildInputs = [ cryptography blinker pyjwt ];
+  propagatedBuildInputs = [
+    blinker
+    cryptography
+    pyjwt
+  ];
 
-  checkPhase = ''
-    py.test tests/
-  '';
+  checkInputs = [
+    mock
+    pytestCheckHook
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/idan/oauthlib";
diff --git a/pkgs/development/python-modules/objax/default.nix b/pkgs/development/python-modules/objax/default.nix
index fb48f9141e2a8..da0a70aafb4c7 100644
--- a/pkgs/development/python-modules/objax/default.nix
+++ b/pkgs/development/python-modules/objax/default.nix
@@ -7,28 +7,33 @@
 , parameterized
 , pillow
 , scipy
-, tensorflow-tensorboard_2 ? null
+, tensorflow-tensorboard
 }:
 
 buildPythonPackage rec {
   pname = "objax";
-  version = "1.4.0";
+  version = "1.6.0";
 
   src = fetchFromGitHub {
     owner = "google";
     repo = "objax";
     rev = "v${version}";
-    sha256 = "09gm61ghn5mi92q5mhx22mcv6aa6z78jsrnfar1hd3nwwyn9dq42";
+    sha256 = "sha256-/6tZxVDe/3C53Re14odU9VA3mKvSj9X3/xt6bHFLHwQ=";
   };
 
+  # Avoid propagating the dependency on `jaxlib`, see
+  # https://github.com/NixOS/nixpkgs/issues/156767
+  buildInputs = [
+    jaxlib
+  ];
+
   propagatedBuildInputs = [
     jax
-    jaxlib
     numpy
     parameterized
     pillow
     scipy
-    tensorflow-tensorboard_2
+    tensorflow-tensorboard
   ];
 
   pythonImportsCheck = [
@@ -40,7 +45,5 @@ buildPythonPackage rec {
     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/pkgs/development/python-modules/oci/default.nix b/pkgs/development/python-modules/oci/default.nix
index 793e23d71135f..8da783dbdb278 100644
--- a/pkgs/development/python-modules/oci/default.nix
+++ b/pkgs/development/python-modules/oci/default.nix
@@ -1,45 +1,58 @@
 { lib
-, fetchFromGitHub
 , buildPythonPackage
 , certifi
+, circuitbreaker
 , configparser
 , cryptography
+, fetchFromGitHub
 , pyopenssl
 , python-dateutil
+, pythonOlder
 , pytz
 }:
 
 buildPythonPackage rec {
   pname = "oci";
-  version = "2.36.0";
+  version = "2.56.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "oracle";
     repo = "oci-python-sdk";
     rev = "v${version}";
-    hash = "sha256-scG/ZhWeiCgXp7iD6arWIN8KZecSjKLsCW4oXeJvx6M=";
+    hash = "sha256-olrWv4c2DoZ7ddm58Wpb5jZntw8WEKJ6IzAND11tdjk=";
   };
 
+  propagatedBuildInputs = [
+    certifi
+    circuitbreaker
+    configparser
+    cryptography
+    pyopenssl
+    python-dateutil
+    pytz
+  ];
+
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "configparser==4.0.2" "configparser" \
-      --replace "cryptography==3.2.1" "cryptography" \
+      --replace "configparser==4.0.2 ; python_version < '3'" "configparser" \
+      --replace "cryptography>=3.2.1,<=3.4.7" "cryptography" \
       --replace "pyOpenSSL>=17.5.0,<=19.1.0" "pyOpenSSL"
   '';
 
-  propagatedBuildInputs = [
-    certifi configparser cryptography pyopenssl python-dateutil pytz
-  ];
-
   # Tests fail: https://github.com/oracle/oci-python-sdk/issues/164
   doCheck = false;
 
-  pythonImportsCheck = [ "oci" ];
+  pythonImportsCheck = [
+    "oci"
+  ];
 
   meta = with lib; {
     description = "Oracle Cloud Infrastructure Python SDK";
-    homepage = "https://oracle-cloud-infrastructure-python-sdk.readthedocs.io/en/latest/index.html";
+    homepage = "https://oracle-cloud-infrastructure-python-sdk.readthedocs.io/";
+    license = with licenses; [ asl20 /* or */ upl ];
     maintainers = with maintainers; [ ilian ];
-    license = with licenses; [ asl20 upl ];
   };
 }
diff --git a/pkgs/development/python-modules/ocrmypdf/default.nix b/pkgs/development/python-modules/ocrmypdf/default.nix
index a6c9b150ead78..e3dcfafb958f7 100644
--- a/pkgs/development/python-modules/ocrmypdf/default.nix
+++ b/pkgs/development/python-modules/ocrmypdf/default.nix
@@ -27,7 +27,7 @@
 
 buildPythonPackage rec {
   pname = "ocrmypdf";
-  version = "13.2.0";
+  version = "13.3.0";
 
   src = fetchFromGitHub {
     owner = "jbarlow83";
@@ -39,7 +39,7 @@ buildPythonPackage rec {
     extraPostFetch = ''
       rm "$out/.git_archival.txt"
     '';
-    sha256 = "sha256-mVPKcxTKoRgttwJdsY7r0kF7W1+G45iCc+mFctDipSM=";
+    sha256 = "sha256-8QOxHka2kl/keYbsP1zOZ8hrZ+15ZGJaw91F+cpWvcA=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
diff --git a/pkgs/development/python-modules/od/default.nix b/pkgs/development/python-modules/od/default.nix
index aa275cb27a69c..de64e2f8fdc81 100644
--- a/pkgs/development/python-modules/od/default.nix
+++ b/pkgs/development/python-modules/od/default.nix
@@ -1,16 +1,18 @@
-{ lib, buildPythonPackage, fetchPypi, unittest2, repeated_test }:
+{ lib, buildPythonPackage, fetchPypi, unittest2 }:
 
 buildPythonPackage rec {
   pname = "od";
-  version = "1.0";
+  version = "2.0.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1az30snc3w6s4k1pi7mspcv8y0kp3ihf3ly44z517nszmz9lrjfi";
+    sha256 = "sha256-uGkj2Z8mLg51IV+FOqwZl1hT7zVyjmD1CcY/VbH4tKk=";
   };
 
+  # repeated_test no longer exists in nixpkgs
+  # also see: https://github.com/epsy/od/issues/1
+  doCheck = false;
   checkInputs = [
-    repeated_test
     unittest2
   ];
 
diff --git a/pkgs/development/python-modules/olefile/default.nix b/pkgs/development/python-modules/olefile/default.nix
index d2c39e54ef48c..ff0dc7c1c93a5 100644
--- a/pkgs/development/python-modules/olefile/default.nix
+++ b/pkgs/development/python-modules/olefile/default.nix
@@ -1,7 +1,13 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+}:
+
 buildPythonPackage rec {
   pname = "olefile";
   version = "0.46";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
@@ -9,10 +15,20 @@ buildPythonPackage rec {
     sha256 = "133b031eaf8fd2c9399b78b8bc5b8fcbe4c31e85295749bb17a87cba8f3c3964";
   };
 
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "olefile"
+  ];
+
   meta = with lib; {
     description = "Python package to parse, read and write Microsoft OLE2 files";
     homepage = "https://www.decalage.info/python/olefileio";
-    # BSD like + reference to Pillow
-    license = "http://olefile.readthedocs.io/en/latest/License.html";
+    # BSD2 + reference to Pillow
+    # http://olefile.readthedocs.io/en/latest/License.html
+    license = with licenses; [ bsd2 /* and */ hpnd ];
+    maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/oletools/default.nix b/pkgs/development/python-modules/oletools/default.nix
index 54c5c6c165b24..76019730eb70a 100644
--- a/pkgs/development/python-modules/oletools/default.nix
+++ b/pkgs/development/python-modules/oletools/default.nix
@@ -39,6 +39,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "pyparsing>=2.1.0,<3" "pyparsing>=2.1.0"
+  '';
+
   disabledTests = [
     # Test fails with AssertionError: Tuples differ: ('MS Word 2007+...
     "test_all"
diff --git a/pkgs/development/python-modules/omnikinverter/default.nix b/pkgs/development/python-modules/omnikinverter/default.nix
index 6f347d9672a0c..a992f14616a34 100644
--- a/pkgs/development/python-modules/omnikinverter/default.nix
+++ b/pkgs/development/python-modules/omnikinverter/default.nix
@@ -12,16 +12,16 @@
 
 buildPythonPackage rec {
   pname = "omnikinverter";
-  version = "0.6.2";
+  version = "0.7.0";
   format = "pyproject";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "klaasnicolaas";
     repo = "python-omnikinverter";
     rev = "v${version}";
-    sha256 = "sha256-NnwjiaFUi2vzORu8sndtfdVpZEAIMCvT+9VEr2ZOx3k=";
+    sha256 = "sha256-IiU7nhwH0Mc6s+g9WtJugpORuL0qGNJFKDY5hvxIZAU=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/online-judge-api-client/default.nix b/pkgs/development/python-modules/online-judge-api-client/default.nix
new file mode 100644
index 0000000000000..81ca9bfaf42c0
--- /dev/null
+++ b/pkgs/development/python-modules/online-judge-api-client/default.nix
@@ -0,0 +1,60 @@
+{ lib
+, appdirs
+, beautifulsoup4
+, buildPythonPackage
+, colorlog
+, fetchFromGitHub
+, git
+, jsonschema
+, lxml
+, markdown
+, python
+, requests
+, substituteAll
+, toml
+}:
+
+let
+  # NOTE This is needed to download & run another Python program internally in
+  #      order to generate test cases for library-checker problems.
+  pythonEnv = python.withPackages (ps: with ps; [ colorlog jinja2 markdown toml ]);
+in buildPythonPackage rec {
+  pname = "online-judge-api-client";
+  version = "10.10.0";
+
+  src = fetchFromGitHub {
+    owner = "online-judge-tools";
+    repo = "api-client";
+    rev = "v${version}";
+    sha256 = "0lmryqi0bv82v9k9kf1rzzq9zr83smpmy8ivzw4fk31hvpczp4fn";
+  };
+
+  patches = [ ./fix-paths.patch ];
+  postPatch = ''
+    substituteInPlace onlinejudge/service/library_checker.py \
+      --subst-var-by git               ${git} \
+      --subst-var-by pythonInterpreter ${pythonEnv.interpreter}
+  '';
+
+  propagatedBuildInputs = [
+    appdirs
+    beautifulsoup4
+    colorlog
+    jsonschema
+    lxml
+    requests
+    toml
+  ];
+
+  # Requires internet access
+  doCheck = false;
+
+  pythonImportsCheck = [ "onlinejudge" "onlinejudge_api" ];
+
+  meta = with lib; {
+    description = "API client to develop tools for competitive programming";
+    homepage = "https://github.com/online-judge-tools/api-client";
+    license = licenses.mit;
+    maintainers = with maintainers; [ sei40kr ];
+  };
+}
diff --git a/pkgs/development/python-modules/online-judge-api-client/fix-paths.patch b/pkgs/development/python-modules/online-judge-api-client/fix-paths.patch
new file mode 100644
index 0000000000000..5ec1f9b95c2e5
--- /dev/null
+++ b/pkgs/development/python-modules/online-judge-api-client/fix-paths.patch
@@ -0,0 +1,39 @@
+diff --git a/onlinejudge/service/library_checker.py b/onlinejudge/service/library_checker.py
+index b63c7b7..e062490 100644
+--- a/onlinejudge/service/library_checker.py
++++ b/onlinejudge/service/library_checker.py
+@@ -51,7 +51,7 @@ class LibraryCheckerService(onlinejudge.type.Service):
+             return
+ 
+         try:
+-            subprocess.check_call(['git', '--version'], stdout=sys.stderr, stderr=sys.stderr)
++            subprocess.check_call(['@git@/bin/git', '--version'], stdout=sys.stderr, stderr=sys.stderr)
+         except FileNotFoundError:
+             logger.error('git command not found')
+             raise
+@@ -60,12 +60,12 @@ class LibraryCheckerService(onlinejudge.type.Service):
+         if not path.exists():
+             # init the problem repository
+             url = 'https://github.com/yosupo06/library-checker-problems'
+-            logger.info('$ git clone %s %s', url, path)
+-            subprocess.check_call(['git', 'clone', url, str(path)], stdout=sys.stderr, stderr=sys.stderr)
++            logger.info('$ @git@/bin/git clone %s %s', url, path)
++            subprocess.check_call(['@git@/bin/git', 'clone', url, str(path)], stdout=sys.stderr, stderr=sys.stderr)
+         else:
+             # sync the problem repository
+-            logger.info('$ git -C %s pull', str(path))
+-            subprocess.check_call(['git', '-C', str(path), 'pull'], stdout=sys.stderr, stderr=sys.stderr)
++            logger.info('$ @git@/bin/git -C %s pull', str(path))
++            subprocess.check_call(['@git@/bin/git', '-C', str(path), 'pull'], stdout=sys.stderr, stderr=sys.stderr)
+ 
+         cls.is_repository_updated = True
+ 
+@@ -100,7 +100,7 @@ class LibraryCheckerProblem(onlinejudge.type.Problem):
+             logger.warning("generate.py may not work on Windows")
+ 
+         problem_spec = str(self._get_problem_directory_path() / 'info.toml')
+-        command = [sys.executable, str(path / 'generate.py'), problem_spec]
++        command = ['@pythonInterpreter@', str(path / 'generate.py'), problem_spec]
+         if compile_checker:
+             command.append('--compile-checker')
+         logger.info('$ %s', ' '.join(command))
diff --git a/pkgs/development/python-modules/online-judge-tools/default.nix b/pkgs/development/python-modules/online-judge-tools/default.nix
new file mode 100644
index 0000000000000..34e1882d60e95
--- /dev/null
+++ b/pkgs/development/python-modules/online-judge-tools/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, colorama
+, fetchFromGitHub
+, online-judge-api-client
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "online-judge-tools";
+  version = "11.5.1";
+
+  src = fetchFromGitHub {
+    owner = "online-judge-tools";
+    repo = "oj";
+    rev = "v${version}";
+    sha256 = "0zkzmmjgjb6lyrzq1ip54cpnp7al9a7mcyjyi5vx58bvnx3q0c6m";
+  };
+
+  propagatedBuildInputs = [ colorama online-judge-api-client requests ];
+
+  # Requires internet access
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Tools for various online judges. Download sample cases, generate additional test cases, test your code, and submit it.";
+    homepage = "https://github.com/online-judge-tools/oj";
+    license = licenses.mit;
+    maintainers = with maintainers; [ sei40kr ];
+  };
+}
diff --git a/pkgs/development/python-modules/onnx/default.nix b/pkgs/development/python-modules/onnx/default.nix
index 6a682f4481043..d32b82365dc71 100644
--- a/pkgs/development/python-modules/onnx/default.nix
+++ b/pkgs/development/python-modules/onnx/default.nix
@@ -67,7 +67,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Open Neural Network Exchange";
-    homepage = "http://onnx.ai";
+    homepage = "https://onnx.ai";
     license = licenses.asl20;
     maintainers = with maintainers; [ acairncross ];
   };
diff --git a/pkgs/development/python-modules/onvif-zeep-async/default.nix b/pkgs/development/python-modules/onvif-zeep-async/default.nix
new file mode 100644
index 0000000000000..5e9a86acc6bdd
--- /dev/null
+++ b/pkgs/development/python-modules/onvif-zeep-async/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, httpx
+, pythonOlder
+, zeep
+}:
+
+buildPythonPackage rec {
+  pname = "onvif-zeep-async";
+  version = "1.2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-O4H6oL9cFvgX6whoESA7eRI6+VoT1ncRk/tehQT1WcM=";
+  };
+
+  propagatedBuildInputs = [
+    httpx
+    zeep
+  ];
+
+  pythonImportsCheck = [
+    "onvif"
+  ];
+
+  # Tests are not shipped
+  doCheck = false;
+
+  meta = with lib; {
+    description = "ONVIF Client Implementation in Python";
+    homepage = "https://github.com/hunterjm/python-onvif-zeep-async";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/oocsi/default.nix b/pkgs/development/python-modules/oocsi/default.nix
index 2f0ae510d018d..c558ebcc1a6ed 100644
--- a/pkgs/development/python-modules/oocsi/default.nix
+++ b/pkgs/development/python-modules/oocsi/default.nix
@@ -6,14 +6,14 @@
 
 buildPythonPackage rec {
   pname = "oocsi";
-  version = "0.4.2";
+  version = "0.4.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "020xfjvcgicj81zl3z9wnb2f9bha75bjw512b0cc38w66bniinjq";
+    sha256 = "sha256-AgDBsPoi0aQ6uglc7Zl4gxVmeyDCysoef5vZpxgwE/Q=";
   };
 
   # Tests are not shipped
diff --git a/pkgs/development/python-modules/openai/default.nix b/pkgs/development/python-modules/openai/default.nix
index 542112126b10d..3c557eabb9dc4 100644
--- a/pkgs/development/python-modules/openai/default.nix
+++ b/pkgs/development/python-modules/openai/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "openai";
-  version = "0.11.5";
+  version = "0.14.0";
 
   disabled = pythonOlder "3.7.1";
 
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "openai";
     repo = "openai-python";
     rev = "v${version}";
-    sha256 = "sha256-6eL3/vDWyIOVjRQo4OO3OgyUG3t8dKPtxzMMTxPCglM=";
+    sha256 = "sha256-AFfbMeYxdZaIABhf4XpszhLvFuMJebhl07sv9kuiknA=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/openapi-core/default.nix b/pkgs/development/python-modules/openapi-core/default.nix
index 8e39c899684c3..0d48ab04a1dbb 100644
--- a/pkgs/development/python-modules/openapi-core/default.nix
+++ b/pkgs/development/python-modules/openapi-core/default.nix
@@ -66,6 +66,8 @@ buildPythonPackage rec {
   disabledTests = [
     # TypeError: Unexpected keyword arguments passed to pytest.raises: message
     "test_string_format_invalid_value"
+    # Needs a fix for new PyYAML
+    "test_django_rest_framework_apiview"
   ];
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/openapi-schema-validator/default.nix b/pkgs/development/python-modules/openapi-schema-validator/default.nix
index 18e357c1f2d27..8251c2cd01751 100644
--- a/pkgs/development/python-modules/openapi-schema-validator/default.nix
+++ b/pkgs/development/python-modules/openapi-schema-validator/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
+, poetry-core
 , pytestCheckHook
 , isodate
 , jsonschema
@@ -13,13 +14,20 @@
 
 buildPythonPackage rec {
   pname = "openapi-schema-validator";
-  version = "0.1.5";
+  version = "0.2.0";
+  format = "pyproject";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "a4b2712020284cee880b4c55faa513fbc2f8f07f365deda6098f8ab943c9f0df";
+  src = fetchFromGitHub {
+    owner = "p1c2u";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-HoXtDlXOoYqzsM4FxVfLQdIlpJXaNUcQo8//B4JqJoA=";
   };
 
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
   propagatedBuildInputs = [ isodate jsonschema six strict-rfc3339 rfc3339-validator ];
 
   checkInputs = [ pytestCheckHook pytest-cov pytest-flake8 ];
diff --git a/pkgs/development/python-modules/openevsewifi/default.nix b/pkgs/development/python-modules/openevsewifi/default.nix
new file mode 100644
index 0000000000000..b42e9c86bbe12
--- /dev/null
+++ b/pkgs/development/python-modules/openevsewifi/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, buildPythonPackage
+, deprecated
+, fetchFromGitHub
+, fetchpatch
+, poetry-core
+, pytestCheckHook
+, pythonOlder
+, requests
+, requests-mock
+}:
+
+buildPythonPackage rec {
+  pname = "openevsewifi";
+  version = "1.1.0";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "miniconfig";
+    repo = "python-openevse-wifi";
+    rev = "v${version}";
+    sha256 = "sha256-pNm+zupBGijCXIkdanMk7nE/+SFvSEFp9/Ht5OoxQrU=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    deprecated
+    requests
+  ];
+
+  checkInputs = [
+    requests-mock
+    pytestCheckHook
+  ];
+
+  patches = [
+    # Switch to poetry-core, https://github.com/miniconfig/python-openevse-wifi/pull/31
+    (fetchpatch {
+      name = "switch-to-poetry-core.patch";
+      url = "https://github.com/miniconfig/python-openevse-wifi/commit/1083868dd9f39a8ad7bb17f02cea1b8458e5b82d.patch";
+      sha256 = "sha256-XGeyi/PchBju1ICgL/ZCDGCbWwIJmLAcHuKaj+kDsI0=";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'pytest-cov = "^2.8.1"' ""
+  '';
+
+  pythonImportsCheck = [
+    "openevsewifi"
+  ];
+
+  meta = with lib; {
+    description = "Module for communicating with the wifi module from OpenEVSE";
+    homepage = "https://github.com/miniconfig/python-openevse-wifi";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/openpyxl/2.nix b/pkgs/development/python-modules/openpyxl/2.nix
deleted file mode 100644
index 73300de645ff4..0000000000000
--- a/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/pkgs/development/python-modules/openrazer/daemon.nix b/pkgs/development/python-modules/openrazer/daemon.nix
index 2e44c3756e32b..616d69d389b85 100644
--- a/pkgs/development/python-modules/openrazer/daemon.nix
+++ b/pkgs/development/python-modules/openrazer/daemon.nix
@@ -21,8 +21,6 @@ buildPythonApplication (common // rec {
 
   disabled = !isPy3k;
 
-  sourceRoot = "source/daemon";
-
   outputs = [ "out" "man" ];
 
   nativeBuildInputs = [ makeWrapper wrapGAppsHook ];
@@ -37,6 +35,10 @@ buildPythonApplication (common // rec {
     setproctitle
   ];
 
+  prePatch = ''
+    cd daemon
+  '';
+
   postPatch = ''
     substituteInPlace openrazer_daemon/daemon.py --replace "plugdev" "openrazer"
   '';
diff --git a/pkgs/development/python-modules/opensimplex/default.nix b/pkgs/development/python-modules/opensimplex/default.nix
index 6832266b87ad2..a813c1bf95eba 100644
--- a/pkgs/development/python-modules/opensimplex/default.nix
+++ b/pkgs/development/python-modules/opensimplex/default.nix
@@ -1,24 +1,25 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, nose
+, numpy
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "opensimplex";
-  version = "0.3";
+  version = "0.4.2";
 
   src = fetchFromGitHub {
     owner = "lmas";
     repo = pname;
     rev = "v${version}";
-    sha256 = "idF5JQGnAye6z3c3YU9rsHaebB3rlHJfA8vSpjDnFeM=";
+    sha256 = "zljS0yu3cHF2Vz3rFkwLXiHnKjo970MDIrC/56FoHa4=";
   };
 
-  checkInputs = [ nose ];
-  checkPhase = ''
-    nosetests tests/
-  '';
+  propagatedBuildInputs = [ numpy ];
+
+  checkInputs = [ pytestCheckHook ];
+  pytestFlagsArray = [ "tests/test_opensimplex.py" ];
   pythonImportsCheck = [ "opensimplex" ];
 
   meta = with lib; {
@@ -31,6 +32,6 @@ buildPythonPackage rec {
     '';
     homepage = "https://github.com/lmas/opensimplex";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [ angustrau ];
+    maintainers = with maintainers; [ emilytrau ];
   };
 }
diff --git a/pkgs/development/python-modules/openstackdocstheme/default.nix b/pkgs/development/python-modules/openstackdocstheme/default.nix
new file mode 100644
index 0000000000000..797a524e01726
--- /dev/null
+++ b/pkgs/development/python-modules/openstackdocstheme/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, dulwich
+, pbr
+, sphinx
+}:
+
+buildPythonPackage rec {
+  pname = "openstackdocstheme";
+  version = "2.3.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-zzWgAozJrYMFyGWzoDLYbeoY+IPlgzmVhnX7lgM6BXs=";
+  };
+
+  postPatch = ''
+    # only a small portion of the listed packages are actually needed for running the tests
+    # so instead of removing them one by one remove everything
+    rm test-requirements.txt
+  '';
+
+  propagatedBuildInputs = [ dulwich pbr sphinx ];
+
+  # no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "openstackdocstheme" ];
+
+  meta = with lib; {
+    description = "Sphinx theme for RST-sourced documentation published to docs.openstack.org";
+    homepage = "https://github.com/openstack/openstackdocstheme";
+    license = licenses.asl20;
+    maintainers = teams.openstack.members;
+  };
+}
diff --git a/pkgs/development/python-modules/openstacksdk/default.nix b/pkgs/development/python-modules/openstacksdk/default.nix
index 9bb807784ca7c..976088baad76c 100644
--- a/pkgs/development/python-modules/openstacksdk/default.nix
+++ b/pkgs/development/python-modules/openstacksdk/default.nix
@@ -18,11 +18,11 @@
 
 buildPythonPackage rec {
   pname = "openstacksdk";
-  version = "0.60.0";
+  version = "0.61.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "aa6efead2ac116482f29aecc2c14ba3b4c76a6f8dede93bf296a2b65492ef420";
+    sha256 = "3eed308871230f0c53a8f58b6c5a358b184080c6b2c6bc69ab088eea057aa127";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/opt-einsum/2.nix b/pkgs/development/python-modules/opt-einsum/2.nix
deleted file mode 100644
index 41c4df89f4fcd..0000000000000
--- a/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/pkgs/development/python-modules/opt-einsum/default.nix b/pkgs/development/python-modules/opt-einsum/default.nix
index 2ded1dfc19610..6e4eabeb68abf 100644
--- a/pkgs/development/python-modules/opt-einsum/default.nix
+++ b/pkgs/development/python-modules/opt-einsum/default.nix
@@ -1,24 +1,38 @@
-{ buildPythonPackage, fetchPypi, lib, numpy, pytest_4 }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, pytestCheckHook
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   version = "3.3.0";
-  pname = "opt_einsum";
+  pname = "opt-einsum";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
-    inherit version pname;
-    sha256 = "0jb5lia0q742d1713jk33vlj41y61sf52j6pgk7pvhxvfxglgxjr";
+    pname = "opt_einsum";
+    inherit version;
+    hash = "sha256-WfZHX3e7w33PfNdIUZwOxgci6R5jyhFOaIIcDFSkZUk=";
   };
 
-  propagatedBuildInputs = [ numpy ];
+  propagatedBuildInputs = [
+    numpy
+  ];
 
-  checkInputs = [ pytest_4 ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  checkPhase = ''
-    pytest
-  '';
+  pythonImportsCheck = [
+    "opt_einsum"
+  ];
 
   meta = with lib; {
-    description = "Optimizing NumPy's einsum function with order optimization and GPU support.";
+    description = "Optimizing NumPy's einsum function with order optimization and GPU support";
     homepage = "https://github.com/dgasmith/opt_einsum";
     license = licenses.mit;
     maintainers = with maintainers; [ teh ];
diff --git a/pkgs/development/python-modules/optax/default.nix b/pkgs/development/python-modules/optax/default.nix
new file mode 100644
index 0000000000000..6a3b6a9d3e67c
--- /dev/null
+++ b/pkgs/development/python-modules/optax/default.nix
@@ -0,0 +1,56 @@
+{ absl-py
+, buildPythonPackage
+, chex
+, dm-haiku
+, fetchFromGitHub
+, jaxlib
+, lib
+, numpy
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "optax";
+  # As of 2022-01-06, the latest stable version (0.1.0) has broken tests that are fixed
+  # in https://github.com/deepmind/optax/commit/d6633365d84eb6f2c0df0c52b630481a349ce562
+  version = "unstable-2022-01-05";
+
+  src = fetchFromGitHub {
+    owner = "deepmind";
+    repo = pname;
+    rev = "5ec5541b3486224b22e950480ff639ceaf5098f7";
+    sha256 = "1q8cxc42a5xais2ll1l238cnn3l7w28savhgiz0lg01ilz2ysbli";
+  };
+
+  buildInputs = [ jaxlib ];
+
+  propagatedBuildInputs = [
+    absl-py
+    chex
+    numpy
+  ];
+
+  checkInputs = [
+    dm-haiku
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "optax"
+  ];
+
+  disabledTestPaths = [
+    # Requires `flax` which depends on `optax` creating circular dependency.
+    "optax/_src/equivalence_test.py"
+    # Require `tensorflow_datasets` which isn't packaged in `nixpkgs`.
+    "examples/datasets_test.py"
+    "examples/lookahead_mnist_test.py"
+  ];
+
+  meta = with lib; {
+    description = "Optax is a gradient processing and optimization library for JAX.";
+    homepage = "https://github.com/deepmind/optax";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ndl ];
+  };
+}
diff --git a/pkgs/development/python-modules/orjson/default.nix b/pkgs/development/python-modules/orjson/default.nix
index 4a579d8766bf8..98fc412869de5 100644
--- a/pkgs/development/python-modules/orjson/default.nix
+++ b/pkgs/development/python-modules/orjson/default.nix
@@ -15,20 +15,20 @@
 
 buildPythonPackage rec {
   pname = "orjson";
-  version = "3.6.4";
+  version = "3.6.6";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "ijl";
     repo = pname;
     rev = version;
-    sha256 = "0xpna70s5v7d4lwsb6ijc0f2rm6p7jqmac9yayx9qb1dasbki6zd";
+    sha256 = "00s8pwvq830h2y77pwx1i2vfvnzisvp41qhzqcp1piyc3pwxfc13";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    sha256 = "0m4f8lc0zwxh4lmxkpxvdd2lc2g3lkq0ymllqbyr31sbxvwnxk56";
+    sha256 = "0l1zvkr06kwclgxy1qz9fxa1gjrpf5nnx6hb12j4ymyyxpcmn8rz";
   };
 
   format = "pyproject";
diff --git a/pkgs/development/python-modules/orm/default.nix b/pkgs/development/python-modules/orm/default.nix
index f2dd196be942d..a1d738890b306 100644
--- a/pkgs/development/python-modules/orm/default.nix
+++ b/pkgs/development/python-modules/orm/default.nix
@@ -1,43 +1,52 @@
 { lib
+, aiomysql
+, aiosqlite
+, asyncpg
 , buildPythonPackage
-, fetchFromGitHub
 , databases
+, fetchFromGitHub
+, pythonOlder
 , typesystem
-, aiosqlite
-, pytestCheckHook
-, pytest-cov
-, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "orm";
-  version = "0.1.5";
+  version = "0.3.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "encode";
     repo = "orm";
     rev = version;
-    sha256 = "1g70cr0559iyqfzidwh6n2qq6d4dcnrr4sg0jkn1s4qzka828mj7";
+    hash = "sha256-nlKEWdqttFnjBnXutlxTy9oILqFzKHKKPJpTtCUbJ5k=";
   };
 
   propagatedBuildInputs = [
+    aiomysql
+    aiosqlite
+    asyncpg
     databases
     typesystem
   ];
 
-  checkInputs = [
-    aiosqlite
-    pytestCheckHook
-    pytest-cov
-    typing-extensions
-  ];
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "typesystem==0.3.1" "typesystem"
+  '';
 
-  pythonImportsCheck = [ "orm" ];
+  # Tests require databases
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "orm"
+  ];
 
   meta = with lib; {
     description = "An async ORM";
     homepage = "https://github.com/encode/orm";
     license = licenses.bsd3;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/pkgs/development/python-modules/ormar/default.nix b/pkgs/development/python-modules/ormar/default.nix
new file mode 100644
index 0000000000000..d5b9b7cf88e82
--- /dev/null
+++ b/pkgs/development/python-modules/ormar/default.nix
@@ -0,0 +1,92 @@
+{ lib
+, aiomysql
+, aiopg
+, aiosqlite
+, asyncpg
+, buildPythonPackage
+, cryptography
+, databases
+, fastapi
+, fetchFromGitHub
+, importlib-metadata
+, mysqlclient
+, orjson
+, poetry-core
+, psycopg2
+, pydantic
+, pymysql
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, sqlalchemy
+, typing-extensions
+}:
+
+buildPythonPackage rec {
+  pname = "ormar";
+  version = "0.10.24";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "collerek";
+    repo = pname;
+    rev = version;
+    hash = "sha256-zKugeGDcYDI4VKspJPWeZCBubTqMxxfOVQCuF4pC49E=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiomysql
+    aiosqlite
+    asyncpg
+    cryptography
+    databases
+    orjson
+    psycopg2
+    pydantic
+    sqlalchemy
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    typing-extensions
+    importlib-metadata
+  ];
+
+  checkInputs = [
+    aiomysql
+    aiopg
+    aiosqlite
+    asyncpg
+    fastapi
+    mysqlclient
+    psycopg2
+    pymysql
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'SQLAlchemy = ">=1.3.18,<=1.4.29"' 'SQLAlchemy = ">=1.3.18"' \
+      --replace 'databases = ">=0.3.2,!=0.5.0,!=0.5.1,!=0.5.2,!=0.5.3,<0.5.5"' 'databases = ">=0.5.5"'
+  '';
+
+  disabledTests = [
+    # TypeError: Object of type bytes is not JSON serializable
+    "test_bulk_operations_with_json"
+  ];
+
+  pythonImportsCheck = [
+    "ormar"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/collerek/ormar";
+    description = "Async ORM with fastapi in mind and pydantic validation";
+    license = licenses.mit;
+    maintainers = with maintainers; [ andreasfelix ];
+  };
+}
diff --git a/pkgs/development/python-modules/osc-lib/default.nix b/pkgs/development/python-modules/osc-lib/default.nix
index 560c8869b00f8..95c5e5d6a328e 100644
--- a/pkgs/development/python-modules/osc-lib/default.nix
+++ b/pkgs/development/python-modules/osc-lib/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "osc-lib";
-  version = "2.4.2";
+  version = "2.5.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d6b530e3e50646840a6a5ef134e00f285cc4a04232c163f28585226ed40cc968";
+    sha256 = "sha256-2PikUPqyoSlOCu+M3JolWhvMW1jhsvYJjjXm2x4T6dE=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/oscrypto/default.nix b/pkgs/development/python-modules/oscrypto/default.nix
index cc89f3124806a..b4d1c8fb88af5 100644
--- a/pkgs/development/python-modules/oscrypto/default.nix
+++ b/pkgs/development/python-modules/oscrypto/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , buildPythonPackage
 , asn1crypto
 , fetchPypi
@@ -35,6 +36,8 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "oscrypto" ];
 
+  doCheck = !stdenv.isDarwin;
+
   meta = with lib; {
     description = "Encryption library for Python";
     homepage = "https://github.com/wbond/oscrypto";
diff --git a/pkgs/development/python-modules/oslo-config/default.nix b/pkgs/development/python-modules/oslo-config/default.nix
index 125481d1e026e..f7e09692945a7 100644
--- a/pkgs/development/python-modules/oslo-config/default.nix
+++ b/pkgs/development/python-modules/oslo-config/default.nix
@@ -14,12 +14,12 @@
 
 buildPythonPackage rec {
   pname = "oslo-config";
-  version = "8.7.1";
+  version = "8.8.0";
 
   src = fetchPypi {
     pname = "oslo.config";
     inherit version;
-    sha256 = "a0c346d778cdc8870ab945e438bea251b5f45fae05d6d99dfe4953cca2277b60";
+    sha256 = "sha256-lpM9MBHa4VYIoRYWv7ANlH4i2jywm2/zfd11dqvUdkw=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/oslo-log/default.nix b/pkgs/development/python-modules/oslo-log/default.nix
index dd2d69a0c23d4..a2e6eac8e3894 100644
--- a/pkgs/development/python-modules/oslo-log/default.nix
+++ b/pkgs/development/python-modules/oslo-log/default.nix
@@ -10,7 +10,7 @@
 , pbr
 , pyinotify
 , python-dateutil
-, stestr
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
@@ -36,12 +36,13 @@ buildPythonPackage rec {
 
   checkInputs = [
     oslotest
-    stestr
+    pytestCheckHook
   ];
 
-  checkPhase = ''
-    stestr run
-  '';
+  disabledTests = [
+    # not compatible with sandbox
+    "test_logging_handle_error"
+  ];
 
   pythonImportsCheck = [ "oslo_log" ];
 
diff --git a/pkgs/development/python-modules/oslo-serialization/default.nix b/pkgs/development/python-modules/oslo-serialization/default.nix
index e6b8d0d0c422a..e59258dda782e 100644
--- a/pkgs/development/python-modules/oslo-serialization/default.nix
+++ b/pkgs/development/python-modules/oslo-serialization/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "oslo-serialization";
-  version = "4.2.0";
+  version = "4.3.0";
 
   src = fetchPypi {
     pname = "oslo.serialization";
     inherit version;
-    sha256 = "3007e1b017ad3754cce54def894054cbcd05887e85928556657434b0fc7e4d83";
+    sha256 = "sha256-OqRy9DSu6LvMByUxK39AmqH6VLvBNJBBJM9JsOhrkRU=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/oslo-utils/default.nix b/pkgs/development/python-modules/oslo-utils/default.nix
index 4f1a4d9df2d44..aeea9b742a930 100644
--- a/pkgs/development/python-modules/oslo-utils/default.nix
+++ b/pkgs/development/python-modules/oslo-utils/default.nix
@@ -23,12 +23,12 @@
 
 buildPythonPackage rec {
   pname = "oslo-utils";
-  version = "4.11.0";
+  version = "4.12.2";
 
   src = fetchPypi {
     pname = "oslo.utils";
     inherit version;
-    sha256 = "1wl3r4jayzjgzf36iwn05xcjfh227s97qymjxji9hz4ibhy3v83f";
+    sha256 = "sha256-Qf0sT/bS6No4qttaW/JCWKhlDg4KaYprI51IuOQXfDs=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/osqp/default.nix b/pkgs/development/python-modules/osqp/default.nix
index 1db266e116d40..865bd45c61b3b 100644
--- a/pkgs/development/python-modules/osqp/default.nix
+++ b/pkgs/development/python-modules/osqp/default.nix
@@ -5,6 +5,7 @@
 , future
 , numpy
 , qdldl
+, setuptools-scm
 , scipy
 # check inputs
 , pytestCheckHook
@@ -13,14 +14,16 @@
 
 buildPythonPackage rec {
   pname = "osqp";
-  version = "0.6.2.post0";
+  version = "0.6.2.post5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5f0695f26a3bef0fae91254bc283fab790dcca0064bfe0f425167f9c9e8b4cbc";
+    sha256 = "b2fa17aae42a7ed498ec261b33f262bb4b3605e7e8464062159d9fae817f0d61";
   };
 
-  nativeBuildInputs = [ cmake ];
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [ cmake setuptools-scm ];
   dontUseCmakeConfigure = true;
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/ovoenergy/default.nix b/pkgs/development/python-modules/ovoenergy/default.nix
index 42615fa664dd4..1e60872b2c1b7 100644
--- a/pkgs/development/python-modules/ovoenergy/default.nix
+++ b/pkgs/development/python-modules/ovoenergy/default.nix
@@ -8,14 +8,16 @@
 
 buildPythonPackage rec {
   pname = "ovoenergy";
-  version = "1.1.12";
+  version = "1.2.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "timmo001";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1430k699gblxwspsbgxnha8afk6npqharhz2jyjw5gir9pi6g9cz";
+    hash = "sha256-OSK74uvpHuEtWgbLVFrz1NO7lvtHbt690smGQ+GlsOI=";
   };
 
   propagatedBuildInputs = [
@@ -26,7 +28,9 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "ovoenergy" ];
+  pythonImportsCheck = [
+    "ovoenergy"
+  ];
 
   meta = with lib; {
     description = "Python client for getting data from OVO's API";
diff --git a/pkgs/development/python-modules/oyaml/default.nix b/pkgs/development/python-modules/oyaml/default.nix
index 9ea527e06f19b..e2519c0b97208 100644
--- a/pkgs/development/python-modules/oyaml/default.nix
+++ b/pkgs/development/python-modules/oyaml/default.nix
@@ -1,21 +1,25 @@
-{ buildPythonPackage
+{ lib
+, buildPythonPackage
 , fetchFromGitHub
-, lib
 
-# pythonPackages
-, pytest
+  # pythonPackages
+, pytestCheckHook
+, pythonOlder
 , pyyaml
 }:
 
 buildPythonPackage rec {
   pname = "oyaml";
-  version = "1.0";
+  version = "unstable-2021-12-03";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "wimglenn";
     repo = "oyaml";
-    rev = "v${version}";
-    sha256 = "0qkj8g87drvjqiqqmz36gyqiczdfcfv8zk96kkifzk4f9dl5f02j";
+    rev = "d0195070d26bd982f1e4e604bded5510dd035cd7";
+    hash = "sha256-1rSEhiULlAweLDqUFX+JBFxe3iW9kNlRA2zjcG8MYSg=";
   };
 
   propagatedBuildInputs = [
@@ -23,19 +27,17 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    pytest
+    pytestCheckHook
   ];
 
-  checkPhase = ''
-    pytest test_oyaml.py
-  '';
+  pythonImportsCheck = [
+    "oyaml"
+  ];
 
-  meta = {
-    description = "Ordered YAML: drop-in replacement for PyYAML which preserves dict ordering";
+  meta = with lib; {
+    description = "Drop-in replacement for PyYAML which preserves dict ordering";
     homepage = "https://github.com/wimglenn/oyaml";
-    license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [
-      kamadorueda
-    ];
+    license = licenses.mit;
+    maintainers = with maintainers; [ kamadorueda ];
   };
 }
diff --git a/pkgs/development/python-modules/p1monitor/default.nix b/pkgs/development/python-modules/p1monitor/default.nix
index d1530c7971984..7a8bc9fd050ba 100644
--- a/pkgs/development/python-modules/p1monitor/default.nix
+++ b/pkgs/development/python-modules/p1monitor/default.nix
@@ -1,8 +1,11 @@
 { lib
 , aiohttp
+, aresponses
 , buildPythonPackage
 , fetchFromGitHub
 , poetry-core
+, pytest-asyncio
+, pytestCheckHook
 , pythonOlder
 , yarl
 }:
@@ -12,13 +15,13 @@ buildPythonPackage rec {
   version = "1.1.0";
   format = "pyproject";
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "klaasnicolaas";
     repo = "python-p1monitor";
     rev = "v${version}";
-    sha256 = "1ciaclgq4aknldjqlqa08jcab28sbqrjxy5nqqwlnb2wlprg5ijz";
+    hash = "sha256-X8by8qVcLEs5xrb4LjNeGomlmERAYYplo3Yqgh9lKrI=";
   };
 
   nativeBuildInputs = [
@@ -30,13 +33,24 @@ buildPythonPackage rec {
     yarl
   ];
 
-  # Project has no tests
-  doCheck = false;
+  checkInputs = [
+    aresponses
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace '"0.0.0"' '"${version}"' \
+      --replace 'addopts = "--cov"' ""
+  '';
 
-  pythonImportsCheck = [ "p1monitor" ];
+  pythonImportsCheck = [
+    "p1monitor"
+  ];
 
   meta = with lib; {
-    description = "Python client for the P1 Monitor";
+    description = "Module for interacting with the P1 Monitor";
     homepage = "https://github.com/klaasnicolaas/python-p1monitor";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/development/python-modules/pa-ringbuffer/default.nix b/pkgs/development/python-modules/pa-ringbuffer/default.nix
index 466d3937a1fbd..066c4a47ae4e1 100644
--- a/pkgs/development/python-modules/pa-ringbuffer/default.nix
+++ b/pkgs/development/python-modules/pa-ringbuffer/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "pa-ringbuffer";
-  version = "0.1.3";
+  version = "0.1.4";
 
   src = fetchFromGitHub {
     owner = "spatialaudio";
     repo = "python-pa-ringbuffer";
     rev = version;
-    sha256 = "0afpydy1l20hd1xncjppjhqa2c8dj5h9nlv4z8m55cs9hc9h1mxv";
+    sha256 = "1d4k6z13mc1f88m6wbhfx8hillb7q78n33ws5bmyblsdkv1gx607";
   };
 
   meta = {
diff --git a/pkgs/development/python-modules/packageurl-python/default.nix b/pkgs/development/python-modules/packageurl-python/default.nix
index 564a08b4eb792..5236cc7bbf8e5 100644
--- a/pkgs/development/python-modules/packageurl-python/default.nix
+++ b/pkgs/development/python-modules/packageurl-python/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "packageurl-python";
-  version = "0.9.6";
+  version = "0.9.8.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c01fbaf62ad2eb791e97158d1f30349e830bee2dd3e9503a87f6c3ffae8d1cf0";
+    sha256 = "sha256-Z14OyAWPoIN6BAUEcXi96mp9C0aWaYP6eeHAoa+rHJ4=";
   };
 
   checkInputs = [ pytestCheckHook ];
diff --git a/pkgs/development/python-modules/packaging/2.nix b/pkgs/development/python-modules/packaging/2.nix
deleted file mode 100644
index 0f9e61859a160..0000000000000
--- a/pkgs/development/python-modules/packaging/2.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pyparsing
-, six
-, pytestCheckHook
-, pretend
-}:
-
-# We keep 20.4 because it uses setuptools instead of flit-core
-# which requires Python 3 to build a universal wheel.
-
-buildPythonPackage rec {
-  pname = "packaging";
-  version = "20.4";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8";
-  };
-
-  propagatedBuildInputs = [ pyparsing six ];
-
-  checkInputs = [
-    pytestCheckHook
-    pretend
-  ];
-
-  # Prevent circular dependency
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Core utilities for Python packages";
-    homepage = "https://github.com/pypa/packaging";
-    license = [ licenses.bsd2 licenses.asl20 ];
-    maintainers = with maintainers; [ bennofs ];
-  };
-}
diff --git a/pkgs/development/python-modules/packaging/default.nix b/pkgs/development/python-modules/packaging/default.nix
index d76b5b1723ef0..648a548e521b5 100644
--- a/pkgs/development/python-modules/packaging/default.nix
+++ b/pkgs/development/python-modules/packaging/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "packaging";
-  version = "20.9";
+  version = "21.3";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-WzJ6wTINyGPcpy9FFOzAhvMRhnRLhKIwN0zB/Xdv6uU=";
+    sha256 = "sha256-3UfEKSfYmrkR5gZRiQfMLTofOLvQJjhZcGQ/nFuOz+s=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/pagerduty/default.nix b/pkgs/development/python-modules/pagerduty/default.nix
deleted file mode 100644
index 8390cceb2fcfe..0000000000000
--- a/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/pkgs/development/python-modules/pamqp/default.nix b/pkgs/development/python-modules/pamqp/default.nix
index 6df8b5491c9af..1785a8593102b 100644
--- a/pkgs/development/python-modules/pamqp/default.nix
+++ b/pkgs/development/python-modules/pamqp/default.nix
@@ -9,12 +9,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "3.0.1";
+  version = "3.1.0";
   pname = "pamqp";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0a9b49bde3f554ec49b47ebdb789133979985f24d5f4698935ed589a2d4392a4";
+    sha256 = "e4f0886d72c6166637a5513626148bf5a7e818073a558980e9aaed8b4ccf30da";
   };
 
   buildInputs = [ mock nose pep8 pylint mccabe ];
diff --git a/pkgs/development/python-modules/pandas/2.nix b/pkgs/development/python-modules/pandas/2.nix
deleted file mode 100644
index 9b29a84426963..0000000000000
--- a/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/pkgs/development/python-modules/pandas/default.nix b/pkgs/development/python-modules/pandas/default.nix
index 880a5afdce63c..536f883f29a2d 100644
--- a/pkgs/development/python-modules/pandas/default.nix
+++ b/pkgs/development/python-modules/pandas/default.nix
@@ -27,12 +27,12 @@
 
 buildPythonPackage rec {
   pname = "pandas";
-  version = "1.3.4";
+  version = "1.3.5";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a2aa18d3f0b7d538e21932f637fbfe8518d085238b429e4790a35e1e44a96ffc";
+    sha256 = "1e4285f5de1012de20ca46b188ccf33521bff61ba5c5ebd78b4fb28e5416a9f1";
   };
 
   nativeBuildInputs = [ cython ];
diff --git a/pkgs/development/python-modules/panflute/default.nix b/pkgs/development/python-modules/panflute/default.nix
index 4e161d4bfa3c7..d94dc48b6d03f 100644
--- a/pkgs/development/python-modules/panflute/default.nix
+++ b/pkgs/development/python-modules/panflute/default.nix
@@ -4,29 +4,23 @@
 , pyyaml
 , buildPythonPackage
 , isPy3k
-, fetchpatch
 }:
 
 buildPythonPackage rec{
-  version = "2.1.0";
+  version = "2.1.3";
   pname = "panflute";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8a3d5dd2a10c3aa6fa8167713fedb47400f0e8ae6ea8346fd4b599842bb1882d";
+    sha256 = "y5QkT+dmiTuy8XLruCfsPe12G4//qE5MhLZ4ufip/5U=";
   };
-  patches = [
-    # Upstream has relaxed the version constaints for the click dependency
-    # but there hasn't been a release since then
-    (fetchpatch {
-      url = "https://github.com/sergiocorreia/panflute/commit/dee6c716a73072a968d67f8638a61de44025d8de.patch";
-      sha256 = "sha256-Kj/NTcXsSkevpfr8OwoIQi0p6ChXDM6YgYDPNHJtJZo=";
-    })
-  ];
 
-  propagatedBuildInputs = [ click pyyaml ];
+  propagatedBuildInputs = [
+    click
+    pyyaml
+  ];
 
   meta = with lib; {
     description = "A Pythonic alternative to John MacFarlane's pandocfilters, with extra helper functions";
diff --git a/pkgs/development/python-modules/papermill/default.nix b/pkgs/development/python-modules/papermill/default.nix
index 83e4a9f6f7314..5c30e14db74b4 100644
--- a/pkgs/development/python-modules/papermill/default.nix
+++ b/pkgs/development/python-modules/papermill/default.nix
@@ -25,11 +25,11 @@
 
 buildPythonPackage rec {
   pname = "papermill";
-  version = "2.3.3";
+  version = "2.3.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "349aecd526c15c39f73a08df836467e2fead877c474d82c7df349f27ad272525";
+    sha256 = "be12d2728989c0ae17b42fcb05b623500004e94b34f56bd153355ccebb84a59a";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/papis/default.nix b/pkgs/development/python-modules/papis/default.nix
index 1805172f4d7dc..d117c8eb8db62 100644
--- a/pkgs/development/python-modules/papis/default.nix
+++ b/pkgs/development/python-modules/papis/default.nix
@@ -1,66 +1,121 @@
-{ lib, buildPythonPackage, fetchFromGitHub, xdg-utils
-, requests, filetype, pyparsing, configparser, arxiv2bib
-, pyyaml, chardet, beautifulsoup4, colorama, bibtexparser
-, click, python-slugify, habanero, isbnlib, typing-extensions
-, prompt-toolkit, pygments, stevedore, tqdm, lxml
-, python-doi, isPy3k, pytest-cov
-#, optional, dependencies
-, whoosh, pytest
+{ lib
 , stdenv
+, arxiv2bib
+, beautifulsoup4
+, bibtexparser
+, buildPythonPackage
+, chardet
+, click
+, colorama
+, configparser
+, fetchFromGitHub
+, filetype
+, habanero
+, isbnlib
+, lxml
+, prompt-toolkit
+, pygments
+, pyparsing
+, pytestCheckHook
+, python-doi
+, python-slugify
+, pythonAtLeast
+, pythonOlder
+, pyyaml
+, requests
+, stevedore
+, tqdm
+, typing-extensions
+, whoosh
+, xdg-utils
 }:
 
 buildPythonPackage rec {
   pname = "papis";
   version = "0.11.1";
-  disabled = !isPy3k;
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
-  # Missing tests on Pypi
   src = fetchFromGitHub {
     owner = "papis";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0bbkjyw1fsvvp0380l404h2lys8ib4xqga5s6401k1y1hld28nl6";
+    hash = "sha256-hlokGoXBhxkAMbqohztZEWlPBSSAUIAGuHtrF7iXcy0=";
   };
 
   propagatedBuildInputs = [
-    requests filetype pyparsing configparser arxiv2bib
-    pyyaml chardet beautifulsoup4 colorama bibtexparser
-    click python-slugify habanero isbnlib
-    prompt-toolkit pygments typing-extensions
-    stevedore tqdm lxml
+    arxiv2bib
+    beautifulsoup4
+    bibtexparser
+    chardet
+    click
+    colorama
+    configparser
+    filetype
+    habanero
+    isbnlib
+    lxml
+    prompt-toolkit
+    pygments
+    pyparsing
     python-doi
-    # optional dependencies
+    python-slugify
+    pyyaml
+    requests
+    stevedore
+    tqdm
+    typing-extensions
     whoosh
   ];
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "lxml<=4.3.5" "lxml~=4.3" \
-      --replace "isbnlib>=3.9.1,<3.10" "isbnlib~=3.9" \
-      --replace "python-slugify>=1.2.6,<4" "python-slugify"
+      --replace "isbnlib>=3.9.1,<3.10" "isbnlib>=3.9"
+    substituteInPlace setup.cfg \
+      --replace "--cov=papis" ""
   '';
 
-  doCheck = !stdenv.isDarwin;
+  # Tests are failing on Python > 3.9
+  doCheck = !stdenv.isDarwin && !(pythonAtLeast "3.10");
 
   checkInputs = ([
-    pytest pytest-cov
+    pytestCheckHook
   ]) ++ [
     xdg-utils
   ];
 
-  # most of the downloader tests and 4 other tests require a network connection
-  # test_export_yaml and test_citations check for the exact output produced by pyyaml 3.x and
-  # fail with 5.x
-  checkPhase = ''
-    HOME=$(mktemp -d) pytest papis tests --ignore tests/downloaders \
-      -k "not test_get_data and not test_doi_to_data and not test_general and not get_document_url \
-      and not test_validate_arxivid and not test_downloader_getter and not match"
+  preCheck = ''
+    export HOME=$(mktemp -d);
   '';
 
-  meta = {
+  pytestFlagsArray = [
+    "papis tests"
+  ];
+
+  disabledTestPaths = [
+    "tests/downloaders"
+  ];
+
+  disabledTests = [
+    "get_document_url"
+    "match"
+    "test_doi_to_data"
+    "test_downloader_getter"
+    "test_general"
+    "test_get_data"
+    "test_validate_arxivid"
+    "test_yaml"
+  ];
+
+  pythonImportsCheck = [
+    "papis"
+  ];
+
+  meta = with lib; {
     description = "Powerful command-line document and bibliography manager";
-    homepage = "https://papis.readthedocs.io/en/latest/";
-    license = lib.licenses.gpl3;
-    maintainers = with lib.maintainers; [ nico202 teto ];
+    homepage = "https://papis.readthedocs.io/";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ nico202 teto ];
   };
 }
diff --git a/pkgs/development/python-modules/paramiko/default.nix b/pkgs/development/python-modules/paramiko/default.nix
index 86cdb73b2607d..d7be0348d54a1 100644
--- a/pkgs/development/python-modules/paramiko/default.nix
+++ b/pkgs/development/python-modules/paramiko/default.nix
@@ -1,48 +1,65 @@
-{ pkgs
+{ lib
+, bcrypt
 , buildPythonPackage
-, fetchPypi
 , cryptography
-, bcrypt
+, fetchPypi
 , invoke
-, pynacl
+, mock
 , pyasn1
-, pytestCheckHook
+, pynacl
 , pytest-relaxed
-, mock
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "paramiko";
-  version = "2.8.0";
+  version = "2.9.2";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e673b10ee0f1c80d46182d3af7751d033d9b573dd7054d2d0aa46be186c3c1d2";
+    sha256 = "944a9e5dbdd413ab6c7951ea46b0ab40713235a9c4c5ca81cfe45c6f14fa677b";
   };
 
-  propagatedBuildInputs = [ bcrypt cryptography pynacl pyasn1 ];
+  propagatedBuildInputs = [
+    bcrypt
+    cryptography
+    pyasn1
+    pynacl
+  ];
+
+  checkInputs = [
+    invoke
+    mock
+    pytest-relaxed
+    pytestCheckHook
+  ];
 
   # 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 = [
     "tests/test_sftp.py"
     "tests/test_config.py"
   ];
 
+  pythonImportsCheck = [
+    "paramiko"
+  ];
+
   __darwinAllowLocalNetworking = true;
 
-  meta = with pkgs.lib; {
+  meta = with lib; {
     homepage = "https://github.com/paramiko/paramiko/";
     description = "Native Python SSHv2 protocol library";
     license = licenses.lgpl21Plus;
     longDescription = ''
-      This is a library for making SSH2 connections (client or server).
-      Emphasis is on using SSH2 as an alternative to SSL for making secure
-      connections between python scripts. All major ciphers and hash methods
-      are supported. SFTP client and server mode are both supported too.
+      Library for making SSH2 connections (client or server). Emphasis is
+      on using SSH2 as an alternative to SSL for making secure connections
+      between python scripts. All major ciphers and hash methods are
+      supported. SFTP client and server mode are both supported too.
     '';
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/parfive/default.nix b/pkgs/development/python-modules/parfive/default.nix
index 822ae2113b2a3..5bb1b04439346 100644
--- a/pkgs/development/python-modules/parfive/default.nix
+++ b/pkgs/development/python-modules/parfive/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "parfive";
-  version = "1.5.0";
+  version = "1.5.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f36128e8a93f3494ce3de8af883eeba4bd651ab228682810a46ec4b7897a84b3";
+    sha256 = "c411fd7269a49d1c72a964e97de474ec082115777b363aeed98a6595f90b8676";
   };
 
   buildInputs = [
diff --git a/pkgs/development/python-modules/parso/default.nix b/pkgs/development/python-modules/parso/default.nix
index a68f535d29db1..16313ab16ee8b 100644
--- a/pkgs/development/python-modules/parso/default.nix
+++ b/pkgs/development/python-modules/parso/default.nix
@@ -2,31 +2,28 @@
 , buildPythonPackage
 , fetchPypi
 , fetchpatch
+, pythonAtLeast
 , pythonOlder
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "parso";
-  version = "0.8.1";
+  version = "0.8.3";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8519430ad07087d4c997fda3a7918f7cfa27cb58972a8c89c2a0295a1c940e9e";
+    sha256 = "sha256-jAe+KQu1nwNYiRWSHinopQACrK8s3F+g4BFPkXCfr6A=";
   };
 
-  patches = [
-    # Fix the flaky test due to slow moving time on Apple Silicon chips.
-    # Remove when https://github.com/davidhalter/parso/pull/177 is in the next release.
-    (fetchpatch {
-      url = "https://github.com/davidhalter/parso/pull/177/commits/2799a7a3c2cf87fdc2d0c19a0890acea425091ce.patch";
-      sha256 = "sha256-A5EQly1wR/7lo+L8Pp0UPSUIhC0WcblXEWQNvRMlZYA=";
-    })
-  ];
-
   checkInputs = [ pytestCheckHook ];
 
+  disabledTests = lib.optionals (pythonAtLeast "3.10") [
+    # python changed exception message format in 3.10, 3.10 not yet supported
+    "test_python_exception_matches"
+  ];
+
   meta = with lib; {
     description = "A Python Parser";
     homepage = "https://parso.readthedocs.io/en/latest/";
diff --git a/pkgs/development/python-modules/parsy/default.nix b/pkgs/development/python-modules/parsy/default.nix
index 53743052f4e44..9083953009adc 100644
--- a/pkgs/development/python-modules/parsy/default.nix
+++ b/pkgs/development/python-modules/parsy/default.nix
@@ -1,26 +1,36 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder, pytest }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "parsy";
   version = "1.4.0";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "7c411373e520e97431f0b390db9d2cfc5089bc1d33f4f1584d2cdc9e6368f302";
-  };
+  disabled = pythonOlder "3.5";
 
-  checkInputs = [ pytest ];
+  src = fetchFromGitHub {
+    repo = "parsy";
+    owner = "python-parsy";
+    rev = "v${version}";
+    sha256 = "sha256-FislrLb+u4T5m/eEER7kazZHJKEwPHe+Vg/YDJp4PyM=";
+  };
 
-  checkPhase = ''
-    py.test test/
-  '';
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  disabled = pythonOlder "3.4";
+  pythonImportsCheck = [
+    "parsy"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/python-parsy/parsy";
     description = "Easy-to-use parser combinators, for parsing in pure Python";
     license = [ licenses.mit ];
-    maintainers = with maintainers; [ edibopp ];
+    maintainers = with maintainers; [ milibopp ];
   };
 }
diff --git a/pkgs/development/python-modules/path.py/2.nix b/pkgs/development/python-modules/path.py/2.nix
deleted file mode 100644
index d7c635c2fe4a9..0000000000000
--- a/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/pkgs/development/python-modules/patrowl4py/default.nix b/pkgs/development/python-modules/patrowl4py/default.nix
index 3dc1fc038bc76..22de8feb0e74d 100644
--- a/pkgs/development/python-modules/patrowl4py/default.nix
+++ b/pkgs/development/python-modules/patrowl4py/default.nix
@@ -21,13 +21,13 @@
 
 buildPythonPackage rec {
   pname = "patrowl4py";
-  version = "1.1.7";
+  version = "1.1.9";
 
   src = fetchFromGitHub {
     owner = "Patrowl";
     repo = "Patrowl4py";
     rev = version;
-    sha256 = "19r9ym31bcaxcrv35gnfx5k8mn5lyascqzdr312rzc7ikbhcj73s";
+    sha256 = "sha256-ZGvntLbXIWmL0WoT+kQoNT6gDPgsSKwHQQjYlarvnKo=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pdm-pep517/default.nix b/pkgs/development/python-modules/pdm-pep517/default.nix
new file mode 100644
index 0000000000000..aa99d5f23f7b7
--- /dev/null
+++ b/pkgs/development/python-modules/pdm-pep517/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, git
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "pdm-pep517";
+  version = "0.10.2";
+  format = "pyproject";
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "83bb71a7588df69ea0d77dc6524741c3a1af54ad5f421341428de648bfc03a29";
+  };
+
+  preCheck = ''
+    HOME=$TMPDIR
+
+    git config --global user.name nobody
+    git config --global user.email nobody@example.com
+  '';
+
+  checkInputs = [
+    pytestCheckHook
+    git
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/pdm-project/pdm-pep517";
+    description = "Yet another PEP 517 backend.";
+    license = licenses.mit;
+    maintainers = with maintainers; [ cpcloud ];
+  };
+}
diff --git a/pkgs/development/python-modules/pebble/default.nix b/pkgs/development/python-modules/pebble/default.nix
index daf4a0458670c..c96955d860c78 100644
--- a/pkgs/development/python-modules/pebble/default.nix
+++ b/pkgs/development/python-modules/pebble/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "pebble";
-  version = "4.6.0";
+  version = "4.6.3";
   disabled = isPy27;
 
   src = fetchPypi {
     pname = "Pebble";
     inherit version;
-    sha256 = "0a595f7mrf89xlck9b2x83bqybc9zd9jxkl0sa5cf19vax18rg8h";
+    sha256 = "694e1105db888f3576b8f00662f90b057cf3780e6f8b7f57955a568008d0f497";
   };
 
   doCheck = !stdenv.isDarwin;
diff --git a/pkgs/development/python-modules/pecan/default.nix b/pkgs/development/python-modules/pecan/default.nix
index d610561b3e6fa..0931cc2b28d8b 100644
--- a/pkgs/development/python-modules/pecan/default.nix
+++ b/pkgs/development/python-modules/pecan/default.nix
@@ -1,48 +1,36 @@
 { lib
 , fetchPypi
-, fetchpatch
 , buildPythonPackage
-, isPy27
-# Python deps
 , logutils
 , Mako
-, singledispatch ? null
-, six
 , webtest
-# Test Inputs
+, pythonOlder
 , pytestCheckHook
 , genshi
 , gunicorn
 , jinja2
-, Kajiki
-, mock
+, six
 , sqlalchemy
 , virtualenv
 }:
 
 buildPythonPackage rec {
   pname = "pecan";
-  version = "1.4.0";
+  version = "1.4.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4b2acd6802a04b59e306d0a6ccf37701d24376f4dc044bbbafba3afdf9d3389a";
+    sha256 = "sha256-LL0O7btXR8BM3xjEquTxxunZUPOvcK8lRLB09+16BIA=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "Support-SQLAlchemy-1.4x.patch";
-      url = "https://github.com/pecan/pecan/commit/a520bd544c0b02a02dbf692b8d6e2f7a503ee6d4.patch";
-      sha256 = "sha256-QCHRjwnpy8ndCvcuyE5Y65BybKYthJXDySUtmpJD8gY=";
-    })
-  ];
-
   propagatedBuildInputs = [
     logutils
     Mako
-    singledispatch
-    six
     webtest
+    six
   ];
 
   checkInputs = [
@@ -50,19 +38,23 @@ buildPythonPackage rec {
     genshi
     gunicorn
     jinja2
-    mock
     sqlalchemy
     virtualenv
-  ] ++ lib.optionals isPy27 [ Kajiki ];
+  ];
 
   pytestFlagsArray = [
-    "--pyargs pecan "
+    "--pyargs pecan"
+  ];
+
+  pythonImportsCheck = [
+    "pecan"
   ];
 
   meta = with lib; {
-    description = "WSGI object-dispatching web framework, designed to be lean and fast";
-    homepage = "https://www.pecanpy.org/";
     changelog = "https://pecan.readthedocs.io/en/latest/changes.html";
+    description = "WSGI object-dispatching web framework";
+    homepage = "https://www.pecanpy.org/";
+    license = licenses.bsd3;
     maintainers = with maintainers; [ applePrincess ];
   };
 }
diff --git a/pkgs/development/python-modules/pelican/default.nix b/pkgs/development/python-modules/pelican/default.nix
index e39993194a8cd..436192e18b8d5 100644
--- a/pkgs/development/python-modules/pelican/default.nix
+++ b/pkgs/development/python-modules/pelican/default.nix
@@ -28,14 +28,14 @@
 
 buildPythonPackage rec {
   pname = "pelican";
-  version = "4.6.0";
+  version = "4.7.1";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "getpelican";
     repo = pname;
     rev = version;
-    sha256 = "0xrz0cmjyaylr81rmy5i3qbp4ms1iwh0gpb07q1dwljffb8xzbhr";
+    sha256 = "0w3r4ifbrl6mhfphabqs048qys7x6k164ds63jr10l3namljm8ad";
     # Remove unicode file names which leads to different checksums on HFS+
     # vs. other filesystems because of unicode normalisation.
     extraPostFetch = ''
diff --git a/pkgs/development/python-modules/pep257/default.nix b/pkgs/development/python-modules/pep257/default.nix
index c168e087fc5c8..d6205fc6e72ec 100644
--- a/pkgs/development/python-modules/pep257/default.nix
+++ b/pkgs/development/python-modules/pep257/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "pep257";
-  version = "0.7.0";
+  version = "6.1.1";
 
   src = fetchFromGitHub {
     owner = "GreenSteam";
     repo = "pep257";
     rev = version;
-    sha256 = "sha256-RkE9kkNkRTmZ8zJVwQzMsxU1hcjlxX6UA+ehnareynQ=";
+    sha256 = "0hcf3nyvzl8kd6gmc9qsiigz7vpwrjxcd1bd50dd63cad87qqicg";
   };
 
   checkInputs = [ pytestCheckHook mock ];
diff --git a/pkgs/development/python-modules/pep517/default.nix b/pkgs/development/python-modules/pep517/default.nix
index 90dc504619906..ad58cdb72d4d1 100644
--- a/pkgs/development/python-modules/pep517/default.nix
+++ b/pkgs/development/python-modules/pep517/default.nix
@@ -2,11 +2,12 @@
 , buildPythonPackage
 , fetchPypi
 , flit-core
-, toml
+, tomli
 , pythonOlder
 , importlib-metadata
 , zipp
 , pytestCheckHook
+, setuptools
 , testpath
 , mock
 , pip
@@ -14,12 +15,12 @@
 
 buildPythonPackage rec {
   pname = "pep517";
-  version = "0.9.1";
+  version = "0.12.0";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0zqidxah03qpnp6zkg3zd1kmd5f79hhdsfmlc0cldaniy80qddxf";
+    sha256 = "931378d93d11b298cf511dd634cf5ea4cb249a28ef84160b3247ee9afb4e8ab0";
   };
 
   nativeBuildInputs = [
@@ -27,18 +28,24 @@ buildPythonPackage rec {
   ];
 
   propagatedBuildInputs = [
-    toml
+    tomli
   ] ++ lib.optionals (pythonOlder "3.8") [
     importlib-metadata zipp
   ];
 
   checkInputs = [
     pytestCheckHook
+    setuptools
     testpath
     mock
     pip
   ];
 
+  disabledTests = [
+    "test_setup_py"
+    "test_issue_104"
+  ];
+
   preCheck = ''
     rm pytest.ini # wants flake8
     rm tests/test_meta.py # wants to run pip
diff --git a/pkgs/development/python-modules/perfplot/default.nix b/pkgs/development/python-modules/perfplot/default.nix
index af653ed0c8da4..ca8f867e6e30c 100644
--- a/pkgs/development/python-modules/perfplot/default.nix
+++ b/pkgs/development/python-modules/perfplot/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, flit-core
 , dufte
 , matplotlib
 , numpy
@@ -13,16 +14,20 @@
 
 buildPythonPackage rec {
   pname = "perfplot";
-  version = "0.9.8";
+  version = "0.9.13";
+  format = "pyproject";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "nschloe";
     repo = pname;
-    rev = version;
-    sha256 = "17dpgd27ik7ka7xpk3mj3anbjj62lwygy1vxlmrmk8xbhrqkim8d";
+    rev = "v${version}";
+    sha256 = "0ry5x38sv8gh505z6ip90jymm7kfgyf80y3vjb2i6z567bnblam6";
   };
-  format = "pyproject";
+
+  nativeBuildInputs = [
+    flit-core
+  ];
 
   propagatedBuildInputs = [
     dufte
@@ -44,5 +49,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/nschloe/perfplot";
     license = licenses.mit;
     maintainers = with maintainers; [ costrouc ];
+    broken = true; # missing matplotx dependency
   };
 }
diff --git a/pkgs/development/python-modules/pex/default.nix b/pkgs/development/python-modules/pex/default.nix
index 438360260822b..7c94302c9489d 100644
--- a/pkgs/development/python-modules/pex/default.nix
+++ b/pkgs/development/python-modules/pex/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "pex";
-  version = "2.1.56";
+  version = "2.1.65";
   format = "flit";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8dfb7ef551cc9d3d03a6e2dc1b1ba6183cd94f3cde7431836f017d60cc992d53";
+    sha256 = "sha256-1LCTfspM/wdgDntJnjYh9nMHwIyrx4dJ64AXdSk2kl0=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/pg8000/1_12.nix b/pkgs/development/python-modules/pg8000/1_12.nix
deleted file mode 100644
index e53817b3911bd..0000000000000
--- a/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/pkgs/development/python-modules/pg8000/default.nix b/pkgs/development/python-modules/pg8000/default.nix
index f61a0c593275a..57c9f77f1fed8 100644
--- a/pkgs/development/python-modules/pg8000/default.nix
+++ b/pkgs/development/python-modules/pg8000/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "pg8000";
-  version = "1.23.0";
+  version = "1.24.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-pBPgAUE0KBOiykfot7BUn/M4zKAryBkHa21w8S11XHk=";
+    sha256 = "sha256-BsawsGjQfONm97ztrfdqC12mph+GMCyMr/aQt/xd/ts=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pgpy/default.nix b/pkgs/development/python-modules/pgpy/default.nix
index a79c65f4059a4..3c2e2c22a88b0 100644
--- a/pkgs/development/python-modules/pgpy/default.nix
+++ b/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/pkgs/development/python-modules/phonemizer/default.nix b/pkgs/development/python-modules/phonemizer/default.nix
index 54a816643818d..29f7266b69101 100644
--- a/pkgs/development/python-modules/phonemizer/default.nix
+++ b/pkgs/development/python-modules/phonemizer/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonApplication rec {
   pname = "phonemizer";
-  version = "2.2.2";
+  version = "3.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ae252f0bc7633e172b08622f318e7e112cde847e9281d4675ea7210157325146";
+    sha256 = "1b4ea53b8da9a156361dff1d0c04ac1a8e65e6966d1cb9a8147c200960b32296";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/phonenumbers/default.nix b/pkgs/development/python-modules/phonenumbers/default.nix
index 5a8cb430ae6f9..9faad1e96de20 100644
--- a/pkgs/development/python-modules/phonenumbers/default.nix
+++ b/pkgs/development/python-modules/phonenumbers/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "phonenumbers";
-  version = "8.12.40";
+  version = "8.12.43";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "00f2955a456b458f9b6ab0d24329049c3e7358c44dfc1979fe4908ced40f1eb8";
+    sha256 = "sha256-HIJwouJX1sZUWKQig/gtPsp/e52SVFSmlm4vBN914c8=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/phonopy/default.nix b/pkgs/development/python-modules/phonopy/default.nix
index dec86d1661126..3c45c602ae53c 100644
--- a/pkgs/development/python-modules/phonopy/default.nix
+++ b/pkgs/development/python-modules/phonopy/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "phonopy";
-  version = "2.12.0";
+  version = "2.13.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ff65065f418ccbff9fbc1186b9a65581e83b42789aa4a656f45badfff9bd3f61";
+    sha256 = "sha256-D7pBtcMbxMpt4XJVYDkslRDU4Uyk83AtbIIztUbji6A=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pi1wire/default.nix b/pkgs/development/python-modules/pi1wire/default.nix
new file mode 100644
index 0000000000000..993c715999b2f
--- /dev/null
+++ b/pkgs/development/python-modules/pi1wire/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "pi1wire";
+  version = "0.2.0";
+
+  format = "setuptools";
+
+  src = fetchFromGitHub {
+    owner = "ushiboy";
+    repo = "pi1wire";
+    rev = "v${version}";
+    hash = "sha256-70w71heHWR5yArl+HuNAlzL2Yq/CL0iMNMiQw5qovls=";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    "test_find_all_sensors" # flaky
+  ];
+
+  pythonImportsCheck = [ "pi1wire" ];
+
+  meta = with lib; {
+    description = "1Wire Sensor Library for Raspberry PI";
+    homepage = "https://github.com/ushiboy/pi1wire";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/pijuice/default.nix b/pkgs/development/python-modules/pijuice/default.nix
new file mode 100644
index 0000000000000..59f898f7906f5
--- /dev/null
+++ b/pkgs/development/python-modules/pijuice/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, pythonOlder
+, smbus-cffi
+, urwid
+}:
+
+buildPythonPackage rec {
+  pname = "pijuice";
+  version = "1.7";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "PiSupply";
+    repo = "PiJuice";
+    # Latest commit that fixes using the library against python 3.9 by renaming
+    # isAlive() to is_alive(). The former function was removed in python 3.9.
+    rev = "e2dca1f8dcfa12e009952a882c0674a545d193d6";
+    sha256 = "07Jr7RSjqI8j0tT0MNAjrN1sjF1+mI+V0vtKInvtxj8=";
+  };
+
+  patches = [
+    # The pijuice_cli.cli file doesn't have a shebang as the first line of the
+    # script. Without it, the pythonWrapPrograms hook will not wrap the program.
+    # Add a python shebang here so that the the hook is triggered.
+    ./patch-shebang.diff
+  ];
+
+  PIJUICE_BUILD_BASE = 1;
+  PIJUICE_VERSION = version;
+
+  preBuild = ''
+    cd Software/Source
+  '';
+
+  propagatedBuildInputs = [ smbus-cffi urwid ];
+
+  # Remove the following files from the package:
+  #
+  # pijuice_cli - A precompiled ELF binary that is a setuid wrapper for calling
+  #               pijuice_cli.py
+  #
+  # pijuiceboot - a precompiled ELF binary for flashing firmware. Not needed for
+  #               the python library.
+  #
+  # pijuice_sys.py - A program that acts as a system daemon for monitoring the
+  #                  pijuice.
+  preFixup = ''
+    rm $out/bin/pijuice_cli
+    rm $out/bin/pijuice_sys.py
+    rm $out/bin/pijuiceboot
+    mv $out/bin/pijuice_cli.py $out/bin/pijuice_cli
+  '';
+
+  # no tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Library and resources for PiJuice HAT for Raspberry Pi";
+    homepage = "https://github.com/PiSupply/PiJuice";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ hexagonal-sun ];
+  };
+}
diff --git a/pkgs/development/python-modules/pijuice/patch-shebang.diff b/pkgs/development/python-modules/pijuice/patch-shebang.diff
new file mode 100644
index 0000000000000..eb899c9a5bde5
--- /dev/null
+++ b/pkgs/development/python-modules/pijuice/patch-shebang.diff
@@ -0,0 +1,9 @@
+diff --git a/Software/Source/src/pijuice_cli.py b/Software/Source/src/pijuice_cli.py
+index c366fee..37af383 100644
+--- a/Software/Source/src/pijuice_cli.py
++++ b/Software/Source/src/pijuice_cli.py
+@@ -1,3 +1,4 @@
++#!/usr/bin/python3
+ # This python script to be executed as user pijuice by the setuid program pijuice_cli 
+ # Python 3 only
+ #
diff --git a/pkgs/development/python-modules/pikepdf/default.nix b/pkgs/development/python-modules/pikepdf/default.nix
index 6f0f733c47235..c02e5c5ce0d56 100644
--- a/pkgs/development/python-modules/pikepdf/default.nix
+++ b/pkgs/development/python-modules/pikepdf/default.nix
@@ -25,7 +25,7 @@
 
 buildPythonPackage rec {
   pname = "pikepdf";
-  version = "4.3.0";
+  version = "4.4.1";
   disabled = ! isPy3k;
 
   src = fetchFromGitHub {
@@ -38,7 +38,7 @@ buildPythonPackage rec {
     extraPostFetch = ''
       rm "$out/.git_archival.txt"
     '';
-    hash = "sha256-9dSJ6+rZd49rFSQExYnFBGQGZ8MnFM+z/0Iz/nYkW4E=";
+    hash = "sha256-8yYqyXz4ZqZxsk2Ka8S0rDsHaqO4l6cZTyNuVQuHkew=";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/pillow/6.nix b/pkgs/development/python-modules/pillow/6.nix
deleted file mode 100644
index 61242c894a893..0000000000000
--- a/pkgs/development/python-modules/pillow/6.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi, isPyPy, isPy3k
-, olefile, freetype, libjpeg, zlib, libtiff, libwebp, tcl, lcms2, tk, libX11
-, openjpeg, libimagequant, pyroma, numpy, pytestCheckHook
-}@args:
-
-import ./generic.nix (rec {
-  pname = "Pillow";
-  version = "6.2.2";
-
-  disabled = !isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0l5rv8jkdrb5q846v60v03mcq64yrhklidjkgwv6s1pda71g17yv";
-  };
-
-  meta = with lib; {
-    homepage = "https://python-pillow.org/";
-    description = "The friendly PIL fork (Python Imaging Library)";
-    longDescription = ''
-      The Python Imaging Library (PIL) adds image processing
-      capabilities to your Python interpreter.  This library
-      supports many file formats, and provides powerful image
-      processing and graphics capabilities.
-    '';
-    license = "http://www.pythonware.com/products/pil/license.htm";
-    maintainers = with maintainers; [ goibhniu prikhi SuperSandro2000 ];
-    knownVulnerabilities = [
-      "CVE-2020-10177"
-      "CVE-2020-10378"
-      "CVE-2020-10379"
-      "CVE-2020-10994"
-      "CVE-2020-11538"
-      "CVE-2020-35653"
-      "CVE-2020-35654"
-      "CVE-2020-35655"
-      "CVE-2021-25289"
-      "CVE-2021-25290"
-      "CVE-2021-25291"
-      "CVE-2021-25292"
-      "CVE-2021-25293"
-      "CVE-2021-27921"
-      "CVE-2021-27922"
-      "CVE-2021-27923"
-    ];
-  };
-} // args )
diff --git a/pkgs/development/python-modules/pillow/default.nix b/pkgs/development/python-modules/pillow/default.nix
index e0f29d366e106..57b085a54051d 100644
--- a/pkgs/development/python-modules/pillow/default.nix
+++ b/pkgs/development/python-modules/pillow/default.nix
@@ -5,13 +5,13 @@
 
 import ./generic.nix (rec {
   pname = "Pillow";
-  version = "8.4.0";
+  version = "9.0.0";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b8e2f83c56e141920c39464b852de3719dfbfb6e3c99a2d8da0edf4fb33176ed";
+    sha256 = "0gjry0yqryd2678sm47jhdnbghzxn5wk8pgyaqwr4qi7x5ijjvpf";
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/pip-tools/default.nix b/pkgs/development/python-modules/pip-tools/default.nix
index 9d54eef4d706f..307e99c04d80d 100644
--- a/pkgs/development/python-modules/pip-tools/default.nix
+++ b/pkgs/development/python-modules/pip-tools/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "pip-tools";
-  version = "6.4.0";
+  version = "6.5.1";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "65553a15b1ba34be5e43889345062e38fb9b219ffa23b084ca0d4c4039b6f53b";
+    sha256 = "sha256-gPViqmmfx2pCRTlpfgvvQeSQoFDlemohRoUxmBqdQZ4=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/pip/20.nix b/pkgs/development/python-modules/pip/20.nix
deleted file mode 100644
index e3666d6a7961a..0000000000000
--- a/pkgs/development/python-modules/pip/20.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ lib
-, buildPythonPackage
-, bootstrapped-pip
-, fetchFromGitHub
-, mock
-, scripttest
-, virtualenv
-, pretend
-, pytest
-}:
-
-buildPythonPackage rec {
-  pname = "pip";
-  version = "20.3.4";
-  format = "other";
-
-  src = fetchFromGitHub {
-    owner = "pypa";
-    repo = pname;
-    rev = version;
-    sha256 = "0hkhs9yc1cjdj1gn9wkycd3sy65c05q8k8rhqgsm5jbpksfssiwn";
-    name = "${pname}-${version}-source";
-  };
-
-  nativeBuildInputs = [ bootstrapped-pip ];
-
-  # pip detects that we already have bootstrapped_pip "installed", so we need
-  # to force it a little.
-  pipInstallFlags = [ "--ignore-installed" ];
-
-  checkInputs = [ mock scripttest virtualenv pretend pytest ];
-  # Pip wants pytest, but tests are not distributed
-  doCheck = false;
-
-  meta = {
-    description = "The PyPA recommended tool for installing Python packages";
-    license = with lib.licenses; [ mit ];
-    homepage = "https://pip.pypa.io/";
-    priority = 10;
-  };
-}
diff --git a/pkgs/development/python-modules/pip/default.nix b/pkgs/development/python-modules/pip/default.nix
index fc447bfb98a01..2ddba8f363e34 100644
--- a/pkgs/development/python-modules/pip/default.nix
+++ b/pkgs/development/python-modules/pip/default.nix
@@ -7,18 +7,21 @@
 , virtualenv
 , pretend
 , pytest
+
+# coupled downsteam dependencies
+, pip-tools
 }:
 
 buildPythonPackage rec {
   pname = "pip";
-  version = "21.1.3";
+  version = "21.3.1";
   format = "other";
 
   src = fetchFromGitHub {
     owner = "pypa";
     repo = pname;
     rev = version;
-    sha256 = "sha256-zfMz9p4I6Kmw849xuvnmGWHmWtajDntFW1jjDilKkgk=";
+    sha256 = "sha256-A8oePI5VOKGJTY6ZuUhcOhRkz2I2FSdfsS2xIgktCVQ=";
     name = "${pname}-${version}-source";
   };
 
@@ -32,6 +35,8 @@ buildPythonPackage rec {
   # Pip wants pytest, but tests are not distributed
   doCheck = false;
 
+  passthru.tests = { inherit pip-tools; };
+
   meta = {
     description = "The PyPA recommended tool for installing Python packages";
     license = with lib.licenses; [ mit ];
diff --git a/pkgs/development/python-modules/pipenv-poetry-migrate/default.nix b/pkgs/development/python-modules/pipenv-poetry-migrate/default.nix
new file mode 100644
index 0000000000000..6f359d3bc9a70
--- /dev/null
+++ b/pkgs/development/python-modules/pipenv-poetry-migrate/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, poetry
+, rich
+, setuptools
+}:
+
+buildPythonPackage rec {
+  version = "0.2.0";
+  pname = "pipenv-poetry-migrate";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "yhino";
+    repo = "pipenv-poetry-migrate";
+    rev = "v${version}";
+    hash = "sha256-2/e6uGwpUvzxXlz+51gUriE054bgNeJNyLDCIyiGflM=";
+  };
+
+  propagatedBuildInputs = [
+    poetry
+    rich
+    setuptools
+  ];
+
+  postPatch = ''
+  substituteInPlace pyproject.toml --replace 'rich = "^9.6.1"' 'rich = ">9"'
+  '';
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    description = "This is simple migration script, migrate pipenv to poetry";
+    homepage = "https://github.com/yhino/pipenv-poetry-migrate";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ gador ];
+  };
+}
diff --git a/pkgs/development/python-modules/pipx/default.nix b/pkgs/development/python-modules/pipx/default.nix
index 2f80806c431a4..3f461b15a3f2a 100644
--- a/pkgs/development/python-modules/pipx/default.nix
+++ b/pkgs/development/python-modules/pipx/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "pipx";
-  version = "0.17.0";
+  version = "1.0.0";
 
   disabled = pythonOlder "3.6";
 
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "pipxproject";
     repo = pname;
     rev = version;
-    sha256 = "sha256-vR/tKV+ZB0nZaxEcB83dwoSI7kBC1rA+6fo30rizroM=";
+    sha256 = "1sgfrlhci2m83k436dfwfmqjpb8hij6yypm03pm3n8drmr2aaa4s";
   };
 
   propagatedBuildInputs = [
@@ -68,6 +68,6 @@ buildPythonPackage rec {
       "Install and Run Python Applications in Isolated Environments";
     homepage = "https://github.com/pipxproject/pipx";
     license = licenses.mit;
-    maintainers = with maintainers; [ yevhenshymotiuk ];
+    maintainers = with maintainers; [ yshym ];
   };
 }
diff --git a/pkgs/development/python-modules/pivy/default.nix b/pkgs/development/python-modules/pivy/default.nix
index 7645fdaec8aa0..6637198b56439 100644
--- a/pkgs/development/python-modules/pivy/default.nix
+++ b/pkgs/development/python-modules/pivy/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "pivy";
-  version = "0.6.5";
+  version = "0.6.6";
 
   src = fetchFromGitHub {
     owner = "coin3d";
     repo = "pivy";
     rev = version;
-    sha256 = "0vids7sxk8w5vr73xdnf8xdci71a7syl6cd35aiisppbqyyfmykx";
+    sha256 = "1xlynrbq22pb252r37r80b3myzap8hzhvknz4zfznfrsg9ykh8k2";
   };
 
   dontUseCmakeConfigure = true;
diff --git a/pkgs/development/python-modules/pixelmatch/default.nix b/pkgs/development/python-modules/pixelmatch/default.nix
index d7473a05bccad..836c3cd38ab28 100644
--- a/pkgs/development/python-modules/pixelmatch/default.nix
+++ b/pkgs/development/python-modules/pixelmatch/default.nix
@@ -1,15 +1,26 @@
-{ lib, buildPythonPackage, fetchgit, poetry-core, pytestCheckHook, pytest-benchmark, pytest-mypy, pillow }:
+{ lib
+, buildPythonPackage
+, fetchgit
+, pillow
+, poetry-core
+, pytest-benchmark
+, pytest-mypy
+, pytestCheckHook
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "pixelmatch";
-  version = "0.2.2";
+  version = "0.2.3";
   format = "pyproject";
 
-  # test fixtures are stored in LFS
+  disabled = pythonOlder "3.6";
+
+  # Test fixtures are stored in LFS
   src = fetchgit {
     url = "https://github.com/whtsky/pixelmatch-py";
     rev = "v${version}";
-    sha256 = "1dsix507dxqik9wvgzscvf2pifbg7gx74krrsalqbfcmm7d1i7xl";
+    hash = "sha256-/zRQhwz+HjT0Hs4CunsqHxHWEtoIH9qMBowRb0Pps6Y=";
     fetchLFS = true;
   };
 
@@ -18,19 +29,24 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    pytestCheckHook
+    pillow
     pytest-benchmark
     pytest-mypy
-    pillow
+    pytestCheckHook
   ];
 
   pytestFlagsArray = [
-    "--mypy"
+    # Incompatible types in assignment
+    #"--mypy"
     "--benchmark-disable"
   ];
 
+  pythonImportsCheck = [
+    "pixelmatch"
+  ];
+
   meta = with lib; {
-    description = "A pixel-level image comparison library.";
+    description = "Pixel-level image comparison library";
     homepage = "https://github.com/whtsky/pixelmatch-py";
     license = licenses.isc;
     maintainers = with maintainers; [ petabyteboy ];
diff --git a/pkgs/development/python-modules/pkuseg/default.nix b/pkgs/development/python-modules/pkuseg/default.nix
index d59fe56203aa5..474d66dafc63b 100644
--- a/pkgs/development/python-modules/pkuseg/default.nix
+++ b/pkgs/development/python-modules/pkuseg/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , isPy3k
+, pythonAtLeast
 , cython
 , numpy
 }:
@@ -10,7 +11,7 @@ buildPythonPackage rec {
   pname = "pkuseg";
   version = "0.0.25";
 
-  disabled = !isPy3k;
+  disabled = !isPy3k || pythonAtLeast "3.9";
 
   src = fetchPypi {
     inherit pname version;
diff --git a/pkgs/development/python-modules/plaid-python/default.nix b/pkgs/development/python-modules/plaid-python/default.nix
index 31a62c1096469..387853ad28c5e 100644
--- a/pkgs/development/python-modules/plaid-python/default.nix
+++ b/pkgs/development/python-modules/plaid-python/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "plaid-python";
-  version = "8.8.0";
+  version = "8.10.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8689b5c4d69e93026aea252314fb3133359fa70df5819ad6995c4e44a2f84858";
+    sha256 = "8930949bd43e3126289f50e927d1acacf53c57ec3227c764e0c1feb72bbb61a3";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/platformdirs/default.nix b/pkgs/development/python-modules/platformdirs/default.nix
index 062295a4eadaf..f2e8659914876 100644
--- a/pkgs/development/python-modules/platformdirs/default.nix
+++ b/pkgs/development/python-modules/platformdirs/default.nix
@@ -11,14 +11,16 @@
 
 buildPythonPackage rec {
   pname = "platformdirs";
-  version = "2.4.0";
-  disabled = pythonOlder "3.6";
+  version = "2.4.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "sha256-Ox1CVq2M2eddZtpuZx0IfvuOm6RPsAs27WkMdZSeh0E=";
+    sha256 = "sha256-Ce1dwE2g/7o91NPkmlM0uv0eMB7WzFCExV/8ZCAn22Y=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
@@ -33,7 +35,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
- pythonImportsCheck = [ "platformdirs" ];
+  pythonImportsCheck = [
+    "platformdirs"
+  ];
 
   meta = with lib; {
     description = "Python module for determining appropriate platform-specific directories";
diff --git a/pkgs/development/python-modules/plexapi/default.nix b/pkgs/development/python-modules/plexapi/default.nix
index 8c0bd2d07e809..ef702b93adb1f 100644
--- a/pkgs/development/python-modules/plexapi/default.nix
+++ b/pkgs/development/python-modules/plexapi/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "plexapi";
-  version = "4.8.0";
+  version = "4.9.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "pkkid";
     repo = "python-plexapi";
     rev = version;
-    sha256 = "sha256-e+nZi84mF9Z/gbFyhmE9TlntkTyrfoNr3U/fwH55fjw=";
+    sha256 = "sha256-93qMSOnCl18dRZQB8v2Cxv21vsdFzHefQ7zttQAuPKk=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/plotly/default.nix b/pkgs/development/python-modules/plotly/default.nix
index c4811044ae2b3..fbe869b07032f 100644
--- a/pkgs/development/python-modules/plotly/default.nix
+++ b/pkgs/development/python-modules/plotly/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "plotly";
-  version = "5.4.0";
+  version = "5.5.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "735d50738c760ecbf3a38e2336b8c1b119bff2d857096e4f68af31089b798161";
+    sha256 = "20b8a1a0f0434f9b8d10eb7caa66e947a9a1d698e5a53d40d447bbc0d2ae41f0";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pluggy/0.nix b/pkgs/development/python-modules/pluggy/0.nix
deleted file mode 100644
index 30fa2e1945b21..0000000000000
--- a/pkgs/development/python-modules/pluggy/0.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, setuptools-scm
-, importlib-metadata
-}:
-
-buildPythonPackage rec {
-  pname = "pluggy";
-  version = "0.13.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0";
-  };
-
-  checkPhase = ''
-    py.test
-  '';
-
-  # To prevent infinite recursion with pytest
-  doCheck = false;
-
-  nativeBuildInputs = [ setuptools-scm ];
-
-  propagatedBuildInputs = [ 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; [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/plugwise/default.nix b/pkgs/development/python-modules/plugwise/default.nix
index 28a67f1da82e0..03e3c255d3e38 100644
--- a/pkgs/development/python-modules/plugwise/default.nix
+++ b/pkgs/development/python-modules/plugwise/default.nix
@@ -19,14 +19,14 @@
 
 buildPythonPackage rec {
   pname = "plugwise";
-  version = "0.15.3";
+  version = "0.16.5";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = "python-plugwise";
     rev = "v${version}";
-    sha256 = "sha256-HaH0LcH6L3R9vLT0vlM1absMTbfqgEeVi/aP2FqdnQY=";
+    sha256 = "sha256-qvzocaqWIkhSdVm4x/pUIVtNBC0D5FRFEkonH7F6Oaw=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/plumbum/default.nix b/pkgs/development/python-modules/plumbum/default.nix
index e571f276f28f8..ae3c4941f6848 100644
--- a/pkgs/development/python-modules/plumbum/default.nix
+++ b/pkgs/development/python-modules/plumbum/default.nix
@@ -1,19 +1,61 @@
-{ buildPythonPackage
-, fetchPypi
-, pytest
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, openssh
+, ps
+, psutil
+, pytest-mock
+, pytest-timeout
+, pytestCheckHook
+, setuptools-scm
 }:
 
 buildPythonPackage rec {
   pname = "plumbum";
   version = "1.7.2";
 
-  checkInputs = [ pytest ];
+  src = fetchFromGitHub {
+    owner = "tomerfiliba";
+    repo = "plumbum";
+    rev = "v${version}";
+    sha256 = "sha256-bCCcNFz+ZsbKSF7aCfy47lBHb873tDYN0qFuSCxJp1w=";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "--cov-config=setup.cfg" ""
+  '';
+
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  checkInputs = [
+    openssh
+    ps
+    psutil
+    pytest-mock
+    pytest-timeout
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    export HOME=$TMP
+  '';
 
-  # No tests in archive
-  doCheck = false;
+  disabledTests = [
+    # broken in nix env
+    "test_change_env"
+    "test_dictlike"
+    "test_local"
+  ];
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0d1bf908076bbd0484d16412479cb97d6843069ee19f99e267e11dd980040523";
+  meta = with lib; {
+    description = " Plumbum: Shell Combinators ";
+    homepage = " https://github.com/tomerfiliba/plumbum ";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/poetry/default.nix b/pkgs/development/python-modules/poetry/default.nix
index 1957982bd8fea..5efbe56ac5bdd 100644
--- a/pkgs/development/python-modules/poetry/default.nix
+++ b/pkgs/development/python-modules/poetry/default.nix
@@ -1,20 +1,28 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy27, pythonOlder, fetchpatch
+{ lib
+, buildPythonPackage
 , cachecontrol
 , cachy
 , cleo
 , clikit
+, crashtest
+, dataclasses
+, entrypoints
+, fetchFromGitHub
+, fetchpatch
 , html5lib
 , httpretty
 , importlib-metadata
 , intreehooks
 , keyring
 , lockfile
+, packaging
 , pexpect
 , pkginfo
 , poetry-core
-, pytestCheckHook
-, pytest-cov
 , pytest-mock
+, pytestCheckHook
+, pythonAtLeast
+, pythonOlder
 , requests
 , requests-toolbelt
 , shellingham
@@ -26,7 +34,8 @@ buildPythonPackage rec {
   pname = "poetry";
   version = "1.1.12";
   format = "pyproject";
-  disabled = isPy27;
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "python-poetry";
@@ -37,21 +46,27 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-     --replace 'importlib-metadata = {version = "^1.6.0", python = "<3.8"}' \
+      --replace 'importlib-metadata = {version = "^1.6.0", python = "<3.8"}' \
        'importlib-metadata = {version = ">=1.6", python = "<3.8"}' \
-     --replace 'version = "^21.2.0"' 'version = ">=21.2"'
+      --replace 'version = "^21.2.0"' 'version = ">=21.2"' \
+      --replace 'packaging = "^20.4"' 'packaging = "*"'
   '';
 
-  nativeBuildInputs = [ intreehooks ];
+  nativeBuildInputs = [
+    intreehooks
+  ];
 
   propagatedBuildInputs = [
     cachecontrol
     cachy
     cleo
     clikit
+    crashtest
+    entrypoints
     html5lib
     keyring
     lockfile
+    packaging
     pexpect
     pkginfo
     poetry-core
@@ -60,7 +75,11 @@ buildPythonPackage rec {
     shellingham
     tomlkit
     virtualenv
-  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
+  ] ++ lib.optionals (pythonOlder "3.7") [
+    dataclasses
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    importlib-metadata
+  ];
 
   postInstall = ''
     mkdir -p "$out/share/bash-completion/completions"
@@ -71,8 +90,16 @@ buildPythonPackage rec {
     "$out/bin/poetry" completions fish > "$out/share/fish/vendor_completions.d/poetry.fish"
   '';
 
-  checkInputs = [ pytestCheckHook httpretty pytest-mock pytest-cov ];
-  preCheck = "export HOME=$TMPDIR";
+  checkInputs = [
+    pytestCheckHook
+    httpretty
+    pytest-mock
+  ];
+
+  preCheck = ''
+    export HOME=$TMPDIR
+  '';
+
   disabledTests = [
     # touches network
     "git"
@@ -87,11 +114,14 @@ buildPythonPackage rec {
     "lock"
     # fs permission errors
     "test_builder_should_execute_build_scripts"
+  ] ++ lib.optionals (pythonAtLeast "3.10") [
+    # RuntimeError: 'auto_spec' might be a typo; use unsafe=True if this is intended
+    "test_info_setup_complex_pep517_error"
   ];
 
   patches = [
     # The following patch addresses a minor incompatibility with
-    # pytest-mock.  This is addressed upstream in
+    # pytest-mock. This is addressed upstream in
     # https://github.com/python-poetry/poetry/pull/3457
     (fetchpatch {
       url = "https://github.com/python-poetry/poetry/commit/8ddceb7c52b3b1f35412479707fa790e5d60e691.diff";
@@ -99,8 +129,10 @@ buildPythonPackage rec {
     })
   ];
 
-  # allow for package to use pep420's native namespaces
-  pythonNamespaces = [ "poetry" ];
+  # Allow for package to use pep420's native namespaces
+  pythonNamespaces = [
+    "poetry"
+  ];
 
   meta = with lib; {
     homepage = "https://python-poetry.org/";
diff --git a/pkgs/development/python-modules/policy-sentry/default.nix b/pkgs/development/python-modules/policy-sentry/default.nix
index 86bbd847aa28e..969f1207a5b59 100644
--- a/pkgs/development/python-modules/policy-sentry/default.nix
+++ b/pkgs/development/python-modules/policy-sentry/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "policy-sentry";
-  version = "0.11.19";
+  version = "0.12.2";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "salesforce";
     repo = "policy_sentry";
     rev = version;
-    sha256 = "sha256-zYX2MMFIgts5brFb/hsgLHZbY5mncqnCmk7nGdxj/BM=";
+    sha256 = "sha256-6yG60vUsvLpIiZ3i1D3NZOL9bINaF5ydrDvewqpEmpA=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/policyuniverse/default.nix b/pkgs/development/python-modules/policyuniverse/default.nix
index ca66c777f5b0e..27a53eee42813 100644
--- a/pkgs/development/python-modules/policyuniverse/default.nix
+++ b/pkgs/development/python-modules/policyuniverse/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "policyuniverse";
-  version = "1.4.0.20210819";
+  version = "1.4.0.20220110";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-RBRUR9Rzw3/yd2ZnteEBigDApJPBagpIk5lSGzeGqL4=";
+    sha256 = "sha256-EWuAhVTX6nXvyXtMuQQIVUbbRZNO8xUXXLR1XHpEid4=";
   };
 
   # Tests are not shipped and there are no GitHub tags
diff --git a/pkgs/development/python-modules/pontos/default.nix b/pkgs/development/python-modules/pontos/default.nix
index 955b384ed727f..6acd81854681f 100644
--- a/pkgs/development/python-modules/pontos/default.nix
+++ b/pkgs/development/python-modules/pontos/default.nix
@@ -7,12 +7,13 @@
 , colorful
 , tomlkit
 , git
+, packaging
 , requests
 }:
 
 buildPythonPackage rec {
   pname = "pontos";
-  version = "21.11.0";
+  version = "22.2.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -21,7 +22,7 @@ buildPythonPackage rec {
     owner = "greenbone";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-uP4M1ShhKsvqnUixc3JUJVpNQOwYn8Gm2uWVcXhFKLg=";
+    hash = "sha256-9QnimA9y5mVgJA9LkDVC+eNyp6Ltvw+fErtoSVL/1iw=";
   };
 
   nativeBuildInputs = [
@@ -31,6 +32,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     colorful
     tomlkit
+    packaging
     requests
   ];
 
@@ -39,6 +41,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'packaging = "^20.3"' 'packaging = "*"'
+  '';
+
   disabledTests = [
     # Signing fails
     "test_find_no_signing_key"
@@ -48,7 +55,9 @@ buildPythonPackage rec {
     "test_missing_cmd"
   ];
 
-  pythonImportsCheck = [ "pontos" ];
+  pythonImportsCheck = [
+    "pontos"
+  ];
 
   meta = with lib; {
     description = "Collection of Python utilities, tools, classes and functions";
diff --git a/pkgs/development/python-modules/pony/default.nix b/pkgs/development/python-modules/pony/default.nix
index 03330c4cfec76..4cea071d2772e 100644
--- a/pkgs/development/python-modules/pony/default.nix
+++ b/pkgs/development/python-modules/pony/default.nix
@@ -1,25 +1,42 @@
-{ lib, python, buildPythonPackage, fetchPypi }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "pony";
-  version = "0.7.14";
+  version = "0.7.16";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "2f01e84e79ea7a14040225cb6c079bb266e7ba147346356c266490b18c77ce82";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "ponyorm";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-yATIsX2nKsW5DBwg9/LznQqf+XPY3q46WZut18Sr0v0=";
   };
 
-  doCheck = true;
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Tests are outdated
+    "test_exception_msg"
+    "test_method"
+  ];
 
-  # stripping the tests
-  postInstall = ''
-    rm -rf $out/${python.sitePackages}/pony/orm/tests
-  '';
+  pythonImportsCheck = [
+    "pony"
+  ];
 
   meta = with lib; {
-    description = "Pony is a Python ORM with beautiful query syntax";
+    description = "Library for advanced object-relational mapping";
     homepage = "https://ponyorm.org/";
-    maintainers = with maintainers; [ d-goldin xvapx ];
     license = licenses.asl20;
+    maintainers = with maintainers; [ d-goldin xvapx ];
   };
 }
diff --git a/pkgs/development/python-modules/portalocker/default.nix b/pkgs/development/python-modules/portalocker/default.nix
index abe7ce6982089..357ca815407fa 100644
--- a/pkgs/development/python-modules/portalocker/default.nix
+++ b/pkgs/development/python-modules/portalocker/default.nix
@@ -5,12 +5,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "2.3.2";
+  version = "2.4.0";
   pname = "portalocker";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "75cfe02f702737f1726d83e04eedfa0bda2cc5b974b1ceafb8d6b42377efbd5f";
+    sha256 = "sha256-pkitdhuOonNwy1kVNQEizYB7gg0hk+1cnMKPFj32N/Q=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/portend/default.nix b/pkgs/development/python-modules/portend/default.nix
index 52e46cec75a01..a3cb25624f7a4 100644
--- a/pkgs/development/python-modules/portend/default.nix
+++ b/pkgs/development/python-modules/portend/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "portend";
-  version = "2.7.2";
+  version = "3.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3fbc0df9e4970b661e4d7386a91fc7bcf34ebeaf0333ce15d819d515a71ba8b2";
+    sha256 = "239e3116045ea823f6df87d6168107ad75ccc0590e37242af0cc1e98c5d224e4";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/portpicker/default.nix b/pkgs/development/python-modules/portpicker/default.nix
index 90ed4b34b707b..fd7bf7bc09c34 100644
--- a/pkgs/development/python-modules/portpicker/default.nix
+++ b/pkgs/development/python-modules/portpicker/default.nix
@@ -5,12 +5,12 @@
 
 buildPythonPackage rec {
   pname = "portpicker";
-  version = "1.4.0";
+  version = "1.5.0";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c2831ff4328a21e928ffc9e52124bcafacaf5816d38a1a72dc329680dc1bb7ba";
+    sha256 = "e13b148008adeb2793cf8b55bcd20fdcec4f763f2d3bf3c45f5e5e5d1df7d228";
   };
 
   meta = {
diff --git a/pkgs/development/python-modules/pot/default.nix b/pkgs/development/python-modules/pot/default.nix
index 431c2e40487f7..8bc7ecb7f355d 100644
--- a/pkgs/development/python-modules/pot/default.nix
+++ b/pkgs/development/python-modules/pot/default.nix
@@ -16,12 +16,12 @@
 
 buildPythonPackage rec {
   pname = "pot";
-  version = "0.7.0";
+  version = "0.8.1.0";
 
   src = fetchPypi {
     pname = "POT";
     inherit version;
-    sha256 = "01mdsiv8rlgqzvm3bds9aj49khnn33i523c2cqqrl10zg742pb6l";
+    sha256 = "ff2974418fbf35b18072555c2a9e7e4f6876eddfb6791179ddb8f0f6d6032505";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/ppscore/default.nix b/pkgs/development/python-modules/ppscore/default.nix
index 43dd1f249ed8f..57d8048f0d6d8 100644
--- a/pkgs/development/python-modules/ppscore/default.nix
+++ b/pkgs/development/python-modules/ppscore/default.nix
@@ -1,33 +1,41 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, isPy27
 , pandas
-, scikit-learn
 , pytestCheckHook
+, pythonOlder
+, scikit-learn
 }:
 
 buildPythonPackage rec {
   pname = "ppscore";
-  version = "1.1.1";
-  disabled = isPy27;
+  version = "unstable-2021-11-25";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "8080labs";
     repo = pname;
-    rev = version;
-    sha256 = "11y6axhj0nlagf7ax6gas1g06krrmddb1jlmf0mmrmyi7z0vldk2";
+    rev = "c9268c16b6305c5c38e2fe2fd84f43d97ec1aaca";
+    hash = "sha256-qiogjUgcLFauAMpVf2CKNC27c9xR9q7nY69n8/go1ms=";
   };
 
-  checkInputs = [ pytestCheckHook ];
-
   propagatedBuildInputs = [
     pandas
     scikit-learn
   ];
 
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "ppscore"
+  ];
+
   meta = with lib; {
-    description = "A Python implementation of the Predictive Power Score (PPS)";
+    description = "Python implementation of the Predictive Power Score (PPS)";
     homepage = "https://github.com/8080labs/ppscore/";
     license = licenses.mit;
     maintainers = with maintainers; [ evax ];
diff --git a/pkgs/development/python-modules/prance/default.nix b/pkgs/development/python-modules/prance/default.nix
index cbc931d5c59e9..26cfada4296e5 100644
--- a/pkgs/development/python-modules/prance/default.nix
+++ b/pkgs/development/python-modules/prance/default.nix
@@ -4,6 +4,7 @@
 , chardet
 , requests
 , ruamel-yaml
+, setuptools-scm
 , six
 , semver
 , pytestCheckHook
@@ -22,6 +23,12 @@ buildPythonPackage rec {
     sha256 = "sha256-kGANMHfWwhW3ZBw2ZVCJZR/bV2EPhcydMKhDeDTVwcQ=";
   };
 
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [
     chardet
     requests
@@ -51,7 +58,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Resolving Swagger/OpenAPI 2.0 and 3.0.0 Parser";
-    homepage = "https://github.com/jfinkhaeuser/prance";
+    homepage = "https://github.com/RonnyPfannschmidt/prance";
     license = licenses.mit;
     maintainers = [ maintainers.costrouc ];
   };
diff --git a/pkgs/development/python-modules/praw/6.3.nix b/pkgs/development/python-modules/praw/6.3.nix
deleted file mode 100644
index 13ecab806c459..0000000000000
--- a/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/pkgs/development/python-modules/precis-i18n/default.nix b/pkgs/development/python-modules/precis-i18n/default.nix
index 807e81df1a394..f6e0459139a0d 100644
--- a/pkgs/development/python-modules/precis-i18n/default.nix
+++ b/pkgs/development/python-modules/precis-i18n/default.nix
@@ -1,21 +1,31 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy3k }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "precis-i18n";
-  version = "1.0.3";
+  version = "1.0.4";
+  format = "setuptools";
 
-  disabled = !isPy3k;
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "byllyfish";
     repo = "precis_i18n";
     rev = "v${version}";
-    hash = "sha256-pBmllX1RVdFnZsDSW7Hh5uVqK2d++kcp1NQLN/phXdU=";
+    hash = "sha256-90yNusUyz8qJi7WWYIFhHzrpvu1TqxfpT+lv2CVhSR8=";
   };
 
-  meta = {
+  pythonImportsCheck = [
+    "precis_i18n"
+  ];
+
+  meta = with lib; {
     homepage = "https://github.com/byllyfish/precis_i18n";
     description = "Internationalized usernames and passwords";
-    license = lib.licenses.mit;
+    license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/prettytable/1.nix b/pkgs/development/python-modules/prettytable/1.nix
deleted file mode 100644
index 8191e9b5f579b..0000000000000
--- a/pkgs/development/python-modules/prettytable/1.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, glibcLocales
-, setuptools-scm
-, wcwidth
-}:
-
-buildPythonPackage rec {
-  pname = "prettytable";
-  version = "1.0.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0wcpp1nkicrswb353yn6xd2x535cpif62nw5rgz33c1wj0wzbdvb";
-  };
-
-  nativeBuildInputs = [ setuptools-scm ];
-  buildInputs = [ glibcLocales ];
-
-  propagatedBuildInputs = [ wcwidth ];
-
-  preCheck = ''
-    export LANG="en_US.UTF-8"
-  '';
-
-  # no test no longer available in pypi package
-  doCheck = false;
-  pythonImportsCheck = [ "prettytable" ];
-
-  meta = with lib; {
-    description = "Simple Python library for easily displaying tabular data in a visually appealing ASCII table format";
-    homepage = "http://code.google.com/p/prettytable/";
-    license = licenses.bsd3;
-  };
-
-}
diff --git a/pkgs/development/python-modules/prettytable/default.nix b/pkgs/development/python-modules/prettytable/default.nix
index 85aaa1e656d80..f914a0f3df449 100644
--- a/pkgs/development/python-modules/prettytable/default.nix
+++ b/pkgs/development/python-modules/prettytable/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "prettytable";
-  version = "2.4.0";
+  version = "3.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "18e56447f636b447096977d468849c1e2d3cfa0af8e7b5acfcf83a64790c0aca";
+    sha256 = "69fe75d78ac8651e16dd61265b9e19626df5d630ae294fc31687aa6037b97a58";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/primecountpy/default.nix b/pkgs/development/python-modules/primecountpy/default.nix
new file mode 100644
index 0000000000000..c2ad9ca512b02
--- /dev/null
+++ b/pkgs/development/python-modules/primecountpy/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, primecount
+, cython
+, cysignals
+}:
+
+buildPythonPackage rec {
+  pname = "primecountpy";
+  version = "0.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "78fe7cc32115f0669a45d7c90faaf39f7ce3939e39e2e7e5f14c17fe4bff0676";
+  };
+
+  buildInputs = [ primecount ];
+
+  propagatedBuildInputs = [ cython cysignals ];
+
+  # depends on pytest-cython for "pytest --doctest-cython"
+  doCheck = false;
+
+  pythonImportsCheck = [ "primecountpy" ];
+
+  meta = with lib; {
+    description = "Cython interface for C++ primecount library";
+    homepage = "https://github.com/dimpase/primecountpy/";
+    maintainers = teams.sage.members;
+    license = licenses.gpl3Only;
+  };
+}
diff --git a/pkgs/development/python-modules/privacyidea-ldap-proxy/default.nix b/pkgs/development/python-modules/privacyidea-ldap-proxy/default.nix
index aa44e1396a00a..455f4a6e22945 100644
--- a/pkgs/development/python-modules/privacyidea-ldap-proxy/default.nix
+++ b/pkgs/development/python-modules/privacyidea-ldap-proxy/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "privacyidea-ldap-proxy";
-  version = "0.6.2";
+  version = "0.7";
 
   src = fetchFromGitHub {
     owner = "privacyidea";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-U2lg4zDQKn9FQ7O0zSLaijIkXKVjg8wi2ItueF4ACDU=";
+    sha256 = "1i2kgxqd38xvb42qj0a4a35w4vk0fyp3n7w48kqmvrxc77p6r6i8";
   };
 
   propagatedBuildInputs = [ twisted ldaptor configobj ];
diff --git a/pkgs/development/python-modules/progressbar2/default.nix b/pkgs/development/python-modules/progressbar2/default.nix
index 766b7090f90f1..3f4f49d4299e2 100644
--- a/pkgs/development/python-modules/progressbar2/default.nix
+++ b/pkgs/development/python-modules/progressbar2/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "progressbar2";
-  version = "3.55.0";
+  version = "4.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "86835d1f1a9317ab41aeb1da5e4184975e2306586839d66daf63067c102f8f04";
+    sha256 = "14d3165a1781d053ffaa117daf27cc706128d2ec1d2977fdb05b6bb079888013";
   };
 
   propagatedBuildInputs = [ python-utils ];
diff --git a/pkgs/development/python-modules/progressbar231/default.nix b/pkgs/development/python-modules/progressbar231/default.nix
deleted file mode 100644
index d421efde8aa10..0000000000000
--- a/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/pkgs/development/python-modules/prompt-toolkit/default.nix b/pkgs/development/python-modules/prompt-toolkit/default.nix
index ae67d3d556dcd..e38560be2eb68 100644
--- a/pkgs/development/python-modules/prompt-toolkit/default.nix
+++ b/pkgs/development/python-modules/prompt-toolkit/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "prompt-toolkit";
-  version = "3.0.22";
+  version = "3.0.24";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -16,7 +16,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "prompt_toolkit";
     inherit version;
-    sha256 = "sha256-RJ8zPdEgvQH10paozhRSEUujpx+ucojS8K4skYdk+nI=";
+    sha256 = "1bb05628c7d87b645974a1bad3f17612be0c29fa39af9f7688030163f680bad6";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/protego/default.nix b/pkgs/development/python-modules/protego/default.nix
index ad7e4aa4af6e1..caf8eaa51d8bc 100644
--- a/pkgs/development/python-modules/protego/default.nix
+++ b/pkgs/development/python-modules/protego/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "Protego";
-  version = "0.1.16";
+  version = "0.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a682771bc7b51b2ff41466460896c1a5a653f9a1e71639ef365a72e66d8734b4";
+    sha256 = "sha256-G5lgVhekLOB7BJ4LnW3D7l77mSTyb9EV6q+8j5o3Rw4=";
   };
   propagatedBuildInputs = [ six ];
 
diff --git a/pkgs/development/python-modules/proton-client/default.nix b/pkgs/development/python-modules/proton-client/default.nix
index c5560b3ef97cf..0f84f324dcf9d 100644
--- a/pkgs/development/python-modules/proton-client/default.nix
+++ b/pkgs/development/python-modules/proton-client/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "proton-client";
-  version = "0.7.0";
+  version = "0.7.1";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "ProtonMail";
     repo = "proton-python-client";
     rev = version;
-    sha256 = "sha256-98tEL3DUYtx27JcI6pPFS2iDJXS8K3yyvCU9UVrg1EM=";
+    sha256 = "sha256-mhPq9O/LCu3+E1jKlaJmrI8dxbA9BIwlc34qGwoxi5g=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/protonvpn-nm-lib/default.nix b/pkgs/development/python-modules/protonvpn-nm-lib/default.nix
index 3a5a7695c8e65..6680b19908e9e 100644
--- a/pkgs/development/python-modules/protonvpn-nm-lib/default.nix
+++ b/pkgs/development/python-modules/protonvpn-nm-lib/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "protonvpn-nm-lib";
-  version = "3.5.0";
+  version = "3.7.0";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "ProtonVPN";
     repo = pname;
     rev = version;
-    sha256 = "sha256-E75toza++l5UFdOLGgolH8pL5xvoUkLE7u+8L5RDFbI=";
+    sha256 = "sha256-RZ10p/Lg9GQj0CohW2v+THch5EaD236rEHETGjNStdY=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pscript/default.nix b/pkgs/development/python-modules/pscript/default.nix
new file mode 100644
index 0000000000000..fae2c8a428185
--- /dev/null
+++ b/pkgs/development/python-modules/pscript/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, nodejs
+}:
+
+buildPythonPackage rec {
+  pname = "pscript";
+  version = "0.7.6";
+
+  # PyPI tarball doesn't include tests directory
+  src = fetchFromGitHub {
+    owner = "flexxui";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "169px5n4jjnpdn9y86f28qwd95bwf1q1rz0a1h3lb5nn5c6ym8c4";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+    nodejs
+  ];
+
+  preCheck = ''
+    # do not execute legacy tests
+    rm -rf pscript_legacy
+  '';
+
+  meta = with lib; {
+    description = "Python to JavaScript compiler";
+    license = licenses.bsd2;
+    homepage = "https://pscript.readthedocs.io";
+    maintainers = [ maintainers.matthiasbeyer ];
+  };
+}
+
+
+
diff --git a/pkgs/development/python-modules/psutil/default.nix b/pkgs/development/python-modules/psutil/default.nix
index ba17c5eca737f..581e83ddf1a22 100644
--- a/pkgs/development/python-modules/psutil/default.nix
+++ b/pkgs/development/python-modules/psutil/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "psutil";
-  version = "5.8.0";
+  version = "5.9.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1immnj532bnnrh1qmk5q3lsw3san8qfk9kxy1cpmy0knmfcwp70c";
+    sha256 = "869842dbd66bb80c3217158e629d6fceaecc3a3166d3d1faee515b05dd26ca25";
   };
 
   # We have many test failures on various parts of the package:
diff --git a/pkgs/development/python-modules/psycopg2/default.nix b/pkgs/development/python-modules/psycopg2/default.nix
index 34660a84cd606..bdf2b65cb5079 100644
--- a/pkgs/development/python-modules/psycopg2/default.nix
+++ b/pkgs/development/python-modules/psycopg2/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "psycopg2";
-  version = "2.9.2";
+  version = "2.9.3";
 
   # 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 = "a84da9fa891848e0270e8e04dcca073bc9046441eeb47069f5c0e36783debbea";
+    sha256 = "8e841d1bf3434da985cc5ef13e6f75c8981ced601fd70cc6bf33351b91562981";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/psygnal/default.nix b/pkgs/development/python-modules/psygnal/default.nix
new file mode 100644
index 0000000000000..94cfaaa78c5c2
--- /dev/null
+++ b/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.3.0";
+  src = fetchFromGitHub {
+    owner = "tlambert03";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-vrGym/V0cSGIjBWMWpDrPBijEOFayK1vdR02gsWzRvo=";
+  };
+  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/pkgs/development/python-modules/pubnub/default.nix b/pkgs/development/python-modules/pubnub/default.nix
index 40a4bf497f461..c36554122de1b 100644
--- a/pkgs/development/python-modules/pubnub/default.nix
+++ b/pkgs/development/python-modules/pubnub/default.nix
@@ -8,18 +8,21 @@
 , pytest-vcr
 , pytest-asyncio
 , requests
-, six
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pubnub";
-  version = "5.5.0";
+  version = "6.0.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = "python";
     rev = "v${version}";
-    sha256 = "133sis24jd40yq4sgp8lmg2kac5wiiccisjpkhm50rb9wdbpn6kh";
+    hash = "sha256-TXxnFKDq1eWShimtNKaUMEQrs1nRQ8NqAQSI8Hutcp8=";
   };
 
   propagatedBuildInputs = [
@@ -27,22 +30,24 @@ buildPythonPackage rec {
     cbor2
     pycryptodomex
     requests
-    six
   ];
 
   checkInputs = [
     pytest-asyncio
-    pytestCheckHook
     pytest-vcr
+    pytestCheckHook
   ];
 
-  # Some tests don't pass with recent releases of twisted
   disabledTestPaths = [
+    # Tests require network access
     "tests/integrational"
-    "tests/manual/asyncio"
+    "tests/manual"
+    "tests/functional/push"
   ];
 
-  pythonImportsCheck = [ "pubnub" ];
+  pythonImportsCheck = [
+    "pubnub"
+  ];
 
   meta = with lib; {
     description = "Python-based APIs for PubNub";
diff --git a/pkgs/development/python-modules/pudb/default.nix b/pkgs/development/python-modules/pudb/default.nix
index 81e1627324ad8..0ae60b381c642 100644
--- a/pkgs/development/python-modules/pudb/default.nix
+++ b/pkgs/development/python-modules/pudb/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "pudb";
-  version = "2021.2.2";
+  version = "2022.1";
   format = "setuptools";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "82a524ab4b89d2c701b089071ccc6afa9c8a838504e3d68eb33faa8a8abbe4cb";
+    sha256 = "e827a4b489dcad561189535db6677becbf32164b2b44df00786eb2d5e00c587e";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pulsectl/default.nix b/pkgs/development/python-modules/pulsectl/default.nix
index 6e35cb5735862..584ef5538a0f4 100644
--- a/pkgs/development/python-modules/pulsectl/default.nix
+++ b/pkgs/development/python-modules/pulsectl/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pulsectl";
-  version = "21.10.5";
+  version = "22.1.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b347983fb78baab168f4dc4804ab2c59ca5b813bf62f8146dfb5fcb6ab6c8ba2";
+    sha256 = "sha256-8o/kuIHdLMFE0tlPg+xg2MWaUmQqCtNjXMTQ+EBvSFg=";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/puremagic/default.nix b/pkgs/development/python-modules/puremagic/default.nix
index 25c79a83c4377..e5d91f38fa2f0 100644
--- a/pkgs/development/python-modules/puremagic/default.nix
+++ b/pkgs/development/python-modules/puremagic/default.nix
@@ -1,26 +1,32 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "puremagic";
-  version = "1.11";
+  version = "1.12";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "09d762b9d83c65a83617ee57a3532eb10663f394c1caf81390516c5b1cc0fc6b";
+    sha256 = "sha256-jAuuwImSExc2KjD6yi6WeMkdXpfOAE3Gp8HGaeBUeDg=";
   };
 
   # test data not included on pypi
   doCheck = false;
 
-  pythonImportsCheck = [ "puremagic" ];
+  pythonImportsCheck = [
+    "puremagic"
+  ];
 
   meta = with lib; {
-    description = "Pure python implementation of magic file detection";
-    license = licenses.mit;
+    description = "Implementation of magic file detection";
     homepage = "https://github.com/cdgriffith/puremagic";
+    license = licenses.mit;
     maintainers = with maintainers; [ globin ];
   };
 }
diff --git a/pkgs/development/python-modules/pvo/default.nix b/pkgs/development/python-modules/pvo/default.nix
index 55802290c15a4..0b107f1550607 100644
--- a/pkgs/development/python-modules/pvo/default.nix
+++ b/pkgs/development/python-modules/pvo/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "pvo";
-  version = "0.2.0";
+  version = "0.2.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "frenck";
     repo = "python-pvoutput";
     rev = "v${version}";
-    sha256 = "sha256-liV5Ae3Bz6MZT3KQ/1aNt6P4Wsg4SOfAMQKI0Qpxvao=";
+    sha256 = "sha256-2/O81MnFYbdOrzLiTSoX7IW+3ZGyyE/tIqgKr/sEaHI=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/py-nightscout/default.nix b/pkgs/development/python-modules/py-nightscout/default.nix
index e633e6ce81bf9..b98fa7b133979 100644
--- a/pkgs/development/python-modules/py-nightscout/default.nix
+++ b/pkgs/development/python-modules/py-nightscout/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "py-nightscout";
-  version = "1.3.2";
+  version = "1.3.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "marciogranzotto";
     repo = pname;
     rev = "v${version}";
-    sha256 = "06i8vc7ykk5112y66cjixbrks46mdx3r0ygkmyah6gfgq1ddc39j";
+    sha256 = "0kslmm3wrxhm307nqmjmq8i8vy1x6mjaqlgba0hgvisj6b4hx65k";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/py-synologydsm-api/default.nix b/pkgs/development/python-modules/py-synologydsm-api/default.nix
index e363cd412d66c..3d2e1b05e1014 100644
--- a/pkgs/development/python-modules/py-synologydsm-api/default.nix
+++ b/pkgs/development/python-modules/py-synologydsm-api/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "py-synologydsm-api";
-  version = "1.0.5";
+  version = "1.0.6";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "mib1185";
     repo = "synologydsm-api";
     rev = "v${version}";
-    sha256 = "sha256-mm5N2RKn2KP2dV7+dw0sNWlCDT5X/fRmH8POQqJIoZY=";
+    sha256 = "sha256-jAdD6FCbsBocJNX7o+dpthgHaPLIueFWJMzBNoKAq7w=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/py-tes/default.nix b/pkgs/development/python-modules/py-tes/default.nix
new file mode 100644
index 0000000000000..633dc6fa5f4a4
--- /dev/null
+++ b/pkgs/development/python-modules/py-tes/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, attrs
+, buildPythonPackage
+, fetchFromGitHub
+, future
+, python-dateutil
+, pytestCheckHook
+, pythonOlder
+, requests
+, requests-mock
+}:
+
+buildPythonPackage rec {
+  pname = "py-tes";
+  version = "0.4.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "ohsu-comp-bio";
+    repo = pname;
+    rev = version;
+    hash = "sha256-HZeyCQHiqfdquWQD5axS73JDjDMUieONwm5VyA+vTFk=";
+  };
+
+  propagatedBuildInputs = [
+    attrs
+    future
+    python-dateutil
+    requests
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    requests-mock
+  ];
+
+  pythonImportsCheck = [
+    "tes"
+  ];
+
+  meta = with lib; {
+    description = "Python SDK for the GA4GH Task Execution API";
+    homepage = "https://github.com/ohsu-comp-bio/py-tes";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyTelegramBotAPI/default.nix b/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
index 4c1723edd8ef9..391afabf931f0 100644
--- a/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
+++ b/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
@@ -1,15 +1,15 @@
-{ lib, buildPythonPackage, fetchPypi, requests }:
+{ lib, buildPythonPackage, fetchPypi, aiohttp, requests }:
 
 buildPythonPackage rec {
   pname = "pyTelegramBotAPI";
-  version = "4.2.0";
+  version = "4.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "05f85dacbcf0bdf2459698bab4325f3a699d1c04bc61581627d76d075c3d5488";
+    sha256 = "sha256-5vIjVqvr/+Cok9z3L+CaDIve2tb0mMVaMMPdMs5Ijmo=";
   };
 
-  propagatedBuildInputs = [ requests ];
+  propagatedBuildInputs = [ aiohttp requests ];
 
   meta = with lib; {
     homepage = "https://github.com/eternnoir/pyTelegramBotAPI";
diff --git a/pkgs/development/python-modules/py_scrypt/default.nix b/pkgs/development/python-modules/py_scrypt/default.nix
index db26b16e272e5..01fae999cf4d4 100644
--- a/pkgs/development/python-modules/py_scrypt/default.nix
+++ b/pkgs/development/python-modules/py_scrypt/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "scrypt";
-  version = "0.8.18";
+  version = "0.8.19";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bcf04257af12e6d52974d177a7b08e314b66f350a73f9b6f7b232d69a6a1e041";
+    sha256 = "ad143035ae0cf5e97c4b399f4e4686adf442c5f0f06f9f198a0cc6c091335fb7";
   };
 
   buildInputs = [ openssl ];
diff --git a/pkgs/development/python-modules/pyamf/default.nix b/pkgs/development/python-modules/pyamf/default.nix
deleted file mode 100644
index cebb1cc3f0ba9..0000000000000
--- a/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/pkgs/development/python-modules/pyamg/default.nix b/pkgs/development/python-modules/pyamg/default.nix
index 6ca3166fb19ef..bf46734df514d 100644
--- a/pkgs/development/python-modules/pyamg/default.nix
+++ b/pkgs/development/python-modules/pyamg/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "pyamg";
-  version = "4.1.0";
+  version = "4.2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b4cacfcfd13379762a4551ac059a2e52a093b476ca1ad44b9202e736490a8863";
+    sha256 = "48d9be622049d8363cda84125c45d18b89e0ab7d99be5a93c0246f375ebad344";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pyasn/default.nix b/pkgs/development/python-modules/pyasn/default.nix
new file mode 100644
index 0000000000000..b180226ec46c4
--- /dev/null
+++ b/pkgs/development/python-modules/pyasn/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, }:
+
+buildPythonPackage rec {
+  pname = "pyasn";
+  version = "1.6.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-6UK1SRY2Pse4tw6urs0OtOQe8bz0ojl7KabXFfzN+SU=";
+  };
+
+  doCheck = false; # Tests require internet connection which wont work
+
+  pythonImportsCheck = [ "pyasn" ];
+
+  meta = with lib; {
+    description = "Offline IP address to Autonomous System Number lookup module";
+    homepage = "https://github.com/hadiasghari/pyasn";
+    license = with licenses; [ bsdOriginal mit ];
+    maintainers = with maintainers; [ onny ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyatag/default.nix b/pkgs/development/python-modules/pyatag/default.nix
index d2ed7d6ff34a6..a06d2a05fb40f 100644
--- a/pkgs/development/python-modules/pyatag/default.nix
+++ b/pkgs/development/python-modules/pyatag/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "pyatag";
-  version = "0.3.5.3";
+  version = "3.5.1";
 
   disabled = isPy27;
 
@@ -15,7 +15,7 @@ buildPythonPackage rec {
     owner = "MatsNl";
     repo = "pyatag";
     rev = version;
-    sha256 = "00ly4injmgrj34p0lyx7cz2crgnfcijmzc0540gf7hpwha0marf6";
+    sha256 = "17x2m7icbby1y2zfc79jpbir2kvyqlrkix9pvvxanm658arsh8c7";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pyathena/default.nix b/pkgs/development/python-modules/pyathena/default.nix
index a16e77308602f..c24bcefec1675 100644
--- a/pkgs/development/python-modules/pyathena/default.nix
+++ b/pkgs/development/python-modules/pyathena/default.nix
@@ -5,23 +5,22 @@
 , botocore
 , pandas
 , tenacity
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pyathena";
-  version = "2.3.2";
+  version = "2.4.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "PyAthena";
     inherit version;
-    sha256 = "20a473c52e76a211c427d2f711af0a04804a70fc036ab884780e42e0dc2025f7";
+    sha256 = "9d42b4e2cdbd8c48f8157692b50681b08569aa3cac3a9694e671ec9aa40f969b";
   };
 
-  # Nearly all tests depend on a working AWS Athena instance,
-  # therefore deactivating them.
-  # https://github.com/laughingman7743/PyAthena/#testing
-  doCheck = false;
-
   propagatedBuildInputs = [
     boto3
     botocore
@@ -29,6 +28,15 @@ buildPythonPackage rec {
     tenacity
   ];
 
+  # Nearly all tests depend on a working AWS Athena instance,
+  # therefore deactivating them.
+  # https://github.com/laughingman7743/PyAthena/#testing
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pyathena"
+  ];
+
   meta = with lib; {
     homepage = "https://github.com/laughingman7743/PyAthena/";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pyatmo/default.nix b/pkgs/development/python-modules/pyatmo/default.nix
index c039ff16b80ee..5cd314b6cb993 100644
--- a/pkgs/development/python-modules/pyatmo/default.nix
+++ b/pkgs/development/python-modules/pyatmo/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "pyatmo";
-  version = "6.2.0";
+  version = "6.2.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "jabesq";
     repo = "pyatmo";
     rev = "v${version}";
-    sha256 = "sha256-VBc2avJiIFQW1LYXQEvIZ/wZKMFJsCF9DDrxwL8dDnk=";
+    sha256 = "sha256-VXkQByaNA02fwBO2yuf7w1ZF/oJwd/h21de1EQlCu2U=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
diff --git a/pkgs/development/python-modules/pyatv/default.nix b/pkgs/development/python-modules/pyatv/default.nix
index 6a883bbff33fa..85c526334caa8 100644
--- a/pkgs/development/python-modules/pyatv/default.nix
+++ b/pkgs/development/python-modules/pyatv/default.nix
@@ -14,13 +14,14 @@
 , pytest-timeout
 , pytestCheckHook
 , pythonOlder
+, requests
 , srptools
 , zeroconf
 }:
 
 buildPythonPackage rec {
   pname = "pyatv";
-  version = "0.9.6";
+  version = "0.10.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -29,9 +30,18 @@ buildPythonPackage rec {
     owner = "postlund";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0navm7a0k1679kj7nbkbyl7s2q0wq0xmcnizmnvp0arkd5xqmqv1";
+    sha256 = "sha256-aYNBFtsnSg3PORq72U0PXPFCTVj2+8D2TS3nMau55t4=";
   };
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "pytest-runner" ""
+    # Remove all version pinning
+
+    substituteInPlace base_versions.txt \
+      --replace "protobuf==3.19.1,<4" "protobuf>=3.19.0,<4"
+  '';
+
   propagatedBuildInputs = [
     aiohttp
     bitarray
@@ -40,6 +50,7 @@ buildPythonPackage rec {
     miniaudio
     netifaces
     protobuf
+    requests
     srptools
     zeroconf
   ];
@@ -52,13 +63,6 @@ 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"
diff --git a/pkgs/development/python-modules/pyaussiebb/default.nix b/pkgs/development/python-modules/pyaussiebb/default.nix
new file mode 100644
index 0000000000000..63edd6e60f8a5
--- /dev/null
+++ b/pkgs/development/python-modules/pyaussiebb/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, loguru
+, poetry-core
+, pythonOlder
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "pyaussiebb";
+  version = "0.0.11";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "yaleman";
+    repo = "aussiebb";
+    rev = "v${version}";
+    hash = "sha256-aL+n2ut7n6UUyymMEHoFMhRvK9iFRRunYE9ZirKFXhc=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    requests
+    loguru
+  ];
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'requests = "^2.27.1"' 'requests = "*"'
+  '';
+
+  # Tests require credentials and requests-testing
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "aussiebb"
+  ];
+
+  meta = with lib; {
+    description = "Module for interacting with the Aussie Broadband APIs";
+    homepage = "https://github.com/yaleman/aussiebb";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pybind11/default.nix b/pkgs/development/python-modules/pybind11/default.nix
index d33d9ffc575dc..46c1307826ef2 100644
--- a/pkgs/development/python-modules/pybind11/default.nix
+++ b/pkgs/development/python-modules/pybind11/default.nix
@@ -8,18 +8,18 @@
 , python
 , catch
 , numpy
-, pytest
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "pybind11";
-  version = "2.8.1";
+  version = "2.9.1";
 
   src = fetchFromGitHub {
     owner = "pybind";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-Gk4ZN/g6SRWFm0ALCvyald/9zq3wBd48mGdqdGCeGYI=";
+    hash = "sha256-wBvEWQlZhHoSCMbGgYtB3alWBLA8mA8Mz6JPLhXa3Pc=";
   };
 
   nativeBuildInputs = [ cmake ];
@@ -49,16 +49,18 @@ buildPythonPackage rec {
   checkInputs = [
     catch
     numpy
-    pytest
+    pytestCheckHook
   ];
 
-  checkPhase = ''
-    runHook preCheck
-
-    make check
-
-    runHook postCheck
-  '';
+  disabledTestPaths = [
+    # require dependencies not available in nixpkgs
+    "tests/test_embed/test_trampoline.py"
+    "tests/test_embed/test_interpreter.py"
+    # numpy changed __repr__ output of numpy dtypes
+    "tests/test_numpy_dtypes.py"
+    # no need to test internal packaging
+    "tests/extra_python_package/test_files.py"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/pybind/pybind11";
diff --git a/pkgs/development/python-modules/pyblosxom/default.nix b/pkgs/development/python-modules/pyblosxom/default.nix
deleted file mode 100644
index 77e47eb983642..0000000000000
--- a/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/pkgs/development/python-modules/pybotvac/default.nix b/pkgs/development/python-modules/pybotvac/default.nix
index 7bf5296eb3622..dff1374087a5b 100644
--- a/pkgs/development/python-modules/pybotvac/default.nix
+++ b/pkgs/development/python-modules/pybotvac/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "pybotvac";
-  version = "0.0.22";
+  version = "0.0.23";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-hl8UmoVUbbHCSpCWdUTxoIlop5di+rUmGUQI9UWq3ik=";
+    sha256 = "54b4fe565c10000c54d5644d081e2de1f850daefbac39cea74cea649b47bfb12";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pycairo/1.18.nix b/pkgs/development/python-modules/pycairo/1.18.nix
deleted file mode 100644
index 9da4da1479c0e..0000000000000
--- a/pkgs/development/python-modules/pycairo/1.18.nix
+++ /dev/null
@@ -1,52 +0,0 @@
-{ lib
-, fetchFromGitHub
-, meson
-, ninja
-, buildPythonPackage
-, pytestCheckHook
-, pkg-config
-, cairo
-, python
-}:
-
-buildPythonPackage rec {
-  pname = "pycairo";
-  version = "1.18.2";
-
-  format = "other";
-
-  src = fetchFromGitHub {
-    owner = "pygobject";
-    repo = "pycairo";
-    rev = "v${version}";
-    sha256 = "142145a2whvlk92jijrbf3i2bqrzmspwpysj0bfypw0krzi0aa6j";
-  };
-
-  nativeBuildInputs = [
-    meson
-    ninja
-    pkg-config
-  ];
-
-  buildInputs = [
-    cairo
-  ];
-
-  checkInputs = [
-    pytestCheckHook
-  ];
-
-  mesonFlags = [
-    # 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; {
-    description = "Python 2 bindings for cairo";
-    homepage = "https://pycairo.readthedocs.io/";
-    license = with licenses; [ lgpl21Only mpl11 ];
-    platforms = lib.platforms.linux ++ lib.platforms.darwin;
-  };
-}
diff --git a/pkgs/development/python-modules/pycallgraph/default.nix b/pkgs/development/python-modules/pycallgraph/default.nix
deleted file mode 100644
index af9f18aad2c61..0000000000000
--- a/pkgs/development/python-modules/pycallgraph/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-}:
-
-buildPythonPackage rec {
-  pname = "pycallgraph";
-  version = "1.0.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0w8yr43scnckqcv5nbyd2dq4kpv74ai856lsdsf8iniik07jn9mi";
-  };
-
-  buildInputs = [ pytest ];
-
-  # Tests do not work due to this bug: https://github.com/gak/pycallgraph/issues/118
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "http://pycallgraph.slowchop.com";
-    description = "Call graph visualizations for Python applications";
-    maintainers = with maintainers; [ auntie ];
-    license = licenses.gpl2;
-  };
-
-}
diff --git a/pkgs/development/python-modules/pycarddav/default.nix b/pkgs/development/python-modules/pycarddav/default.nix
deleted file mode 100644
index b3479695a8909..0000000000000
--- a/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/pkgs/development/python-modules/pycassa/default.nix b/pkgs/development/python-modules/pycassa/default.nix
deleted file mode 100644
index 0e07d8d436f72..0000000000000
--- a/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/pkgs/development/python-modules/pycfmodel/default.nix b/pkgs/development/python-modules/pycfmodel/default.nix
new file mode 100644
index 0000000000000..5918c1feb751f
--- /dev/null
+++ b/pkgs/development/python-modules/pycfmodel/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, httpx
+, pydantic
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pycfmodel";
+  version = "0.16.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "Skyscanner";
+    repo = pname;
+    rev = version;
+    hash = "sha256-hOe6BH8aSGJ7YeraiCsJ10mbeGbFGaR3Bt5fh6M8iWI=";
+  };
+
+  propagatedBuildInputs = [
+    pydantic
+  ];
+
+  checkInputs = [
+    httpx
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Test require network access
+    "test_cloudformation_actions"
+    "test_auxiliar_cast"
+    "test_valid_es_domain_from_aws_documentation_examples_resource_can_be_built"
+    "test_valid_opensearch_domain_from_aws_documentation_examples_resource_can_be_built"
+  ];
+
+  pythonImportsCheck = [
+    "pycfmodel"
+  ];
+
+  meta = with lib; {
+    description = "Model for Cloud Formation scripts";
+    homepage = "https://github.com/Skyscanner/pycfmodel";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pychromecast/default.nix b/pkgs/development/python-modules/pychromecast/default.nix
index f9a4b24ffcd62..f5921d0dfd205 100644
--- a/pkgs/development/python-modules/pychromecast/default.nix
+++ b/pkgs/development/python-modules/pychromecast/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "pychromecast";
-  version = "10.2.2";
+  version = "10.2.3";
   format = "setuptools";
 
   disabled = !isPy3k;
@@ -18,7 +18,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "PyChromecast";
     inherit version;
-    sha256 = "bd1dbb9383ed549d42d12f337a6c664a9088b4910ebb3f11de6fe15f397e7efd";
+    sha256 = "ddb86c5acdc13e8bdadd2b7f5738fda36b32c1750548f7b629ca8d178f05e0da";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pycm/default.nix b/pkgs/development/python-modules/pycm/default.nix
index 9e3b711718c3b..90bd83f85d29c 100644
--- a/pkgs/development/python-modules/pycm/default.nix
+++ b/pkgs/development/python-modules/pycm/default.nix
@@ -1,28 +1,55 @@
-{ lib, buildPythonPackage, fetchFromGitHub, isPy3k, matplotlib, numpy, pytestCheckHook, seaborn }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, matplotlib
+, numpy
+, pytestCheckHook
+, pythonOlder
+, seaborn
+}:
 
 buildPythonPackage rec {
   pname = "pycm";
-  version = "3.3";
+  version = "3.4";
+  format = "setuptools";
 
-  disabled = !isPy3k;
+  disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
-    owner  = "sepandhaghighi";
-    repo   = pname;
-    rev    = "v${version}";
-    sha256 = "0i3qpb20mnc22qny1ar3yvxb1dac7njwi8bvi5sy5kywz10c5dkw";
+    owner = "sepandhaghighi";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0agis9jh6kjf7k1vf1fiyf5h3lb9p0w9k710wwpsby292ydazr4f";
   };
 
-  # remove a trivial dependency on the author's `art` Python ASCII art library
+  propagatedBuildInputs = [
+    matplotlib
+    numpy
+    seaborn
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
   postPatch = ''
+    # Remove a trivial dependency on the author's `art` Python ASCII art library
     rm pycm/__main__.py
-    rm Otherfiles/notebook_check.py  # also depends on python3Packages.notebook
-    substituteInPlace setup.py --replace '=get_requires()' '=[]'
+    # Also depends on python3Packages.notebook
+    rm Otherfiles/notebook_check.py
+    substituteInPlace setup.py \
+      --replace '=get_requires()' '=[]'
   '';
 
-  checkInputs = [ pytestCheckHook ];
-  disabledTests = [ "pycm.pycm_compare.Compare" ];  # output formatting error
-  propagatedBuildInputs = [ matplotlib numpy seaborn ];
+  disabledTests = [
+    # Output formatting error
+    "pycm.pycm_compare.Compare"
+    "plot_test"
+  ];
+
+  pythonImportsCheck = [
+    "pycm"
+  ];
 
   meta = with lib; {
     description = "Multiclass confusion matrix library";
diff --git a/pkgs/development/python-modules/pycocotools/default.nix b/pkgs/development/python-modules/pycocotools/default.nix
index fa75d02c6101a..13757c9f00889 100644
--- a/pkgs/development/python-modules/pycocotools/default.nix
+++ b/pkgs/development/python-modules/pycocotools/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "pycocotools";
-  version = "2.0.3";
+  version = "2.0.4";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-OCkCSTABN3EVZSGkuNtLOu9ZBVbPo6jdP6sCfTmyFeE=";
+    sha256 = "2ab586aa389b9657b6d73c2b9a827a3681f8d00f36490c2e8ab05902e3fd9e93";
   };
 
   propagatedBuildInputs = [
@@ -32,6 +32,6 @@ buildPythonPackage rec {
     description = "Official APIs for the MS-COCO dataset";
     homepage = "https://github.com/cocodataset/cocoapi/tree/master/PythonAPI";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ hexa piegames ];
+    maintainers = with maintainers; [ piegames ];
   };
 }
diff --git a/pkgs/development/python-modules/pycognito/default.nix b/pkgs/development/python-modules/pycognito/default.nix
index 797da43352df9..375453231b9bc 100644
--- a/pkgs/development/python-modules/pycognito/default.nix
+++ b/pkgs/development/python-modules/pycognito/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "pycognito";
-  version = "2021.03.1";
+  version = "2022.01.0";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "pvizeli";
     repo = pname;
     rev = version;
-    sha256 = "sha256-V3R6i1/FZrjcfRqJhczjURr/+x++iCvZ3aCK9wdEL1A=";
+    sha256 = "sha256-mmlw3irMC0SFjfEinXHyoPNfTvCcO02zGyqQLj9STSY=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pycountry/default.nix b/pkgs/development/python-modules/pycountry/default.nix
index 868504e399490..560c5a708122f 100644
--- a/pkgs/development/python-modules/pycountry/default.nix
+++ b/pkgs/development/python-modules/pycountry/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "pycountry";
-  version = "20.7.3";
+  version = "22.1.10";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0hnbabsmqimx5hqh0jbd2f64i8fhzhhbrvid57048hs5sd9ll241";
+    sha256 = "b9a6d9cdbf53f81ccdf73f6f5de01b0d8493cab2213a230af3e34458de85ea32";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/pycryptodome-test-vectors/default.nix b/pkgs/development/python-modules/pycryptodome-test-vectors/default.nix
new file mode 100644
index 0000000000000..6e7f71cee3061
--- /dev/null
+++ b/pkgs/development/python-modules/pycryptodome-test-vectors/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "pycryptodome-test-vectors";
+  version = "1.0.7";
+  format = "setuptools";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-GfzFM3S4yk0V2zTaQ+rkljyHdvC0ETUNSccZImqoLIU=";
+    extension = "zip";
+  };
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pycryptodome_test_vectors"
+  ];
+
+  meta = with lib; {
+    description = "Test vectors for PyCryptodome cryptographic library";
+    homepage = "https://www.pycryptodome.org/";
+    license = with licenses; [ bsd2 /* and */ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pycryptodome/default.nix b/pkgs/development/python-modules/pycryptodome/default.nix
index 19b2447acb11a..44e7ed0ad4aa2 100644
--- a/pkgs/development/python-modules/pycryptodome/default.nix
+++ b/pkgs/development/python-modules/pycryptodome/default.nix
@@ -1,17 +1,29 @@
-{ lib, fetchPypi, buildPythonPackage }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pycryptodome-test-vectors
+}:
 
 buildPythonPackage rec {
-  version = "3.11.0";
   pname = "pycryptodome";
+  version = "3.12.0";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "428096bbf7a77e207f418dfd4d7c284df8ade81d2dc80f010e92753a3e406ad0";
+    hash = "sha256-Esc0OuxaOz31xHJlKBsSthHybsk2e2EpGZ1n2lS3aME=";
+    extension = "zip";
   };
 
+  pythonImportsCheck = [
+    "Crypto"
+  ];
+
   meta = with lib; {
-    homepage = "https://www.pycryptodome.org/";
     description = "Python Cryptography Toolkit";
+    homepage = "https://www.pycryptodome.org/";
+    license = with licenses; [ bsd2 /* and */ asl20 ];
+    maintainers = with maintainers; [ fab ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/pycryptodomex/default.nix b/pkgs/development/python-modules/pycryptodomex/default.nix
index eab3a6b0bbd58..c9f622d6c699d 100644
--- a/pkgs/development/python-modules/pycryptodomex/default.nix
+++ b/pkgs/development/python-modules/pycryptodomex/default.nix
@@ -1,23 +1,28 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, pycryptodome-test-vectors
 }:
 
 buildPythonPackage rec {
   pname = "pycryptodomex";
-  version = "3.11.0";
+  version = "3.12.0";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0398366656bb55ebdb1d1d493a7175fc48ade449283086db254ac44c7d318d6d";
+    hash = "sha256-ki6drAFm5GF+XHmA0s/2kSputctcE+fs4iJDhlC9f2Y=";
+    extension = "zip";
   };
 
-  pythonImportsCheck = [ "Cryptodome" ];
+  pythonImportsCheck = [
+    "Cryptodome"
+  ];
 
   meta = with lib; {
     description = "A self-contained cryptographic library for Python";
     homepage = "https://www.pycryptodome.org";
-    license = licenses.bsd2;
+    license = with licenses; [ bsd2 /* and */ asl20 ];
     maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/pycryptopp/default.nix b/pkgs/development/python-modules/pycryptopp/default.nix
deleted file mode 100644
index 7079cde0d597f..0000000000000
--- a/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/pkgs/development/python-modules/pycurl2/default.nix b/pkgs/development/python-modules/pycurl2/default.nix
deleted file mode 100644
index 1cdfb6c4413fc..0000000000000
--- a/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/pkgs/development/python-modules/pydaikin/default.nix b/pkgs/development/python-modules/pydaikin/default.nix
index 67f8da66be78b..adbb0d21a8c36 100644
--- a/pkgs/development/python-modules/pydaikin/default.nix
+++ b/pkgs/development/python-modules/pydaikin/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "pydaikin";
-  version = "2.6.0";
+  version = "2.7.0";
   disabled = pythonOlder "3.6";
 
   src = fetchFromBitbucket {
     owner = "mustang51";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-Fk6zMWgvhKp+7BMDGw89Akb4fgK6+xi+AyvEY3pdTQQ=";
+    sha256 = "sha256-k6NAQvt79Qo7sAXQwOjq4Coz2iTZAUImasc/oMSpmmg=";
   };
 
   propagatedBuildInputs = [
@@ -28,7 +28,7 @@ buildPythonPackage rec {
     urllib3
   ];
 
-  # while they have tests, they do not run them in their CI and they fail as of 2.6.0
+  # while they have tests, they do not run them in their CI and they fail as of 2.7.0
   # AttributeError: 'DaikinBRP069' object has no attribute 'last_hour_cool_energy_consumption'
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/pydal/default.nix b/pkgs/development/python-modules/pydal/default.nix
index 6f2f887967e46..f1aacb1c312f2 100644
--- a/pkgs/development/python-modules/pydal/default.nix
+++ b/pkgs/development/python-modules/pydal/default.nix
@@ -1,16 +1,17 @@
-{ buildPythonPackage
+{ lib
+, buildPythonPackage
 , fetchPypi
 , python
-, lib
 }:
 
 buildPythonPackage rec {
   pname = "pydal";
-  version = "20210626.3";
+  version = "20220213.2";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "043s52b7srqwwmj7rh783arqryilmv3m8dmmg9bn5sjgfi004jn4";
+    sha256 = "sha256-7DBLcHSEkoT8wV6824TGWRLi9vK2t+r1RwwWmRBYD9I=";
   };
 
   postPatch = ''
@@ -33,10 +34,10 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
-  meta = {
-    description = "A pure Python Database Abstraction Layer";
+  meta = with lib; {
+    description = "Python Database Abstraction Layer";
     homepage = "https://github.com/web2py/pydal";
-    license = with lib.licenses; [ bsd3 ] ;
-    maintainers = with lib.maintainers; [ wamserma ];
+    license = with licenses; [ bsd3 ] ;
+    maintainers = with maintainers; [ wamserma ];
   };
 }
diff --git a/pkgs/development/python-modules/pydantic/default.nix b/pkgs/development/python-modules/pydantic/default.nix
index 69a080c1d716b..8ac9eeca2a83c 100644
--- a/pkgs/development/python-modules/pydantic/default.nix
+++ b/pkgs/development/python-modules/pydantic/default.nix
@@ -1,5 +1,7 @@
 { lib
 , buildPythonPackage
+, cython
+, devtools
 , email_validator
 , fetchFromGitHub
 , pytest-mock
@@ -7,26 +9,29 @@
 , python-dotenv
 , pythonOlder
 , typing-extensions
-, ujson
 }:
 
 buildPythonPackage rec {
   pname = "pydantic";
-  version = "1.8.2";
+  version = "1.9.0";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "samuelcolvin";
     repo = pname;
     rev = "v${version}";
-    sha256 = "06162dss6mvi7wiy2lzxwvzajwxgy8b2fyym7qipaj7zibcqalq2";
+    sha256 = "sha256-C4WP8tiMRFmkDkQRrvP3yOSM2zN8pHJmX9cdANIckpM=";
   };
 
+  nativeBuildInputs = [
+    cython
+  ];
+
   propagatedBuildInputs = [
+    devtools
     email_validator
     python-dotenv
     typing-extensions
-    ujson
   ];
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/pydash/default.nix b/pkgs/development/python-modules/pydash/default.nix
index 7d75896397f3f..5b0ffade58859 100644
--- a/pkgs/development/python-modules/pydash/default.nix
+++ b/pkgs/development/python-modules/pydash/default.nix
@@ -1,23 +1,46 @@
-{ lib, buildPythonPackage, fetchFromGitHub, mock, pytestCheckHook, invoke }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, invoke
+, mock
+, pytestCheckHook
+, pythonOlder
+, sphinx_rtd_theme
+}:
 
 buildPythonPackage rec {
   pname = "pydash";
-  version = "4.9.3";
+  version = "5.1.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "dgilland";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-BAyiSnILvujUOFOAkiXSgyozs2Q809pYihHwa+6BHcQ=";
+    hash = "sha256-BAyiSnILvujUOFOAkiXSgyozs2Q809pYihHwa+6BHcQ=";
   };
 
-  patches = [ ./0001-Only-build-unit-tests.patch ];
+  checkInputs = [
+    invoke
+    mock
+    sphinx_rtd_theme
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    sed -i "/--cov/d" setup.cfg
+    sed -i "/--no-cov/d" setup.cfg
+  '';
 
-  checkInputs = [ mock pytestCheckHook invoke ];
+  pythonImportsCheck = [
+    "pydash"
+  ];
 
   meta = with lib; {
-    homepage = "https://github.com/dgilland/pydash";
-    description = "The kitchen sink of Python utility libraries for doing \"stuff\" in a functional way. Based on the Lo-Dash Javascript library.";
+    description = "Python utility libraries for doing stuff in a functional way";
+    homepage = "https://pydash.readthedocs.io";
     license = licenses.mit;
     maintainers = with maintainers; [ ma27 ];
   };
diff --git a/pkgs/development/python-modules/pydeconz/default.nix b/pkgs/development/python-modules/pydeconz/default.nix
index 44c33a2d2e2ec..fe418be71adb0 100644
--- a/pkgs/development/python-modules/pydeconz/default.nix
+++ b/pkgs/development/python-modules/pydeconz/default.nix
@@ -10,14 +10,16 @@
 
 buildPythonPackage rec {
   pname = "pydeconz";
-  version = "85";
+  version = "86";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "Kane610";
     repo = "deconz";
     rev = "v${version}";
-    sha256 = "sha256-6GTMG3BfHcfLMoyabFbhsJFVDHmEICuzf32603+jyZ4=";
+    sha256 = "sha256-NqNXbF5rGMCbugzZY+AQPPHYmQx/RrSwqtnoF1shSSU=";
   };
 
   propagatedBuildInputs = [
@@ -30,7 +32,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "pydeconz" ];
+  pythonImportsCheck = [
+    "pydeconz"
+  ];
 
   meta = with lib; {
     description = "Python library wrapping the Deconz REST API";
diff --git a/pkgs/development/python-modules/pydelijn/default.nix b/pkgs/development/python-modules/pydelijn/default.nix
index f8a5d2ed4ae95..151a0c5a9669f 100644
--- a/pkgs/development/python-modules/pydelijn/default.nix
+++ b/pkgs/development/python-modules/pydelijn/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "pydelijn";
-  version = "0.6.1";
+  version = "1.0.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1lwd2f043hy7gf1ly9zpaq1yg947bqw2af8vhwssf48zpisfgc81";
+    sha256 = "c5b6565c50d4f97d28baca9faf487281c2a5db635060b69f659e27c28a1a6e93";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pydevccu/default.nix b/pkgs/development/python-modules/pydevccu/default.nix
new file mode 100644
index 0000000000000..212a245b328c8
--- /dev/null
+++ b/pkgs/development/python-modules/pydevccu/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pydevccu";
+  version = "0.1.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "danielperna84";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-rbxYTpB6ieZBYbbE1AKVEc/lapWlOUMOrSHCkuwkzLg=";
+  };
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pydevccu"
+  ];
+
+  meta = with lib; {
+    description = "HomeMatic CCU XML-RPC Server with fake devices";
+    homepage = "https://github.com/danielperna84/pydevccu";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pydmd/default.nix b/pkgs/development/python-modules/pydmd/default.nix
index dd166b78f8625..f80f900347848 100644
--- a/pkgs/development/python-modules/pydmd/default.nix
+++ b/pkgs/development/python-modules/pydmd/default.nix
@@ -1,18 +1,21 @@
 { lib
 , stdenv
-, python
-, fetchFromGitHub
 , buildPythonPackage
+, fetchFromGitHub
 , future
+, matplotlib
 , numpy
+, pytestCheckHook
+, pythonOlder
 , scipy
-, matplotlib
-, nose
 }:
 
 buildPythonPackage rec {
   pname = "pydmd";
   version = "0.4";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "mathLab";
@@ -21,19 +24,31 @@ buildPythonPackage rec {
     sha256 = "1qwa3dyrrm20x0pzr7rklcw7433fd822n4m8bbbdd7z83xh6xm8g";
   };
 
-  propagatedBuildInputs = [ future numpy scipy matplotlib ];
-  checkInputs = [ nose ];
+  propagatedBuildInputs = [
+    future
+    matplotlib
+    numpy
+    scipy
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTestPaths = [
+    # Those tests take over 1.5 h on hydra. Also, an error and two failures
+    "tests/test_spdmd.py"
+  ];
 
-  checkPhase = ''
-    ${python.interpreter} test.py
-  '';
-  pythonImportsCheck = [ "pydmd" ];
+  pythonImportsCheck = [
+    "pydmd"
+  ];
 
-  meta = {
+  meta = with lib; {
     description = "Python Dynamic Mode Decomposition";
     homepage = "https://mathlab.github.io/PyDMD/";
-    license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ yl3dy ];
+    license = licenses.mit;
+    maintainers = with maintainers; [ yl3dy ];
     broken = stdenv.hostPlatform.isAarch64;
   };
 }
diff --git a/pkgs/development/python-modules/pydns/default.nix b/pkgs/development/python-modules/pydns/default.nix
deleted file mode 100644
index a6fb07c15206f..0000000000000
--- a/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/pkgs/development/python-modules/pydot/default.nix b/pkgs/development/python-modules/pydot/default.nix
index 00e36ec373120..8dccfbc2610d9 100644
--- a/pkgs/development/python-modules/pydot/default.nix
+++ b/pkgs/development/python-modules/pydot/default.nix
@@ -4,19 +4,33 @@
 , substituteAll
 , graphviz
 , python
+, pytestCheckHook
 , chardet
+, pythonOlder
 , pyparsing
 }:
 
 buildPythonPackage rec {
   pname = "pydot";
   version = "1.4.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "248081a39bcb56784deb018977e428605c1c758f10897a339fce1dd728ff007d";
   };
 
+  propagatedBuildInputs = [
+    pyparsing
+  ];
+
+  checkInputs = [
+    chardet
+    pytestCheckHook
+  ];
+
   patches = [
     (substituteAll {
       src = ./hardcode-graphviz-path.patch;
@@ -27,21 +41,31 @@ buildPythonPackage rec {
   postPatch = ''
     # test_graphviz_regression_tests also fails upstream: https://github.com/pydot/pydot/pull/198
     substituteInPlace test/pydot_unittest.py \
-      --replace "test_graphviz_regression_tests" "no_test_graphviz_regression_tests"
+      --replace "test_graphviz_regression_tests" "no_test_graphviz_regression_tests" \
+    # Patch path for pytestCheckHook
+    substituteInPlace test/pydot_unittest.py \
+      --replace "shapefile_dir = os.path.join(test_dir, 'from-past-to-future')" "shapefile_dir = 'test/from-past-to-future'" \
+      --replace "path = os.path.join(test_dir, TESTS_DIR_1)" "path = os.path.join('test/', TESTS_DIR_1)"
   '';
 
-  propagatedBuildInputs = [ pyparsing ];
+  pytestFlagsArray = [
+    "test/pydot_unittest.py"
+  ];
 
-  checkInputs = [ chardet ];
+  disabledTests = [
+    "test_exception_msg"
+    # Hash mismatch
+    "test_my_regression_tests"
+  ];
 
-  checkPhase = ''
-    cd test
-    ${python.interpreter} pydot_unittest.py
-  '';
+  pythonImportsCheck = [
+    "pydot"
+  ];
 
-  meta = {
+  meta = with lib; {
+    description = "Allows to create both directed and non directed graphs from Python";
     homepage = "https://github.com/erocarrera/pydot";
-    description = "Allows to easily create both directed and non directed graphs from Python";
-    license = lib.licenses.mit;
+    license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pydrive2/default.nix b/pkgs/development/python-modules/pydrive2/default.nix
new file mode 100644
index 0000000000000..2491bc5ff9a75
--- /dev/null
+++ b/pkgs/development/python-modules/pydrive2/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, google-api-python-client
+, oauth2client
+, pyopenssl
+, pyyaml
+, six
+}:
+
+buildPythonPackage rec {
+  pname = "pydrive2";
+  version = "1.10.0";
+
+  src = fetchPypi {
+    pname = "PyDrive2";
+    inherit version;
+    sha256 = "sha256-970ZtP8e9sC5IvtqxVwNlHJKtTc4euSh3nl3hNd0Y6s=";
+  };
+
+  propagatedBuildInputs = [
+    google-api-python-client
+    oauth2client
+    pyopenssl
+    pyyaml
+    six
+  ];
+
+  doCheck = false;
+
+  pythonImportsCheck = [ "pydrive2" ];
+
+  meta = {
+    description = "Google Drive API Python wrapper library. Maintained fork of PyDrive.";
+    homepage = "https://github.com/iterative/PyDrive2";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ sei40kr ];
+  };
+}
diff --git a/pkgs/development/python-modules/pydub/default.nix b/pkgs/development/python-modules/pydub/default.nix
index 6b67814a2220e..3adf54281b77a 100644
--- a/pkgs/development/python-modules/pydub/default.nix
+++ b/pkgs/development/python-modules/pydub/default.nix
@@ -1,8 +1,18 @@
-{ lib, stdenv, buildPythonPackage, fetchFromGitHub, scipy, ffmpeg-full }:
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchFromGitHub
+
+# tests
+, ffmpeg-full
+, python
+}:
 
 buildPythonPackage rec {
   pname = "pydub";
   version = "0.25.1";
+  format = "setuptools";
+
   # pypi version doesn't include required data files for tests
   src = fetchFromGitHub {
     owner = "jiaaro";
@@ -11,23 +21,24 @@ buildPythonPackage rec {
     sha256 = "0xskllq66wqndjfmvp58k26cv3w480sqsil6ifwp4gghir7hqc8m";
   };
 
+  pythonImportsCheck = [
+    "pydub"
+    "pydub.audio_segment"
+    "pydub.playback"
+  ];
 
-  # disable a test that fails on aarch64 due to rounding errors
-  postPatch = lib.optionalString stdenv.isAarch64 ''
-    substituteInPlace test/test.py \
-      --replace "test_overlay_with_gain_change" "notest_overlay_with_gain_change"
-  '';
-
-  checkInputs = [ scipy ffmpeg-full ];
+  checkInputs = [
+    ffmpeg-full
+  ];
 
   checkPhase = ''
-    python test/test.py
+    ${python.interpreter} test/test.py
   '';
 
   meta = with lib; {
-    description = "Manipulate audio with a simple and easy high level interface.";
-    homepage    = "http://pydub.com/";
-    license     = licenses.mit;
-    platforms   = platforms.all;
+    description = "Manipulate audio with a simple and easy high level interface";
+    homepage = "http://pydub.com";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hexa ];
   };
 }
diff --git a/pkgs/development/python-modules/pydy/default.nix b/pkgs/development/python-modules/pydy/default.nix
index 82556ac1a7104..9bfa5aa3d7c30 100644
--- a/pkgs/development/python-modules/pydy/default.nix
+++ b/pkgs/development/python-modules/pydy/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "pydy";
-  version = "0.5.0";
+  version = "0.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1b487a62b55a8c8664009b09bf789254b2c942cd704a380bedb1057418c94fa2";
+    sha256 = "sha256-e/Ssfd5llioA7ccLULlRdHR113IbR4AJ4/HmzQuU7vI=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/pyebus/default.nix b/pkgs/development/python-modules/pyebus/default.nix
index d4c8658673a04..5506c1fbf36ea 100644
--- a/pkgs/development/python-modules/pyebus/default.nix
+++ b/pkgs/development/python-modules/pyebus/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "pyebus";
-  version = "1.2.4";
+  version = "1.4.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "i+p40s9SXey1lfXWW+PiXsA1kUF4o6Rk7QLmQ2ljN6g=";
+    sha256 = "sha256-6ooOSJAIi8vYmCjDHnbMGQJfPqPmzA5thDSg+iM7T+8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/pyeconet/default.nix b/pkgs/development/python-modules/pyeconet/default.nix
index bf878fd5acbc2..581238c90ac67 100644
--- a/pkgs/development/python-modules/pyeconet/default.nix
+++ b/pkgs/development/python-modules/pyeconet/default.nix
@@ -3,15 +3,19 @@
 , buildPythonPackage
 , fetchPypi
 , aiohttp
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pyeconet";
-  version = "0.1.14";
+  version = "0.1.15";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-x0mkC2k65VrDhv7UavgDUuRWIQoAJMDtA7jNXNUJuVg=";
+    sha256 = "sha256-zxD2sjKWB/bmxwpVFgkKTngMhr4bVuW+qkSt+pbxqPY=";
   };
 
   propagatedBuildInputs = [
@@ -21,7 +25,10 @@ buildPythonPackage rec {
 
   # Tests require credentials
   doCheck = false;
-  pythonImportsCheck = [ "pyeconet" ];
+
+  pythonImportsCheck = [
+    "pyeconet"
+  ];
 
   meta = with lib; {
     description = "Python interface to the EcoNet API";
diff --git a/pkgs/development/python-modules/pyeight/default.nix b/pkgs/development/python-modules/pyeight/default.nix
index dc390120f6006..f846127169753 100644
--- a/pkgs/development/python-modules/pyeight/default.nix
+++ b/pkgs/development/python-modules/pyeight/default.nix
@@ -3,19 +3,21 @@
 , async-timeout
 , buildPythonPackage
 , fetchFromGitHub
-, isPy3k
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pyeight";
-  version = "0.1.9";
-  disabled = !isPy3k;
+  version = "0.2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "mezz64";
     repo = "pyEight";
     rev = version;
-    sha256 = "1ybhs09wyzzaryghd6ijxhajp3677x63c4qzqsgln1mmxhj8wm5k";
+    sha256 = "sha256-ERilZWroFaBCYjTfU7W0vegJaGibmJYVcgt0z84TPEI=";
   };
 
   propagatedBuildInputs = [
@@ -23,9 +25,12 @@ buildPythonPackage rec {
     async-timeout
   ];
 
-  # Project has no tests
+  # Module has no tests
   doCheck = false;
-  pythonImportsCheck = [ "pyeight" ];
+
+  pythonImportsCheck = [
+    "pyeight"
+  ];
 
   meta = with lib; {
     description = "Python library to interface with the Eight Sleep API";
diff --git a/pkgs/development/python-modules/pyenvisalink/default.nix b/pkgs/development/python-modules/pyenvisalink/default.nix
index cfef4ee879aa4..2bcbc753a9ae1 100644
--- a/pkgs/development/python-modules/pyenvisalink/default.nix
+++ b/pkgs/development/python-modules/pyenvisalink/default.nix
@@ -9,12 +9,14 @@
 
 buildPythonPackage rec {
   pname = "pyenvisalink";
-  version = "4.2";
-  disabled = pythonOlder "3.5";
+  version = "4.4";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "64f128212ba0257ae8e47612891a2dae7de2c155c81326257582d565f53778ad";
+    sha256 = "sha256-YUYiCid+XAlfytkyz4Td5CG1zBOrsLx4/nuRubRE14w=";
   };
 
   propagatedBuildInputs = [
@@ -25,7 +27,10 @@ buildPythonPackage rec {
 
   # Tests require an Envisalink device
   doCheck = false;
-  pythonImportsCheck = [ "pyenvisalink" ];
+
+  pythonImportsCheck = [
+    "pyenvisalink"
+  ];
 
   meta = with lib; {
     description = "Python interface for Envisalink 2DS/3 Alarm API";
diff --git a/pkgs/development/python-modules/pyerfa/default.nix b/pkgs/development/python-modules/pyerfa/default.nix
index b59aa56c48e92..7f51f435ada90 100644
--- a/pkgs/development/python-modules/pyerfa/default.nix
+++ b/pkgs/development/python-modules/pyerfa/default.nix
@@ -10,13 +10,13 @@
 buildPythonPackage rec {
   pname = "pyerfa";
   format = "pyproject";
-  version = "2.0.0";
+  version = "2.0.0.1";
 
   doCheck = false;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-+QQjHhpXD5REDgYUB5lZCJUQf5QoR7UqdTzoHJYJFi0=";
+    sha256 = "2fd4637ffe2c1e6ede7482c13f583ba7c73119d78bef90175448ce506a0ede30";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/pyexcel-io/default.nix b/pkgs/development/python-modules/pyexcel-io/default.nix
index 4223ce02caea9..840a74f252ef8 100644
--- a/pkgs/development/python-modules/pyexcel-io/default.nix
+++ b/pkgs/development/python-modules/pyexcel-io/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "pyexcel-io";
-  version = "0.6.5";
+  version = "0.6.6";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "608d8e80da38070d3bb970d132bc47a55dcfd63b4dc03997d93646c5b2ad185b";
+    sha256 = "sha256-9ghL8a+l+/TGHPffRDcPpROCGvGIsC4+GbXvtm2Klp8=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pyexcel/default.nix b/pkgs/development/python-modules/pyexcel/default.nix
index c6bc3cf0777f7..83b5254d39849 100644
--- a/pkgs/development/python-modules/pyexcel/default.nix
+++ b/pkgs/development/python-modules/pyexcel/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "pyexcel";
-  version = "0.6.7";
+  version = "0.7.0";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "cbbd9875729767564b3b64b6ed6a9870b14631184943d13646833d94157dd10f";
+    sha256 = "sha256-+/Du5dk7ls728ZqfAHA/IsCmTxlyjZG5VCgAmlISlwk=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pyexcelerator/default.nix b/pkgs/development/python-modules/pyexcelerator/default.nix
deleted file mode 100644
index b3a376616d3b6..0000000000000
--- a/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/pkgs/development/python-modules/pyexiv2/default.nix b/pkgs/development/python-modules/pyexiv2/default.nix
deleted file mode 100644
index bf7afdf79e2cb..0000000000000
--- a/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/pkgs/development/python-modules/pyezviz/default.nix b/pkgs/development/python-modules/pyezviz/default.nix
index f7d564e7e54d8..e6a2d5c022600 100644
--- a/pkgs/development/python-modules/pyezviz/default.nix
+++ b/pkgs/development/python-modules/pyezviz/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "pyezviz";
-  version = "0.2.0.5";
+  version = "0.2.0.6";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "baqs";
     repo = "pyEzviz";
     rev = version;
-    sha256 = "sha256-a+u8zS69qLHABPSvWEzhM/gdzlLh2RJLTDJjaX4DtpI=";
+    sha256 = "sha256-3GRyM6OK0EpQ7wepTzqg+XANx9D0OVBTnw98i3b1V/8=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pyface/default.nix b/pkgs/development/python-modules/pyface/default.nix
index 3a29fd79f7791..aafd60c0dbae9 100644
--- a/pkgs/development/python-modules/pyface/default.nix
+++ b/pkgs/development/python-modules/pyface/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "pyface";
-  version = "7.3.0";
+  version = "7.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a7031ec4cfff034affc822e47ff5e6c1a0272e576d79465cdbbe25f721740322";
+    sha256 = "sha256-r8Awj9dOYPWxh1Ar2JK/nhuY8hAGFO4+6yr9yq7Pb6s=";
   };
 
   propagatedBuildInputs = [ importlib-metadata importlib-resources six traits ];
diff --git a/pkgs/development/python-modules/pyfakefs/default.nix b/pkgs/development/python-modules/pyfakefs/default.nix
index eb5eb993ef485..29803793fd6f8 100644
--- a/pkgs/development/python-modules/pyfakefs/default.nix
+++ b/pkgs/development/python-modules/pyfakefs/default.nix
@@ -7,13 +7,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "4.5.3";
+  version = "4.5.4";
   pname = "pyfakefs";
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f49db689c1d5db6172131479ca77bd474ba2cb886c869b9867fb89cdab2df397";
+    sha256 = "5b5951e873f73bf12e3a19d8e4470c4b7962c51df753cf8c4caaf64e24a0a323";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/pyfakewebcam/default.nix b/pkgs/development/python-modules/pyfakewebcam/default.nix
index 1ef1d2df474d0..c130accd40c01 100644
--- a/pkgs/development/python-modules/pyfakewebcam/default.nix
+++ b/pkgs/development/python-modules/pyfakewebcam/default.nix
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     description = "A library for writing RGB frames to a fake webcam device on Linux";
     homepage = "https://github.com/jremmons/pyfakewebcam";
     license = licenses.lgpl3Only;
-    maintainers = with maintainers; [ angustrau ];
+    maintainers = with maintainers; [ emilytrau ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/pyfcm/default.nix b/pkgs/development/python-modules/pyfcm/default.nix
index 8fdb051a4846e..77ddabe2057ed 100644
--- a/pkgs/development/python-modules/pyfcm/default.nix
+++ b/pkgs/development/python-modules/pyfcm/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "pyfcm";
-  version = "1.4.7";
+  version = "1.4.8";
 
   src = fetchFromGitHub {
     owner = "olucurious";
     repo = "pyfcm";
     rev = version;
-    sha256 = "0aj10yvjsc04j15zbn403i83j7ra5yg35pi3ywkyakk8n1s0s3qg";
+    sha256 = "15q6p21wsjm75ccmzcsgad1w9fgk6189hbrp7pawpxl7l3qxn2p7";
   };
 
   propagatedBuildInputs = [ requests ];
diff --git a/pkgs/development/python-modules/pyfftw/default.nix b/pkgs/development/python-modules/pyfftw/default.nix
index 96e807f8eba3c..651ad1c439e3e 100644
--- a/pkgs/development/python-modules/pyfftw/default.nix
+++ b/pkgs/development/python-modules/pyfftw/default.nix
@@ -2,12 +2,12 @@
 , fftw, fftwFloat, fftwLongDouble, numpy, scipy, cython, dask }:
 
 buildPythonPackage rec {
-  version = "0.12.0";
+  version = "0.13.0";
   pname = "pyFFTW";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "60988e823ca75808a26fd79d88dbae1de3699e72a293f812aa4534f8a0a58cb0";
+    sha256 = "da85102405c0bd95d57eb19e99b01a0729d8406cb204c3900894b873784253da";
   };
 
   preConfigure = ''
diff --git a/pkgs/development/python-modules/pyflunearyou/default.nix b/pkgs/development/python-modules/pyflunearyou/default.nix
index 99506de1026a1..a481e9a97a893 100644
--- a/pkgs/development/python-modules/pyflunearyou/default.nix
+++ b/pkgs/development/python-modules/pyflunearyou/default.nix
@@ -27,6 +27,11 @@ buildPythonPackage rec {
     sha256 = "sha256-Q65OSE4qckpvaIvZULBR434i7hwuVM97eSq1Blb1oIU=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'ujson = ">=1.35,<5.0"' 'ujson = "*"'
+  '';
+
   nativeBuildInputs = [
     poetry-core
   ];
diff --git a/pkgs/development/python-modules/pyfritzhome/default.nix b/pkgs/development/python-modules/pyfritzhome/default.nix
index 0bfda48269e1a..714159ff9944f 100644
--- a/pkgs/development/python-modules/pyfritzhome/default.nix
+++ b/pkgs/development/python-modules/pyfritzhome/default.nix
@@ -9,17 +9,21 @@
 
 buildPythonPackage rec {
   pname = "pyfritzhome";
-  version = "0.6.2";
+  version = "0.6.4";
+  format = "setuptools";
+
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "hthiery";
     repo = "python-fritzhome";
     rev = version;
-    sha256 = "1hwxq9w5qmiky8gpp623nabmydr3yv6hvgzk24fdbmkglfp6ja1v";
+    sha256 = "sha256-JCaB3E8KCfncwnTKIb0shB2qYpsKwBkrPZdC5lAJ1KQ=";
   };
 
-  propagatedBuildInputs = [ requests ];
+  propagatedBuildInputs = [
+    requests
+  ];
 
   checkInputs = [
     mock
@@ -30,7 +34,9 @@ buildPythonPackage rec {
     nosetests
   '';
 
-  pythonImportsCheck = [ "pyfritzhome" ];
+  pythonImportsCheck = [
+    "pyfritzhome"
+  ];
 
   meta = with lib; {
     description = "Python Library to access AVM FRITZ!Box homeautomation";
diff --git a/pkgs/development/python-modules/pygal/default.nix b/pkgs/development/python-modules/pygal/default.nix
index eb6734649b5d9..ae7277202bbc5 100644
--- a/pkgs/development/python-modules/pygal/default.nix
+++ b/pkgs/development/python-modules/pygal/default.nix
@@ -15,22 +15,14 @@
 
 buildPythonPackage rec {
   pname = "pygal";
-  version = "2.4.0";
+  version = "3.0.0";
 
   doCheck = !isPyPy; # one check fails with pypy
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9204f05380b02a8a32f9bf99d310b51aa2a932cba5b369f7a4dc3705f0a4ce83";
+    sha256 = "sha256-KSP5XS5RWTCqWplyGdzO+/PZK36vX8HJ/ruVsJk1/bI=";
   };
-  patches = [
-    # Fixes compatibility with latest pytest. October 12, 2020.
-    # Should be included in the next release after 2.4.0
-    (fetchpatch {
-      url = "https://github.com/Kozea/pygal/commit/19e5399be18a054b3b293f4a8a2777d2df4f9c18.patch";
-      sha256 = "1j0hpcvd2mhi449wmlr0ml9gw4cakqk3av1j79bi2qy86dyrss2l";
-    })
-  ];
 
   buildInputs = [
     flask
diff --git a/pkgs/development/python-modules/pygame-gui/default.nix b/pkgs/development/python-modules/pygame-gui/default.nix
index 58f65b6d0f41c..f56591efdadf3 100644
--- a/pkgs/development/python-modules/pygame-gui/default.nix
+++ b/pkgs/development/python-modules/pygame-gui/default.nix
@@ -3,21 +3,23 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pygame
+, python-i18n
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "pygame-gui";
-  version = "0.5.7";
+  version = "0.6.4";
+  # nixpkgs-update: no auto update
 
   src = fetchFromGitHub {
     owner = "MyreMylar";
     repo = "pygame_gui";
     rev = "v_${lib.replaceStrings ["."] [""] version}";
-    sha256 = "4P2PT8/7oA5Q7H4+pm7BOET7w05pQYQltXVV3+YVrVE=";
+    sha256 = "13+fK1hYxiMh0T+xbbmHViZjyBoQfRyIDc05fIJ/46U=";
   };
 
-  propagatedBuildInputs = [ pygame ];
+  propagatedBuildInputs = [ pygame python-i18n ];
 
   postPatch = ''
     substituteInPlace pygame_gui/core/utility.py \
@@ -44,10 +46,14 @@ buildPythonPackage rec {
     "test_process_event_text_ctrl_x"
   ];
 
+  disabledTestPaths = [
+    "tests/test_performance/test_text_performance.py"
+  ];
+
   meta = with lib; {
     description = "A GUI system for pygame";
     homepage = "https://github.com/MyreMylar/pygame_gui";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [ angustrau ];
+    maintainers = with maintainers; [ emilytrau ];
   };
 }
diff --git a/pkgs/development/python-modules/pygame/default.nix b/pkgs/development/python-modules/pygame/default.nix
index 60a1fece63ac4..68e5a90d0cfd3 100644
--- a/pkgs/development/python-modules/pygame/default.nix
+++ b/pkgs/development/python-modules/pygame/default.nix
@@ -5,7 +5,7 @@
 
 buildPythonPackage rec {
   pname = "pygame";
-  version = "2.1.0";
+  version = "2.1.2";
 
   src = fetchFromGitHub {
     owner = pname;
@@ -14,7 +14,7 @@ buildPythonPackage rec {
     # 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=";
+    sha256 = "sha256-v1z6caEMJNXqbcbTmFXoy3KQewHiz6qK4vhNU6Qbukk=";
     extraPostFetch = "rm -rf $out/docs/reST";
   };
 
@@ -72,7 +72,7 @@ buildPythonPackage rec {
     description = "Python library for games";
     homepage = "https://www.pygame.org/";
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ angustrau ];
+    maintainers = with maintainers; [ emilytrau ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/pygeos/default.nix b/pkgs/development/python-modules/pygeos/default.nix
new file mode 100644
index 0000000000000..57970ad2f348a
--- /dev/null
+++ b/pkgs/development/python-modules/pygeos/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+, geos
+, pytestCheckHook
+, cython
+, numpy
+}:
+
+buildPythonPackage rec {
+  pname = "pygeos";
+  version = "0.12.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-PEFULvZ8ZgFfRDrj5uaDUDqKIh+cJPsjgPauQq7RYAo=";
+  };
+
+  nativeBuildInputs = [
+    geos # for geos-config
+    cython
+  ];
+
+  propagatedBuildInputs = [ numpy ];
+
+  # The cythonized extensions are required to exist in the pygeos/ directory
+  # for the package to function. Therefore override of buildPhase was
+  # necessary.
+  buildPhase = ''
+    ${python.interpreter} setup.py build_ext --inplace
+    ${python.interpreter} setup.py bdist_wheel
+  '';
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "pygeos" ];
+
+  meta = with lib; {
+    description = "Wraps GEOS geometry functions in numpy ufuncs.";
+    homepage = "https://github.com/pygeos/pygeos";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ nialov ];
+  };
+}
+
diff --git a/pkgs/development/python-modules/pygit2/default.nix b/pkgs/development/python-modules/pygit2/default.nix
index ab4ca1efdc152..b8b405a8ecf03 100644
--- a/pkgs/development/python-modules/pygit2/default.nix
+++ b/pkgs/development/python-modules/pygit2/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pygit2";
-  version = "1.7.1";
+  version = "1.8.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d7faa29558436decc2e78110f38d6677eb366b683ba5cdc2803d47195711165d";
+    sha256 = "sha256-bixc/1qh5D9DEDSAdhFS9cXWvvQPXB9QyHWKbonmbLY=";
   };
 
   preConfigure = lib.optionalString stdenv.isDarwin ''
@@ -25,12 +25,12 @@ buildPythonPackage rec {
 
   checkInputs = [ pytestCheckHook ];
 
-  preCheck = ''
+  disabledTestPaths = [
     # disable tests that require networking
-    rm test/test_repository.py
-    rm test/test_credentials.py
-    rm test/test_submodule.py
-  '';
+    "test/test_repository.py"
+    "test/test_credentials.py"
+    "test/test_submodule.py"
+  ];
 
   # Tests require certificates
   # https://github.com/NixOS/nixpkgs/pull/72544#issuecomment-582674047
@@ -44,11 +44,10 @@ buildPythonPackage rec {
   # https://github.com/NixOS/nixpkgs/pull/72544#issuecomment-582681068
   doCheck = false;
 
-  disabled = !isPy3k;
-
   meta = with lib; {
     description = "A set of Python bindings to the libgit2 shared library";
     homepage = "https://pypi.python.org/pypi/pygit2";
     license = licenses.gpl2;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pygls/default.nix b/pkgs/development/python-modules/pygls/default.nix
index 1ce36111ff78c..4c557b2676cdf 100644
--- a/pkgs/development/python-modules/pygls/default.nix
+++ b/pkgs/development/python-modules/pygls/default.nix
@@ -29,6 +29,12 @@ buildPythonPackage rec {
     pydantic
     typeguard
   ];
+  # We don't know why an early version of pydantic is required, see:
+  # https://github.com/openlawlibrary/pygls/issues/221
+  preBuild = ''
+    substituteInPlace setup.cfg \
+      --replace "pydantic>=1.7,<1.9" "pydantic"
+  '';
 
   checkInputs = [
     mock
diff --git a/pkgs/development/python-modules/pygobject/3.36.nix b/pkgs/development/python-modules/pygobject/3.36.nix
deleted file mode 100644
index ce9410eaf8b59..0000000000000
--- a/pkgs/development/python-modules/pygobject/3.36.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib, stdenv, fetchurl, buildPythonPackage, pkg-config, glib, gobject-introspection,
-pycairo, cairo, which, ncurses, meson, ninja, isPy3k, gnome }:
-
-buildPythonPackage rec {
-  pname = "pygobject";
-  version = "3.36.1";
-
-  format = "other";
-
-  src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0b9CgC0c7BE7Wtqg579/N0W0RSHcIWNYjSdtXNYdcY8=";
-  };
-
-  outputs = [ "out" "dev" ];
-
-  mesonFlags = [
-    "-Dpython=python${if isPy3k then "3" else "2" }"
-  ];
-
-  nativeBuildInputs = [ pkg-config meson ninja gobject-introspection ];
-  buildInputs = [ glib gobject-introspection ]
-                 ++ lib.optionals stdenv.isDarwin [ which ncurses ];
-  propagatedBuildInputs = [ pycairo cairo ];
-
-  meta = with lib; {
-    homepage = "https://pygobject.readthedocs.io/";
-    description = "Python bindings for Glib";
-    license = licenses.gpl2;
-    maintainers = with maintainers; [ orivej ];
-    platforms = platforms.unix;
-  };
-}
diff --git a/pkgs/development/python-modules/pygraphviz/default.nix b/pkgs/development/python-modules/pygraphviz/default.nix
index bac70be9987fb..3780122f19f7b 100644
--- a/pkgs/development/python-modules/pygraphviz/default.nix
+++ b/pkgs/development/python-modules/pygraphviz/default.nix
@@ -11,13 +11,13 @@
 
 buildPythonPackage rec {
   pname = "pygraphviz";
-  version = "1.7";
+  version = "1.9";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a7bec6609f37cf1e64898c59f075afd659106cf9356c5f387cecaa2e0cdb2304";
+    hash = "sha256-+hj3xs6ig0Gk5GbtDPBWgrCmgoiv6N18lCZ4L3wa4Bw=";
     extension = "zip";
   };
 
@@ -36,9 +36,13 @@ buildPythonPackage rec {
   checkInputs = [ pytest ];
 
   checkPhase = ''
+    runHook preCheck
     pytest --pyargs pygraphviz
+    runHook postCheck
   '';
 
+  pythonImportsCheck = [ "pygraphviz" ];
+
   meta = with lib; {
     description = "Python interface to Graphviz graph drawing package";
     homepage = "https://github.com/pygraphviz/pygraphviz";
diff --git a/pkgs/development/python-modules/pygtk/default.nix b/pkgs/development/python-modules/pygtk/default.nix
deleted file mode 100644
index 938b55630c06a..0000000000000
--- a/pkgs/development/python-modules/pygtk/default.nix
+++ /dev/null
@@ -1,74 +0,0 @@
-{ lib, stdenv, fetchurl, fetchpatch, python, pkg-config, gtk2, pygobject2, pycairo, pango
-, buildPythonPackage, libglade ? null, isPy3k }:
-
-buildPythonPackage rec {
-  pname = "pygtk";
-  version = "2.24.0";
-
-  disabled = isPy3k;
-
-  src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
-    sha256 = "04k942gn8vl95kwf0qskkv6npclfm31d78ljkrkgyqxxcni1w76d";
-  };
-
-  patches = [
-    # https://bugzilla.gnome.org/show_bug.cgi?id=660216 - fixes some memory leaks
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/Archive/pygtk/commit/eca72baa5616fbe4dbebea43c7e5940847dc5ab8.diff";
-      sha256 = "031px4w5cshcx1sns430sdbr2i007b9zyb2carb3z65nzr77dpdd";
-    })
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/Archive/pygtk/commit/4aaa48eb80c6802aec6d03e5695d2a0ff20e0fc2.patch";
-      sha256 = "0z8cg7nr3qki8gg8alasdzzyxcihfjlxn518glq5ajglk3q5pzsn";
-    })
-  ];
-
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [
-    pango
-  ] ++ lib.optional (libglade != null) libglade;
-
-  propagatedBuildInputs = [ gtk2 pygobject2 pycairo ];
-
-  configurePhase = "configurePhase";
-
-  buildPhase = "buildPhase";
-
-  NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-ObjC";
-
-  installPhase = "installPhase";
-
-  checkPhase = lib.optionalString (libglade == null)
-    ''
-      sed -i -e "s/glade = importModule('gtk.glade', buildDir)//" \
-             tests/common.py
-      sed -i -e "s/, glade$//" \
-             -e "s/.*testGlade.*//" \
-             -e "s/.*(glade.*//" \
-             tests/test_api.py
-    '' + ''
-      sed -i -e "s/sys.path.insert(0, os.path.join(buildDir, 'gtk'))//" \
-             -e "s/sys.path.insert(0, buildDir)//" \
-             tests/common.py
-      make check
-    '';
-  # XXX: TypeError: Unsupported type: <class 'gtk._gtk.WindowType'>
-  # The check phase was not executed in the previous
-  # non-buildPythonPackage setup - not sure why not.
-  doCheck = false;
-
-  postInstall = ''
-    rm $out/bin/pygtk-codegen-2.0
-    ln -s ${pygobject2}/bin/pygobject-codegen-2.0  $out/bin/pygtk-codegen-2.0
-    ln -s ${pygobject2}/lib/${python.libPrefix}/site-packages/pygobject-${pygobject2.version}.pth \
-                  $out/lib/${python.libPrefix}/site-packages/${pname}-${version}.pth
-  '';
-
-  meta = with lib; {
-    description = "GTK 2 Python bindings";
-    homepage = "https://gitlab.gnome.org/Archive/pygtk";
-    platforms = platforms.all;
-    license = with licenses; [ lgpl21Plus ];
-  };
-}
diff --git a/pkgs/development/python-modules/pygtksourceview/codegendir.patch b/pkgs/development/python-modules/pygtksourceview/codegendir.patch
deleted file mode 100644
index 783c5e2d4671c..0000000000000
--- a/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/pkgs/development/python-modules/pygtksourceview/default.nix b/pkgs/development/python-modules/pygtksourceview/default.nix
deleted file mode 100644
index 57a21f1e17849..0000000000000
--- a/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/pkgs/development/python-modules/pyhamcrest/1.nix b/pkgs/development/python-modules/pyhamcrest/1.nix
deleted file mode 100644
index 4c2ec4df68104..0000000000000
--- a/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/pkgs/development/python-modules/pyhamcrest/default.nix b/pkgs/development/python-modules/pyhamcrest/default.nix
index fd6ba2f2df981..a4c04ce79ee6a 100644
--- a/pkgs/development/python-modules/pyhamcrest/default.nix
+++ b/pkgs/development/python-modules/pyhamcrest/default.nix
@@ -4,11 +4,11 @@
 }:
 buildPythonPackage rec {
   pname = "PyHamcrest";
-  version = "2.0.2";
+  version = "2.0.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "412e00137858f04bde0729913874a48485665f2d36fe9ee449f26be864af9316";
+    sha256 = "dfb19cf6d71743e086fbb761ed7faea5aacbc8ec10c17a08b93ecde39192a3db";
   };
 
   checkInputs = [ mock pytest ];
diff --git a/pkgs/development/python-modules/pyhiveapi/default.nix b/pkgs/development/python-modules/pyhiveapi/default.nix
index f62d8bd1305f8..0218b77e116d2 100644
--- a/pkgs/development/python-modules/pyhiveapi/default.nix
+++ b/pkgs/development/python-modules/pyhiveapi/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "pyhiveapi";
-  version = "0.4.3";
+  version = "0.5.1";
 
   format = "pyproject";
 
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "Pyhass";
     repo = "Pyhiveapi";
     rev = "v${version}";
-    sha256 = "sha256-SCMASYBOdq9nko5RSQ5BEbRLjOB4FlgwOKwdDggiOv8=";
+    hash = "sha256-/M1OjApc0l0EzNI4hs4KO6woCOmTPveTFCyj5MjM5EE=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/pyhocon/default.nix b/pkgs/development/python-modules/pyhocon/default.nix
index f69a21115f276..aa967b76954ad 100644
--- a/pkgs/development/python-modules/pyhocon/default.nix
+++ b/pkgs/development/python-modules/pyhocon/default.nix
@@ -9,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "pyhocon";
-  version = "0.3.58";
+  version = "0.3.59";
 
   src = fetchFromGitHub {
     owner = "chimpler";
     repo = "pyhocon";
     rev = version;
-    sha256 = "sha256-ddspVDKy9++cISWH6R95r+gJrzNGqMTybI04OgVtIUU=";
+    sha256 = "1yr24plg3d4girg27ajjkf9mndig706fs8b2kmnmhi4l2xi866yh";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pyhomematic/default.nix b/pkgs/development/python-modules/pyhomematic/default.nix
index 636ea1658fff7..e30063e826d9b 100644
--- a/pkgs/development/python-modules/pyhomematic/default.nix
+++ b/pkgs/development/python-modules/pyhomematic/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "pyhomematic";
-  version = "0.1.76";
+  version = "0.1.77";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ea2496c920451ded4561e3758c8f77157fc00c40d1f75d8163e399fd3e0d795a";
+    sha256 = "00d95c21b95a17bc07586f69c976fb343a103adc0954d7b2d56c7160665625cb";
   };
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/pyhumps/default.nix b/pkgs/development/python-modules/pyhumps/default.nix
new file mode 100644
index 0000000000000..51d5b8bce5ec9
--- /dev/null
+++ b/pkgs/development/python-modules/pyhumps/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, fetchpatch
+, poetry-core
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pyhumps";
+  version = "3.5.3";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "nficano";
+    repo = "humps";
+    rev = "v${version}";
+    hash = "sha256-6F61y0niPPuZBci15j68MFXzzBBimvbZ24+i9AZ7XJs=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  patches = [
+    # Fix naming, https://github.com/nficano/humps/pull/246
+    (fetchpatch {
+      name = "fix-naming.patch";
+      url = "https://github.com/nficano/humps/commit/118f6bce785d170b10dd3afee467d26dcc8b425d.patch";
+      sha256 = "sha256-oQxkLsihnHZlHiZEupwG9Dr1Ss1w+KjDsBtbEVDced4=";
+    })
+  ];
+
+  pythonImportsCheck = [
+    "humps"
+  ];
+
+  meta = with lib; {
+    description = "Module to convert strings (and dictionary keys) between snake case, camel case and pascal case";
+    homepage = "https://github.com/nficano/humps";
+    license = with licenses; [ unlicense ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyinsteon/default.nix b/pkgs/development/python-modules/pyinsteon/default.nix
index 04dbd8142ff6c..0dc1c5be49c25 100644
--- a/pkgs/development/python-modules/pyinsteon/default.nix
+++ b/pkgs/development/python-modules/pyinsteon/default.nix
@@ -1,36 +1,36 @@
 { lib
-, buildPythonPackage
-, fetchFromGitHub
 , aiofiles
 , aiohttp
 , async_generator
+, buildPythonPackage
+, fetchFromGitHub
 , pypubsub
 , pyserial
 , pyserial-asyncio
-, pyyaml
-, pytestCheckHook
-, pythonOlder
-, pytest-cov
 , pytest-asyncio
 , pytest-timeout
+, pytestCheckHook
+, pythonOlder
+, pyyaml
 }:
 
 buildPythonPackage rec {
   pname = "pyinsteon";
-  version = "1.0.13";
+  version = "1.0.16";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "sha256-KVwAF+yoU26ktNRKWQ+nrhS1i90xQxAhRAr4VJ+xtl0=";
+    hash = "sha256-V0niLQAplN/uZ0YeN6g8uax3U/d0LUT4aXxe3ENXIHc=";
   };
 
   propagatedBuildInputs = [
     aiofiles
     aiohttp
-    async_generator
     pypubsub
     pyserial
     pyserial-asyncio
@@ -38,13 +38,15 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
+    async_generator
     pytest-asyncio
-    pytest-cov
     pytest-timeout
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "pyinsteon" ];
+  pythonImportsCheck = [
+    "pyinsteon"
+  ];
 
   meta = with lib; {
     description = "Python library to support Insteon home automation projects";
diff --git a/pkgs/development/python-modules/pyisy/default.nix b/pkgs/development/python-modules/pyisy/default.nix
index 48274e6b4e822..b671dbde59ef4 100644
--- a/pkgs/development/python-modules/pyisy/default.nix
+++ b/pkgs/development/python-modules/pyisy/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "pyisy";
-  version = "3.0.1";
+  version = "3.0.2";
 
   src = fetchFromGitHub {
     owner = "automicus";
     repo = "PyISY";
     rev = "v${version}";
-    sha256 = "1mj9na64nq0ls8d9x3304ai7lixaglpr646p3m2a4s5qlmm4il3m";
+    hash = "sha256-ad3hVs0B3uBHj/LVWwAXAkUMbjHPtyaeKueRPcmIMFg=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/pyjwt/1.nix b/pkgs/development/python-modules/pyjwt/1.nix
deleted file mode 100644
index 9978302d1cc44..0000000000000
--- a/pkgs/development/python-modules/pyjwt/1.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, cryptography
-, ecdsa
-, pytestCheckHook
-, pythonOlder
-}:
-
-buildPythonPackage rec {
-  pname = "pyjwt";
-  version = "1.7.1";
-
-  src = fetchPypi {
-    pname = "PyJWT";
-    inherit version;
-    sha256 = "8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96";
-  };
-
-  postPatch = ''
-    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";
-    license = licenses.mit;
-  };
-}
diff --git a/pkgs/development/python-modules/pyjwt/default.nix b/pkgs/development/python-modules/pyjwt/default.nix
index 4617869988f65..8212d097aa806 100644
--- a/pkgs/development/python-modules/pyjwt/default.nix
+++ b/pkgs/development/python-modules/pyjwt/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "pyjwt";
-  version = "2.1.0";
+  version = "2.3.0";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     pname = "PyJWT";
     inherit version;
-    sha256 = "sha256-+6ROeJi7yhYKKytQH0koJPyDgkhdOm8Rul0MGTfOYTA=";
+    sha256 = "sha256-uIi01W8G9tzXdyEMM05pxze+dHVdPl6e4/5n3Big7kE=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pykeyatome/default.nix b/pkgs/development/python-modules/pykeyatome/default.nix
index b27ee6b2ecec5..f4ea169b01e45 100644
--- a/pkgs/development/python-modules/pykeyatome/default.nix
+++ b/pkgs/development/python-modules/pykeyatome/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "pykeyatome";
-  version = "1.3.0";
+  version = "1.4.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "jugla";
     repo = "pyKeyAtome";
     rev = "V${version}";
-    sha256 = "1brcfgqj0bana6yii4083kppz822fgk9xf4mg141b0zfvx2gyjw9";
+    sha256 = "sha256-Gv418i2JLoovwagkZpv8PIJPW3I/0pRmXR/PJOJ2NBc=";
   };
 
   propagatedBuildInputs = [
@@ -52,7 +52,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python module to get data from Atome Key";
-    homepage = "hhttps://github.com/jugla/pyKeyAtome";
+    homepage = "https://github.com/jugla/pyKeyAtome";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/pykickstart/default.nix b/pkgs/development/python-modules/pykickstart/default.nix
deleted file mode 100644
index 8b1eefdafedc7..0000000000000
--- a/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/pkgs/development/python-modules/pykrakenapi/default.nix b/pkgs/development/python-modules/pykrakenapi/default.nix
index 6c91b0c95dc07..41efa9a54d248 100644
--- a/pkgs/development/python-modules/pykrakenapi/default.nix
+++ b/pkgs/development/python-modules/pykrakenapi/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "pykrakenapi";
-  version = "0.2.3";
+  version = "0.2.4";
 
   src = fetchFromGitHub {
     owner = "dominiktraxl";
     repo = "pykrakenapi";
     rev = "v${version}";
-    sha256 = "0yvhgk5wyklwqd67hfajnd7ims79h4h89pp65xb3x5mcmdcfz4ss";
+    hash = "sha256-i2r6t+JcL6INI8Y26gvVvNjv6XxMj4G+pF9Xf/hsx1A=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pylast/default.nix b/pkgs/development/python-modules/pylast/default.nix
index 098cdd33bfca7..257cb72b3ec1c 100644
--- a/pkgs/development/python-modules/pylast/default.nix
+++ b/pkgs/development/python-modules/pylast/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "pylast";
-  version = "4.4.0";
+  version = "4.5.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-2m6+pQYBmvVxlBw1yLSAKr3kZ5WS1S0TZ1ZQ3ER+bCk=";
+    sha256 = "sha256-YoALculx2trEDD1vU4xhiCGdb1OFPdxI1p2fwlZZAY8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/pylaunches/default.nix b/pkgs/development/python-modules/pylaunches/default.nix
index d6ad5480ddd35..8f2ed7083580a 100644
--- a/pkgs/development/python-modules/pylaunches/default.nix
+++ b/pkgs/development/python-modules/pylaunches/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "pylaunches";
-  version = "1.2.0";
+  version = "1.3.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "ludeeus";
     repo = pname;
     rev = version;
-    sha256 = "0mczxkwczyh9kva4xzpmnawy0hjha1fdrwj6igip9w5z1q48zs49";
+    sha256 = "1b41j384lqg3gc7dsmdzp7anrsymqgc1895lc5j8g43x2mfgbjnh";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pylgnetcast/default.nix b/pkgs/development/python-modules/pylgnetcast/default.nix
index cadb4bb83839d..51e3dfdab28f8 100644
--- a/pkgs/development/python-modules/pylgnetcast/default.nix
+++ b/pkgs/development/python-modules/pylgnetcast/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "pylgnetcast";
-  version = "0.3.5";
+  version = "0.3.7";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "Drafteed";
     repo = "python-lgnetcast";
     rev = "v${version}";
-    sha256 = "11g7ya4ppqxjiv3fkz9mi6h1afw9icy6xyn4jzm63kjvxqhrwnw4";
+    sha256 = "0pmz52k2sfxj5x2wcwdjks2lqh1gb5zfrjgc6xij8jal4l9xd2dz";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pylibacl/0.5.nix b/pkgs/development/python-modules/pylibacl/0.5.nix
deleted file mode 100644
index 284a795b4c229..0000000000000
--- a/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/pkgs/development/python-modules/pylibftdi/default.nix b/pkgs/development/python-modules/pylibftdi/default.nix
index c001594d625a3..d4dd2d6781be7 100644
--- a/pkgs/development/python-modules/pylibftdi/default.nix
+++ b/pkgs/development/python-modules/pylibftdi/default.nix
@@ -3,15 +3,19 @@
 , fetchPypi
 , libftdi1
 , libusb1
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pylibftdi";
-  version = "0.19.0";
+  version = "0.20.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bb0ec74df292ef884aa37bf1e98fb9df4d338718e1559eebda363317a792123e";
+    sha256 = "f4a87fc4af2c9c7d42badd4192ca9b529f32c9d96fdc8daea7e29c509226df5f";
   };
 
   propagatedBuildInputs = [
@@ -25,11 +29,13 @@ buildPythonPackage rec {
       --replace "self._load_library('libftdi')" "cdll.LoadLibrary('${libftdi1.out}/lib/libftdi1.so')"
   '';
 
-  pythonImportsCheck = [ "pylibftdi" ];
+  pythonImportsCheck = [
+    "pylibftdi"
+  ];
 
   meta = with lib; {
-    homepage = "https://bitbucket.org/codedstructure/pylibftdi/src/default/";
-    description = "Minimal pythonic wrapper to Intra2net's libftdi driver for FTDI's USB devices";
+    homepage = "https://pylibftdi.readthedocs.io/";
+    description = "Wrapper to Intra2net's libftdi driver for FTDI's USB devices";
     license = licenses.mit;
     maintainers = with maintainers; [ matthuszagh ];
   };
diff --git a/pkgs/development/python-modules/pylint-django/default.nix b/pkgs/development/python-modules/pylint-django/default.nix
index c93c8d4207fe8..291ef8fba62ef 100644
--- a/pkgs/development/python-modules/pylint-django/default.nix
+++ b/pkgs/development/python-modules/pylint-django/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "pylint-django";
-  version = "2.4.4";
+  version = "2.5.0";
   disabled = !isPy3k;
 
   src = fetchFromGitHub {
     owner = "PyCQA";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-bFcb5GhC7jc7jEpNlyjWa2CuCSMvQLJdnag+7mHwSb8=";
+    sha256 = "1r48dss9qnzlifwy5ylkffdw35aaajmil0486mav056jm1vmi2pr";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pylint/1.9.nix b/pkgs/development/python-modules/pylint/1.9.nix
deleted file mode 100644
index 5dbb3d6750f80..0000000000000
--- a/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/pkgs/development/python-modules/pylitterbot/default.nix b/pkgs/development/python-modules/pylitterbot/default.nix
index be6d71aed5d36..eec564c126b0a 100644
--- a/pkgs/development/python-modules/pylitterbot/default.nix
+++ b/pkgs/development/python-modules/pylitterbot/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "pylitterbot";
-  version = "2021.11.0";
+  version = "2021.12.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "natekspencer";
     repo = pname;
     rev = version;
-    sha256 = "sha256-HdIxi6RfdXBYEYFEcv/f9wAqKZg/MsEZd6mDYwE45to=";
+    sha256 = "sha256-hz+MQTxobf7IkOJTpwbDDd3i13FFtxFn2kmCwPV3pu4=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pylsp-mypy/default.nix b/pkgs/development/python-modules/pylsp-mypy/default.nix
index e1d7ddff298df..a4725c4781c6b 100644
--- a/pkgs/development/python-modules/pylsp-mypy/default.nix
+++ b/pkgs/development/python-modules/pylsp-mypy/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "pylsp-mypy";
-  version = "0.5.1";
+  version = "0.5.7";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "Richardk2n";
     repo = "pylsp-mypy";
     rev = version;
-    sha256 = "1d119csj1k5m9j0f7wdvpvnd02h548css6ybxqah92nk2v0rjscr";
+    sha256 = "0am16z9kmj57r5pi32jhzlbdngzmvzzaiqjm7cba1izh7w5m6dvc";
   };
 
   disabledTests = [
diff --git a/pkgs/development/python-modules/pylutron-caseta/default.nix b/pkgs/development/python-modules/pylutron-caseta/default.nix
index f71f2f4d52aec..e7fd9630626c6 100644
--- a/pkgs/development/python-modules/pylutron-caseta/default.nix
+++ b/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.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "gurumitts";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-2w8kRSZK9Bq3O6r6i0CJgxEXGo8KsWah9bMLlDNzMGk=";
+    sha256 = "sha256-NLVxEor+Z+AVF+0/ugPM4bpeKba6yd43uTLYhtTNhqM=";
   };
 
   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/pkgs/development/python-modules/pylxd/default.nix b/pkgs/development/python-modules/pylxd/default.nix
index 64232f760fafc..5e8016ddaee44 100644
--- a/pkgs/development/python-modules/pylxd/default.nix
+++ b/pkgs/development/python-modules/pylxd/default.nix
@@ -14,13 +14,13 @@
 
 buildPythonPackage rec {
   pname = "pylxd";
-  version = "2.3.0";
+  version = "2.3.1";
 
   src = fetchFromGitHub {
     owner = "lxc";
     repo = "pylxd";
     rev = version;
-    sha256 = "144frnlsb21mglgyisms790hyrdfx1l91lcd7incch4m4a1cbpp6";
+    sha256 = "sha256-eDRCJYjmBndMnSNuS6HD/2p/KhzqJq2qPAzMk7kC5UM=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pymatgen/default.nix b/pkgs/development/python-modules/pymatgen/default.nix
index 5354efacb4dca..be13f77490add 100644
--- a/pkgs/development/python-modules/pymatgen/default.nix
+++ b/pkgs/development/python-modules/pymatgen/default.nix
@@ -1,4 +1,5 @@
-{ lib, buildPythonPackage, fetchPypi
+{ lib, buildPythonPackage, fetchFromGitHub
+, cython
 , enum34
 , glibcLocales
 , matplotlib
@@ -8,6 +9,7 @@
 , palettable
 , pandas
 , plotly
+, pybtex
 , pydispatcher
 , requests
 , ruamel-yaml
@@ -21,14 +23,20 @@
 
 buildPythonPackage rec {
   pname = "pymatgen";
-  version = "2022.0.17";
+  version = "2022.2.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "7103b89b889bb940709eea53226d3c9298584ad9ab42ab8c8f9de3872d7d969b";
+  # sdist doesn't include c files
+  src = fetchFromGitHub {
+    owner = "materialsproject";
+    repo = "pymatgen";
+    rev= "v${version}";
+    sha256 = "sha256-92Dxmo1Z9LR2caSOftIf1I6jeZmqDe3SqhhoCofWraw=";
   };
 
-  nativeBuildInputs = [ glibcLocales ];
+  nativeBuildInputs = [
+    cython
+    glibcLocales
+  ];
 
   propagatedBuildInputs = [
     enum34
@@ -39,6 +47,7 @@ buildPythonPackage rec {
     palettable
     pandas
     plotly
+    pybtex
     pydispatcher
     requests
     ruamel-yaml
diff --git a/pkgs/development/python-modules/pymavlink/default.nix b/pkgs/development/python-modules/pymavlink/default.nix
index 8e7439a80d486..6f846481b039c 100644
--- a/pkgs/development/python-modules/pymavlink/default.nix
+++ b/pkgs/development/python-modules/pymavlink/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pymavlink";
-  version = "2.4.19";
+  version = "2.4.20";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "08ppwlsnrvzkpi4fn14d4d4grzx2bmsd0m9369q3f9hw48fgf645";
+    sha256 = "sha256-QdYlmlDZzVH8tErGdgAz6FjT/L7jexduvrffKVEqMfY=";
   };
 
   propagatedBuildInputs = [ future lxml ];
diff --git a/pkgs/development/python-modules/pymazda/default.nix b/pkgs/development/python-modules/pymazda/default.nix
index f6fdd60a38723..fdc7e1f67873f 100644
--- a/pkgs/development/python-modules/pymazda/default.nix
+++ b/pkgs/development/python-modules/pymazda/default.nix
@@ -8,12 +8,14 @@
 
 buildPythonPackage rec {
   pname = "pymazda";
-  version = "0.3.0";
+  version = "0.3.2";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-D0odz4GkKvjuafhEGlHtRnO8lk4rV9y3imaHl7jXqJw=";
+    sha256 = "d51619cfbd90f4bb4e8fbfe1bccd58d4f5ece9bdb78d8f33fed1776d749d5fa9";
   };
 
   propagatedBuildInputs = [
@@ -23,7 +25,10 @@ buildPythonPackage rec {
 
   # Project has no tests
   doCheck = false;
-  pythonImportsCheck = [ "pymazda" ];
+
+  pythonImportsCheck = [
+    "pymazda"
+  ];
 
   meta = with lib; {
     description = "Python client for interacting with the MyMazda API";
diff --git a/pkgs/development/python-modules/pymc3/default.nix b/pkgs/development/python-modules/pymc3/default.nix
index 095f3baf97ae7..5cf2615ed0311 100644
--- a/pkgs/development/python-modules/pymc3/default.nix
+++ b/pkgs/development/python-modules/pymc3/default.nix
@@ -68,5 +68,8 @@ buildPythonPackage rec {
     homepage = "https://github.com/pymc-devs/pymc3";
     license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ ilya-kolpakov ];
+    # several dependencies are not declared and in the end it requires theano-pymc3
+    # instead of Theano. The former is currently not packaged.
+    broken = true;
   };
 }
diff --git a/pkgs/development/python-modules/pymdown-extensions/default.nix b/pkgs/development/python-modules/pymdown-extensions/default.nix
new file mode 100644
index 0000000000000..94a73fd82112f
--- /dev/null
+++ b/pkgs/development/python-modules/pymdown-extensions/default.nix
@@ -0,0 +1,77 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, fetchpatch
+, pytestCheckHook
+, markdown
+, pyyaml
+, pygments
+}:
+
+let
+  extensions = [
+    "arithmatex"
+    "b64"
+    "betterem"
+    "caret"
+    "critic"
+    "details"
+    "emoji"
+    "escapeall"
+    "extra"
+    "highlight"
+    "inlinehilite"
+    "keys"
+    "magiclink"
+    "mark"
+    "pathconverter"
+    "progressbar"
+    "saneheaders"
+    "smartsymbols"
+    "snippets"
+    "striphtml"
+    "superfences"
+    "tabbed"
+    "tasklist"
+    "tilde"
+  ];
+in
+buildPythonPackage rec {
+  pname = "pymdown-extensions";
+  version = "9.1";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "facelessuser";
+    repo = "pymdown-extensions";
+    rev = version;
+    sha256 = "sha256-II8Po8144h3wPFrzMbOB/qiCm2HseYrcZkyIZFGT+ek=";
+  };
+
+  patches = [
+    # this patch is needed to allow tests to pass for later versions of the
+    # markdown dependency
+    #
+    # it can be removed after the next pymdown-extensions release
+    (fetchpatch {
+      url = "https://github.com/facelessuser/pymdown-extensions/commit/8ee5b5caec8f9373e025f50064585fb9d9b71f86.patch";
+      sha256 = "sha256-jTHNcsV0zL0EkSTSj8zCGXXtpUaLnNPldmL+krZj3Gk=";
+    })
+  ];
+
+  propagatedBuildInputs = [ markdown pygments ];
+
+  checkInputs = [
+    pytestCheckHook
+    pyyaml
+  ];
+
+  pythonImportsCheck = map (ext: "pymdownx.${ext}") extensions;
+
+  meta = with lib; {
+    description = "Extensions for Python Markdown";
+    homepage = "https://facelessuser.github.io/pymdown-extensions/";
+    license = with licenses; [ mit bsd2 ];
+    maintainers = with maintainers; [ cpcloud ];
+  };
+}
diff --git a/pkgs/development/python-modules/pymelcloud/default.nix b/pkgs/development/python-modules/pymelcloud/default.nix
new file mode 100644
index 0000000000000..ed06b347b6942
--- /dev/null
+++ b/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.11.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "vilppuvuorinen";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1q6ny58cn9qy86blxbk6l2iklab7y11b734l7yb1bp35dmy27w26";
+  };
+
+  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/pkgs/development/python-modules/pymongo/default.nix b/pkgs/development/python-modules/pymongo/default.nix
index 6b627ca672ff0..bae4f7c25fb82 100644
--- a/pkgs/development/python-modules/pymongo/default.nix
+++ b/pkgs/development/python-modules/pymongo/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "pymongo";
-  version = "3.12.1";
+  version = "3.12.2";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "704879b6a54c45ad76cea7c6789c1ae7185050acea7afd15b58318fa1932ed45";
+    sha256 = "64ea5e97fca1a37f83df9f3460bf63640bc0d725e12f3471e6acbf3a6040dd37";
   };
 
   # Tests call a running mongodb instance
diff --git a/pkgs/development/python-modules/pymsteams/default.nix b/pkgs/development/python-modules/pymsteams/default.nix
index 7eca666a9cca4..0f452607518b1 100644
--- a/pkgs/development/python-modules/pymsteams/default.nix
+++ b/pkgs/development/python-modules/pymsteams/default.nix
@@ -1,25 +1,34 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, pythonOlder
 , requests
 }:
 
 buildPythonPackage rec {
   pname = "pymsteams";
-  version = "0.1.16";
+  version = "0.2.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "rveachkc";
     repo = pname;
     rev = version;
-    sha256 = "sha256-dRfzMCsU+jRdnqzIBLn1mPWr+UDq1HFfXXqe1dVhGDo=";
+    sha256 = "03lna3p8qkmsmaz2nzl76dnz6rci08wsybvr151zl8wwpjdj1sam";
   };
 
-  propagatedBuildInputs = [ requests ];
+  propagatedBuildInputs = [
+    requests
+  ];
 
   # Tests require network access
   doCheck = false;
-  pythonImportsCheck = [ "pymsteams" ];
+
+  pythonImportsCheck = [
+    "pymsteams"
+  ];
 
   meta = with lib; {
     description = "Python module to interact with Microsoft Teams";
diff --git a/pkgs/development/python-modules/pymunk/default.nix b/pkgs/development/python-modules/pymunk/default.nix
index c98fb6dddcf8d..f1cc51ec0aab7 100644
--- a/pkgs/development/python-modules/pymunk/default.nix
+++ b/pkgs/development/python-modules/pymunk/default.nix
@@ -37,7 +37,7 @@ buildPythonPackage rec {
     description = "2d physics library";
     homepage = "https://www.pymunk.org";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [ angustrau ];
+    maintainers = with maintainers; [ emilytrau ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/pymupdf/default.nix b/pkgs/development/python-modules/pymupdf/default.nix
index 0b147c971b028..42c369dbf7e72 100644
--- a/pkgs/development/python-modules/pymupdf/default.nix
+++ b/pkgs/development/python-modules/pymupdf/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "pymupdf";
-  version = "1.18.17";
+  version = "1.19.4";
 
   src = fetchPypi {
     pname = "PyMuPDF";
     inherit version;
-    sha256 = "fa39ee5e91eae77818e07b6bb7e0cb0b402ad88e39a74b08626ce1c2150c5414";
+    sha256 = "125783986da87fe1a5372d621e90fa49e454454af0b3d0f894858c146c712f81";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/pymysensors/default.nix b/pkgs/development/python-modules/pymysensors/default.nix
index 9506e1504836b..d071743d748dd 100644
--- a/pkgs/development/python-modules/pymysensors/default.nix
+++ b/pkgs/development/python-modules/pymysensors/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "pymysensors";
-  version = "0.22.1";
+  version = "0.23.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "theolind";
     repo = pname;
     rev = version;
-    sha256 = "sha256-n4khOQspJBeq0w+epdXYZh6I1lI1drB1JewZ6GfzVHs=";
+    sha256 = "0a09w1bzz2pn0w11f7kx8052914kdpgfb7w6hc9s50x8wl9q604h";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pynacl/default.nix b/pkgs/development/python-modules/pynacl/default.nix
index 91a197e7cf66f..f34956d7280f1 100644
--- a/pkgs/development/python-modules/pynacl/default.nix
+++ b/pkgs/development/python-modules/pynacl/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fetchPypi
 , pytestCheckHook
@@ -6,19 +7,19 @@
 , libsodium
 , cffi
 , hypothesis
-, stdenv
-, six
 }:
 
 buildPythonPackage rec {
   pname = "pynacl";
-  version = "1.4.0";
+  version = "1.5.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit version;
     pname = "PyNaCl";
-    sha256 = "01b56hxrbif3hx8l6rwz5kljrgvlbj7shmmd2rjh0hn7974a5sal";
+    sha256 = "8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba";
   };
 
   buildInputs = [
@@ -31,7 +32,6 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     cffi
-    six
   ];
 
   checkInputs = [
@@ -41,11 +41,14 @@ buildPythonPackage rec {
 
   SODIUM_INSTALL = "system";
 
-  pythonImportsCheck = [ "nacl" ];
+  pythonImportsCheck = [
+    "nacl"
+  ];
 
   meta = with lib; {
     description = "Python binding to the Networking and Cryptography (NaCl) library";
     homepage = "https://github.com/pyca/pynacl/";
     license = licenses.asl20;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pynamodb/default.nix b/pkgs/development/python-modules/pynamodb/default.nix
index b59d292d97cb5..d3b39457438c4 100644
--- a/pkgs/development/python-modules/pynamodb/default.nix
+++ b/pkgs/development/python-modules/pynamodb/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "pynamodb";
-  version = "5.1.0";
+  version = "5.2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7f351d70b9f4da95ea2d7e50299640e4c46c83b7b24bea5daf110acd2e5aef2b";
+    sha256 = "sha256-x6nFV7UjZLwJJX7dADeO68dSWLvaoP4FD8ziNWFJ+Qo=";
   };
 
   propagatedBuildInputs = [ python-dateutil botocore ];
diff --git a/pkgs/development/python-modules/pynetbox/default.nix b/pkgs/development/python-modules/pynetbox/default.nix
index eeb6ad0179841..84e03a6086bf3 100644
--- a/pkgs/development/python-modules/pynetbox/default.nix
+++ b/pkgs/development/python-modules/pynetbox/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "pynetbox";
-  version = "6.4.1";
+  version = "6.6.0";
 
   src = fetchFromGitHub {
     owner = "netbox-community";
     repo = pname;
     rev = "v${version}";
-    sha256 = "08k2zxfz23gzbk49r3hmh6r3m5rgx1gk7w83qxi1v4gbm4wr0v9m";
+    sha256 = "sha256-vgknnFnmRLIpBLdv1iFGkuql2NOLurOgF2CDKoo8WGg=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
diff --git a/pkgs/development/python-modules/pynetdicom/default.nix b/pkgs/development/python-modules/pynetdicom/default.nix
index 3afa8fcf86519..fa2b369aa2bae 100644
--- a/pkgs/development/python-modules/pynetdicom/default.nix
+++ b/pkgs/development/python-modules/pynetdicom/default.nix
@@ -48,11 +48,12 @@ buildPythonPackage rec {
     "TestMoveSCPCLI"
     "TestQRGetServiceClass"
     "TestQRMoveServiceClass"
+    "TestState"
+    "TestStorageServiceClass"
     "TestStoreSCP"
     "TestStoreSCPCLI"
     "TestStoreSCU"
     "TestStoreSCUCLI"
-    "TestState"
   ];
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/pynetgear/default.nix b/pkgs/development/python-modules/pynetgear/default.nix
new file mode 100644
index 0000000000000..e1d87cdcae330
--- /dev/null
+++ b/pkgs/development/python-modules/pynetgear/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, requests
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pynetgear";
+  version = "0.9.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "MatMaul";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-sLGr8I0LcLPrmQZ6dI+hwRAiNCrnLtr2WU04rPoG4x4=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  pythonImportsCheck = [
+    "pynetgear"
+  ];
+
+  # Tests don't pass
+  # https://github.com/MatMaul/pynetgear/issues/109
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Module for interacting with Netgear wireless routers";
+    homepage = "https://github.com/MatMaul/pynetgear";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pynina/default.nix b/pkgs/development/python-modules/pynina/default.nix
index b9e026886c867..5eaf015e9bb40 100644
--- a/pkgs/development/python-modules/pynina/default.nix
+++ b/pkgs/development/python-modules/pynina/default.nix
@@ -1,22 +1,21 @@
 { lib
 , aiohttp
 , buildPythonPackage
-, fetchFromGitLab
+, fetchPypi
 , pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pynina";
-  version = "unstable-2021-11-11";
+  version = "0.1.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
-  src = fetchFromGitLab {
-    owner = "DeerMaximum";
-    repo = pname;
-    rev = "0ac42b28d48af7bcd9c83f5d425b5b23c4c19f02";
-    sha256 = "FSrFCs/4tfYcSPz9cgR+LFsRbWIHE1X+ZUl8BWSEaWQ=";
+  src = fetchPypi {
+    pname = "PyNINA";
+    inherit version;
+    sha256 = "1q382b70ydzzbqb9sa5y5w7039rp6q0wyffarrsdw916kbc4zyqd";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pynndescent/default.nix b/pkgs/development/python-modules/pynndescent/default.nix
index 4173987a7f6ad..f15cfef63c6e0 100644
--- a/pkgs/development/python-modules/pynndescent/default.nix
+++ b/pkgs/development/python-modules/pynndescent/default.nix
@@ -7,16 +7,19 @@
 , scikit-learn
 , scipy
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pynndescent";
-  version = "0.5.5";
+  version = "0.5.6";
   format = "setuptools";
 
+  disabled = pythonOlder "3.6";
+
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7a7df8412b19cfb3596060faf5a8c5d0bf5b3bd504f8efd900fc4e3918c6f882";
+    hash = "sha256-YfsxiFuqxGnWeTPix8k1tu3rsG7kmOLw+d/JfFnTclw=";
   };
 
   propagatedBuildInputs = [
@@ -31,6 +34,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  pythonImportsCheck = [
+    "pynndescent"
+  ];
+
   meta = with lib; {
     description = "Nearest Neighbor Descent";
     homepage = "https://github.com/lmcinnes/pynndescent";
diff --git a/pkgs/development/python-modules/pynput/default.nix b/pkgs/development/python-modules/pynput/default.nix
index 7bfa96870ead4..87e769a9f922d 100644
--- a/pkgs/development/python-modules/pynput/default.nix
+++ b/pkgs/development/python-modules/pynput/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pynput";
-  version = "1.7.5";
+  version = "1.7.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e6b7926dd162a883ff16f38e01720a930bbf2509146c9f1cdcecddd25288fb6e";
+    sha256 = "3a5726546da54116b687785d38b1db56997ce1d28e53e8d22fc656d8b92e533c";
   };
 
   nativeBuildInputs = [ sphinx ];
diff --git a/pkgs/development/python-modules/pynuki/default.nix b/pkgs/development/python-modules/pynuki/default.nix
index 9c3dc394cc046..58c7f1df15b7e 100644
--- a/pkgs/development/python-modules/pynuki/default.nix
+++ b/pkgs/development/python-modules/pynuki/default.nix
@@ -3,27 +3,40 @@
 , fetchFromGitHub
 , poetry-core
 , requests
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pynuki";
-  version = "1.4.1";
+  version = "1.5.2";
   format = "pyproject";
 
+  disabled = pythonOlder "3.8";
+
   src = fetchFromGitHub {
     owner = "pschmitt";
     repo = pname;
     rev = version;
-    sha256 = "1nymlrf0j430851plp355697p55asfxjmavdh2zr96b16d41dnn4";
+    sha256 = "sha256-Uqw1Xa0pBQmQsFEBv/l1gtsPy+owYcTZITOYUmMvT5Y=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'requests = ">=2.27,<3"' 'requests = "*"'
+  '';
+
   nativeBuildInputs = [ poetry-core ];
 
-  propagatedBuildInputs = [ requests ];
+  propagatedBuildInputs = [
+    requests
+  ];
 
   # Project has no tests
   doCheck = false;
-  pythonImportsCheck = [ "pynuki" ];
+
+  pythonImportsCheck = [
+    "pynuki"
+  ];
 
   meta = with lib; {
     description = "Python bindings for nuki.io bridges";
diff --git a/pkgs/development/python-modules/pynut2/default.nix b/pkgs/development/python-modules/pynut2/default.nix
new file mode 100644
index 0000000000000..11313dcadc696
--- /dev/null
+++ b/pkgs/development/python-modules/pynut2/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "pynut2";
+  version = "2.1.2";
+
+  src = fetchFromGitHub {
+    owner = "mezz64";
+    repo = "python-nut2";
+    rev = version;
+    sha256 = "1lg7n1frndfgw73s0ssl1h7kc6zxm7fpiwlc6v6d60kxzaj1dphx";
+  };
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  pythonImportsCheck = [ "pynut2.nut2" ];
+
+  # tests are unmaintained and broken
+  doCheck = false;
+
+  meta = with lib; {
+    description = "API overhaul of PyNUT, a Python library to allow communication with NUT (Network UPS Tools) servers.";
+    homepage = "https://github.com/mezz64/python-nut2";
+    license = with licenses; [ gpl3Plus ];
+    maintainers = [ maintainers.luker ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyobjc/default.nix b/pkgs/development/python-modules/pyobjc/default.nix
deleted file mode 100644
index 6aa0d733049d7..0000000000000
--- a/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/pkgs/development/python-modules/pyomo/default.nix b/pkgs/development/python-modules/pyomo/default.nix
index 99f002b9317b6..e8d89e9ef2d25 100644
--- a/pkgs/development/python-modules/pyomo/default.nix
+++ b/pkgs/development/python-modules/pyomo/default.nix
@@ -1,26 +1,28 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , isPy27
 , pyutilib
 , appdirs
 , ply
 , six
 , nose
+, glpk
 }:
 
 buildPythonPackage rec {
   pname = "pyomo";
-  version = "5.6.1";
+  version = "5.7.3";
   disabled = isPy27; # unable to import pyutilib.th
 
-  src = fetchPypi {
-    pname = "Pyomo";
-    inherit version;
-    sha256 = "449be9a4c9b3caee7c89dbe5f0e4e5ad0eaeef8be110a860641cd249986e362c";
+  src = fetchFromGitHub {
+    repo = "pyomo";
+    owner = "pyomo";
+    rev = version;
+    sha256 = "sha256-p0/DdCwyXdzXElzjWewKs0Oi7BMXC+BxgYikdZL0t68=";
   };
 
-  checkInputs = [ nose ];
+  checkInputs = [ nose glpk ];
   propagatedBuildInputs = [
     pyutilib
     appdirs
@@ -30,7 +32,10 @@ buildPythonPackage rec {
 
   checkPhase = ''
     rm pyomo/bilevel/tests/test_blp.py \
-       pyomo/version/tests/test_installer.py
+       pyomo/version/tests/test_installer.py \
+       pyomo/common/tests/test_download.py \
+       pyomo/core/tests/examples/test_pyomo.py
+    export HOME=$TMPDIR
     nosetests
   '';
 
diff --git a/pkgs/development/python-modules/pyopencl/default.nix b/pkgs/development/python-modules/pyopencl/default.nix
index d657efd707f89..934d5fb811430 100644
--- a/pkgs/development/python-modules/pyopencl/default.nix
+++ b/pkgs/development/python-modules/pyopencl/default.nix
@@ -2,18 +2,19 @@
 , stdenv
 , fetchPypi
 , buildPythonPackage
-, Mako
-, pytest
-, numpy
+, appdirs
 , cffi
-, pytools
 , decorator
-, appdirs
-, six
-, opencl-headers
+, Mako
+, mesa_drivers
+, numpy
 , ocl-icd
+, opencl-headers
+, platformdirs
 , pybind11
-, mesa_drivers
+, pytest
+, pytools
+, six
 }:
 
 let
@@ -21,16 +22,25 @@ let
     if stdenv.isDarwin then [ mesa_drivers.dev ] else [ ocl-icd ];
 in buildPythonPackage rec {
   pname = "pyopencl";
-  version = "2021.2.10";
+  version = "2022.1";
 
   checkInputs = [ pytest ];
   buildInputs = [ opencl-headers pybind11 ] ++ os-specific-buildInputs;
 
-  propagatedBuildInputs = [ numpy cffi pytools decorator appdirs six Mako ];
+  propagatedBuildInputs = [
+    appdirs
+    cffi
+    decorator
+    Mako
+    numpy
+    platformdirs
+    pytools
+    six
+  ];
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "75a1f202741bace9606a8680bbbfac69bf8a73d4e7511fb1a6ce3e48185996ae";
+    sha256 = "sha256-JMbZoKH/dgnz1zZevYd4YWpUM8QmVmwsjjX/qwDvIsQ=";
   };
 
   # py.test is not needed during runtime, so remove it from `install_requires`
diff --git a/pkgs/development/python-modules/pyopengl/default.nix b/pkgs/development/python-modules/pyopengl/default.nix
index b2d62e3730d16..72d6ae3325837 100644
--- a/pkgs/development/python-modules/pyopengl/default.nix
+++ b/pkgs/development/python-modules/pyopengl/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "pyopengl";
-  version = "3.1.4";
+  version = "3.1.5";
 
   src = fetchPypi {
     pname = "PyOpenGL";
     inherit version;
-    sha256 = "0bdf5ed600df30c8830455702338902528717c0af85ac5914f1dc5aa0bfa6eee";
+    sha256 = "4107ba0d0390da5766a08c242cf0cf3404c377ed293c5f6d701e457c57ba3424";
   };
 
   propagatedBuildInputs = [ pillow ];
diff --git a/pkgs/development/python-modules/pyopenssl/default.nix b/pkgs/development/python-modules/pyopenssl/default.nix
index 688731033a987..16bfddc8340a2 100644
--- a/pkgs/development/python-modules/pyopenssl/default.nix
+++ b/pkgs/development/python-modules/pyopenssl/default.nix
@@ -47,6 +47,8 @@ let
     "test_fallback_default_verify_paths"
     # https://github.com/pyca/pyopenssl/issues/768
     "test_wantWriteError"
+    # https://github.com/pyca/pyopenssl/issues/1043
+    "test_alpn_call_failure"
   ] ++ (
     lib.optionals (lib.hasPrefix "libressl" openssl.meta.name) failingLibresslTests
   ) ++ (
@@ -64,12 +66,12 @@ in
 
 buildPythonPackage rec {
   pname = "pyopenssl";
-  version = "20.0.1";
+  version = "21.0.0";
 
   src = fetchPypi {
     pname = "pyOpenSSL";
     inherit version;
-    sha256 = "4c231c759543ba02560fcd2480c48dcec4dae34c9da7d3747c508227e0624b51";
+    sha256 = "5e2d8c5e46d0d865ae933bef5230090bdaf5506281e9eec60fa250ee80600cb3";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/python-modules/pyoverkiz/default.nix b/pkgs/development/python-modules/pyoverkiz/default.nix
new file mode 100644
index 0000000000000..00380f341fcb4
--- /dev/null
+++ b/pkgs/development/python-modules/pyoverkiz/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, aiohttp
+, attrs
+, backoff
+, boto3
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, pyhumps
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, warrant-lite
+}:
+
+buildPythonPackage rec {
+  pname = "pyoverkiz";
+  version = "1.3.5";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "iMicknl";
+    repo = "python-overkiz-api";
+    rev = "v${version}";
+    hash = "sha256-KxZYluXa15RojAyNe5hA8Yf/Q9/mVl+b0TrDGRE6iuM=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    attrs
+    aiohttp
+    backoff
+    pyhumps
+    boto3
+    warrant-lite
+  ];
+
+  checkInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "pyoverkiz"
+  ];
+
+  meta = with lib; {
+    description = "Module to interact with the Somfy TaHoma API or other OverKiz APIs";
+    homepage = "https://github.com/iMicknl/python-overkiz-api";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyowm/default.nix b/pkgs/development/python-modules/pyowm/default.nix
index 3cfb70e7b8750..b5b8a100ba2f9 100644
--- a/pkgs/development/python-modules/pyowm/default.nix
+++ b/pkgs/development/python-modules/pyowm/default.nix
@@ -10,14 +10,16 @@
 
 buildPythonPackage rec {
   pname = "pyowm";
-  version = "3.2.0";
+  version = "3.3.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "csparpa";
     repo = pname;
     rev = version;
-    sha256 = "0sq8rxcgdiayl5gy4qhkvvsdq1d93sbzn0nfg8f1vr8qxh8qkfq4";
+    sha256 = "sha256-cSOhm3aDksLBChZzgw1gjUjLQkElR2/xGFMOb9K9RME=";
   };
 
   propagatedBuildInputs = [
@@ -26,12 +28,18 @@ buildPythonPackage rec {
     requests
   ];
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
   # Run only tests which don't require network access
-  pytestFlagsArray = [ "tests/unit" ];
+  pytestFlagsArray = [
+    "tests/unit"
+  ];
 
-  pythonImportsCheck = [ "pyowm" ];
+  pythonImportsCheck = [
+    "pyowm"
+  ];
 
   meta = with lib; {
     description = "Python wrapper around the OpenWeatherMap web API";
diff --git a/pkgs/development/python-modules/pyownet/default.nix b/pkgs/development/python-modules/pyownet/default.nix
new file mode 100644
index 0000000000000..2bdc18e1e2440
--- /dev/null
+++ b/pkgs/development/python-modules/pyownet/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "pyownet";
+  version = "0.10.0.post1";
+
+  format = "setuptools";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "4f2fa4471c2f806b35090bdc6c092305c6eded3ff3736f8b586d35bdb157de62";
+  };
+
+  # tests access network
+  doCheck = false;
+
+  pythonImportsCheck = [ "pyownet.protocol" ];
+
+  meta = with lib; {
+    description = "Python OWFS client library (owserver protocol)";
+    homepage = "https://github.com/miccoli/pyownet";
+    license = licenses.lgpl3Plus;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyparsing/default.nix b/pkgs/development/python-modules/pyparsing/default.nix
index 5ecfdfb88839b..27047cf6eabc4 100644
--- a/pkgs/development/python-modules/pyparsing/default.nix
+++ b/pkgs/development/python-modules/pyparsing/default.nix
@@ -2,34 +2,47 @@
 , fetchFromGitHub
 , lib
 
-# pythonPackages
-, coverage
+# since this is a dependency of pytest, we need to avoid
+# circular dependencies
+, jinja2
+, railroad-diagrams
 }:
 
-buildPythonPackage rec {
-  pname = "pyparsing";
-  version = "2.4.7";
+let
+  pyparsing = buildPythonPackage rec {
+    pname = "pyparsing";
+    version = "3.0.6";
 
-  src = fetchFromGitHub {
-    owner = "pyparsing";
-    repo = pname;
-    rev = "pyparsing_${version}";
-    sha256 = "14pfy80q2flgzjcx8jkracvnxxnr59kjzp3kdm5nh232gk1v6g6h";
-  };
-
-  # https://github.com/pyparsing/pyparsing/blob/847af590154743bae61a32c3dc1a6c2a19009f42/tox.ini#L6
-  checkInputs = [ coverage ];
-  checkPhase = ''
-    coverage run --branch simple_unit_tests.py
-    coverage run --branch unitTests.py
-  '';
+    src = fetchFromGitHub {
+      owner = "pyparsing";
+      repo = pname;
+      rev = "pyparsing_${version}";
+      sha256 = "0n89ky7rx5yg09ssji8liahnyxip08hz7syc2k4pmlgs4978181a";
+    };
 
-  meta = with lib; {
-    homepage = "https://github.com/pyparsing/pyparsing";
-    description = "An alternative approach to creating and executing simple grammars, vs. the traditional lex/yacc approach, or the use of regular expressions";
-    license = licenses.mit;
-    maintainers = with maintainers; [
-      kamadorueda
+    # circular dependencies if enabled by default
+    doCheck = false;
+    checkInputs = [
+      jinja2
+      railroad-diagrams
     ];
+
+    checkPhase = ''
+      python -m unittest
+    '';
+
+    passthru.tests = {
+      check = pyparsing.overridePythonAttrs (_: { doCheck = true; });
+    };
+
+    meta = with lib; {
+      homepage = "https://github.com/pyparsing/pyparsing";
+      description = "An alternative approach to creating and executing simple grammars, vs. the traditional lex/yacc approach, or the use of regular expressions";
+      license = licenses.mit;
+      maintainers = with maintainers; [
+        kamadorueda
+      ];
+    };
   };
-}
+in
+  pyparsing
diff --git a/pkgs/development/python-modules/pypck/default.nix b/pkgs/development/python-modules/pypck/default.nix
index 797657a28c5c3..724be70163abf 100644
--- a/pkgs/development/python-modules/pypck/default.nix
+++ b/pkgs/development/python-modules/pypck/default.nix
@@ -1,23 +1,25 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fetchFromGitHub
 , pytest-asyncio
 , pytest-timeout
 , pytestCheckHook
 , pythonOlder
-, stdenv
 }:
 
 buildPythonPackage rec {
   pname = "pypck";
-  version = "0.7.11";
+  version = "0.7.14";
+  format = "setuptools";
+
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "alengwenus";
     repo = pname;
     rev = version;
-    sha256 = "1jj0y487qcxrprx4x2rs6r7rqsf5m9khk0xhigbvnbyvh8rsd2jr";
+    sha256 = "sha256-v8eCCbSnAmJUmHSNS+lz8JRhDFrqyxgAkgcZ2bzfOTg=";
   };
 
   checkInputs = [
@@ -32,7 +34,9 @@ buildPythonPackage rec {
 
   __darwinAllowLocalNetworking = true;
 
-  pythonImportsCheck = [ "pypck" ];
+  pythonImportsCheck = [
+    "pypck"
+  ];
 
   meta = with lib; {
     description = "LCN-PCK library written in Python";
diff --git a/pkgs/development/python-modules/pypdf/default.nix b/pkgs/development/python-modules/pypdf/default.nix
deleted file mode 100644
index 1244f374b44c9..0000000000000
--- a/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/pkgs/development/python-modules/pyphen/default.nix b/pkgs/development/python-modules/pyphen/default.nix
index 74581ba7e33c2..7bb46b115e004 100644
--- a/pkgs/development/python-modules/pyphen/default.nix
+++ b/pkgs/development/python-modules/pyphen/default.nix
@@ -1,18 +1,24 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, flit
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "pyphen";
-  version = "0.11.0";
+  version = "0.12.0";
+  format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e2c3ed82c3a04317df5102addafe89652b0876bc6c6265f5dd4c3efaf02315e8";
+    sha256 = "b7d3dfc24b6f2178cdb2b1757ace0bd5d222de3e62c28d22ac578c5f22a13e9b";
   };
 
+  nativeBuildInputs = [
+    flit
+  ];
+
   preCheck = ''
     sed -i '/addopts/d' pyproject.toml
   '';
diff --git a/pkgs/development/python-modules/pypinyin/default.nix b/pkgs/development/python-modules/pypinyin/default.nix
index 4cac927341de5..210e6129199b9 100644
--- a/pkgs/development/python-modules/pypinyin/default.nix
+++ b/pkgs/development/python-modules/pypinyin/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "pypinyin";
-  version = "0.44.0";
+  version = "0.46.0";
 
   src = fetchFromGitHub {
     owner = "mozillazg";
     repo = "python-pinyin";
     rev = "v${version}";
-    sha256 = "sha256-LYiiZvpM/V3QRyTUXGWGnSnR0AnqWfTW0xJB4Vnw7lI=";
+    sha256 = "sha256-KPyFvO6TR0mg09xcraHFaWklJgzF5oqk3d8H+G4gh3I=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/pypoint/default.nix b/pkgs/development/python-modules/pypoint/default.nix
index 9980d2384f9a8..bd4a121d35be6 100644
--- a/pkgs/development/python-modules/pypoint/default.nix
+++ b/pkgs/development/python-modules/pypoint/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "pypoint";
-  version = "2.2.1";
+  version = "2.3.0";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "fredrike";
     repo = "pypoint";
     rev = "v${version}";
-    sha256 = "sha256-Or7A/Br6BgiCF6OHRtN5TAt++Tu1RLS9mYRgD7Aljts=";
+    hash = "sha256-609Zme9IUl8eHNxzrYsRAg7bgZho/OklGM7oI+imyZQ=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pypoppler/default.nix b/pkgs/development/python-modules/pypoppler/default.nix
deleted file mode 100644
index d325c170dc64b..0000000000000
--- a/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/pkgs/development/python-modules/pypoppler/pypoppler-0.39.0.patch b/pkgs/development/python-modules/pypoppler/pypoppler-0.39.0.patch
deleted file mode 100644
index b9e02242e003b..0000000000000
--- a/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/pkgs/development/python-modules/pypoppler/pypoppler-poppler.c.patch b/pkgs/development/python-modules/pypoppler/pypoppler-poppler.c.patch
deleted file mode 100644
index 1104097cd3e72..0000000000000
--- a/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/pkgs/development/python-modules/pyproj/default.nix b/pkgs/development/python-modules/pyproj/default.nix
index 9632fc5cb40b7..815f0fb84c988 100644
--- a/pkgs/development/python-modules/pyproj/default.nix
+++ b/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/pkgs/development/python-modules/pypugjs/default.nix b/pkgs/development/python-modules/pypugjs/default.nix
index 77ca912db6c9c..9b19c4c8a2614 100644
--- a/pkgs/development/python-modules/pypugjs/default.nix
+++ b/pkgs/development/python-modules/pypugjs/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "pypugjs";
-  version = "5.9.9";
+  version = "5.9.10";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0s0a239940z6rsssa13yz6pfkjk4300j35hs7qysyz45f3ixq19j";
+    sha256 = "082dae87d44e184030b66da9ea9bd1a0209f86c089d8f2bd61064b97a7511a28";
   };
 
   propagatedBuildInputs = [ six chardet ];
diff --git a/pkgs/development/python-modules/pypytools/default.nix b/pkgs/development/python-modules/pypytools/default.nix
new file mode 100644
index 0000000000000..e88891172debc
--- /dev/null
+++ b/pkgs/development/python-modules/pypytools/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, buildPythonPackage
+, fetchpatch
+, fetchPypi
+, freezegun
+, numpy
+, py
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pypytools";
+  version = "0.6.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-oUDAU+TRwLroNfQGYusAQKdRkHcazysqiDLfp77v5Sk=";
+  };
+
+  propagatedBuildInputs = [
+    py
+  ];
+
+  checkInputs = [
+    freezegun
+    numpy
+    pytestCheckHook
+  ];
+
+  patches = [
+    # Support for later Python releases, https://github.com/antocuni/pypytools/pull/2
+    (fetchpatch {
+      name = "support-later-python.patch";
+      url = "https://github.com/antocuni/pypytools/commit/c6aed496ec35a6ef7ce9e95084849eebc16bafef.patch";
+      sha256 = "sha256-YoYRZmgueQmxRtGaeP4zEVxuA0U7TB0PmoYHHVI7ICQ=";
+    })
+  ];
+
+  pythonImportsCheck = [
+    "pypytools"
+  ];
+
+  meta = with lib; {
+    description = "Collection of tools to use PyPy-specific features";
+    homepage = "https://github.com/antocuni/pypytools";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyqt-builder/default.nix b/pkgs/development/python-modules/pyqt-builder/default.nix
index 08eb002ec31fa..fd88e0fe4fe23 100644
--- a/pkgs/development/python-modules/pyqt-builder/default.nix
+++ b/pkgs/development/python-modules/pyqt-builder/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "pyqt-builder";
-  version = "1.10.1";
+  version = "1.12.2";
 
   src = fetchPypi {
     pname = "PyQt-builder";
     inherit version;
-    sha256 = "05vyckg4pq95s3b23drhd24sjwzic1k36nwckxz5jc83mixhqywn";
+    sha256 = "f62bb688d70e0afd88c413a8d994bda824e6cebd12b612902d1945c5a67edcd7";
   };
 
   propagatedBuildInputs = [ packaging sip ];
diff --git a/pkgs/development/python-modules/pyqt/5.x.nix b/pkgs/development/python-modules/pyqt/5.x.nix
index 3b98b5738825f..c604e61a2c378 100644
--- a/pkgs/development/python-modules/pyqt/5.x.nix
+++ b/pkgs/development/python-modules/pyqt/5.x.nix
@@ -7,29 +7,17 @@
 , lndir
 , dbus-python
 , sip
+, pyqt5_sip
 , pyqt-builder
 , libsForQt5
 , withConnectivity ? false
 , withMultimedia ? false
 , withWebKit ? false
 , withWebSockets ? false
+, withLocation ? false
 }:
 
-let
-  pyqt5_sip = buildPythonPackage rec {
-    pname = "PyQt5_sip";
-    version = "12.9.0";
-
-    src = fetchPypi {
-      inherit pname version;
-      sha256 = "0cmfxb7igahxy74qkq199l6zdxrr75bnxris42fww3ibgjflir6k";
-    };
-
-    # There is no test code and the check phase fails with:
-    # > error: could not create 'PyQt5/sip.cpython-38-x86_64-linux-gnu.so': No such file or directory
-    doCheck = false;
-  };
-in buildPythonPackage rec {
+buildPythonPackage rec {
   pname = "PyQt5";
   version = "5.15.4";
   format = "pyproject";
@@ -59,6 +47,7 @@ in buildPythonPackage rec {
     ++ lib.optional withMultimedia qtmultimedia
     ++ lib.optional withWebKit qtwebkit
     ++ lib.optional withWebSockets qtwebsockets
+    ++ lib.optional withLocation qtlocation
   ;
 
   buildInputs = with libsForQt5; [
@@ -71,6 +60,7 @@ in buildPythonPackage rec {
     ++ lib.optional withConnectivity qtconnectivity
     ++ lib.optional withWebKit qtwebkit
     ++ lib.optional withWebSockets qtwebsockets
+    ++ lib.optional withLocation qtlocation
   ;
 
   propagatedBuildInputs = [
@@ -85,7 +75,7 @@ in buildPythonPackage rec {
   ];
 
   passthru = {
-    inherit sip;
+    inherit sip pyqt5_sip;
     multimediaEnabled = withMultimedia;
     webKitEnabled = withWebKit;
     WebSocketsEnabled = withWebSockets;
@@ -107,6 +97,7 @@ in buildPythonPackage rec {
     ++ lib.optional withWebKit "PyQt5.QtWebKit"
     ++ lib.optional withMultimedia "PyQt5.QtMultimedia"
     ++ lib.optional withConnectivity "PyQt5.QtConnectivity"
+    ++ lib.optional withLocation "PyQt5.QtPositioning"
   ;
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/pyqt/sip.nix b/pkgs/development/python-modules/pyqt/sip.nix
new file mode 100644
index 0000000000000..aa29d9ad9d34e
--- /dev/null
+++ b/pkgs/development/python-modules/pyqt/sip.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "pyqt5-sip";
+  version = "12.9.1";
+
+  src = fetchPypi {
+    pname = "PyQt5_sip";
+    inherit version;
+    sha256 = "LyTymbRMURwjeWqvu7WBv96/eNCQVle3zuIUG0mCAw4=";
+  };
+
+  # There is no test code and the check phase fails with:
+  # > error: could not create 'PyQt5/sip.cpython-38-x86_64-linux-gnu.so': No such file or directory
+  doCheck = false;
+  pythonImportsCheck = ["PyQt5.sip"];
+
+  meta = with lib; {
+    description = "Python bindings for Qt5";
+    homepage    = "https://www.riverbankcomputing.com/software/sip/";
+    license     = licenses.gpl3Only;
+    platforms   = platforms.mesaPlatforms;
+    maintainers = with maintainers; [ sander ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyquaternion/default.nix b/pkgs/development/python-modules/pyquaternion/default.nix
new file mode 100644
index 0000000000000..48c8d991175f3
--- /dev/null
+++ b/pkgs/development/python-modules/pyquaternion/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, numpy
+, nose
+}:
+
+buildPythonPackage rec {
+  pname = "pyquaternion";
+  version = "0.9.9";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-sfYa8hnLL+lmtft5oZISTy5jo/end6w8rfKVexqBvqg=";
+  };
+
+  # The VERSION.txt file is required for setup.py
+  # See: https://github.com/KieranWynn/pyquaternion/blob/master/setup.py#L14-L15
+  postPatch = ''
+    echo "${version}" > VERSION.txt
+  '';
+
+  propagatedBuildInputs = [ numpy ];
+
+  checkInputs = [ nose ];
+  pythonImportsCheck = [ "pyquaternion" ];
+
+  meta = with lib; {
+    description = "Library for representing and using quaternions.";
+    homepage = "http://kieranwynn.github.io/pyquaternion/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lucasew ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyquil/default.nix b/pkgs/development/python-modules/pyquil/default.nix
index f984bcc2dea67..c1aa5d56040b3 100644
--- a/pkgs/development/python-modules/pyquil/default.nix
+++ b/pkgs/development/python-modules/pyquil/default.nix
@@ -1,10 +1,9 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , importlib-metadata
 , ipython
-, lark-parser
+, lark
 , networkx
 , numpy
 , poetry-core
@@ -23,7 +22,7 @@
 
 buildPythonPackage rec {
   pname = "pyquil";
-  version = "3.0.1";
+  version = "3.1.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -32,23 +31,15 @@ buildPythonPackage rec {
     owner = "rigetti";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-OU7/LjcpCxvqlcfdlm5ll4f0DYXf0yxNprM8Muu2wyg=";
+    sha256 = "sha256-ejfzxCf2NucK/hfzswHu3h4DPPZQY8vkMAQ51XDRWKU=";
   };
 
-  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
+    lark
     networkx
     numpy
     qcs-api-client
@@ -71,7 +62,7 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace 'lark = "^0.11.1"' 'lark-parser = ">=0.11.1"'
+      --replace 'lark = "^0.11.1"' 'lark = "*"'
   '';
 
   disabledTestPaths = [
@@ -92,9 +83,14 @@ buildPythonPackage rec {
   disabledTests = [
     "test_compile_with_quilt_calibrations"
     "test_sets_timeout_on_requests"
+    # sensitive to lark parser output
+    "test_memory_commands"
+    "test_classical"
   ];
 
-  pythonImportsCheck = [ "pyquil" ];
+  pythonImportsCheck = [
+    "pyquil"
+  ];
 
   meta = with lib; {
     description = "Python library for creating Quantum Instruction Language (Quil) programs";
diff --git a/pkgs/development/python-modules/pyqvrpro/default.nix b/pkgs/development/python-modules/pyqvrpro/default.nix
new file mode 100644
index 0000000000000..0e12b339c07c8
--- /dev/null
+++ b/pkgs/development/python-modules/pyqvrpro/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytest-vcr
+, pytestCheckHook
+, pythonOlder
+, pyyaml
+, requests
+, untangle
+}:
+
+buildPythonPackage rec {
+  pname = "pyqvrpro";
+  version = "0.52";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "oblogic7";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-lOd2AqnrkexNqT/usmJts5NW7vJtV8CRsliYgkhgRaU=";
+  };
+
+  propagatedBuildInputs = [
+    pyyaml
+    requests
+    untangle
+  ];
+
+  checkInputs = [
+    pytest-vcr
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "pyqvrpro"
+  ];
+
+  meta = with lib; {
+    description = "Module for interfacing with QVR Pro API";
+    homepage = "https://github.com/oblogic7/pyqvrpro";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyradios/default.nix b/pkgs/development/python-modules/pyradios/default.nix
index f95988063dd23..06d5f9724833b 100644
--- a/pkgs/development/python-modules/pyradios/default.nix
+++ b/pkgs/development/python-modules/pyradios/default.nix
@@ -1,11 +1,21 @@
-{ lib, buildPythonPackage, fetchPypi, appdirs, requests }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, appdirs
+, requests
+, pythonOlder
+}:
+
 buildPythonPackage rec {
   pname = "pyradios";
-  version = "0.0.22";
+  version = "1.0.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1bgfb8vz7jybswss16pdzns0qpqfrwa9f2g8qrh1r4mig4xh2dmi";
+    sha256 = "0fd3b234c635d9e628bdadb9dc3a820405631b54977402719a641d2e1cc3f7b6";
   };
 
   propagatedBuildInputs = [
@@ -13,6 +23,7 @@ buildPythonPackage rec {
     requests
   ];
 
+  # Tests and pythonImportsCheck require network access
   doCheck = false;
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/pyreport/default.nix b/pkgs/development/python-modules/pyreport/default.nix
deleted file mode 100644
index 6b9649699ba38..0000000000000
--- a/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/pkgs/development/python-modules/pyrfxtrx/default.nix b/pkgs/development/python-modules/pyrfxtrx/default.nix
index 6b63ac8f9fe2e..7e1fb8876cb0d 100644
--- a/pkgs/development/python-modules/pyrfxtrx/default.nix
+++ b/pkgs/development/python-modules/pyrfxtrx/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "pyrfxtrx";
-  version = "0.27.0";
+  version = "0.27.1";
 
   src = fetchFromGitHub {
     owner = "Danielhiversen";
     repo = "pyRFXtrx";
     rev = version;
-    sha256 = "0nzgy56b2v3bnn9idlb67qkzj4cj5j9v1436ri1y305fqwjy48nm";
+    hash = "sha256-JBU/ApBumdW87fQqMAopzv+UV0f6VsHMiyNqG7BRLgo=";
   };
 
   propagatedBuildInputs = [
@@ -24,6 +24,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  disabledTestPaths = [
+    # https://github.com/Danielhiversen/pyRFXtrx/issues/130
+    "tests/test_rollertrol.py"
+  ];
+
   meta = with lib; {
     description = "Library to communicate with the RFXtrx family of devices";
     homepage = "https://github.com/Danielhiversen/pyRFXtrx";
diff --git a/pkgs/development/python-modules/pyrmvtransport/default.nix b/pkgs/development/python-modules/pyrmvtransport/default.nix
index b8104ef237079..e76152e218d44 100644
--- a/pkgs/development/python-modules/pyrmvtransport/default.nix
+++ b/pkgs/development/python-modules/pyrmvtransport/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, fetchpatch
 , pythonOlder
 , flit
 , async-timeout
@@ -41,6 +42,15 @@ buildPythonPackage rec {
     pytest-httpx
   ];
 
+  patches = [
+    # Can be removed with next release, https://github.com/cgtobi/PyRMVtransport/pull/55
+    (fetchpatch {
+      name = "update-tests.patch";
+      url = "https://github.com/cgtobi/PyRMVtransport/commit/fe93b3d9d625f9ccf8eb7b0c39e0ff41c72d2e77.patch";
+      sha256 = "sha256-t+GP5VG1S86vVSsisl85ZHBtOqxIi7QS83DA+HgRet4=";
+    })
+  ];
+
   pythonImportsCheck = [
     "RMVtransport"
   ];
diff --git a/pkgs/development/python-modules/pyro4/default.nix b/pkgs/development/python-modules/pyro4/default.nix
index 867e42485975c..96b0e08a56d9c 100644
--- a/pkgs/development/python-modules/pyro4/default.nix
+++ b/pkgs/development/python-modules/pyro4/default.nix
@@ -10,14 +10,16 @@
 }:
 
 buildPythonPackage rec {
-  pname = "Pyro4";
-  version = "4.81";
+  pname = "pyro4";
+  version = "4.82";
+  format = "setuptools";
 
   disabled = isPy27;
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "e130da06478b813173b959f7013d134865e07fbf58cc5f1a2598f99479cdac5f";
+    pname = "Pyro4";
+    inherit version;
+    hash = "sha256-UR9bCATpLdd9wzrfnJR3h+P56cWpaxIWLwVXp8TOIfs=";
   };
 
   propagatedBuildInputs = [
@@ -30,13 +32,18 @@ buildPythonPackage rec {
     msgpack
   ];
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
   # add testsupport.py to PATH
   preCheck = "PYTHONPATH=tests/PyroTests:$PYTHONPATH";
 
-  # ignore network related tests, which fail in sandbox
-  pytestFlagsArray = [ "--ignore=tests/PyroTests/test_naming.py" ];
+
+  pytestFlagsArray = [
+    # ignore network related tests, which fail in sandbox
+    "--ignore=tests/PyroTests/test_naming.py"
+  ];
 
   disabledTests = [
     "StartNSfunc"
@@ -47,6 +54,10 @@ buildPythonPackage rec {
   # otherwise the tests hang the build
   __darwinAllowLocalNetworking = true;
 
+  pythonImportsCheck = [
+    "Pyro4"
+  ];
+
   meta = with lib; {
     description = "Distributed object middleware for Python (RPC)";
     homepage = "https://github.com/irmen/Pyro4";
diff --git a/pkgs/development/python-modules/pyrogram/default.nix b/pkgs/development/python-modules/pyrogram/default.nix
index 6710d3d286e62..dc453e86c702d 100644
--- a/pkgs/development/python-modules/pyrogram/default.nix
+++ b/pkgs/development/python-modules/pyrogram/default.nix
@@ -1,31 +1,32 @@
 { lib
 , buildPythonPackage
 , pythonOlder
-, fetchFromGitHub
+, fetchPypi
 , pyaes
 , pysocks
 , async-lru
+, tgcrypto
 , pytestCheckHook
 , pytest-asyncio
 }:
 
 buildPythonPackage rec {
   pname = "pyrogram";
-  version = "1.2.0";
+  version = "1.4.3";
 
   disabled = pythonOlder "3.6";
 
-  src = fetchFromGitHub {
-    owner = "pyrogram";
-    repo = "pyrogram";
-    rev = "v${version}";
-    sha256 = "0clbnhk1icr4vl29693r6r28f5by5n6pjxjqih21g3yd64q55q3q";
+  src = fetchPypi {
+    pname = "Pyrogram";
+    inherit version;
+    hash = "sha256-5twH9ZfwtP6gi50K8nqXOmCPSFkHO5Hitd7XaDP0EQg=";
   };
 
   propagatedBuildInputs = [
     pyaes
     pysocks
     async-lru
+    tgcrypto
   ];
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/pyroma/2.nix b/pkgs/development/python-modules/pyroma/2.nix
deleted file mode 100644
index 9fee5ec56c0e6..0000000000000
--- a/pkgs/development/python-modules/pyroma/2.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi
-, docutils, pygments, setuptools
-}:
-
-buildPythonPackage rec {
-  pname = "pyroma";
-  version = "2.6.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "2527423e3a24ccd56951f3ce1b0ebbcc4fa0518c82fca882e696c78726ab9c2f";
-  };
-
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "pygments < 2.6" "pygments"
-  '';
-
-  propagatedBuildInputs = [ docutils pygments setuptools ];
-
-  meta = with lib; {
-    description = "Test your project's packaging friendliness";
-    homepage = "https://github.com/regebro/pyroma";
-    license = licenses.mit;
-  };
-}
diff --git a/pkgs/development/python-modules/pysatochip/default.nix b/pkgs/development/python-modules/pysatochip/default.nix
index 81c0d8bda2049..8c1401c2a7ccb 100644
--- a/pkgs/development/python-modules/pysatochip/default.nix
+++ b/pkgs/development/python-modules/pysatochip/default.nix
@@ -12,12 +12,12 @@
 
 buildPythonPackage rec {
   pname = "pysatochip";
-  version = "0.14.1";
+  version = "0.14.2";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "eba800c82ea45e2524c0773a71c36e525d7c18148e6066e336950cef484555f5";
+    sha256 = "sha256-+Z3D6ITZouhLbEotvJ9MDfg6QOhjGVKrLi1QL1kOdkE=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/pysdl2/default.nix b/pkgs/development/python-modules/pysdl2/default.nix
index 10515ed7a6e94..1f1d97f19fa53 100644
--- a/pkgs/development/python-modules/pysdl2/default.nix
+++ b/pkgs/development/python-modules/pysdl2/default.nix
@@ -2,7 +2,7 @@
 
 buildPythonPackage rec {
   pname = "PySDL2";
-  version = "0.9.9";
+  version = "0.9.11";
   # The tests use OpenGL using find_library, which would have to be
   # patched; also they seem to actually open X windows and test stuff
   # like "screensaver disabling", which would have to be cleverly
@@ -11,7 +11,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "45879ae588038d7cf7cb0289ae47af60722b394d0efa527bf4327103dc4dc918";
+    sha256 = "93e51057d39fd583b80001d42b21d5a3f71e30d489d85924d944b2c7350e2da6";
   };
 
   # Deliberately not in propagated build inputs; users can decide
diff --git a/pkgs/development/python-modules/pyshp/default.nix b/pkgs/development/python-modules/pyshp/default.nix
index 3cb56247b5534..fab58a72251f3 100644
--- a/pkgs/development/python-modules/pyshp/default.nix
+++ b/pkgs/development/python-modules/pyshp/default.nix
@@ -2,12 +2,12 @@
 , setuptools }:
 
 buildPythonPackage rec {
-  version = "2.1.3";
+  version = "2.2.0";
   pname = "pyshp";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e32b4a6832a3b97986df442df63b4c4a7dcc846b326c903189530a5cc6df0260";
+    sha256 = "sha256-Dtogm9YvM0VwHE9nmbY4wRTOtn/uKClc3bThyvBT6UQ=";
   };
 
   buildInputs = [ setuptools ];
diff --git a/pkgs/development/python-modules/pysiaalarm/default.nix b/pkgs/development/python-modules/pysiaalarm/default.nix
index 2345529b11851..c06e1ed32ac88 100644
--- a/pkgs/development/python-modules/pysiaalarm/default.nix
+++ b/pkgs/development/python-modules/pysiaalarm/default.nix
@@ -4,7 +4,7 @@
 , fetchPypi
 , dataclasses-json
 , pycryptodome
-, setuptools
+, setuptools-scm
 , pytest-asyncio
 , pytest-cases
 , pytestCheckHook
@@ -28,10 +28,13 @@ buildPythonPackage rec {
       --replace "--cov pysiaalarm --cov-report term-missing" ""
   '';
 
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [
     dataclasses-json
     pycryptodome
-    setuptools
   ];
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/pyside/apiextractor.nix b/pkgs/development/python-modules/pyside/apiextractor.nix
index ab8c6eb784072..058414747440d 100644
--- a/pkgs/development/python-modules/pyside/apiextractor.nix
+++ b/pkgs/development/python-modules/pyside/apiextractor.nix
@@ -1,4 +1,4 @@
-{ 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
@@ -8,9 +8,11 @@ stdenv.mkDerivation rec {
   pname = "pyside-apiextractor";
   version = "0.10.10";
 
-  src = fetchurl {
-    url = "https://github.com/PySide/Apiextractor/archive/${version}.tar.gz";
-    sha256 = "1zj8yrxy08iv1pk38djxw3faimm226w6wmi0gm32w4yczblylwz3";
+  src = fetchFromGitHub {
+    owner = "PySide";
+    repo = "Apiextractor";
+    rev = version;
+    sha256 = "sha256-YH8aYyzv59xiIglZbdNgOPnmEQwNE2GmotAFFfFdMlg=";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/python-modules/pyside/generatorrunner.nix b/pkgs/development/python-modules/pyside/generatorrunner.nix
index 532ee6b2b24e2..f1e002daf4c59 100644
--- a/pkgs/development/python-modules/pyside/generatorrunner.nix
+++ b/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/pkgs/development/python-modules/pysimplegui/default.nix b/pkgs/development/python-modules/pysimplegui/default.nix
index 9542ffe1b3bb3..d645a068d291c 100644
--- a/pkgs/development/python-modules/pysimplegui/default.nix
+++ b/pkgs/development/python-modules/pysimplegui/default.nix
@@ -2,26 +2,34 @@
 , buildPythonPackage
 , fetchPypi
 , tkinter
+, pythonOlder
 }:
+
 buildPythonPackage rec {
-  pname = "PySimpleGUI";
-  version = "4.55.1";
+  pname = "pysimplegui";
+  version = "4.57.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-nUDAoMK0w9Luk1hU5I1yT1CK5oEj9LrIByYS3Z5wfew=";
+    pname = "PySimpleGUI";
+    inherit version;
+    sha256 = "sha256-+Dcrv+esnthI74AFLK47sS2qI4sPvihuQlL54Zo32RM=";
   };
 
-  pythonImportsCheck = [ "PySimpleGUI" ];
-
   propagatedBuildInputs = [
     tkinter
   ];
 
+  pythonImportsCheck = [
+    "PySimpleGUI"
+  ];
+
   meta = with lib; {
-    description = "Python GUIs for Humans.";
+    description = "Python GUIs for Humans";
     homepage = "https://github.com/PySimpleGUI/PySimpleGUI";
-    license = licenses.gpl3;
+    license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ lucasew ];
   };
 }
diff --git a/pkgs/development/python-modules/pyskyqremote/default.nix b/pkgs/development/python-modules/pyskyqremote/default.nix
index 85fc184636904..caaae0b2b52e7 100644
--- a/pkgs/development/python-modules/pyskyqremote/default.nix
+++ b/pkgs/development/python-modules/pyskyqremote/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "pyskyqremote";
-  version = "0.2.54";
+  version = "0.3.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "RogerSelwyn";
     repo = "skyq_remote";
     rev = version;
-    sha256 = "sha256-Z3fcihyK8QHtdREXWt2ESqjwAwxFZFEI9OXf3Y9onmw=";
+    sha256 = "sha256-yPdyO78QdaLPBJQSeUP48uDr0Zhrj9nPxWbhKAMw0ww=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pysma/default.nix b/pkgs/development/python-modules/pysma/default.nix
index cf2325633fbab..81fc1d5709e9a 100644
--- a/pkgs/development/python-modules/pysma/default.nix
+++ b/pkgs/development/python-modules/pysma/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "pysma";
-  version = "0.6.9";
+  version = "0.6.10";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-2ZU3UjDNo+fpnYK4WlYSu7XqkbpcK7Xz5cUKDABhwdk=";
+    sha256 = "990abf6dba3f52b98970fc95aaf484e521faa9ff28c9c19f5a6dca3fddf5840c";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pysml/default.nix b/pkgs/development/python-modules/pysml/default.nix
index 1f08eb14180c1..f7c1e4857c420 100644
--- a/pkgs/development/python-modules/pysml/default.nix
+++ b/pkgs/development/python-modules/pysml/default.nix
@@ -3,20 +3,26 @@
 , bitstring
 , buildPythonPackage
 , fetchFromGitHub
+, poetry-core
 , pyserial-asyncio
 }:
 
 buildPythonPackage rec {
   pname = "pysml";
-  version = "0.0.5";
+  version = "0.0.7";
+  format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "mtdcr";
     repo = pname;
     rev = version;
-    sha256 = "05zgrk49b2y5jflxnjww2kqg1flynl3j4ifm0jr28nk0li5wg2bs";
+    sha256 = "sha256-h8rQOKZozioZ7HmPETC5wBJyz7rMH1Q2wL6lF8G3zQU=";
   };
 
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
   propagatedBuildInputs = [
     async-timeout
     bitstring
diff --git a/pkgs/development/python-modules/pysnooper/default.nix b/pkgs/development/python-modules/pysnooper/default.nix
index b92ba38c9d094..f5675aae8ed8b 100644
--- a/pkgs/development/python-modules/pysnooper/default.nix
+++ b/pkgs/development/python-modules/pysnooper/default.nix
@@ -6,13 +6,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.0.0";
+  version = "1.1.0";
   pname = "pysnooper";
 
   src = fetchPypi {
     inherit version;
     pname = "PySnooper";
-    sha256 = "4804aed962f36db85fefdc33edbd109b96a13153e6ffed82d1e6023b4f483b64";
+    sha256 = "0fa932ad396d2bac089d4b1f94f0ce49cde4140ee64ddd24a4065fadea10fcc9";
   };
 
   # test dependency python-toolbox fails with py27
diff --git a/pkgs/development/python-modules/pyspnego/default.nix b/pkgs/development/python-modules/pyspnego/default.nix
index 8ba191317ea0f..561ec037c0a2a 100644
--- a/pkgs/development/python-modules/pyspnego/default.nix
+++ b/pkgs/development/python-modules/pyspnego/default.nix
@@ -48,7 +48,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python SPNEGO authentication library";
-    homepage = "Python SPNEGO authentication library";
+    homepage = "https://github.com/jborean93/pyspnego";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/pysptk/default.nix b/pkgs/development/python-modules/pysptk/default.nix
index 478595c1bfc59..a6129ea20c94f 100644
--- a/pkgs/development/python-modules/pysptk/default.nix
+++ b/pkgs/development/python-modules/pysptk/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "pysptk";
-  version = "0.1.18";
+  version = "0.1.20";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "34c5ccc40c9e177cfd764daa9f7635c4c1e648e14ce78ba975537dae5a14c4e4";
+    sha256 = "29e8e6a76243f3be728d23450982bd9f916530634079252a490ba7182bef30ca";
   };
 
   PYSPTK_BUILD_VERSION = 0;
diff --git a/pkgs/development/python-modules/pysqlite/default.nix b/pkgs/development/python-modules/pysqlite/default.nix
deleted file mode 100644
index 09cc312223ad2..0000000000000
--- a/pkgs/development/python-modules/pysqlite/default.nix
+++ /dev/null
@@ -1,57 +0,0 @@
-{ lib, stdenv
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, pkgs
-}:
-
-buildPythonPackage rec {
-  pname = "pysqlite";
-  version = "2.8.3";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "17d3335863e8cf8392eea71add33dab3f96d060666fe68ab7382469d307f4490";
-  };
-
-  # Need to use the builtin sqlite3 on Python 3
-  disabled = isPy3k;
-
-  # Since the `.egg' file is zipped, the `NEEDED' of the `.so' files
-  # it contains is not taken into account.  Thus, we must explicitly make
-  # it a propagated input.
-  propagatedBuildInputs = [ pkgs.sqlite ];
-
-  patchPhase = ''
-    substituteInPlace "setup.cfg"                                     \
-            --replace "/usr/local/include" "${pkgs.sqlite.dev}/include"   \
-            --replace "/usr/local/lib" "${pkgs.sqlite.out}/lib"
-    ${lib.optionalString (!stdenv.isDarwin) ''export LDSHARED="$CC -pthread -shared"''}
-  '';
-
-  meta = with lib; {
-    homepage = "https://pysqlite.org/";
-    description = "Python bindings for the SQLite embedded relational database engine";
-    longDescription = ''
-      pysqlite is a DB-API 2.0-compliant database interface for SQLite.
-
-      SQLite is a relational database management system contained in
-      a relatively small C library.  It is a public domain project
-      created by D. Richard Hipp.  Unlike the usual client-server
-      paradigm, the SQLite engine is not a standalone process with
-      which the program communicates, but is linked in and thus
-      becomes an integral part of the program.  The library
-      implements most of SQL-92 standard, including transactions,
-      triggers and most of complex queries.
-
-      pysqlite makes this powerful embedded SQL engine available to
-      Python programmers.  It stays compatible with the Python
-      database API specification 2.0 as much as possible, but also
-      exposes most of SQLite's native API, so that it is for example
-      possible to create user-defined SQL functions and aggregates
-      in Python.
-    '';
-    license = licenses.bsd3;
-  };
-
-}
diff --git a/pkgs/development/python-modules/pystray/default.nix b/pkgs/development/python-modules/pystray/default.nix
index 7b394a21b5203..c3cf0a9841fa0 100644
--- a/pkgs/development/python-modules/pystray/default.nix
+++ b/pkgs/development/python-modules/pystray/default.nix
@@ -3,13 +3,13 @@
 
 buildPythonPackage rec {
   pname = "pystray";
-  version = "0.19.1";
+  version = "0.19.2";
 
   src = fetchFromGitHub {
     owner = "moses-palmer";
     repo = "pystray";
     rev = "v${version}";
-    sha256 = "sha256-7w3odneRfDQ7K965ffJ+xSaGvg/KM0vTrSIj0ee13Uk=";
+    sha256 = "sha256-8B178MSe4ujlnGBmQhIu+BoAh1doP9V5cL0ermLQTvs=";
   };
 
   nativeBuildInputs = [ sphinx ];
diff --git a/pkgs/development/python-modules/pyswitchbot/default.nix b/pkgs/development/python-modules/pyswitchbot/default.nix
index a51f15f5eeb70..96037d5128389 100644
--- a/pkgs/development/python-modules/pyswitchbot/default.nix
+++ b/pkgs/development/python-modules/pyswitchbot/default.nix
@@ -6,14 +6,14 @@
 
 buildPythonPackage rec {
   pname = "pyswitchbot";
-  version = "0.13.0";
+  version = "0.13.2";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "Danielhiversen";
     repo = "pySwitchbot";
     rev = version;
-    sha256 = "sha256-dx3OMzWJohOYCg7TnrqL4FLZoC+Q1dyJyUAdreDyfl0=";
+    sha256 = "0pdmssd5dr364p3lrkxqryjc0rbaw6xp724zwqf3i87qs6ljs928";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pytap2/default.nix b/pkgs/development/python-modules/pytap2/default.nix
new file mode 100644
index 0000000000000..3823f0270381a
--- /dev/null
+++ b/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/pkgs/development/python-modules/pytenable/default.nix b/pkgs/development/python-modules/pytenable/default.nix
index af3c2c9b6514f..e4417139bfa34 100644
--- a/pkgs/development/python-modules/pytenable/default.nix
+++ b/pkgs/development/python-modules/pytenable/default.nix
@@ -9,6 +9,7 @@
 , pytestCheckHook
 , python-box
 , python-dateutil
+, pythonOlder
 , requests
 , requests-pkcs12
 , responses
@@ -19,13 +20,16 @@
 
 buildPythonPackage rec {
   pname = "pytenable";
-  version = "1.4.2";
+  version = "1.4.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "tenable";
     repo = "pyTenable";
     rev = version;
-    sha256 = "sha256-qljoJ+nYFVS5VHr/M4mITtO9Czuyb4HLzVjhprhyJIs=";
+    hash = "sha256-p9d3wZkOMhNQWJN6tCNUlW15A3irU8QN/nm7PLGTE/M=";
   };
 
   propagatedBuildInputs = [
@@ -59,7 +63,9 @@ buildPythonPackage rec {
     "test_uploads_docker_push_cs_tag_typeerror"
   ];
 
-  pythonImportsCheck = [ "tenable" ];
+  pythonImportsCheck = [
+    "tenable"
+  ];
 
   meta = with lib; {
     description = "Python library for the Tenable.io and TenableSC API";
diff --git a/pkgs/development/python-modules/pytest-annotate/default.nix b/pkgs/development/python-modules/pytest-annotate/default.nix
index 7936d6e4ac2d4..1b06dad829d9d 100644
--- a/pkgs/development/python-modules/pytest-annotate/default.nix
+++ b/pkgs/development/python-modules/pytest-annotate/default.nix
@@ -6,8 +6,9 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.0.4";
   pname = "pytest-annotate";
+  version = "1.0.4";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
@@ -22,19 +23,17 @@ buildPythonPackage rec {
     pyannotate
   ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "pytest>=3.2.0,<4.0.0" "pytest"
-  '';
-
-  # no testing in a testing module...
+  # Module has no tests
   doCheck = false;
 
+  pythonImportsCheck = [
+    "pytest_annotate"
+  ];
+
   meta = with lib; {
-    broken = true; # unmaintained and incompatible with pytest>=6.0
-    homepage = "https://github.com/kensho-technologies/pytest-annotate";
     description = "Generate PyAnnotate annotations from your pytest tests";
+    homepage = "https://github.com/kensho-technologies/pytest-annotate";
     license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-arraydiff/default.nix b/pkgs/development/python-modules/pytest-arraydiff/default.nix
index bfbec757b1d70..95e22510d8a05 100644
--- a/pkgs/development/python-modules/pytest-arraydiff/default.nix
+++ b/pkgs/development/python-modules/pytest-arraydiff/default.nix
@@ -2,35 +2,48 @@
 , buildPythonPackage
 , fetchPypi
 , numpy
-, six
 , pytest
+, pythonOlder
+, setuptools-scm
 }:
 
 buildPythonPackage rec {
   pname = "pytest-arraydiff";
-  version = "0.3";
+  version = "0.5.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "de2d62f53ecc107ed754d70d562adfa7573677a263216a7f19aa332f20dc6c15";
+    sha256 = "714149beffd0dfa085477c65791c1139b619602b049536353ce1a91397fb3bd2";
   };
 
-  buildInputs = [ pytest ];
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  buildInputs = [
+    pytest
+  ];
 
   propagatedBuildInputs = [
     numpy
-    six
   ];
 
-  # The tests requires astropy, which itself requires
-  # pytest-arraydiff. This causes an infinite recursion if the tests
-  # are enabled.
+  # The tests requires astropy, which itself requires pytest-arraydiff
   doCheck = false;
 
+  pythonImportsCheck = [
+    "pytest_arraydiff"
+  ];
+
   meta = with lib; {
     description = "Pytest plugin to help with comparing array output from tests";
     homepage = "https://github.com/astrofrog/pytest-arraydiff";
     license = licenses.bsd3;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-asyncio/default.nix b/pkgs/development/python-modules/pytest-asyncio/default.nix
index 9e09724624c2c..6401e1ce2c9be 100644
--- a/pkgs/development/python-modules/pytest-asyncio/default.nix
+++ b/pkgs/development/python-modules/pytest-asyncio/default.nix
@@ -1,29 +1,52 @@
-{ lib, buildPythonPackage, fetchPypi, pytest, isPy3k, isPy35, async_generator }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, flaky
+, hypothesis
+, pytest
+, pytestCheckHook
+, pythonOlder
+, setuptools-scm
+}:
+
 buildPythonPackage rec {
   pname = "pytest-asyncio";
-  version = "0.16.0";
+  version = "0.17.2";
+  format = "setuptools";
 
-  disabled = !isPy3k;
+  disabled = pythonOlder "3.6";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "7496c5977ce88c34379df64a66459fe395cd05543f0a2f837016e7144391fcfb";
+  src = fetchFromGitHub {
+    owner = "pytest-dev";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-4wDXvO6pDK0dQLnyfJTTa+GXf9Qtsi6ywYDUIdhkgGo=";
   };
 
-  buildInputs = [ pytest ]
-    ++ lib.optionals isPy35 [ async_generator ];
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    pytest
+  ];
 
-  # No tests in archive
-  doCheck = false;
+  checkInputs = [
+    flaky
+    hypothesis
+    pytestCheckHook
+  ];
 
-  # LICENSE file is not distributed. https://github.com/pytest-dev/pytest-asyncio/issues/92
-  postPatch = ''
-    substituteInPlace setup.cfg --replace "license_file = LICENSE" ""
-  '';
+  pythonImportsCheck = [
+    "pytest_asyncio"
+  ];
 
   meta = with lib; {
     description = "library for testing asyncio code with pytest";
-    license = licenses.asl20;
     homepage = "https://github.com/pytest-dev/pytest-asyncio";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-bdd/default.nix b/pkgs/development/python-modules/pytest-bdd/default.nix
index b087cd6f45980..6ca95bca4c0b4 100644
--- a/pkgs/development/python-modules/pytest-bdd/default.nix
+++ b/pkgs/development/python-modules/pytest-bdd/default.nix
@@ -1,4 +1,6 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
 , execnet
 , glob2
 , Mako
@@ -8,41 +10,51 @@
 , py
 , pytest
 , pytestCheckHook
-, six
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pytest-bdd";
-  version = "4.0.2";
+  version = "5.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
-  # tests are not included in pypi tarball
   src = fetchFromGitHub {
     owner = "pytest-dev";
     repo = pname;
     rev = version;
-    sha256 = "0pxx4c8lm68rw0jshbr09fnadg8zz8j73q0qi49yw9s7yw86bg5l";
+    sha256 = "sha256-3P9ongMAsLITOCRPmME492xnkdVc8IdOVrINK57gfOY=";
   };
 
-  patches = [
-    # Fixed compatibility with pytest > 6.1
-    (fetchpatch {
-      url = "https://github.com/pytest-dev/pytest-bdd/commit/e1dc0cad9a1c1ba563ccfbc24f9993d83ac59293.patch";
-      sha256 = "1p3gavh6nir2a8crd5wdf0prfrg0hmgar9slvn8a21ils3k5pm5y";
-    })
+  buildInputs = [
+    pytest
   ];
 
+  propagatedBuildInputs = [
+    glob2
+    Mako
+    parse
+    parse-type
+    py
+  ];
 
-  buildInputs = [ pytest ];
-
-  propagatedBuildInputs = [ glob2 Mako parse parse-type py six ];
+  checkInputs = [
+    pytestCheckHook
+    execnet
+    mock
+  ];
 
-  checkInputs = [ pytestCheckHook execnet mock ];
   preCheck = ''
     export PATH=$PATH:$out/bin
   '';
 
+  pythonImportsCheck = [
+    "pytest_bdd"
+  ];
+
   meta = with lib; {
-    description = "BDD library for the py.test runner";
+    description = "BDD library for the pytest";
     homepage = "https://github.com/pytest-dev/pytest-bdd";
     license = licenses.mit;
     maintainers = with maintainers; [ jm2dev ];
diff --git a/pkgs/development/python-modules/pytest-benchmark/default.nix b/pkgs/development/python-modules/pytest-benchmark/default.nix
index b84b42e351dbe..b9def8d834afa 100644
--- a/pkgs/development/python-modules/pytest-benchmark/default.nix
+++ b/pkgs/development/python-modules/pytest-benchmark/default.nix
@@ -1,32 +1,47 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, pytest
+, pathlib
 , py-cpuinfo
+, pytest
 , pythonOlder
-, pathlib
 , statistics
 }:
 
 buildPythonPackage rec {
   pname = "pytest-benchmark";
-  version = "3.2.2";
+  version = "3.4.1";
+  format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "ionelmc";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1hslzzinpwc1zqhbpllqh3sllmiyk69pcycl7ahr0rz3micgwczj";
+    sha256 = "sha256-qc/8Epax5bPUZvhq42xSj6NUq0T4gbO5dDDS6omWBOU=";
   };
 
-  buildInputs = [ pytest ];
+  buildInputs = [
+    pytest
+  ];
+
+  propagatedBuildInputs = [
+    py-cpuinfo
+  ] ++ lib.optionals (pythonOlder "3.4") [
+    pathlib
+    statistics
+  ];
+
+  # Circular dependency
+  doCheck = false;
 
-  propagatedBuildInputs = [ py-cpuinfo ] ++ lib.optionals (pythonOlder "3.4") [ pathlib statistics ];
+  pythonImportsCheck = [
+    "pytest_benchmark"
+  ];
 
-  meta = {
-    description = "Py.test fixture for benchmarking code";
+  meta = with lib; {
+    description = "Pytest fixture for benchmarking code";
     homepage = "https://github.com/ionelmc/pytest-benchmark";
-    license = lib.licenses.bsd2;
-    maintainers = with lib.maintainers; [ costrouc ];
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-cases/default.nix b/pkgs/development/python-modules/pytest-cases/default.nix
index 47f5bbb1fd0b2..766e07543879e 100644
--- a/pkgs/development/python-modules/pytest-cases/default.nix
+++ b/pkgs/development/python-modules/pytest-cases/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "pytest-cases";
-  version = "3.6.5";
+  version = "3.6.9";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-JZfQI6dgYFHWUbCMuHD78eBi9svoV5zkX887V9xFLNw=";
+    sha256 = "sha256-Bf9favhlHcGj8nf1JxTkMjpo8hMyfBHgMCilOcIL2Sk=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/pytest-celery/default.nix b/pkgs/development/python-modules/pytest-celery/default.nix
index 77de2d9698ba8..9efd9f49f2b4e 100644
--- a/pkgs/development/python-modules/pytest-celery/default.nix
+++ b/pkgs/development/python-modules/pytest-celery/default.nix
@@ -1,21 +1,30 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{ lib, buildPythonPackage, fetchFromGitHub }:
 
 buildPythonPackage rec {
   pname = "pytest-celery";
-  version = "0.0.0";
+  version = "0.1.0";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "cfd060fc32676afa1e4f51b2938f903f7f75d952186b8c6cf631628c4088f406";
+  format = "flit";
+
+  src = fetchFromGitHub {
+    owner = "celery";
+    repo = "pytest-celery";
+    rev = "v${version}";
+    sha256 = "sha256-vzWwkOS3BLOInaFDk+PegvEmC88ZZ1sG1CmHwhn7r9w=";
   };
 
-  patches = [ ./no-celery.patch ];
+  postPatch = ''
+    # avoid infinite recursion with celery
+    substituteInPlace pyproject.toml \
+      --replace '"celery >= 4.4.0"' ""
+  '';
 
-  doCheck = false; # This package has nothing to test or import.
+  # This package has nothing to test or import.
+  doCheck = false;
 
   meta = with lib; {
-    description = "pytest plugin for unittest subTest() support and subtests fixture";
-    homepage = "https://github.com/pytest-dev/pytest-subtests";
+    description = "Pytest plugin to enable celery.contrib.pytest";
+    homepage = "https://github.com/celery/pytest-celery";
     license = licenses.mit;
     maintainers = [ ];
   };
diff --git a/pkgs/development/python-modules/pytest-celery/no-celery.patch b/pkgs/development/python-modules/pytest-celery/no-celery.patch
deleted file mode 100644
index 65337489883ce..0000000000000
--- a/pkgs/development/python-modules/pytest-celery/no-celery.patch
+++ /dev/null
@@ -1,9 +0,0 @@
-This plugin is needed to test celery itself, so it can't depend on celery.
-
---- a/setup.py
-+++ b/setup.py
-@@ -6,3 +6,3 @@ from distutils.core import setup
- install_requires = \
--['celery >= 4.4.0']
-+[]
- 
diff --git a/pkgs/development/python-modules/pytest-check/default.nix b/pkgs/development/python-modules/pytest-check/default.nix
index a772954587331..3498b9f8ab945 100644
--- a/pkgs/development/python-modules/pytest-check/default.nix
+++ b/pkgs/development/python-modules/pytest-check/default.nix
@@ -7,12 +7,13 @@
 
 buildPythonPackage rec {
   pname = "pytest-check";
-  version = "1.0.1";
+  version = "1.0.4";
+  format = "flit";
 
   src = fetchPypi {
     pname = "pytest_check";
     inherit version;
-    sha256 = "1i01i5ab06ic11na13gcacrlcs2ab6rmaii0yz0x06z5ynnljn6s";
+    sha256 = "c93eee5a98bcd28634a4ec657ab62c46d25fa384300811e5a925d9c4d98b9540";
   };
 
   buildInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/pytest-click/default.nix b/pkgs/development/python-modules/pytest-click/default.nix
index 887fe7fe7b591..82e6409c9b7f3 100644
--- a/pkgs/development/python-modules/pytest-click/default.nix
+++ b/pkgs/development/python-modules/pytest-click/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "pytest-click";
-  version = "1.0.2";
+  version = "1.1.0";
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "Stranger6667";
     repo = "pytest-click";
     rev = "v${version}";
-    sha256 = "197nvlqlyfrqpy5lrkmfh1ywpr6j9zipxl9d7syg2a2n7jz3a8rj";
+    sha256 = "sha256-A/RF+SgPu2yYF3eHEFiZwKJW2VwQ185Ln6S3wn2cS0k=";
   };
 
   buildInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/pytest-console-scripts/default.nix b/pkgs/development/python-modules/pytest-console-scripts/default.nix
index 3005c26f77b50..609ed9cc343e6 100644
--- a/pkgs/development/python-modules/pytest-console-scripts/default.nix
+++ b/pkgs/development/python-modules/pytest-console-scripts/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "pytest-console-scripts";
-  version = "1.2.1";
+  version = "1.2.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c7f258025110f1337c23499c2f6674b873d4adba2438be55895edf01451c5ce3";
+    sha256 = "caeaaaf57f3a99e4482127e8a18467a1cfd49c92f4b37e5578d0bc40bf1b3394";
   };
   postPatch = ''
     # setuptools-scm is pinned to <6 because it dropped Python 3.5
diff --git a/pkgs/development/python-modules/pytest-cov/default.nix b/pkgs/development/python-modules/pytest-cov/default.nix
index 87f5972a747dc..971b12dc01c7f 100644
--- a/pkgs/development/python-modules/pytest-cov/default.nix
+++ b/pkgs/development/python-modules/pytest-cov/default.nix
@@ -4,20 +4,21 @@
 , pytest
 , coverage
 , toml
+, tomli
 }:
 
 buildPythonPackage rec {
   pname = "pytest-cov";
-  version = "2.12.1";
+  version = "3.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1mzl06m8qcgsac1r2krixrkqdwq0nqk8asrpkcj2ddr7qawfw716";
+    sha256 = "e7f0f5b1617d2210a2cabc266dfe2f4c75a8d32fb89eafb7ad9d06f6d076d470";
   };
 
   buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [ coverage toml ];
+  propagatedBuildInputs = [ coverage toml tomli ];
 
   # xdist related tests fail with the following error
   # OSError: [Errno 13] Permission denied: 'py/_code'
diff --git a/pkgs/development/python-modules/pytest-django/default.nix b/pkgs/development/python-modules/pytest-django/default.nix
index 47cc882f548ec..c4668def279e5 100644
--- a/pkgs/development/python-modules/pytest-django/default.nix
+++ b/pkgs/development/python-modules/pytest-django/default.nix
@@ -10,11 +10,11 @@
 }:
 buildPythonPackage rec {
   pname = "pytest-django";
-  version = "4.4.0";
+  version = "4.5.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b5171e3798bf7e3fc5ea7072fe87324db67a4dd9f1192b037fed4cc3c1b7f455";
+    sha256 = "d9076f759bb7c36939dbdd5ae6633c18edfc2902d1a69fdbefd2426b970ce6c2";
   };
 
   nativeBuildInputs = [ pytest setuptools-scm ];
diff --git a/pkgs/development/python-modules/pytest-doctestplus/default.nix b/pkgs/development/python-modules/pytest-doctestplus/default.nix
index c49d76705f797..5752bca4f66ff 100644
--- a/pkgs/development/python-modules/pytest-doctestplus/default.nix
+++ b/pkgs/development/python-modules/pytest-doctestplus/default.nix
@@ -1,16 +1,19 @@
 { lib
 , buildPythonPackage
+, fetchpatch
 , fetchPypi
-, pythonOlder
 , packaging
 , pytest
 , pytestCheckHook
+, pythonOlder
 , setuptools-scm
 }:
 
 buildPythonPackage rec {
   pname = "pytest-doctestplus";
   version = "0.11.2";
+  format = "setuptools";
+
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
@@ -34,6 +37,15 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  patches = [
+    # Removal of distutils, https://github.com/astropy/pytest-doctestplus/pull/172
+    (fetchpatch {
+      name = "distutils-removal.patch";
+      url = "https://github.com/astropy/pytest-doctestplus/commit/ae2ee14cca0cde0fab355936995fa083529b00ff.patch";
+      sha256 = "sha256-uryKV7bWw2oz0glyh2lpGqtDPFvRTo8RmI1N1n15/d4=";
+    })
+  ];
+
   disabledTests = [
     # ERROR: usage: __main__.py [options] [file_or_dir] [file_or_dir] [...]
     # __main__.py: error: unrecognized arguments: --remote-data
@@ -49,6 +61,6 @@ buildPythonPackage rec {
     description = "Pytest plugin with advanced doctest features";
     homepage = "https://astropy.org";
     license = licenses.bsd3;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-forked/default.nix b/pkgs/development/python-modules/pytest-forked/default.nix
index cbba86641c131..594a5efaa8943 100644
--- a/pkgs/development/python-modules/pytest-forked/default.nix
+++ b/pkgs/development/python-modules/pytest-forked/default.nix
@@ -1,5 +1,6 @@
 { lib
 , buildPythonPackage
+, pythonOlder
 , fetchPypi
 , setuptools-scm
 , py
@@ -9,11 +10,13 @@
 
 buildPythonPackage rec {
   pname = "pytest-forked";
-  version = "1.3.0";
+  version = "1.4.0";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6aa9ac7e00ad1a539c41bec6d21011332de671e938c7637378ec9710204e37ca";
+    sha256 = "sha256-i2dYfI+Yy7rf3YBFOe1UVbbtA4AiA0hd0vU8FCLXRA4=";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/pytest-helpers-namespace/default.nix b/pkgs/development/python-modules/pytest-helpers-namespace/default.nix
index eac8cf6377d11..f7d6ce3126400 100644
--- a/pkgs/development/python-modules/pytest-helpers-namespace/default.nix
+++ b/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/pkgs/development/python-modules/pytest-httpbin/default.nix b/pkgs/development/python-modules/pytest-httpbin/default.nix
index 836da1e157ffa..0069eb6f179ec 100644
--- a/pkgs/development/python-modules/pytest-httpbin/default.nix
+++ b/pkgs/development/python-modules/pytest-httpbin/default.nix
@@ -1,35 +1,46 @@
-{ buildPythonPackage
-, lib
-, fetchPypi
-, pytest
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
 , httpbin
+, pytest
+, pytestCheckHook
+, requests
 , six
 }:
 
 buildPythonPackage rec {
   pname = "pytest-httpbin";
-  version = "1.0.0";
+  version = "1.0.1";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0wlvw5qgkax7f0i5ks1562s37h2hdmn5yxnp1rajcc2289zm9knq";
+  src = fetchFromGitHub {
+    owner = "kevin1024";
+    repo = "pytest-httpbin";
+    rev = "v${version}";
+    hash = "sha256-Vngd8Vum96+rdG8Nz1+aHrO6WZjiAz+0CeIovaH8N+s=";
   };
 
-  checkInputs = [ pytest ];
+  buildInputs = [
+    pytest
+  ];
 
-  propagatedBuildInputs = [ httpbin six ];
+  propagatedBuildInputs = [
+    httpbin
+    six
+  ];
 
-  checkPhase = ''
-    py.test
-  '';
+  checkInputs = [
+    pytestCheckHook
+    requests
+  ];
 
-  # https://github.com/kevin1024/pytest-httpbin/pull/51
-  doCheck = false;
+  pythonImportsCheck = [
+    "pytest_httpbin"
+  ];
 
-  meta = {
-    description = "Easily test your HTTP library against a local copy of httpbin.org";
+  meta = with lib; {
+    description = "Test your HTTP library against a local copy of httpbin.org";
     homepage = "https://github.com/kevin1024/pytest-httpbin";
-    license = lib.licenses.mit;
+    license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
-
diff --git a/pkgs/development/python-modules/pytest-httpserver/default.nix b/pkgs/development/python-modules/pytest-httpserver/default.nix
index cd07a104038c6..eb04881455d7e 100644
--- a/pkgs/development/python-modules/pytest-httpserver/default.nix
+++ b/pkgs/development/python-modules/pytest-httpserver/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "pytest-httpserver";
-  version = "1.0.3";
+  version = "1.0.4";
 
   src = fetchPypi {
     pname = "pytest_httpserver";
     inherit version;
-    sha256 = "87561c4fa6a7bc306d76d1979a3eb9d54eb26bfb2f3f51f1643bf3c090ce629d";
+    sha256 = "6de464ba5f74628d6182ebbdcb56783edf2c9b0caf598dc35c11f014f24a3f0d";
   };
 
   propagatedBuildInputs = [ werkzeug ];
diff --git a/pkgs/development/python-modules/pytest-httpx/default.nix b/pkgs/development/python-modules/pytest-httpx/default.nix
index 819c0a14832f5..9536325ade513 100644
--- a/pkgs/development/python-modules/pytest-httpx/default.nix
+++ b/pkgs/development/python-modules/pytest-httpx/default.nix
@@ -5,20 +5,26 @@
 , pytest
 , pytest-asyncio
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pytest-httpx";
-  version = "0.15.0";
+  version = "0.17.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "Colin-b";
     repo = "pytest_httpx";
     rev = "v${version}";
-    sha256 = "08dxvjkxlnam3r0yp17495d1vksyawzzkpykacjql1gi6hqlfrwg";
+    sha256 = "sha256-cJRzjNIN9Fc8vcjmndW+akjxDSp+wFahY2MEslgXIwM=";
   };
 
-  buildInputs = [ pytest ];
+  buildInputs = [
+    pytest
+  ];
 
   propagatedBuildInputs = [
     httpx
@@ -29,12 +35,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "pytest_httpx" ];
+  pythonImportsCheck = [
+    "pytest_httpx"
+  ];
 
   meta = with lib; {
     description = "Send responses to httpx";
     homepage = "https://github.com/Colin-b/pytest_httpx";
     license = licenses.mit;
-    maintainers = with maintainers; [ SuperSandro2000 ];
+    maintainers = with maintainers; [ fab SuperSandro2000 ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-localserver/default.nix b/pkgs/development/python-modules/pytest-localserver/default.nix
index a3f57ff40e7a3..e3823c18d8953 100644
--- a/pkgs/development/python-modules/pytest-localserver/default.nix
+++ b/pkgs/development/python-modules/pytest-localserver/default.nix
@@ -1,29 +1,34 @@
-{ buildPythonPackage
-, lib
+{ lib
+, buildPythonPackage
 , fetchPypi
 , werkzeug
 }:
 
 buildPythonPackage rec {
   pname = "pytest-localserver";
-  version = "0.5.1";
+  version = "0.5.1.post0";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ef6f04193dc0f7e8df5b27b3a8834318fa12eaf025436d2a99afff1b73cde761";
+    sha256 = "5ec7f8e6534cf03887af2cb59e577f169ac0e8b2fd2c3e3409280035f386d407";
   };
 
-  propagatedBuildInputs = [ werkzeug ];
+  propagatedBuildInputs = [
+    werkzeug
+  ];
 
   # all tests access network: does not work in sandbox
   doCheck = false;
-  pythonImportsCheck = [ "pytest_localserver" ];
+
+  pythonImportsCheck = [
+    "pytest_localserver"
+  ];
 
   meta = with lib; {
     description = "Plugin for the pytest testing framework to test server connections locally";
-    homepage = "https://pypi.python.org/pypi/pytest-localserver";
+    homepage = "https://github.com/pytest-dev/pytest-localserver";
     license = licenses.mit;
     maintainers = with maintainers; [ siriobalmelli ];
   };
 }
-
diff --git a/pkgs/development/python-modules/platformdirs/2.nix b/pkgs/development/python-modules/pytest-logdog/default.nix
index 6fe2bcbde60a6..c626a1cfac9e3 100644
--- a/pkgs/development/python-modules/platformdirs/2.nix
+++ b/pkgs/development/python-modules/pytest-logdog/default.nix
@@ -1,23 +1,24 @@
 { lib
-, appdirs
 , buildPythonPackage
 , fetchFromGitHub
-, platformdirs
-, pytest-mock
+, pytest
 , pytestCheckHook
 , pythonOlder
 , setuptools-scm
 }:
 
 buildPythonPackage rec {
-  pname = "platformdirs";
-  version = "2.0.2";
+  pname = "pytest-logdog";
+  version = "0.1.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
-    owner = pname;
+    owner = "ods";
     repo = pname;
     rev = version;
-    sha256 = "sha256-yCvfOPuX9hbQO9gbFHfeu+dGH+Vb9FM7wng1XU2D8hE=";
+    hash = "sha256-Tmoq+KAGzn0MMj29rukDfAc4LSIwC8DoMTuBAppV32I=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
@@ -26,17 +27,22 @@ buildPythonPackage rec {
     setuptools-scm
   ];
 
+  buildInputs = [
+    pytest
+  ];
+
+
   checkInputs = [
-    appdirs
-    pytest-mock
     pytestCheckHook
   ];
 
- pythonImportsCheck = [ "platformdirs" ];
+  pythonImportsCheck = [
+    "pytest_logdog"
+  ];
 
   meta = with lib; {
-    description = "Python module for determining appropriate platform-specific directories";
-    homepage = "https://platformdirs.readthedocs.io/";
+    description = "Pytest plugin to test logging";
+    homepage = "https://github.com/ods/pytest-logdog";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/pytest-mock/2.nix b/pkgs/development/python-modules/pytest-mock/2.nix
deleted file mode 100644
index 3ccaa7481d7de..0000000000000
--- a/pkgs/development/python-modules/pytest-mock/2.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, 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/pkgs/development/python-modules/pytest-mock/default.nix b/pkgs/development/python-modules/pytest-mock/default.nix
index a8127e276f452..7f07ed2b6dd13 100644
--- a/pkgs/development/python-modules/pytest-mock/default.nix
+++ b/pkgs/development/python-modules/pytest-mock/default.nix
@@ -22,6 +22,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  disabledTests = [
+    # output of pytest has changed
+    "test_used_with_"
+    "test_plain_stopall"
+  ];
+
   pythonImportsCheck = [ "pytest_mock" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/pytest-mypy-plugins/default.nix b/pkgs/development/python-modules/pytest-mypy-plugins/default.nix
new file mode 100644
index 0000000000000..806c12c0e4ffb
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-mypy-plugins/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, buildPythonPackage
+, chevron
+, decorator
+, fetchFromGitHub
+, mypy
+, pytest
+, pytestCheckHook
+, pythonOlder
+, pyyaml
+, regex
+}:
+
+buildPythonPackage rec {
+  pname = "pytest-mypy-plugins";
+  version = "1.9.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "typeddjango";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-4hG3atahb+dH2dRGAxguJW3vvEf0TUGUJ3G5ymrf3Vg=";
+  };
+
+  buildInputs = [
+    pytest
+  ];
+
+  propagatedBuildInputs = [
+    chevron
+    pyyaml
+    mypy
+    decorator
+    regex
+  ];
+
+  checkInputs = [
+    mypy
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    export PATH="$PATH:$out/bin";
+  '';
+
+  pythonImportsCheck = [
+    "pytest_mypy_plugins"
+  ];
+
+  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/pkgs/development/python-modules/pytest-order/default.nix b/pkgs/development/python-modules/pytest-order/default.nix
index a49c958c3fcc8..e40e0671bc039 100644
--- a/pkgs/development/python-modules/pytest-order/default.nix
+++ b/pkgs/development/python-modules/pytest-order/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "pytest-order";
-  version = "1.0.0";
+  version = "1.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-WZeiYrMSNO67Rh+anvJGh79zICm0mYRaQ5i2nttawyE=";
+    sha256 = "sha256-Xda5KfvX6qbQ7gdYb2XGI7q7Cv5ytIQ8XxUFXWs7Gx8=";
   };
 
   buildInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/pytest-pythonpath/default.nix b/pkgs/development/python-modules/pytest-pythonpath/default.nix
index 117471aa8df1d..8c3fb48b430e6 100644
--- a/pkgs/development/python-modules/pytest-pythonpath/default.nix
+++ b/pkgs/development/python-modules/pytest-pythonpath/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pytest-pythonpath";
-  version = "0.7.3";
+  version = "0.7.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0qhxh0z2b3p52v3i0za9mrmjnb1nlvvyi2g23rf88b3xrrm59z33";
+    sha256 = "sha256-ZOGVsjqPjAxjH7Fogtmtb6QTftHylh3dFdUgZc1DXbY=";
   };
 
   buildInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/pytest-raisin/default.nix b/pkgs/development/python-modules/pytest-raisin/default.nix
index 7412928062d76..1dc250da2ac71 100644
--- a/pkgs/development/python-modules/pytest-raisin/default.nix
+++ b/pkgs/development/python-modules/pytest-raisin/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "pytest-raisin";
-  version = "0.3";
+  version = "0.4";
   format = "flit";
 
   src = fetchFromGitHub {
     owner = "wimglenn";
     repo = "pytest-raisin";
     rev = "v${version}";
-    sha256 = "73cOrsqlE04m6X3a6VwtRzfi24oqkdO3HjKQH61bU88=";
+    sha256 = "sha256-BI0SWy671DYDTPH4iO811ku6SzpH4ho7eQFUA8PmxW8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/pytest-randomly/default.nix b/pkgs/development/python-modules/pytest-randomly/default.nix
index 734e0e64b31df..5aae59bc605fc 100644
--- a/pkgs/development/python-modules/pytest-randomly/default.nix
+++ b/pkgs/development/python-modules/pytest-randomly/default.nix
@@ -1,20 +1,27 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder
-, factory_boy, faker, numpy, importlib-metadata
-, pytestCheckHook, pytest-xdist
+{ lib
+, buildPythonPackage
+, factory_boy
+, faker
+, fetchFromGitHub
+, importlib-metadata
+, numpy
+, pytest-xdist
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pytest-randomly";
-  version = "3.10.1";
+  version = "3.11.0";
+  format = "setuptools";
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
-  # fetch from GitHub as pypi tarball doesn't include tests
   src = fetchFromGitHub {
     repo = pname;
     owner = "pytest-dev";
     rev = version;
-    sha256 = "10z7hsr8yd80sf5113i61p0g1c0nqkx7p4xi19v3d133f6vjbh3k";
+    hash = "sha256-NoYpMpFWz52Z0+KIUumUFp3xMPA1jGw8COojU+bsgHc=";
   };
 
   propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [
@@ -22,19 +29,27 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    pytestCheckHook
-    pytest-xdist
-    numpy
     factory_boy
     faker
+    numpy
+    pytest-xdist
+    pytestCheckHook
   ];
+
   # needs special invocation, copied from tox.ini
-  pytestFlagsArray = [ "-p" "no:randomly" ];
+  pytestFlagsArray = [
+    "-p"
+    "no:randomly"
+  ];
+
+  pythonImportsCheck = [
+    "pytest_randomly"
+  ];
 
   meta = with lib; {
     description = "Pytest plugin to randomly order tests and control random.seed";
     homepage = "https://github.com/pytest-dev/pytest-randomly";
-    license = licenses.bsd3;
-    maintainers = [ maintainers.sternenseemann ];
+    license = licenses.mit;
+    maintainers = with maintainers; [ sternenseemann ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-regressions/default.nix b/pkgs/development/python-modules/pytest-regressions/default.nix
index 90b72c886eac7..6866df7b71258 100644
--- a/pkgs/development/python-modules/pytest-regressions/default.nix
+++ b/pkgs/development/python-modules/pytest-regressions/default.nix
@@ -1,6 +1,5 @@
 { lib
 , buildPythonPackage
-, fetchpatch
 , fetchPypi
 , pythonOlder
 , matplotlib
@@ -16,33 +15,44 @@
 
 buildPythonPackage rec {
   pname = "pytest-regressions";
-  version = "2.2.0";
+  version = "2.3.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "15a71f77cb266dd4ca94331abe4c339ad056b2b2175e47442711c98cf6d65716";
+    sha256 = "sha256-STWtZzbvhQ0NsSvl7jh0CjmYjmtRA/LTUQAAaze5Tg4=";
   };
 
-  patches = [
-    # Make pytest-regressions compatible with NumPy 1.20.
-    # Should be part of the next release.
-    (fetchpatch {
-      url = "https://github.com/ESSS/pytest-regressions/commit/ffad2c7fd1d110f420f4e3ca3d39d90cae18a972.patch";
-      sha256 = "sha256-bUna7MnMV6u9oEaZMsFnr4gE28rz/c0O2+Hyk291+l0=";
-    })
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
   ];
 
-  nativeBuildInputs = [ setuptools-scm ];
-  buildInputs = [ pytest ];
-  propagatedBuildInputs = [ numpy pandas pillow pytest-datadir pyyaml ];
+  buildInputs = [
+    pytest
+  ];
 
-  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+  propagatedBuildInputs = [
+    numpy
+    pandas
+    pillow
+    pytest-datadir
+    pyyaml
+  ];
 
-  checkInputs = [ pytestCheckHook matplotlib ];
-  pythonImportsCheck = [ "pytest_regressions" "pytest_regressions.plugin" ];
+
+  checkInputs = [
+    pytestCheckHook
+    matplotlib
+  ];
+
+  pythonImportsCheck = [
+    "pytest_regressions"
+    "pytest_regressions.plugin"
+  ];
 
   meta = with lib; {
     description = "Pytest fixtures to write regression tests";
diff --git a/pkgs/development/python-modules/pytest-remotedata/default.nix b/pkgs/development/python-modules/pytest-remotedata/default.nix
index fb91f461329e8..fc9b5e6f9c1b5 100644
--- a/pkgs/development/python-modules/pytest-remotedata/default.nix
+++ b/pkgs/development/python-modules/pytest-remotedata/default.nix
@@ -1,38 +1,54 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, six
 , pytest
+, pytestCheckHook
+, pythonOlder
+, setuptools-scm
+, six
 }:
 
 buildPythonPackage rec {
   pname = "pytest-remotedata";
-  version = "0.3.2";
+  version = "0.3.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e20c58d4b7c359c4975dc3c3d3d67be0905180d2368be0be3ae09b15a136cfc0";
+    sha256 = "66920bf1c62928b079d0e611379111a0d49f10a9509ced54c8269514ccce6ee3";
   };
 
-  buildInputs = [ pytest ];
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  buildInputs = [
+    pytest
+  ];
 
   propagatedBuildInputs = [
     six
   ];
 
   checkInputs = [
-    pytest
+    pytestCheckHook
   ];
 
-  checkPhase = ''
-    # these tests require a network connection
-    pytest --ignore tests/test_strict_check.py
-  '';
+  disabledTestPaths = [
+    # These tests require a network connection
+    "tests/test_strict_check.py"
+  ];
+
+  pythonImportsCheck = [
+    "pytest_remotedata"
+  ];
 
   meta = with lib; {
     description = "Pytest plugin for controlling remote data access";
-    homepage = "https://astropy.org";
+    homepage = "https://github.com/astropy/pytest-remotedata";
     license = licenses.bsd3;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/pkgs/development/python-modules/pytest-runner/2.nix b/pkgs/development/python-modules/pytest-runner/2.nix
deleted file mode 100644
index bea83146c37d9..0000000000000
--- a/pkgs/development/python-modules/pytest-runner/2.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, setuptools-scm, pytest }:
-
-buildPythonPackage rec {
-  pname = "pytest-runner";
-  version = "5.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "96c7e73ead7b93e388c5d614770d2bae6526efd997757d3543fe17b557a0942b";
-  };
-
-  nativeBuildInputs = [ setuptools-scm pytest ];
-
-  postPatch = ''
-    rm pytest.ini
-  '';
-
-  checkPhase = ''
-    py.test tests
-  '';
-
-  # Fixture not found
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Invoke py.test as distutils command with dependency resolution";
-    homepage = "https://github.com/pytest-dev/pytest-runner";
-    license = licenses.mit;
-  };
-}
diff --git a/pkgs/development/python-modules/pytest-services/default.nix b/pkgs/development/python-modules/pytest-services/default.nix
index 4f2a577bb4db7..41890215025ca 100644
--- a/pkgs/development/python-modules/pytest-services/default.nix
+++ b/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/pkgs/development/python-modules/pytest-snapshot/default.nix b/pkgs/development/python-modules/pytest-snapshot/default.nix
index 3b7a9f389ebde..34833bcc30a87 100644
--- a/pkgs/development/python-modules/pytest-snapshot/default.nix
+++ b/pkgs/development/python-modules/pytest-snapshot/default.nix
@@ -1,23 +1,45 @@
-{ lib, buildPythonPackage, fetchPypi, packaging, pytest, setuptools-scm }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, packaging
+, pytest
+, setuptools-scm
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "pytest-snapshot";
-  version = "0.8.0";
+  version = "0.8.1";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "cf84c88c3e0b4ae08ae797d9ccdc32715b64dd68b2da40f575db56956ed23326";
+  src = fetchFromGitHub {
+    owner = "joseph-roitman";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-ymB9h3Mc6GSMRsxIh6uuf111qLvIkNAnFsxR6O2SF7s=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
 
-  buildInputs = [ pytest ];
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
 
-  propagatedBuildInputs = [ packaging ];
+  buildInputs = [
+    pytest
+  ];
 
-  # pypi does not contain tests and GitHub archive is not supported because setuptools-scm can't detect the version
-  doCheck = false;
-  pythonImportsCheck = [ "pytest_snapshot" ];
+  propagatedBuildInputs = [
+    packaging
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "pytest_snapshot"
+  ];
 
   meta = with lib; {
     description = "A plugin to enable snapshot testing with pytest";
diff --git a/pkgs/development/python-modules/pytest-socket/default.nix b/pkgs/development/python-modules/pytest-socket/default.nix
index 0371b7cac5a42..1376d3e8412f8 100644
--- a/pkgs/development/python-modules/pytest-socket/default.nix
+++ b/pkgs/development/python-modules/pytest-socket/default.nix
@@ -1,23 +1,24 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , poetry-core
 , pytest
 , pythonOlder
+, setuptoolsBuildHook
 }:
 
 buildPythonPackage rec {
   pname = "pytest-socket";
-  version = "0.4.0";
-  disabled = pythonOlder "3.6";
+  version = "0.5.0";
   format = "pyproject";
 
+  disabled = pythonOlder "3.7";
+
   src = fetchFromGitHub {
     owner = "miketheman";
     repo = pname;
     rev = version;
-    sha256 = "sha256-cFYtJqZ/RjFbn9XlEy6ffxZ2djisajQAwjV/YR2f59Q=";
+    hash = "sha256-HdGkpIHFsoAG2+8UyL9jSb3Dm8bWkYzREdY3i15ls/Q=";
   };
 
   nativeBuildInputs = [
@@ -28,23 +29,12 @@ buildPythonPackage rec {
     pytest
   ];
 
-  checkInputs = [
-    pytest
-  ];
-
-  patches = [
-    # Switch to poetry-core, https://github.com/miketheman/pytest-socket/pull/74
-    (fetchpatch {
-      name = "switch-to-poetry-core.patch";
-      url = "https://github.com/miketheman/pytest-socket/commit/32519170e656e731d24b81770a170333d3efa6a8.patch";
-      sha256 = "19ksgx77rsa6ijcbml74alwc5052mdqr4rmvqhlzvfcvv3676ig2";
-    })
-  ];
-
   # pytest-socket require network for majority of tests
   doCheck = false;
 
-  pythonImportsCheck = [ "pytest_socket" ];
+  pythonImportsCheck = [
+    "pytest_socket"
+  ];
 
   meta = with lib; {
     description = "Pytest Plugin to disable socket calls during tests";
diff --git a/pkgs/development/python-modules/pytest-subprocess/default.nix b/pkgs/development/python-modules/pytest-subprocess/default.nix
index 74f1e7cddcee3..cc890096f796c 100644
--- a/pkgs/development/python-modules/pytest-subprocess/default.nix
+++ b/pkgs/development/python-modules/pytest-subprocess/default.nix
@@ -6,11 +6,14 @@
 , pytestCheckHook
 , docutils
 , pygments
+, pytest-rerunfailures
+, pytest-asyncio
+, anyio
 }:
 
 buildPythonPackage rec {
   pname = "pytest-subprocess";
-  version = "1.3.2";
+  version = "1.4.1";
 
   disabled = pythonOlder "3.6";
 
@@ -18,7 +21,7 @@ buildPythonPackage rec {
     owner = "aklajnert";
     repo = "pytest-subprocess";
     rev = version;
-    sha256 = "sha256-auPpqoPeYxmkWTVbbKhEZI6gJGH9Pf1D9YLkuD3FaX0=";
+    hash = "sha256-xNkOXBCQ4AH/JVmxFzI3VSouA6jkCbUom7AdckfjGiE=";
   };
 
   buildInputs = [
@@ -29,6 +32,9 @@ buildPythonPackage rec {
     pytestCheckHook
     docutils
     pygments
+    pytest-rerunfailures
+    pytest-asyncio
+    anyio
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/pytest-subtests/default.nix b/pkgs/development/python-modules/pytest-subtests/default.nix
index 6b556abeaa4f6..d5e379b524d5f 100644
--- a/pkgs/development/python-modules/pytest-subtests/default.nix
+++ b/pkgs/development/python-modules/pytest-subtests/default.nix
@@ -8,22 +8,30 @@
 
 buildPythonPackage rec {
   pname = "pytest-subtests";
-  version = "0.5.0";
-  disabled = pythonOlder "3.5";
+  version = "0.6.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5bd1e4bf0eda4c89a6cd42b0ee28e1d2ca0848de3fd67ad8cdd6d559ed00f120";
+    sha256 = "sha256-Pr0wao3PdRM/F0LyiMgvNkJuvPihMtTuiXgtIOhPwTo=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  pythonImportsCheck = [ "pytest_subtests" ];
+  pythonImportsCheck = [
+    "pytest_subtests"
+  ];
 
   meta = with lib; {
-    description = "pytest plugin for unittest subTest() support and subtests fixture";
+    description = "Pytest plugin for unittest subTest() support and subtests fixture";
     homepage = "https://github.com/pytest-dev/pytest-subtests";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/development/python-modules/pytest-timeout/default.nix b/pkgs/development/python-modules/pytest-timeout/default.nix
index 40f67eb0b0bab..f99340e48b3b2 100644
--- a/pkgs/development/python-modules/pytest-timeout/default.nix
+++ b/pkgs/development/python-modules/pytest-timeout/default.nix
@@ -9,28 +9,40 @@
 
 buildPythonPackage rec {
   pname = "pytest-timeout";
-  version = "1.4.2";
+  version = "2.0.2";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0xnsigs0kmpq1za0d4i522sp3f71x5bgpdh3ski0rs74yqy13cr0";
+    sha256 = "e6f98b54dafde8d70e4088467ff621260b641eb64895c4195b6e5c8f45638112";
   };
 
-  buildInputs = [ pytest ];
+  buildInputs = [
+    pytest
+  ];
 
-  checkInputs = [ pytestCheckHook pexpect pytest-cov ];
+  checkInputs = [
+    pytestCheckHook
+    pexpect
+    pytest-cov
+  ];
 
   disabledTests = [
     "test_suppresses_timeout_when_pdb_is_entered"
     # Remove until https://github.com/pytest-dev/pytest/pull/7207 or similar
     "test_suppresses_timeout_when_debugger_is_entered"
   ];
+
   pytestFlagsArray = [
     "-ra"
   ];
 
+  pythonImportsCheck = [
+    "pytest_timeout"
+  ];
+
   meta = with lib; {
-    description = "py.test plugin to abort hanging tests";
+    description = "Pytest plugin to abort hanging tests";
     homepage = "https://github.com/pytest-dev/pytest-timeout/";
     changelog = "https://github.com/pytest-dev/pytest-timeout/#changelog";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/pytest-xdist/1.nix b/pkgs/development/python-modules/pytest-xdist/1.nix
deleted file mode 100644
index 466d86f50f786..0000000000000
--- a/pkgs/development/python-modules/pytest-xdist/1.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib, fetchPypi, buildPythonPackage, execnet, pytest
-, setuptools-scm, pytest-forked, filelock, psutil, six, isPy3k }:
-
-buildPythonPackage rec {
-  pname = "pytest-xdist";
-  version = "1.34.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1vh4ps32lp5ignch5adbl3pgchvigdfmrl6qpmhxih54wa1qw3il";
-  };
-
-  nativeBuildInputs = [ setuptools-scm pytest ];
-  checkInputs = [ pytest filelock ];
-  propagatedBuildInputs = [ execnet pytest-forked psutil six ];
-
-  # Encountered a memory leak
-  # https://github.com/pytest-dev/pytest-xdist/issues/462
-  doCheck = !isPy3k;
-
-  checkPhase = ''
-    # Excluded tests access file system
-    py.test testing -k "not test_distribution_rsyncdirs_example \
-                    and not test_rsync_popen_with_path \
-                    and not test_popen_rsync_subdir \
-                    and not test_init_rsync_roots \
-                    and not test_rsyncignore"
-  '';
-
-  meta = with lib; {
-    description = "py.test xdist plugin for distributed testing and loop-on-failing modes";
-    homepage = "https://github.com/pytest-dev/pytest-xdist";
-    license = licenses.mit;
-    maintainers = with maintainers; [ dotlambda ];
-  };
-}
diff --git a/pkgs/development/python-modules/pytest-xdist/default.nix b/pkgs/development/python-modules/pytest-xdist/default.nix
index f71522a40dc63..fa1b0f63fabcd 100644
--- a/pkgs/development/python-modules/pytest-xdist/default.nix
+++ b/pkgs/development/python-modules/pytest-xdist/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "pytest-xdist";
-  version = "2.4.0";
+  version = "2.5.0";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "89b330316f7fc475f999c81b577c2b926c9569f3d397ae432c0c2e2496d61ff9";
+    sha256 = "sha256-RYDeyj/wTdsqxT66Oddstd1e3qwFDLb7x2iw3XErTt8=";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/pytest/4.nix b/pkgs/development/python-modules/pytest/4.nix
deleted file mode 100644
index 0a0ae571ba012..0000000000000
--- a/pkgs/development/python-modules/pytest/4.nix
+++ /dev/null
@@ -1,68 +0,0 @@
-{ lib, buildPythonPackage, pythonOlder, fetchPypi, attrs, hypothesis, py
-, setuptools-scm, setuptools, six, pluggy, funcsigs, isPy3k, more-itertools
-, atomicwrites, mock, writeText, pathlib2, wcwidth, packaging, isPyPy
-}:
-buildPythonPackage rec {
-  version = "4.6.11";
-  pname = "pytest";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "50fa82392f2120cc3ec2ca0a75ee615be4c479e66669789771f1758332be4353";
-  };
-
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "pluggy>=0.12,<1.0" "pluggy>=0.12,<2.0"
-  '';
-
-  checkInputs = [ hypothesis mock ];
-  buildInputs = [ setuptools-scm ];
-  propagatedBuildInputs = [ attrs py setuptools six pluggy more-itertools atomicwrites wcwidth packaging ]
-    ++ lib.optionals (!isPy3k) [ funcsigs ]
-    ++ lib.optionals (pythonOlder "3.6") [ pathlib2 ];
-
-  doCheck = !isPyPy; # https://github.com/pytest-dev/pytest/issues/3460
-  checkPhase = ''
-    runHook preCheck
-
-    # don't test bash builtins
-    rm testing/test_argcomplete.py
-
-    # determinism - this test writes non deterministic bytecode
-    rm -rf testing/test_assertrewrite.py
-
-    PYTHONDONTWRITEBYTECODE=1 $out/bin/py.test -x testing/ -k "not test_collect_pyargs_with_testpaths"
-    runHook postCheck
-  '';
-
-  # Remove .pytest_cache when using py.test in a Nix build
-  setupHook = writeText "pytest-hook" ''
-    pytestcachePhase() {
-        find $out -name .pytest_cache -type d -exec rm -rf {} +
-    }
-
-    preDistPhases+=" pytestcachePhase"
-
-    # pytest generates it's own bytecode files to improve assertion messages.
-    # These files similar to cpython's bytecode files but are never laoded
-    # by python interpreter directly. We remove them for a few reasons:
-    # - files are non-deterministic: https://github.com/NixOS/nixpkgs/issues/139292
-    #   (file headers are generatedt by pytest directly and contain timestamps)
-    # - files are not needed after tests are finished
-    pytestRemoveBytecodePhase () {
-        # suffix is defined at:
-        #    https://github.com/pytest-dev/pytest/blob/4.6.11/src/_pytest/assertion/rewrite.py#L32-L47
-        find $out -name "*-PYTEST.py[co]" -delete
-    }
-    preDistPhases+=" pytestRemoveBytecodePhase"
-  '';
-
-  meta = with lib; {
-    homepage = "https://docs.pytest.org";
-    description = "Framework for writing tests";
-    maintainers = with maintainers; [ domenkozar lovek323 madjar lsix ];
-    license = licenses.mit;
-    platforms = platforms.unix;
-  };
-}
diff --git a/pkgs/development/python-modules/pytest/5.nix b/pkgs/development/python-modules/pytest/5.nix
deleted file mode 100644
index ee04e3be429f1..0000000000000
--- a/pkgs/development/python-modules/pytest/5.nix
+++ /dev/null
@@ -1,95 +0,0 @@
-{ lib, buildPythonPackage, pythonOlder, fetchPypi, isPy3k, isPyPy
-, atomicwrites
-, attrs
-, hypothesis
-, more-itertools
-, packaging
-, pathlib2
-, pluggy
-, py
-, pygments
-, setuptools
-, setuptools-scm
-, six
-, toml
-, wcwidth
-, writeText
-}:
-
-buildPythonPackage rec {
-  version = "5.4.3";
-  pname = "pytest";
-
-  disabled = !isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1n67lk8iwlsmfdm8663k8l7isllg1xd3n9p1yla7885szhdk6ybr";
-  };
-
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "pluggy>=0.12,<1.0" "pluggy>=0.12,<2.0"
-  '';
-
-  checkInputs = [ hypothesis pygments ];
-  nativeBuildInputs = [ setuptools-scm ];
-  propagatedBuildInputs = [
-    atomicwrites
-    attrs
-    more-itertools
-    packaging
-    pluggy
-    py
-    setuptools
-    six
-    toml
-    wcwidth
-  ] ++ lib.optionals (pythonOlder "3.6") [ pathlib2 ];
-
-  doCheck = !isPyPy; # https://github.com/pytest-dev/pytest/issues/3460
-
-  preCheck = ''
-    # don't test bash builtins
-    rm testing/test_argcomplete.py
-  '';
-
-  # Ignored file https://github.com/pytest-dev/pytest/pull/5605#issuecomment-522243929
-  checkPhase = ''
-    runHook preCheck
-    $out/bin/py.test -x testing/ -k "not test_collect_pyargs_with_testpaths" --ignore=testing/test_junitxml.py
-    runHook postCheck
-  '';
-
-  # Remove .pytest_cache when using py.test in a Nix build
-  setupHook = writeText "pytest-hook" ''
-    pytestcachePhase() {
-        find $out -name .pytest_cache -type d -exec rm -rf {} +
-    }
-    preDistPhases+=" pytestcachePhase"
-
-    # pytest generates it's own bytecode files to improve assertion messages.
-    # These files similar to cpython's bytecode files but are never laoded
-    # by python interpreter directly. We remove them for a few reasons:
-    # - files are non-deterministic: https://github.com/NixOS/nixpkgs/issues/139292
-    #   (file headers are generatedt by pytest directly and contain timestamps)
-    # - files are not needed after tests are finished
-    pytestRemoveBytecodePhase () {
-        # suffix is defined at:
-        #    https://github.com/pytest-dev/pytest/blob/5.4.3/src/_pytest/assertion/rewrite.py#L42-L45
-        find $out -name "*-pytest-*.py[co]" -delete
-    }
-    preDistPhases+=" pytestRemoveBytecodePhase"
-  '';
-
-  pythonImportsCheck = [
-    "pytest"
-  ];
-
-  meta = with lib; {
-    homepage = "https://docs.pytest.org";
-    description = "Framework for writing tests";
-    maintainers = with maintainers; [ domenkozar lovek323 madjar lsix ];
-    license = licenses.mit;
-  };
-}
diff --git a/pkgs/development/python-modules/pytest/default.nix b/pkgs/development/python-modules/pytest/default.nix
index ac036936b991a..0b1bb2b02030b 100644
--- a/pkgs/development/python-modules/pytest/default.nix
+++ b/pkgs/development/python-modules/pytest/default.nix
@@ -1,4 +1,5 @@
 { lib, buildPythonPackage, pythonOlder, fetchPypi, isPy3k, isPyPy
+, pythonAtLeast, fetchpatch
 , atomicwrites
 , attrs
 , hypothesis
@@ -27,10 +28,13 @@ buildPythonPackage rec {
     sha256 = "131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89";
   };
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "pluggy>=0.12,<1.0.0a1" "pluggy>=0.23,<2.0"
-  '';
+  patches = lib.optionals (pythonAtLeast "3.10") [
+    (fetchpatch {
+      # Fix test_errors_in_xfail_skip_expressions for Python 3.10.1, remove after 6.2.5
+      url = "https://github.com/pytest-dev/pytest/commit/913439f5e5691f391e2969b3c8f0a49e50dce43a.patch";
+      sha256 = "0hsl3lww6bx5k99cp8gj0fy9rg02kcfbwiiwjx2y8vbhwd5ns41p";
+    })
+  ];
 
   nativeBuildInputs = [ setuptools-scm ];
 
diff --git a/pkgs/development/python-modules/python-benedict/default.nix b/pkgs/development/python-modules/python-benedict/default.nix
new file mode 100644
index 0000000000000..9cf5ffc63abf9
--- /dev/null
+++ b/pkgs/development/python-modules/python-benedict/default.nix
@@ -0,0 +1,75 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+
+, mailchecker
+, phonenumbers
+, python-dateutil
+, python-fsutil
+, python-slugify
+, pyyaml
+, ftfy
+, requests
+, six
+, toml
+, xmltodict
+}:
+
+buildPythonPackage rec {
+  pname = "python-benedict";
+  version = "0.24.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "fabiocaccamo";
+    repo = pname;
+    rev = version;
+    hash = "sha256-06n8MNoGQRSrBK2XeEBBoQ2NIXWf0qXPVBeP9ERMEj0=";
+  };
+
+  propagatedBuildInputs = [
+    mailchecker
+    phonenumbers
+    python-dateutil
+    python-fsutil
+    python-slugify
+    pyyaml
+    ftfy
+    requests
+    six
+    toml
+    xmltodict
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Tests require network access
+    "test_from_base64_with_valid_url_valid_content"
+    "test_from_json_with_valid_url_valid_content"
+    "test_from_pickle_with_valid_url_valid_content"
+    "test_from_plist_with_valid_url_valid_content"
+    "test_from_query_string_with_valid_url_valid_content"
+    "test_from_toml_with_valid_url_valid_content"
+    "test_from_xml_with_valid_url_valid_content"
+    "test_from_yaml_with_valid_url_valid_content"
+  ];
+
+  pythonImportsCheck = [
+    "benedict"
+  ];
+
+  meta = with lib; {
+    description = "Module with keylist/keypath support";
+    homepage = "https://github.com/fabiocaccamo/python-benedict";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-daemon/default.nix b/pkgs/development/python-modules/python-daemon/default.nix
index 9df9bf8a593b2..074e5699e3d5a 100644
--- a/pkgs/development/python-modules/python-daemon/default.nix
+++ b/pkgs/development/python-modules/python-daemon/default.nix
@@ -3,16 +3,21 @@
 , fetchPypi
 , docutils
 , lockfile
-, mock
-, pytest_4
+, pytestCheckHook
 , testscenarios
 , testtools
 , twine
+, python
+, pythonOlder
+, fetchpatch
 }:
 
 buildPythonPackage rec {
   pname = "python-daemon";
   version = "2.3.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
@@ -29,22 +34,39 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    pytest_4
-    mock
+    pytestCheckHook
     testscenarios
     testtools
   ];
 
-  # tests disabled due to incompatibilities with testtools>=2.5.0
-  checkPhase = ''
-    runHook preCheck
-    pytest -k ' \
-      not detaches_process_context and \
-      not standard_stream_file_descriptors and \
-      not test_module_has_attribute and \
-      not test_module_attribute_has_duck_type'
-    runHook postCheck
-  '';
+  patches = [
+    # Should be fixed in the next release
+    (fetchpatch {
+      url = "https://src.fedoraproject.org/rpms/python-daemon/raw/rawhide/f/python-daemon-safe_hasattr.patch";
+      sha256 = "sha256-p5epAlM/sdel01oZkSI1vahUZYX8r90WCJuvBnfMaus=";
+    })
+    (fetchpatch {
+      url = "https://src.fedoraproject.org/rpms/python-daemon/raw/rawhide/f/tests-remove-duplicate-mocking.patch";
+      sha256 = "sha256-5b/dFR3Z8xaPw8AZU95apDZd4ZfmMQhAmavWkVaJog8=";
+    })
+  ];
+
+  disabledTests = [
+    "begin_with_TestCase"
+    "changelog_TestCase"
+    "ChangeLogEntry"
+    "DaemonContext"
+    "file_descriptor"
+    "get_distribution_version_info_TestCase"
+    "InvalidFormatError_TestCase"
+    "make_year_range_TestCase"
+    "ModuleExceptions_TestCase"
+    "test_metaclass_not_called"
+    "test_passes_specified_object"
+    "test_returns_expected"
+    "value_TestCase"
+    "YearRange_TestCase"
+  ];
 
   pythonImportsCheck = [
     "daemon"
@@ -56,10 +78,8 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Library to implement a well-behaved Unix daemon process";
     homepage = "https://pagure.io/python-daemon/";
-    license = with licenses; [
-      gpl3Plus
-      asl20
-    ];
+    # See "Copying" section in https://pagure.io/python-daemon/blob/main/f/README
+    license = with licenses; [ gpl3Plus asl20 ];
     maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-dbusmock/default.nix b/pkgs/development/python-modules/python-dbusmock/default.nix
index d643603a0679e..60e6f2e745526 100644
--- a/pkgs/development/python-modules/python-dbusmock/default.nix
+++ b/pkgs/development/python-modules/python-dbusmock/default.nix
@@ -5,13 +5,13 @@
 
 buildPythonPackage rec {
   pname = "python-dbusmock";
-  version = "0.19";
+  version = "0.25.0";
 
   src = fetchFromGitHub {
     owner = "martinpitt";
     repo = pname;
     rev = version;
-    sha256 = "09j338lmrjabbd3fpajr4piz4r20sl33030szfsqfzlwrrmvkyi0";
+    sha256 = "0zg2aib0k6hc1vvlbdcmp003m85dvkv7pndzgkc4vv2y9qpi0jp9";
   };
 
   prePatch = ''
@@ -38,6 +38,10 @@ buildPythonPackage rec {
     "test_cli"
     "test_timedated"
     "test_upower"
+    # needs glib
+    "test_accounts_service"
+    # needs dbus-daemon active
+    "test_systemd"
     # Very slow, consider disabling?
     # "test_networkmanager"
   ];
diff --git a/pkgs/development/python-modules/python-engineio/default.nix b/pkgs/development/python-modules/python-engineio/default.nix
index baf385bb7d78b..da92963875769 100644
--- a/pkgs/development/python-modules/python-engineio/default.nix
+++ b/pkgs/development/python-modules/python-engineio/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "python-engineio";
-  version = "4.3.0";
+  version = "4.3.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "miguelgrinberg";
     repo = "python-engineio";
     rev = "v${version}";
-    sha256 = "sha256-ohNRtceh0bHBlnGSFUckG5KzoLY8Q1jvpFee7T78Vto=";
+    sha256 = "sha256-8595zivZmff0agFiQd5Qyd/T3BDxYcsb4RjA5AWXVNM=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/python-fsutil/default.nix b/pkgs/development/python-modules/python-fsutil/default.nix
new file mode 100644
index 0000000000000..760e86f6ecf2c
--- /dev/null
+++ b/pkgs/development/python-modules/python-fsutil/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "python-fsutil";
+  version = "0.6.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "fabiocaccamo";
+    repo = pname;
+    rev = version;
+    hash = "sha256-DY0QGHD7HdLnKnbPV17UZl9u3Ac9YZdYvQXLOzmRGos=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "tests/test.py"
+  ];
+
+  disabledTests = [
+    # Tests require network access
+    "test_download_file"
+    "test_read_file_from_url"
+  ];
+
+  pythonImportsCheck = [
+    "fsutil"
+  ];
+
+  meta = with lib; {
+    description = "Module with file-system utilities";
+    homepage = "https://github.com/fabiocaccamo/python-fsutil";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-gitlab/default.nix b/pkgs/development/python-modules/python-gitlab/default.nix
index a5c40533c169e..6704cb8ad0069 100644
--- a/pkgs/development/python-modules/python-gitlab/default.nix
+++ b/pkgs/development/python-modules/python-gitlab/default.nix
@@ -10,12 +10,14 @@
 
 buildPythonPackage rec {
   pname = "python-gitlab";
-  version = "2.10.1";
-  disabled = pythonOlder "3.6";
+  version = "3.1.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7afa7d7c062fa62c173190452265a30feefb844428efc58ea5244f3b9fc0d40f";
+    sha256 = "sha256-ytEzjB/xp5GnuueZXcYh4mx3378iW63kVqzsdRJ4KCU=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/python-heatclient/default.nix b/pkgs/development/python-modules/python-heatclient/default.nix
index cab28ef016d91..8ba5c7dd21fc8 100644
--- a/pkgs/development/python-modules/python-heatclient/default.nix
+++ b/pkgs/development/python-modules/python-heatclient/default.nix
@@ -22,11 +22,11 @@
 
 buildPythonApplication rec {
   pname = "python-heatclient";
-  version = "2.4.0";
+  version = "2.5.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b53529eb73f08c384181a580efaa42293cc35e0e1ecc4b0bc14a5c7b202019bb";
+    sha256 = "b610748eb3f18f6bd762e0808accdf872308289a77c3b19ed2d8b9f306393a42";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/python-http-client/default.nix b/pkgs/development/python-modules/python-http-client/default.nix
index db79870ad591f..aa2c4d020e55c 100644
--- a/pkgs/development/python-modules/python-http-client/default.nix
+++ b/pkgs/development/python-modules/python-http-client/default.nix
@@ -3,18 +3,21 @@
 , fetchFromGitHub
 , mock
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "python_http_client";
-  version = "3.3.4";
+  version = "3.3.6";
   format = "setuptools";
 
+  disabled = pythonOlder "3.8";
+
   src = fetchFromGitHub {
     owner = "sendgrid";
     repo = "python-http-client";
     rev = version;
-    sha256 = "sha256-wTXHq+tC+rfvmDZIWvcGhQZqm6DxOmx50BsX0c6asec=";
+    sha256 = "sha256-Xchf/jVkQ7SYOzI9f81iS/G72k//6wkl2bMvHprOP9Y=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/python-i18n/default.nix b/pkgs/development/python-modules/python-i18n/default.nix
new file mode 100644
index 0000000000000..8e7f8f880e2a7
--- /dev/null
+++ b/pkgs/development/python-modules/python-i18n/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchFromGitHub, pytestCheckHook, pyyaml }:
+
+buildPythonPackage rec {
+  pname = "python-i18n";
+  version = "0.3.9";
+
+  src = fetchFromGitHub {
+    owner = "danhper";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "6FahoHZqaOWYGaT9RqLARCm2kLfUIlYuauB6+0eX7jA=";
+  };
+
+  checkInputs = [ pytestCheckHook pyyaml ];
+
+  pytestFlagsArray = [ "i18n/tests/run_tests.py" ];
+
+  meta = with lib; {
+    description = "Easy to use i18n library";
+    homepage = "https://github.com/danhper/python-i18n";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ emilytrau ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-ipmi/default.nix b/pkgs/development/python-modules/python-ipmi/default.nix
index 7f8b8fe58a77f..cbd68f387656d 100644
--- a/pkgs/development/python-modules/python-ipmi/default.nix
+++ b/pkgs/development/python-modules/python-ipmi/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "python-ipmi";
-  version = "0.5.1";
+  version = "0.5.2";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "kontron";
     repo = pname;
     rev = version;
-    sha256 = "0rcix3q845zsmfj5857kq1r5b8m7m3sad34i23k65m0p58clwdqm";
+    sha256 = "sha256-VXWSoVRfgJWf9rOT4SE1mTJdeNmzR3TRc2pc6Pp1M5U=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/python-ironicclient/default.nix b/pkgs/development/python-modules/python-ironicclient/default.nix
index 5654c2de3a859..c193cf7cd1ad9 100644
--- a/pkgs/development/python-modules/python-ironicclient/default.nix
+++ b/pkgs/development/python-modules/python-ironicclient/default.nix
@@ -20,11 +20,11 @@
 
 buildPythonApplication rec {
   pname = "python-ironicclient";
-  version = "4.9.0";
+  version = "4.10.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "99d45e914b2845731ac44fbfc63ae3e1bd52211396748797b588f2adc4b3f341";
+    sha256 = "8f3ad8ae1fc4df524ea05a458ad2567b58144e881807dbbb985e282902d732fd";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/python-izone/default.nix b/pkgs/development/python-modules/python-izone/default.nix
index 1d1eb5ac54eb0..f1f8be9d3d27a 100644
--- a/pkgs/development/python-modules/python-izone/default.nix
+++ b/pkgs/development/python-modules/python-izone/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "python-izone";
-  version = "1.2.3";
+  version = "1.2.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "Swamp-Ig";
     repo = "pizone";
     rev = "v${version}";
-    hash = "sha256-WF37t9vCEIyQMeN3/CWAiiZ5zsMRMFQ5UvMUqfoGM9I=";
+    hash = "sha256-HV8aQlwJ7VbGlJU0HpS9fK/QnRfYrk4ijKTGPWj0Jww=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/python-kasa/default.nix b/pkgs/development/python-modules/python-kasa/default.nix
index 10ff6ddf62175..17c3cb07be364 100644
--- a/pkgs/development/python-modules/python-kasa/default.nix
+++ b/pkgs/development/python-modules/python-kasa/default.nix
@@ -2,7 +2,6 @@
 , asyncclick
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , importlib-metadata
 , poetry-core
 , pytest-asyncio
@@ -14,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "python-kasa";
-  version = "0.4.0";
+  version = "0.4.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -23,7 +22,7 @@ buildPythonPackage rec {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "08blmz5kg826l08pf6yrvl8gc8iz3hfb6wsfqih606dal08kdhdi";
+    sha256 = "sha256-4e9jpUDorZlKCYwWtqrba61zbkJl57oWUhEpFcaS9ak=";
   };
 
   nativeBuildInputs = [
@@ -42,26 +41,14 @@ buildPythonPackage rec {
     voluptuous
   ];
 
-  patches = [
-    # Switch to poetry-core, https://github.com/python-kasa/python-kasa/pull/226
-    (fetchpatch {
-      name = "switch-to-poetry-core.patch";
-      url = "https://github.com/python-kasa/python-kasa/commit/05c2a4a7dedbd60038e177b4d3f5ac5798544d11.patch";
-      sha256 = "0cla11yqx88wj2s50s3xxxhv4nz4h3wd9pi12v79778hzdlg58rr";
-    })
-  ];
-
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace 'asyncclick = "^7"' 'asyncclick = "*"'
-  '';
-
   disabledTestPaths = [
     # Skip the examples tests
     "kasa/tests/test_readme_examples.py"
   ];
 
-  pythonImportsCheck = [ "kasa" ];
+  pythonImportsCheck = [
+    "kasa"
+  ];
 
   meta = with lib; {
     description = "Python API for TP-Link Kasa Smarthome products";
diff --git a/pkgs/development/python-modules/python-keycloak/default.nix b/pkgs/development/python-modules/python-keycloak/default.nix
new file mode 100644
index 0000000000000..6425869243ef1
--- /dev/null
+++ b/pkgs/development/python-modules/python-keycloak/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, requests
+, python-jose
+, httmock
+}:
+
+buildPythonPackage rec {
+  pname = "python-keycloak";
+  version = "0.27.0";
+
+  src = fetchFromGitHub {
+    owner = "marcospereirampj";
+    repo = "python-keycloak";
+    rev = version;
+    sha256 = "sha256-XCOfzzUs0K5/peprgpEXY2pX6wYOF7hg9ec1XPEYHCI=";
+  };
+
+  propagatedBuildInputs = [
+    requests
+    python-jose
+  ];
+
+  checkInputs = [
+    httmock
+  ];
+
+  checkPhase = ''
+    python -m unittest discover
+  '';
+
+  pythonImportsCheck = [ "keycloak" ];
+
+  meta = with lib; {
+    description = "Provides access to the Keycloak API";
+    homepage = "https://github.com/marcospereirampj/python-keycloak";
+    license = licenses.mit;
+    maintainers = with maintainers; [ costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-keystoneclient/default.nix b/pkgs/development/python-modules/python-keystoneclient/default.nix
index 8bf7ac5619a4d..c9161e17e3057 100644
--- a/pkgs/development/python-modules/python-keystoneclient/default.nix
+++ b/pkgs/development/python-modules/python-keystoneclient/default.nix
@@ -14,11 +14,11 @@
 
 buildPythonPackage rec {
   pname = "python-keystoneclient";
-  version = "4.3.0";
+  version = "4.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "fd09b7790ce53c20dc94318ec4d76e1cf71908aed59baeb4c7a61c17afd3aad5";
+    sha256 = "fc17ca9a1aa493104b496ba347f12507f271b5b6e819f4de4aef6574918aa071";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/python-louvain/default.nix b/pkgs/development/python-modules/python-louvain/default.nix
index 6d22c1fd845a6..262370f6109d5 100644
--- a/pkgs/development/python-modules/python-louvain/default.nix
+++ b/pkgs/development/python-modules/python-louvain/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "python-louvain";
-  version = "0.15";
+  version = "0.16";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-KoVu374plSpgpVOKhLt4zKGPaISoi5Ml6FoRyN1JF+s=";
+    sha256 = "sha256-t7ot9QAv0o0+54mklTK6rRH+ZI5PIRfPB5jnUgodpWs=";
   };
 
   propagatedBuildInputs = [ networkx numpy ];
diff --git a/pkgs/development/python-modules/python-lsp-black/default.nix b/pkgs/development/python-modules/python-lsp-black/default.nix
index bd557c402ffb2..dbd51166a22c5 100644
--- a/pkgs/development/python-modules/python-lsp-black/default.nix
+++ b/pkgs/development/python-modules/python-lsp-black/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "python-lsp-black";
-  version = "1.0.1";
+  version = "1.1.0";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "python-lsp";
     repo = "python-lsp-black";
     rev = "v${version}";
-    sha256 = "03k32m4jfqfzrawj69yxhk9kwzsdcwginip77kxdbra2xwgqfc3w";
+    sha256 = "sha256-WIQf1oz3b1PLIcXfQsu4hQ58nfp7l3J7zkcWNT6RbUY=";
   };
 
   checkInputs = [ pytestCheckHook ];
diff --git a/pkgs/development/python-modules/python-lsp-server/default.nix b/pkgs/development/python-modules/python-lsp-server/default.nix
index 4aa8d853ebdba..313524351658a 100644
--- a/pkgs/development/python-modules/python-lsp-server/default.nix
+++ b/pkgs/development/python-modules/python-lsp-server/default.nix
@@ -20,6 +20,7 @@
 , pythonOlder
 , rope
 , setuptools
+, stdenv
 , ujson
 , yapf
 , withAutopep8 ? true
@@ -35,14 +36,15 @@
 
 buildPythonPackage rec {
   pname = "python-lsp-server";
-  version = "1.3.1";
-  disabled = pythonOlder "3.6";
+  version = "1.3.3";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "python-lsp";
     repo = pname;
     rev = "v${version}";
-    sha256 = "067dlhwwv4mkrirnmqinrvkbfx59hf7fiah081d62a46vxvpnv9s";
+    sha256 = "sha256-F8f9NAjPWkm01D/KwFH0oA6nQ3EF4ZVCCckZTL4A35Y=";
   };
 
   postPatch = ''
@@ -72,14 +74,17 @@ buildPythonPackage rec {
     matplotlib
     numpy
     pandas
-    pyqt5
     pytestCheckHook
-  ];
+  ]
+  # pyqt5 is broken on aarch64-darwin
+  ++ lib.optionals (!stdenv.isDarwin || !stdenv.isAarch64) [ pyqt5 ];
 
   disabledTests = [
     # pytlint output changed
     "test_lint_free_pylint"
-  ] ++ lib.optional (!withPycodestyle) "test_workspace_loads_pycodestyle_config";
+  ] ++ lib.optional (!withPycodestyle) "test_workspace_loads_pycodestyle_config"
+  # pyqt5 is broken on aarch64-darwin
+  ++ lib.optional (stdenv.isDarwin && stdenv.isAarch64) "test_pyqt_completion";
 
   disabledTestPaths = lib.optional (!withAutopep8) "test/plugins/test_autopep8_format.py"
     ++ lib.optional (!withRope) "test/plugins/test_completion.py"
@@ -96,7 +101,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/pkgs/development/python-modules/python-magic/default.nix b/pkgs/development/python-modules/python-magic/default.nix
index d8a0f638d9685..381ea67138487 100644
--- a/pkgs/development/python-modules/python-magic/default.nix
+++ b/pkgs/development/python-modules/python-magic/default.nix
@@ -3,7 +3,6 @@
 , python
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , substituteAll
 , file
 , glibcLocales
@@ -11,23 +10,16 @@
 
 buildPythonPackage rec {
   pname = "python-magic";
-  version = "0.4.24";
+  version = "0.4.25";
 
   src = fetchFromGitHub {
     owner = "ahupp";
     repo = "python-magic";
     rev = version;
-    sha256 = "17jalhjbfd600lzfz296m0nvgp6c7vx1mgz82jbzn8hgdzknf4w0";
+    sha256 = "sha256-h7YQVH5Z7zunT6AdLPBh3TWpxLpZ5unSHDhkVDFOWDI=";
   };
 
   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/pkgs/development/python-modules/python-manilaclient/default.nix b/pkgs/development/python-modules/python-manilaclient/default.nix
index aea8b6dab3031..a2da2e4f4a761 100644
--- a/pkgs/development/python-modules/python-manilaclient/default.nix
+++ b/pkgs/development/python-modules/python-manilaclient/default.nix
@@ -1,7 +1,9 @@
 { lib
 , buildPythonApplication
 , fetchPypi
+, installShellFiles
 , pbr
+, openstackdocstheme
 , oslo-config
 , oslo-log
 , oslo-serialization
@@ -9,6 +11,8 @@
 , prettytable
 , requests
 , simplejson
+, sphinx
+, sphinxcontrib-programoutput
 , Babel
 , osc-lib
 , python-keystoneclient
@@ -18,13 +22,20 @@
 
 buildPythonApplication rec {
   pname = "python-manilaclient";
-  version = "3.1.0";
+  version = "3.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d53f69238cdc454c0297f513e0b481a039d0bac723990ebd5ab9d3d29633956e";
+    sha256 = "sha256-6iAed0mtEYHguYq4Rlh4YWT8E5hNqBYPcnG9/8RMspo=";
   };
 
+  nativeBuildInputs = [
+    installShellFiles
+    openstackdocstheme
+    sphinx
+    sphinxcontrib-programoutput
+  ];
+
   propagatedBuildInputs = [
     pbr
     oslo-config
@@ -40,6 +51,12 @@ buildPythonApplication rec {
     debtcollector
   ];
 
+  postInstall = ''
+    export PATH=$out/bin:$PATH
+    sphinx-build -a -E -d doc/build/doctrees -b man doc/source doc/build/man
+    installManPage doc/build/man/python-manilaclient.1
+  '';
+
   # Checks moved to 'passthru.tests' to workaround infinite recursion
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/python-miio/default.nix b/pkgs/development/python-modules/python-miio/default.nix
index 46900dd80e3d4..24c51af4fb2e5 100644
--- a/pkgs/development/python-modules/python-miio/default.nix
+++ b/pkgs/development/python-modules/python-miio/default.nix
@@ -24,21 +24,18 @@
 
 buildPythonPackage rec {
   pname = "python-miio";
-  version = "0.5.8";
-  disabled = pythonOlder "3.6";
+  version = "0.5.9.2";
+  disabled = pythonOlder "3.6.5";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-16XEah5rgem/L8A/zo1zPrifrU15VMk652rFLZcvjig=";
+    sha256 = "sha256-AFwarRhFknfwTSvSDGoWE+/mv1KUD2XnWK/xCBqrN4o=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace 'click = "^7"' 'click = "*"' \
-      --replace 'croniter = "^0"' 'croniter = "*"' \
-      --replace 'cryptography = "^3"' 'cryptography = "*"' \
-      --replace 'defusedxml = "^0.6"' 'defusedxml = "*"'
+      --replace 'defusedxml = "^0"' 'defusedxml = "*"' \
   '';
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/python-multipart/default.nix b/pkgs/development/python-modules/python-multipart/default.nix
index ccac3e8b3cb2c..3bf07bd1d5097 100644
--- a/pkgs/development/python-modules/python-multipart/default.nix
+++ b/pkgs/development/python-modules/python-multipart/default.nix
@@ -1,8 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pytest
-, pytest-cov
+, pytestCheckHook
 , mock
 , pyyaml
 , six
@@ -11,31 +10,37 @@
 buildPythonPackage rec {
   pname = "python-multipart";
   version = "0.0.5";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "f7bb5f611fc600d15fa47b3974c8aa16e93724513b49b5f95c81e6624c83fa43";
   };
 
-  checkInputs = [
-    pytest
-    pytest-cov
-    mock
-    pyyaml
-  ];
-
   propagatedBuildInputs = [
     six
   ];
 
-  checkPhase = ''
-    pytest
+  pythonImportsCheck = [
+    "multipart"
+  ];
+
+  preCheck = ''
+    # https://github.com/andrew-d/python-multipart/issues/41
+    substituteInPlace multipart/tests/test_multipart.py \
+      --replace "yaml.load" "yaml.safe_load"
   '';
 
+  checkInputs = [
+    pytestCheckHook
+    mock
+    pyyaml
+  ];
+
   meta = with lib; {
     description = "A streaming multipart parser for Python";
     homepage = "https://github.com/andrew-d/python-multipart";
     license = licenses.asl20;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/pkgs/development/python-modules/python-nest/default.nix b/pkgs/development/python-modules/python-nest/default.nix
index 8caa61517c6f1..1cbdd2837a723 100644
--- a/pkgs/development/python-modules/python-nest/default.nix
+++ b/pkgs/development/python-modules/python-nest/default.nix
@@ -1,23 +1,41 @@
-{ buildPythonPackage, fetchPypi, lib, python-dateutil, requests
-, six, sseclient-py }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python-dateutil
+, requests
+, six
+, sseclient-py
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "python-nest";
-  version = "4.1.0";
+  version = "4.2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "12iyypbl92ybh8w1bf4z0c2g0sb9id2c07c89vzvnlxgjylw3wbi";
+    hash = "sha256-01hoZbDssbJ10NA72gOtlzjZMGjsUBUoVDVM35uAOLU=";
   };
 
-  propagatedBuildInputs = [ python-dateutil requests six sseclient-py ];
-  # has no tests
+  propagatedBuildInputs = [
+    python-dateutil
+    requests
+    six
+    sseclient-py
+  ];
+
+  # Module has no tests
   doCheck = false;
-  pythonImportsCheck = [ "nest" ];
+
+  pythonImportsCheck = [
+    "nest"
+  ];
 
   meta = with lib; {
-    description =
-      "Python API and command line tool for talking to the Nestâ„¢ Thermostat";
+    description = "Python API and command line tool for talking to the Nestâ„¢ Thermostat";
     homepage = "https://github.com/jkoelker/python-nest";
     license = licenses.cc-by-nc-sa-40;
     maintainers = with maintainers; [ jamiemagee ];
diff --git a/pkgs/development/python-modules/python-openstackclient/default.nix b/pkgs/development/python-modules/python-openstackclient/default.nix
index 8e446d6b9909c..05efc97b64485 100644
--- a/pkgs/development/python-modules/python-openstackclient/default.nix
+++ b/pkgs/development/python-modules/python-openstackclient/default.nix
@@ -2,12 +2,15 @@
 , buildPythonPackage
 , fetchPypi
 , ddt
+, installShellFiles
+, openstackdocstheme
 , osc-lib
 , pbr
 , python-cinderclient
 , python-keystoneclient
 , python-novaclient
 , requests-mock
+, sphinx
 , stestr
 }:
 
@@ -20,6 +23,12 @@ buildPythonPackage rec {
     sha256 = "c65e3d51018f193cce2daf3d0fd69daa36003bdb2b85df6b07b973e4c39e2f92";
   };
 
+  nativeBuildInputs = [
+    installShellFiles
+    openstackdocstheme
+    sphinx
+  ];
+
   propagatedBuildInputs = [
     osc-lib
     pbr
@@ -28,6 +37,11 @@ buildPythonPackage rec {
     python-novaclient
   ];
 
+  postInstall = ''
+    sphinx-build -a -E -d doc/build/doctrees -b man doc/source doc/build/man
+    installManPage doc/build/man/openstack.1
+  '';
+
   checkInputs = [
     ddt
     stestr
diff --git a/pkgs/development/python-modules/python-otr/default.nix b/pkgs/development/python-modules/python-otr/default.nix
deleted file mode 100644
index 6b657dba78df3..0000000000000
--- a/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/pkgs/development/python-modules/python-smarttub/default.nix b/pkgs/development/python-modules/python-smarttub/default.nix
index dc266e0e2075c..4f484a8454024 100644
--- a/pkgs/development/python-modules/python-smarttub/default.nix
+++ b/pkgs/development/python-modules/python-smarttub/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "python-smarttub";
-  version = "0.0.28";
+  version = "0.0.29";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "mdz";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-dAwOi1hhjGhBGKEp5u3qW5WL1GLHBFac0drIc1Zk6ok=";
+    sha256 = "sha256-utUpNuemyS8XEVhfhLgOwTRkPFqCBXyK1s1LWemywmU=";
   };
 
   propagatedBuildInputs = [
@@ -38,6 +38,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "pyjwt~=2.1.0" "pyjwt>=2.1.0"
+  '';
+
   pythonImportsCheck = [
     "smarttub"
   ];
diff --git a/pkgs/development/python-modules/python-snap7/default.nix b/pkgs/development/python-modules/python-snap7/default.nix
index b494d2e442e62..0d34262ea3bb5 100644
--- a/pkgs/development/python-modules/python-snap7/default.nix
+++ b/pkgs/development/python-modules/python-snap7/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "python-snap7";
-  version = "1.0";
+  version = "1.1";
 
   src = fetchFromGitHub {
     owner = "gijzelaerr";
     repo = "python-snap7";
     rev = version;
-    sha256 = "103drdwf4v3yqvd7sscxx154mmmshb6x19v9yqmkj2lj76m0619s";
+    sha256 = "18z13wb2q5q3msp9w3wddg1byp7picczw4ng8w1ccj4npidxsqv8";
   };
 
   propagatedBuildInputs = [ setuptools six ];
diff --git a/pkgs/development/python-modules/python-socketio/default.nix b/pkgs/development/python-modules/python-socketio/default.nix
index 635f9cd13daf7..0484a75eaeaea 100644
--- a/pkgs/development/python-modules/python-socketio/default.nix
+++ b/pkgs/development/python-modules/python-socketio/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "python-socketio";
-  version = "5.5.0";
+  version = "5.5.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "miguelgrinberg";
     repo = "python-socketio";
     rev = "v${version}";
-    sha256 = "sha256-K5rs3UEGN1BvWDDfJE9/dPDLsZ4EGSsEf6PXodvc2Bg=";
+    sha256 = "sha256-mtXGSd7Y+frT22EL3QmiBNatwc6IrJqGBRfsQlD8LLk=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/python-socks/default.nix b/pkgs/development/python-modules/python-socks/default.nix
index e6c2d016bb09d..49dc1589ad760 100644
--- a/pkgs/development/python-modules/python-socks/default.nix
+++ b/pkgs/development/python-modules/python-socks/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "python-socks";
-  version = "2.0.0";
+  version = "2.0.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.6.1";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "romis2012";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-iTwlUyfTD2ZhOvBX3IDqjkeW4Z2tfKxvQjIV7GGBVJA=";
+    sha256 = "1ixhi23x28bg45146p23z26y38rlz445xr0inwgx7avh0rs7vwfx";
   };
 
   propagatedBuildInputs = [
@@ -48,6 +48,6 @@ buildPythonPackage rec {
     description = "Core proxy client (SOCKS4, SOCKS5, HTTP) functionality for Python";
     homepage = "https://github.com/romis2012/python-socks";
     license = licenses.asl20;
-    maintainers = with maintainers; [ mjlbach ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/python-songpal/default.nix b/pkgs/development/python-modules/python-songpal/default.nix
index ba17dd81166d9..715bf164a4b32 100644
--- a/pkgs/development/python-modules/python-songpal/default.nix
+++ b/pkgs/development/python-modules/python-songpal/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , pythonOlder
 , fetchFromGitHub
-, fetchpatch
 , poetry-core
 , aiohttp
 , async-upnp-client
@@ -13,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "python-songpal";
-  version = "0.13";
+  version = "0.14";
 
   format = "pyproject";
 
@@ -23,24 +22,9 @@ buildPythonPackage rec {
     owner = "rytilahti";
     repo = "python-songpal";
     rev = version;
-    sha256 = "124w6vfn992845k09bjv352havk8pg590b135m37h1x1m7fmbpwa";
+    hash = "sha256-yuCtz1B5bj3mWz4eP2GXzoaHuIQ47tIWn19jkZN54lw=";
   };
 
-  patches = [
-    # https://github.com/rytilahti/python-songpal/pull/90
-    (fetchpatch {
-      name = "switch-to-poetry-core.patch";
-      url = "https://github.com/rytilahti/python-songpal/commit/56b634790d94b2f9788d5af3d5cedff47f1e42c2.patch";
-      sha256 = "0yc0mrb91ywk77nd4mxvyc0p2kjz2w1p395755a32ls30zw2bs27";
-    })
-  ];
-
-  postPatch = ''
-    # https://github.com/rytilahti/python-songpal/issues/91
-    substituteInPlace pyproject.toml \
-      --replace 'click = "^7"' 'click = "*"'
-  '';
-
   nativeBuildInputs = [
     poetry-core
   ];
diff --git a/pkgs/development/python-modules/python-telegram-bot/default.nix b/pkgs/development/python-modules/python-telegram-bot/default.nix
index 382eb3c5a3148..8d6ab3aeecd39 100644
--- a/pkgs/development/python-modules/python-telegram-bot/default.nix
+++ b/pkgs/development/python-modules/python-telegram-bot/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "python-telegram-bot";
-  version = "13.8.1";
+  version = "13.11";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-sGaR5Vw1lDJn7mNtmqcCs1eRVdLzLg4tbX8R8LXnJ/A=";
+    sha256 = "sha256-uu/3BLqirD3BepRMAtqIgiitJY6Jvi5by9E6ilEC1XM=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/python-utils/default.nix b/pkgs/development/python-modules/python-utils/default.nix
index d79f357e50e10..3a47e107df6e2 100644
--- a/pkgs/development/python-modules/python-utils/default.nix
+++ b/pkgs/development/python-modules/python-utils/default.nix
@@ -3,17 +3,19 @@
 , fetchFromGitHub
 , pytestCheckHook
 , six
+, pytest-mypy
 }:
 
 buildPythonPackage rec {
   pname = "python-utils";
-  version = "2.7.0";
+  version = "3.1.0";
 
   src = fetchFromGitHub {
     owner = "WoLpH";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0gns9v5144cj03p7qbb3822scb6pwrlgr6niixpkynwqkcwjfg4c";
+    sha256 = "sha256-+NgcVIDM9f2OKBpJNWlSyFxEONltPWJSWIu400/5RkQ=
+";
   };
 
   # disable coverage and linting
@@ -27,6 +29,7 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
+    pytest-mypy
     pytestCheckHook
   ];
 
diff --git a/pkgs/development/python-modules/python2-pythondialog/default.nix b/pkgs/development/python-modules/python2-pythondialog/default.nix
deleted file mode 100644
index 78378a738dba7..0000000000000
--- a/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/pkgs/development/python-modules/python_statsd/default.nix b/pkgs/development/python-modules/python_statsd/default.nix
deleted file mode 100644
index 2aabaec2e14fd..0000000000000
--- a/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/pkgs/development/python-modules/pythondialog/default.nix b/pkgs/development/python-modules/pythondialog/default.nix
index fbd37155cdb75..3aa139b64b0ce 100644
--- a/pkgs/development/python-modules/pythondialog/default.nix
+++ b/pkgs/development/python-modules/pythondialog/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "pythondialog";
-  version = "3.5.2";
+  version = "3.5.3";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4fc11e95540d1d5dbe0a60cd3fb7787354df85ee4b5da21f708ea46cb47bf6d6";
+    sha256 = "b2a34a8af0a6625ccbdf45cd343b854fc6c1a85231dadc80b8805db836756323";
   };
 
   patchPhase = ''
diff --git a/pkgs/development/python-modules/pythonfinder/default.nix b/pkgs/development/python-modules/pythonfinder/default.nix
new file mode 100644
index 0000000000000..bf9cb69721c45
--- /dev/null
+++ b/pkgs/development/python-modules/pythonfinder/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, pytestCheckHook
+, attrs
+, cached-property
+, click
+, six
+, packaging
+, pytest-cov
+, pytest-timeout
+}:
+
+buildPythonPackage rec {
+  pname = "pythonfinder";
+  version = "1.2.9";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "sarugaku";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-tPMqVKbYwBRvb8/GyYNxO8lwJLcUUQyRoCoF5tg6rxs=";
+  };
+
+  propagatedBuildInputs = [
+    attrs
+    cached-property
+    click
+    six
+    packaging
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    pytest-cov
+    pytest-timeout
+  ];
+
+  pytestFlagsArray = [ "--no-cov" ];
+
+  # these tests invoke git in a subprocess and
+  # for some reason git can't be found even if included in checkInputs
+  disabledTests = [
+    "test_shims_are_kept"
+    "test_shims_are_removed"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/sarugaku/pythonfinder";
+    description = "Cross Platform Search Tool for Finding Pythons";
+    license = licenses.mit;
+    maintainers = with maintainers; [ cpcloud ];
+  };
+}
diff --git a/pkgs/development/python-modules/pythonirclib/default.nix b/pkgs/development/python-modules/pythonirclib/default.nix
deleted file mode 100644
index 54c84fe6ef597..0000000000000
--- a/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/pkgs/development/python-modules/pythonmagick/default.nix b/pkgs/development/python-modules/pythonmagick/default.nix
deleted file mode 100644
index a647fa1005bc5..0000000000000
--- a/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/pkgs/development/python-modules/pythonocc-core/default.nix b/pkgs/development/python-modules/pythonocc-core/default.nix
index 9039c52a8a420..8a9433ec898f5 100644
--- a/pkgs/development/python-modules/pythonocc-core/default.nix
+++ b/pkgs/development/python-modules/pythonocc-core/default.nix
@@ -1,15 +1,29 @@
-{ lib, stdenv, python, fetchFromGitHub, cmake, swig, opencascade, smesh, freetype, libGL, libGLU, libX11
-, Cocoa }:
+{ lib, stdenv, python, fetchFromGitHub
+, cmake
+, Cocoa
+, fontconfig
+, freetype
+, libGL
+, libGLU
+, libX11
+, libXext
+, libXi
+, libXmu
+, opencascade-occt
+, rapidjson
+, smesh
+, swig
+}:
 
 stdenv.mkDerivation rec {
   pname = "pythonocc-core";
-  version = "0.18.1";
+  version = "7.5.1";
 
   src = fetchFromGitHub {
     owner = "tpaviot";
     repo = "pythonocc-core";
     rev = version;
-    sha256 = "1jk4y7f75z9lyawffpfkr50qw5452xzi1imcdlw9pdvf4i0y86k3";
+    sha256 = "1md6x60pnfq0qv4lsnmjv6i96mzdrcpxcgpb316i7wmv9b5ci01s";
   };
 
   postPatch = ''
@@ -20,8 +34,9 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ cmake swig ];
   buildInputs = [
-    python opencascade smesh
-    freetype libGL libGLU libX11
+    python opencascade-occt smesh
+    freetype libGL libGLU libX11 libXext libXmu libXi
+    fontconfig rapidjson
   ] ++ lib.optionals stdenv.isDarwin [ Cocoa ];
 
   cmakeFlags = [
diff --git a/pkgs/development/python-modules/pytibber/default.nix b/pkgs/development/python-modules/pytibber/default.nix
index fbfd0ba030cf8..e2c788f1b3ebf 100644
--- a/pkgs/development/python-modules/pytibber/default.nix
+++ b/pkgs/development/python-modules/pytibber/default.nix
@@ -7,21 +7,22 @@
 , graphql-subscription-manager
 , python-dateutil
 , pytz
+, pytest-asyncio
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "pytibber";
-  version = "0.21.6";
+  version = "0.22.1";
   format = "setuptools";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "Danielhiversen";
     repo = "pyTibber";
     rev = version;
-    hash = "sha256-zgiUXGso3bQ3pCD7r+VYHGBIihPwSfHibS2OZvPUb3Q=";
+    hash = "sha256-kzKY9ixsAkfee5En0IzYl5izeXq3xY/8bc5Kz/qkE7U=";
   };
 
   propagatedBuildInputs = [
@@ -33,6 +34,7 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
+    pytest-asyncio
     pytestCheckHook
   ];
 
diff --git a/pkgs/development/python-modules/pytile/default.nix b/pkgs/development/python-modules/pytile/default.nix
index 1673688657cc0..a94201b037d47 100644
--- a/pkgs/development/python-modules/pytile/default.nix
+++ b/pkgs/development/python-modules/pytile/default.nix
@@ -13,16 +13,16 @@
 
 buildPythonPackage rec {
   pname = "pytile";
-  version = "2021.12.0";
+  version = "2022.02.0";
   format = "pyproject";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "sha256-a76Qzk8ZsoV6HUOcDjMdnFVZJu/iKFbShoC9OZ0caDc=";
+    sha256 = "sha256-IGjM9yU/3EjO9sV1ZZUX7RUL/a6CcMPzANhVMTcbZGU=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/pytorch-lightning/default.nix b/pkgs/development/python-modules/pytorch-lightning/default.nix
index 63991752a8ac2..de75aa0ae8fbd 100644
--- a/pkgs/development/python-modules/pytorch-lightning/default.nix
+++ b/pkgs/development/python-modules/pytorch-lightning/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "pytorch-lightning";
-  version = "0.8.5";
+  version = "1.5.8";
 
   disabled = isPy27;
 
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "PyTorchLightning";
     repo = pname;
     rev = version;
-    sha256 = "12zhq4pnfcwbgcx7cs99c751gp3w0ysaf5ykv2lv8f4i360w3r5a";
+    sha256 = "161mz66l11z4350q93fmmq3x0jzbp5761lf4fx3yvz17qzp7ygkn";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pytorch-metric-learning/default.nix b/pkgs/development/python-modules/pytorch-metric-learning/default.nix
index 0c1ca751eb13d..e9728b3d676c5 100644
--- a/pkgs/development/python-modules/pytorch-metric-learning/default.nix
+++ b/pkgs/development/python-modules/pytorch-metric-learning/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname   = "pytorch-metric-learning";
-  version = "0.9.99";
+  version = "1.1.0";
 
   disabled = isPy27;
 
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "KevinMusgrave";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1ahs2b7q3hxi6yv4g2fjy7mvl899h56dvlpc2r9301440qsgkdzr";
+    sha256 = "0qvlxgdml22fzrs47yzqpfzak8lfdrzayvapawfz93cq8903h7qp";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pytorch/bin.nix b/pkgs/development/python-modules/pytorch/bin.nix
index f570a0a5c95a1..df3e5da4c5ab2 100644
--- a/pkgs/development/python-modules/pytorch/bin.nix
+++ b/pkgs/development/python-modules/pytorch/bin.nix
@@ -11,6 +11,7 @@
 , patchelf
 , pyyaml
 , requests
+, setuptools
 , typing-extensions
 }:
 
@@ -41,6 +42,7 @@ in buildPythonPackage {
     numpy
     pyyaml
     requests
+    setuptools
     typing-extensions
   ];
 
@@ -72,7 +74,7 @@ in buildPythonPackage {
     # 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;
+    platforms = platforms.linux ++ platforms.darwin;
     maintainers = with maintainers; [ junjihashimoto ];
   };
 }
diff --git a/pkgs/development/python-modules/pytorch/binary-hashes.nix b/pkgs/development/python-modules/pytorch/binary-hashes.nix
index dd3e5dc1ae3ec..61f1e59d09e8d 100644
--- a/pkgs/development/python-modules/pytorch/binary-hashes.nix
+++ b/pkgs/development/python-modules/pytorch/binary-hashes.nix
@@ -22,5 +22,30 @@ version : builtins.getAttr version {
       url = "https://download.pytorch.org/whl/cu113/torch-1.10.0%2Bcu113-cp39-cp39-linux_x86_64.whl";
       hash = "sha256-w8UJDh4b5cgDu7ZSvDoKzNH4hiXEyRfvpycNOg+wJOg=";
     };
+    x86_64-darwin-37 = {
+      name = "torch-1.10.0-cp37-none-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-1.10.0-cp37-none-macosx_10_9_x86_64.whl";
+      hash = "sha256-RJkFVUcIfX736KdU8JwsTxRwKXrj5UkDY9umbHVQGyE=";
+    };
+    x86_64-darwin-38 = {
+      name = "torch-1.10.0-cp38-none-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-1.10.0-cp38-none-macosx_10_9_x86_64.whl";
+      hash = "sha256-rvevti6bF0tODl4eSkLjurO4SQpmjWZvYvfUUXVZ+/I=";
+    };
+    x86_64-darwin-39 = {
+      name = "torch-1.10.0-cp39-none-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-1.10.0-cp39-none-macosx_10_9_x86_64.whl";
+      hash = "sha256-1u+HRwtE35lw6EVCVH1bp3ILuJYWYCRB31VaObEk4rw=";
+    };
+    aarch64-darwin-38 = {
+      name = "torch-1.10.0-cp38-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-1.10.0-cp38-none-macosx_11_0_arm64.whl";
+      hash = "sha256-1hhYJ7KFeAZTzdgdd6Cf3KdqWxkNWYbVUr4qXEQs+qQ=";
+    };
+    aarch64-darwin-39 = {
+      name = "torch-1.10.0-cp39-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-1.10.0-cp39-none-macosx_11_0_arm64.whl";
+      hash = "sha256-7qZ17AHsS0oGVf0phPFmpco7kz2uatTrTlLrpwJtwXY=";
+    };
   };
 }
diff --git a/pkgs/development/python-modules/pytorch/default.nix b/pkgs/development/python-modules/pytorch/default.nix
index 564087769acd9..c370eaf6a9426 100644
--- a/pkgs/development/python-modules/pytorch/default.nix
+++ b/pkgs/development/python-modules/pytorch/default.nix
@@ -117,7 +117,7 @@ let
 in buildPythonPackage rec {
   pname = "pytorch";
   # Don't forget to update pytorch-bin to the same version.
-  version = "1.9.0";
+  version = "1.10.2";
 
   disabled = !isPy3k;
 
@@ -132,7 +132,7 @@ in buildPythonPackage rec {
     repo   = "pytorch";
     rev    = "v${version}";
     fetchSubmodules = true;
-    sha256 = "sha256-gZmEhV1zzfr/5T2uNfS+8knzyJIxnv2COWVyiAzU9jM=";
+    sha256 = "sha256-QcvoJqpZJXPSc9HLCJHetrp/hMESuC5kYl90d7Id0ZU=";
   };
 
   patches = lib.optionals stdenv.isDarwin [
@@ -304,7 +304,7 @@ in buildPythonPackage rec {
   passthru = {
     inherit cudaSupport;
     cudaArchList = final_cudaArchList;
-    # At least for 1.9.0 `torch.fft` is unavailable unless BLAS provider is MKL. This attribute allows for easy detection of its availability.
+    # At least for 1.10.2 `torch.fft` is unavailable unless BLAS provider is MKL. This attribute allows for easy detection of its availability.
     blasProvider = blas.provider;
   };
 
diff --git a/pkgs/development/python-modules/pytradfri/default.nix b/pkgs/development/python-modules/pytradfri/default.nix
index 3e50debd835c9..e1c74b0846132 100644
--- a/pkgs/development/python-modules/pytradfri/default.nix
+++ b/pkgs/development/python-modules/pytradfri/default.nix
@@ -9,15 +9,16 @@
 
 buildPythonPackage rec {
   pname = "pytradfri";
-  version = "8.0.0";
+  version = "9.0.0";
+  format = "setuptools";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "home-assistant-libs";
     repo = "pytradfri";
     rev = version;
-    hash = "sha256-YnQUZcqSldtRqzMac5sPoSNDT+ifs3Jqek2CoDeobe8=";
+    hash = "sha256-12ol+2CnoPfkxmDGJJAkoafHGpQuWC4lh0N7lSvx2DE=";
   };
 
   propagatedBuildInputs = [
@@ -29,7 +30,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "pytradfri" ];
+  pythonImportsCheck = [
+    "pytradfri"
+  ];
 
   meta = with lib; {
     description = "Python package to communicate with the IKEA Trådfri ZigBee Gateway";
diff --git a/pkgs/development/python-modules/pytrends/default.nix b/pkgs/development/python-modules/pytrends/default.nix
index 20dbe0ba31c9f..9156db165f418 100644
--- a/pkgs/development/python-modules/pytrends/default.nix
+++ b/pkgs/development/python-modules/pytrends/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "pytrends";
-  version = "4.7.3";
+  version = "4.8.0";
   disabled = isPy27; # python2 pandas is too old
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8ccb06c57c31fa157b978a0d810de7718ee46583d28cf818250d45f36abd2faa";
+    sha256 = "sha256-BLezPrbfwSCqictGQGiKi2MzNydrbdzqRP8Mf2tiQ9I=";
   };
 
   propagatedBuildInputs = [ requests lxml pandas ];
diff --git a/pkgs/development/python-modules/pyturbojpeg/default.nix b/pkgs/development/python-modules/pyturbojpeg/default.nix
index a357e45a5faf6..6fb7d5d472830 100644
--- a/pkgs/development/python-modules/pyturbojpeg/default.nix
+++ b/pkgs/development/python-modules/pyturbojpeg/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "pyturbojpeg";
-  version = "1.6.3";
+  version = "1.6.5";
   format = "setuptools";
 
   src = fetchPypi {
     pname = "PyTurboJPEG";
     inherit version;
-    sha256 = "sha256-5g9MQB7vpeuorVGExt0scHtLdrWlkuLOZMT38FhAsi4=";
+    hash = "sha256-l3eeD/WGiqVQ2E92WBV8eTRPVdtUnP7wP4brE8PPTkw=";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/pyupgrade/default.nix b/pkgs/development/python-modules/pyupgrade/default.nix
index f549e56c68c4c..8d815ee1ce9fb 100644
--- a/pkgs/development/python-modules/pyupgrade/default.nix
+++ b/pkgs/development/python-modules/pyupgrade/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "pyupgrade";
-  version = "2.30.1";
+  version = "2.31.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "asottile";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-EDF9U4sICTN0BzZHpBCQX3lHz0QUVQrlG0mSTLhpDWY=";
+    sha256 = "sha256-nuYWJ4nilbXa/1KOuGhc6rB7uXDE4+lcESNud4Ug+3Y=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/pyuseragents/default.nix b/pkgs/development/python-modules/pyuseragents/default.nix
index ffa3a5302ae5f..9ab48ebf59d43 100644
--- a/pkgs/development/python-modules/pyuseragents/default.nix
+++ b/pkgs/development/python-modules/pyuseragents/default.nix
@@ -23,6 +23,6 @@ buildPythonPackage rec {
     description = "Giving you a random User-Agent Header";
     homepage = "https://github.com/Animenosekai/useragents";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [ angustrau ];
+    maintainers = with maintainers; [ emilytrau ];
   };
 }
diff --git a/pkgs/development/python-modules/pyutilib/default.nix b/pkgs/development/python-modules/pyutilib/default.nix
index 3877db3254b77..2d738b8757b63 100644
--- a/pkgs/development/python-modules/pyutilib/default.nix
+++ b/pkgs/development/python-modules/pyutilib/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "pyutilib";
-  version = "5.7.2";
+  version = "6.0.0";
 
   src = fetchPypi {
     pname = "PyUtilib";
     inherit version;
-    sha256 = "0bdb5hlj6kyb9m3xnpxzasfv5psnxfj21qx6md8ym8zkcqyq1qs5";
+    sha256 = "sha256-08FPjtkCioMbK/Ubird3brqH5mz8WKBrmcNZqqZA8EA=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pyvera/default.nix b/pkgs/development/python-modules/pyvera/default.nix
index 70392eda7b1d6..9a8ef3043abec 100644
--- a/pkgs/development/python-modules/pyvera/default.nix
+++ b/pkgs/development/python-modules/pyvera/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "pyvera";
-  version = "0.3.14";
+  version = "0.3.15";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "pavoni";
     repo = pname;
     rev = version;
-    sha256 = "sha256-CuXsyHlRw5zqDrQfMT4BzHsmox8MLRKxFKwR5M0XoEM=";
+    sha256 = "sha256-1+xIqOogRUt+blX7AZSKIiU8lpR4AzKIIW/smCSft94=";
   };
 
   nativeBuildInputs = [ poetry-core ];
diff --git a/pkgs/development/python-modules/pyvesync/default.nix b/pkgs/development/python-modules/pyvesync/default.nix
index 50a412768c06b..1cd6de8ef41bf 100644
--- a/pkgs/development/python-modules/pyvesync/default.nix
+++ b/pkgs/development/python-modules/pyvesync/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "pyvesync";
-  version = "1.4.2";
+  version = "1.4.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-O5zt1FiCQAlCaGaiEyrannqZjm4oGq36d4Fa77ys+HE=";
+    sha256 = "sha256-DEDgZXMQrINYImXaWmv/7W7q8RvqK8oMG/B2XsDdZDM=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pyvex/default.nix b/pkgs/development/python-modules/pyvex/default.nix
index 211ba18ae6121..595b4c3573758 100644
--- a/pkgs/development/python-modules/pyvex/default.nix
+++ b/pkgs/development/python-modules/pyvex/default.nix
@@ -7,23 +7,21 @@
 , fetchPypi
 , future
 , pycparser
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "pyvex";
-  version = "9.1.10913";
+  version = "9.1.11752";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-EUgCyjD5ia5KQMvZWVAsXeKRjmSVE7tRRYH5u/Ozug0=";
+    hash = "sha256-DI+Jc5MtDd2XXfjIDtPd8qt4/eQ/3nwbDUqWE2haUhM=";
   };
 
-  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
@@ -32,15 +30,29 @@ buildPythonPackage rec {
     pycparser
   ];
 
+  postPatch = lib.optionalString stdenv.isDarwin ''
+    substituteInPlace vex/Makefile-gcc \
+      --replace '/usr/bin/ar' 'ar'
+  '';
+
+  setupPyBuildFlags = lib.optionals stdenv.isLinux [
+    "--plat-name"
+    "linux"
+  ];
+
   preBuild = ''
     export CC=${stdenv.cc.targetPrefix}cc
-    substituteInPlace pyvex_c/Makefile --replace 'AR=ar' 'AR=${stdenv.cc.targetPrefix}ar'
+    substituteInPlace pyvex_c/Makefile \
+      --replace 'AR=ar' 'AR=${stdenv.cc.targetPrefix}ar'
   '';
 
   # No tests are available on PyPI, GitHub release has tests
   # Switch to GitHub release after all angr parts are present
   doCheck = false;
-  pythonImportsCheck = [ "pyvex" ];
+
+  pythonImportsCheck = [
+    "pyvex"
+  ];
 
   meta = with lib; {
     description = "Python interface to libVEX and VEX IR";
diff --git a/pkgs/development/python-modules/pyvicare/default.nix b/pkgs/development/python-modules/pyvicare/default.nix
index a47a46c338a3f..bd3daf7bfb0e2 100644
--- a/pkgs/development/python-modules/pyvicare/default.nix
+++ b/pkgs/development/python-modules/pyvicare/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "pyvicare";
-  version = "2.14.0";
+  version = "2.16.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "somm15";
     repo = "PyViCare";
     rev = version;
-    sha256 = "sha256-+Rjs5PwsjcE8vsCS9gHmEj2Hy2OSH/YxNjYgjrBXHPk=";
+    sha256 = "sha256-fBqFvMb6/dg8PU2JYrXbOonXnS64d4ij81dRb30bVRc=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
diff --git a/pkgs/development/python-modules/pyvlx/default.nix b/pkgs/development/python-modules/pyvlx/default.nix
index 1a78aefa6daf8..10e07f4e22ab5 100644
--- a/pkgs/development/python-modules/pyvlx/default.nix
+++ b/pkgs/development/python-modules/pyvlx/default.nix
@@ -2,25 +2,35 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pytestCheckHook
+, pythonOlder
 , pyyaml
 }:
 
 buildPythonPackage rec {
   pname = "pyvlx";
-  version = "0.2.19";
+  version = "0.2.20";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "Julius2342";
     repo = pname;
     rev = version;
-    sha256 = "031gp3sjagvmgdhfpdqlawva425ja1n3bmxk6jyn4zx54szj9zwf";
+    sha256 = "1irjix9kr6qih84gii7k1a9c67n8133gpnmwfd09550jsqdmg006";
   };
 
-  propagatedBuildInputs = [ pyyaml ];
+  propagatedBuildInputs = [
+    pyyaml
+  ];
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  pythonImportsCheck = [ "pyvlx" ];
+  pythonImportsCheck = [
+    "pyvlx"
+  ];
 
   meta = with lib; {
     description = "Python client to work with Velux units";
diff --git a/pkgs/development/python-modules/pywayland/default.nix b/pkgs/development/python-modules/pywayland/default.nix
index faec2c202632d..c115174b6e453 100644
--- a/pkgs/development/python-modules/pywayland/default.nix
+++ b/pkgs/development/python-modules/pywayland/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "pywayland";
-  version = "0.4.7";
+  version = "0.4.10";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0IMNOPTmY22JCHccIVuZxDhVr41cDcKNkx8bp+5h2CU=";
+    sha256 = "sha256-3fVAJXiIS6sFUj8riHg7LJ4VLLpjZEK8qTJNYSaXtOw=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/pkgs/development/python-modules/pywbem/default.nix b/pkgs/development/python-modules/pywbem/default.nix
index 3e1f37d26b064..db7bd82b652b6 100644
--- a/pkgs/development/python-modules/pywbem/default.nix
+++ b/pkgs/development/python-modules/pywbem/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "pywbem";
-  version = "1.3.0";
+  version = "1.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5df0af28f81891a3914a12f3a30b11b1981f7b30e09c5a42c011797e7fce9b6a";
+    sha256 = "52f668f7ee1f03bdd80485692b648588b3e1909e2dc0754dceca497f5e9cf059";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pyweatherflowrest/default.nix b/pkgs/development/python-modules/pyweatherflowrest/default.nix
index d2ecce519705b..a36f3a2ccfc21 100644
--- a/pkgs/development/python-modules/pyweatherflowrest/default.nix
+++ b/pkgs/development/python-modules/pyweatherflowrest/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "pyweatherflowrest";
-  version = "1.0.3";
+  version = "1.0.8";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "briis";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0zvmvhl47wlqgjsznbqb7rqgsnxlyiiv7v3kxbxiz6b0hq4mq146";
+    sha256 = "1swyqdnvhwaigqhjn5a22gi8if4bl8alfrigln4qa0jl9z03kg09";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pywebdav/default.nix b/pkgs/development/python-modules/pywebdav/default.nix
deleted file mode 100644
index 2f6bb8553a4f6..0000000000000
--- a/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/pkgs/development/python-modules/pywemo/default.nix b/pkgs/development/python-modules/pywemo/default.nix
index 1e2f8db96cd82..15545acf2f63e 100644
--- a/pkgs/development/python-modules/pywemo/default.nix
+++ b/pkgs/development/python-modules/pywemo/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "pywemo";
-  version = "0.7.0";
+  version = "0.8.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "sha256-NwhKrk5cQT7kk4VCr0BMQz0yTP/vuBA6MjTRuk2LM5Y=";
+    hash = "sha256-bGoqhrjoRKUGPBNfmr2XP+1HL5mdRi6XoCi0BdvY9x8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/pywilight/default.nix b/pkgs/development/python-modules/pywilight/default.nix
index 43c50fa8cf2db..923e4b9a28098 100644
--- a/pkgs/development/python-modules/pywilight/default.nix
+++ b/pkgs/development/python-modules/pywilight/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "pywilight";
-  version = "0.0.73";
+  version = "0.0.74";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-8AYzAePLqCiz/EN6cJShGnrISijBpFHAU/u355f5IjY=";
+    sha256 = "sha256-patCdQ7qLEfy+RpH9T/Fa8ubI7QF6OmLzFUokZc5syQ=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pywizlight/default.nix b/pkgs/development/python-modules/pywizlight/default.nix
index 16a72550ffd0d..9bfb0ec1fb0cb 100644
--- a/pkgs/development/python-modules/pywizlight/default.nix
+++ b/pkgs/development/python-modules/pywizlight/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "pywizlight";
-  version = "0.4.16";
+  version = "0.5.10";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "sbidy";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-Da5hkmzGJtfqiDPV9X02opv54Ry6sGiSbDnej9a2QDA=";
+    sha256 = "sha256-G895roPIa7XZUJ/kHBmBmggdWtdPvbdFk3gHaR/R2jU=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pywlroots/default.nix b/pkgs/development/python-modules/pywlroots/default.nix
index a35132ade3f66..4babc68be5d04 100644
--- a/pkgs/development/python-modules/pywlroots/default.nix
+++ b/pkgs/development/python-modules/pywlroots/default.nix
@@ -12,21 +12,27 @@
 , wayland
 , pywayland
 , xkbcommon
+, xorg
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "pywlroots";
-  version = "0.14.11";
+  version = "0.15.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "Ey1B3tx6UufxZs8I64vaoPSNC+4LGdcPuyKrLBHxZa8=";
+    sha256 = "5oKeiNRO/5/6gWHPgatn0sHRtPL2B2Fa7S1A7LWr0qM=";
   };
 
+  # The XWayland detection uses some hard-coded FHS paths. Since we
+  # know wlroots was built with xwayland support, replace its
+  # detection with `return True`.
+  patches = [ ./xwayland.patch ];
+
   nativeBuildInputs = [ pkg-config ];
   propagatedNativeBuildInputs = [ cffi ];
-  buildInputs = [ libinput libxkbcommon pixman udev wayland wlroots ];
+  buildInputs = [ libinput libxkbcommon pixman xorg.libxcb udev wayland wlroots ];
   propagatedBuildInputs = [ cffi pywayland xkbcommon ];
   checkInputs = [ pytestCheckHook ];
 
@@ -40,6 +46,7 @@ buildPythonPackage rec {
     homepage = "https://github.com/flacjacket/pywlroots";
     description = "Python bindings to wlroots using cffi";
     license = licenses.ncsa;
+    platforms = platforms.linux;
     maintainers = with maintainers; [ chvp ];
   };
 }
diff --git a/pkgs/development/python-modules/pywlroots/xwayland.patch b/pkgs/development/python-modules/pywlroots/xwayland.patch
new file mode 100644
index 0000000000000..f3aaecca2642e
--- /dev/null
+++ b/pkgs/development/python-modules/pywlroots/xwayland.patch
@@ -0,0 +1,25 @@
+diff --git a/wlroots/ffi_build.py b/wlroots/ffi_build.py
+index bb07ff8..f19efe3 100644
+--- a/wlroots/ffi_build.py
++++ b/wlroots/ffi_build.py
+@@ -55,19 +55,7 @@ def has_xwayland() -> bool:
+     Check for XWayland headers. If present, wlroots was built with XWayland support, so
+     pywlroots can be too.
+     """
+-    try:
+-        FFI().verify(
+-            "#include <wlr/xwayland.h>",
+-            define_macros=[("WLR_USE_UNSTABLE", 1)],
+-            include_dirs=["/usr/include/pixman-1", include_dir.as_posix()],
+-        )
+-        return True
+-    except VerificationError:
+-        print("If XWayland support is not required, ignore the above error message.")
+-        print(
+-            "If support is required, ensure wlroots was built with -Dxwayland=enabled."
+-        )
+-        return False
++    return True
+ 
+ 
+ # backend.h
diff --git a/pkgs/development/python-modules/pyxml/default.nix b/pkgs/development/python-modules/pyxml/default.nix
deleted file mode 100644
index 49796054b564f..0000000000000
--- a/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/pkgs/development/python-modules/pyyaml/default.nix b/pkgs/development/python-modules/pyyaml/default.nix
index 10073176aeb41..2c0e893b9c50a 100644
--- a/pkgs/development/python-modules/pyyaml/default.nix
+++ b/pkgs/development/python-modules/pyyaml/default.nix
@@ -1,32 +1,32 @@
 { lib
 , buildPythonPackage
+, pythonOlder
 , fetchFromGitHub
 , cython
 , libyaml
-, isPy27
 , python
 }:
 
 buildPythonPackage rec {
   pname = "PyYAML";
-  version = "5.4.1.1";
+  version = "6.0";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "yaml";
     repo = "pyyaml";
     rev = version;
-    sha256 = "1v386gzdvsjg0mgix6v03rd0cgs9dl81qvn3m547849jm8r41dx8";
+    sha256 = "sha256-wcII32mRgRRmAgojntyxBMQkjvxU2jylCgVzlHAj2Xc=";
   };
 
   nativeBuildInputs = [ cython ];
 
   buildInputs = [ libyaml ];
 
-  checkPhase = let
-    testdir = if isPy27 then "tests/lib" else "tests/lib3";
-  in ''
+  checkPhase = ''
     runHook preCheck
-    PYTHONPATH="${testdir}:$PYTHONPATH" ${python.interpreter} -m test_all
+    PYTHONPATH="tests/lib:$PYTHONPATH" ${python.interpreter} -m test_all
     runHook postCheck
   '';
 
diff --git a/pkgs/development/python-modules/qcengine/default.nix b/pkgs/development/python-modules/qcengine/default.nix
index 29fffb1473be6..ea5325ea660cb 100644
--- a/pkgs/development/python-modules/qcengine/default.nix
+++ b/pkgs/development/python-modules/qcengine/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "qcengine";
-  version = "0.21.0";
+  version = "0.22.0";
 
   checkInputs = [ pytestCheckHook ];
 
@@ -25,7 +25,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-ZsPKvbaZ7BBZuOmzq12ism/HyWYcLlQHgZaTzmIsMq4=";
+    sha256 = "685a08247b561ed1c7a7b42e68293f90b412e83556626304a3f826a15be51308";
   };
 
   doCheck = true;
diff --git a/pkgs/development/python-modules/qcs-api-client/default.nix b/pkgs/development/python-modules/qcs-api-client/default.nix
index 7e961b8a233d4..41412e16f8fcf 100644
--- a/pkgs/development/python-modules/qcs-api-client/default.nix
+++ b/pkgs/development/python-modules/qcs-api-client/default.nix
@@ -1,9 +1,11 @@
 { lib
 , attrs
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
+, fetchpatch
 , httpx
 , iso8601
+, poetry-core
 , pydantic
 , pyjwt
 , pytest-asyncio
@@ -18,16 +20,22 @@
 
 buildPythonPackage rec {
   pname = "qcs-api-client";
-  version = "0.20.5";
-  format = "setuptools";
+  version = "0.20.10";
+  format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-nSkCARZk6K5JMgiXunRBrb3pn5Ti6f493OOFzJYaW0M=";
+  src = fetchFromGitHub {
+    owner = "rigetti";
+    repo = "qcs-api-client-python";
+    rev = "v${version}";
+    hash = "sha256-pBC8pFrk6iNYPS3/LKaVo+ds2okN56bxzvffEfs6SrU=";
   };
 
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
   propagatedBuildInputs = [
     attrs
     httpx
@@ -46,15 +54,28 @@ buildPythonPackage rec {
     respx
   ];
 
+  patches = [
+    # Switch to poetry-core, https://github.com/rigetti/qcs-api-client-python/pull/2
+    (fetchpatch {
+      name = "switch-to-poetry-core.patch";
+      url = "https://github.com/rigetti/qcs-api-client-python/commit/32f0b3c7070a65f4edf5b2552648d88435469e44.patch";
+      sha256 = "sha256-mOc+Q/5cmwPziojtxeEMWWHSDvqvzZlNRbPtOSeTinQ=";
+    })
+  ];
+
   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"
+    substituteInPlace pyproject.toml \
+      --replace 'attrs = "^20.1.0"' 'attrs = "*"' \
+      --replace 'httpx = "^0.15.0"' 'httpx = "*"' \
+      --replace 'iso8601 = "^0.1.13"' 'iso8601 = "*"' \
+      --replace 'pydantic = "^1.7.2"' 'pydantic = "*"' \
+      --replace 'pyjwt = "^1.7.1"' 'pyjwt = "*"'
   '';
 
-  # Project has no tests
-  doCheck = false;
+  disabledTestPaths = [
+    # Test is outdated
+    "tests/test_client/test_client.py"
+  ];
 
   pythonImportsCheck = [
     "qcs_api_client"
diff --git a/pkgs/development/python-modules/qdarkstyle/default.nix b/pkgs/development/python-modules/qdarkstyle/default.nix
index 6b9b94b603f42..6e3b6064fcb7c 100644
--- a/pkgs/development/python-modules/qdarkstyle/default.nix
+++ b/pkgs/development/python-modules/qdarkstyle/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "qdarkstyle";
-  version = "2.8.1";
+  version = "3.0.3";
 
   src = fetchPypi {
     inherit version;
     pname = "QDarkStyle";
-    sha256 = "0883vzg35fzpyl1aiijzpfcdfvpq5vi325w0m7xkx7nxplh02fym";
+    sha256 = "936d2d35b552f429803a985dbc17fc879a2f966faa9fbf8983896ccfa33e68f6";
   };
 
   # No tests available
diff --git a/pkgs/development/python-modules/qiling/default.nix b/pkgs/development/python-modules/qiling/default.nix
index 3576f5b736607..51c762c810753 100644
--- a/pkgs/development/python-modules/qiling/default.nix
+++ b/pkgs/development/python-modules/qiling/default.nix
@@ -14,12 +14,12 @@
 
 buildPythonPackage rec {
   pname = "qiling";
-  version = "1.4.0";
+  version = "1.4.1";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-xUoNHMyGN0G2itVcKLsk+7QKxZdguzyh6OZCqCHNB4Y=";
+    sha256 = "e72dc5856cbda975f962ddf063063a32bd6c3b825f75e0795e94ba6840a7d45f";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/qiskit-aer/default.nix b/pkgs/development/python-modules/qiskit-aer/default.nix
index b2e708d586f77..d7b195f1debf6 100644
--- a/pkgs/development/python-modules/qiskit-aer/default.nix
+++ b/pkgs/development/python-modules/qiskit-aer/default.nix
@@ -30,7 +30,7 @@
 
 buildPythonPackage rec {
   pname = "qiskit-aer";
-  version = "0.9.1";
+  version = "0.10.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -39,7 +39,7 @@ buildPythonPackage rec {
     owner = "Qiskit";
     repo = "qiskit-aer";
     rev = version;
-    sha256 = "sha256-SAJjU2zYz6UabOPV1KI2JB7CbJfUJcjbPKbo6iiCk/g=";
+    sha256 = "sha256-COvJCj18qRNQJUXKrtlYJQGLjna44IgtNZeNVJJaIHg=";
   };
 
   postPatch = ''
@@ -88,9 +88,11 @@ 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 tests fail on cvxpy >= 1.1.15
+    "test_clifford"
+    "test_approx_random"
 
     # these fail for some builds. Haven't been able to reproduce error locally.
     "test_kraus_gate_noise"
diff --git a/pkgs/development/python-modules/qiskit-aqua/default.nix b/pkgs/development/python-modules/qiskit-aqua/default.nix
deleted file mode 100644
index 88365e0f8b70f..0000000000000
--- a/pkgs/development/python-modules/qiskit-aqua/default.nix
+++ /dev/null
@@ -1,185 +0,0 @@
-{ lib
-, pythonOlder
-, buildPythonPackage
-, fetchFromGitHub
-, cvxpy
-, dlx
-, docplex
-, fastdtw
-, h5py
-, networkx
-, numpy
-, psutil
-, qiskit-ignis
-, qiskit-terra
-, quandl
-, scikit-learn
-, yfinance
-  # Optional inputs
-, withTorch ? false
-, pytorch
-, withPyscf ? false
-, pyscf
-, withScikitQuant ? false
-, scikit-quant ? null
-, withCplex ? false
-, cplex ? null
-  # Check Inputs
-, ddt
-, pytestCheckHook
-, pytest-timeout
-, qiskit-aer
-}:
-
-buildPythonPackage rec {
-  pname = "qiskit-aqua";
-  version = "0.9.5";
-
-  disabled = pythonOlder "3.6";
-
-  # Pypi's tarball doesn't contain tests
-  src = fetchFromGitHub {
-    owner = "Qiskit";
-    repo = "qiskit-aqua";
-    rev = version;
-    sha256 = "sha256-7QmRwlbAVAR5KfM7tuObkb6+UgiuIm82iGWBuqfve08=";
-  };
-
-  # Optional packages: pyscf (see below NOTE) & pytorch. Can install via pip/nix if needed.
-  propagatedBuildInputs = [
-    cvxpy
-    docplex
-    dlx # Python Dancing Links package
-    fastdtw
-    h5py
-    networkx
-    numpy
-    psutil
-    qiskit-terra
-    qiskit-ignis
-    quandl
-    scikit-learn
-    yfinance
-  ] ++ lib.optionals (withTorch) [ pytorch ]
-  ++ lib.optionals (withPyscf) [ pyscf ]
-  ++ lib.optionals (withScikitQuant) [ scikit-quant ]
-  ++ lib.optionals (withCplex) [ cplex ];
-
-  # *** NOTE ***
-  # We make pyscf optional in this package, due to difficulties packaging it in Nix (test failures, complicated flags, etc).
-  # See nixpkgs#78772, nixpkgs#83447. You are welcome to try to package it yourself,
-  # or use the Nix User Repository version (https://github.com/drewrisinger/nur-packages).
-  # It can also be installed at runtime from the pip wheel.
-  # We disable appropriate tests below to allow building without pyscf installed
-
-  postPatch = ''
-    # Because this is a legacy/final release, the maintainers restricted the maximum
-    # versions of all dependencies to the latest current version. That will not
-    # work with nixpkgs' rolling release/update system.
-    # Unlock all versions for compatibility
-    substituteInPlace setup.py --replace "<=" ">="
-    sed -i 's/\(\w\+-*\w*\).*/\1/' requirements.txt
-    substituteInPlace requirements.txt --replace "dataclasses" ""
-
-    # Add ImportWarning when running qiskit.chemistry (pyscf is a chemistry package) that pyscf is not included
-    echo -e "\nimport warnings\ntry: import pyscf;\nexcept ImportError:\n    " \
-      "warnings.warn('pyscf is not supported on Nixpkgs so some qiskit features will fail." \
-        "You must install it yourself via pip or add it to your environment from the Nix User Repository." \
-        "See https://github.com/NixOS/nixpkgs/pull/83447 for details', ImportWarning)\n" \
-      >> qiskit/chemistry/__init__.py
-
-    # Add ImportWarning when running qiskit.optimization that cplex (optimization package) is not included
-    echo -e "\nimport warnings\ntry: import cplex;\nexcept ImportError:\n    " \
-      "warnings.warn('cplex is not supported on Nixpkgs so some qiskit features will fail." \
-        "You must install it yourself via pip or add it to your environment from the Nix User Repository." \
-        "', ImportWarning)\n" \
-      >> qiskit/optimization/__init__.py
-  '';
-
-  checkInputs = [
-    pytestCheckHook
-    ddt
-    pytest-timeout
-    qiskit-aer
-  ];
-  pythonImportsCheck = [
-    "qiskit.aqua"
-    "qiskit.aqua.algorithms"
-    "qiskit.chemistry"
-    "qiskit.finance"
-    "qiskit.ml"
-    "qiskit.optimization"
-  ];
-  pytestFlagsArray = [
-    "--timeout=30"  # limit test duration to 30 seconds. Some tests previously would run indefinitely
-    "--durations=10"
-  ];
-  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"
-
-    # Disabling slow tests > 10 seconds
-    "TestVQE"
-    "TestOOVQE"
-    "TestVQC"
-    "TestQSVM"
-    "TestOptimizerAQGD"
-    "test_graph_partition_vqe"
-    "TestLookupRotation"
-    "_vqe"
-    "TestHHL"
-    "TestQGAN"
-    "test_evaluate_qasm_mode"
-    "test_measurement_error_mitigation_auto_refresh"
-    "test_wikipedia"
-    "test_shor_factoring_1__15___qasm_simulator____3__5__"
-    "test_readme_sample"
-    "test_ecev"
-    "test_expected_value"
-    "test_qubo_gas_int_paper_example"
-    "test_shor_no_factors_1_5"
-    "test_shor_no_factors_2_7"
-    "test_evolve_2___suzuki___1__3_"
-    "test_delta"
-    "test_swaprz"
-    "test_deprecated_algo_result"
-    "test_unsorted_grouping"
-    "test_ad_hoc_data"
-    "test_nft"
-    "test_oh"
-    "test_confidence_intervals_00001"
-    "test_eoh"
-    "test_qasm_5"
-    "test_uccsd_hf"
-    "test_lih"
-    "test_lih_freeze_core"
-  ] ++ lib.optionals (!withPyscf) [
-    "test_validate" # test/chemistry/test_inputparser.py
-  ];
-
-  meta = with lib; {
-    description = "An extensible library of quantum computing algorithms";
-    homepage = "https://github.com/QISKit/qiskit-aqua";
-    changelog = "https://qiskit.org/documentation/release_notes.html";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ drewrisinger ];
-  };
-}
diff --git a/pkgs/development/python-modules/qiskit-finance/default.nix b/pkgs/development/python-modules/qiskit-finance/default.nix
index d4eaa58e7af9a..05676a60f124c 100644
--- a/pkgs/development/python-modules/qiskit-finance/default.nix
+++ b/pkgs/development/python-modules/qiskit-finance/default.nix
@@ -22,7 +22,7 @@
 
 buildPythonPackage rec {
   pname = "qiskit-finance";
-  version = "0.2.1";
+  version = "0.3.0";
 
   disabled = pythonOlder "3.6";
 
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     owner = "qiskit";
     repo = pname;
     rev = version;
-    sha256 = "sha256-fEhc/01j6iYYwS6mLle+TpX9j0DVn12oPUFamEecoAY=";
+    sha256 = "1wpx519apnpp25yiq20warg4q8yv09x8fk0m8b9kyp199x86iffp";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix b/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix
index 5b304bf38984f..0c8f74cf66dd7 100644
--- a/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix
+++ b/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix
@@ -40,7 +40,7 @@ let
 in
 buildPythonPackage rec {
   pname = "qiskit-ibmq-provider";
-  version = "0.18.1";
+  version = "0.18.3";
 
   disabled = pythonOlder "3.6";
 
@@ -48,7 +48,7 @@ buildPythonPackage rec {
     owner = "Qiskit";
     repo = pname;
     rev = version;
-    sha256 = "sha256-rySSCyI+62G7kL1ZRtjX1WeWj3LPXECvrlXAcIDINF4=";
+    sha256 = "1n1w1lnq2xw94hhhn6kdvw8dqlxk5fxwpm8ng31gxbp1s3qgni17";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/qiskit-ignis/default.nix b/pkgs/development/python-modules/qiskit-ignis/default.nix
index f7ebbee39f80f..a8f45b73e4905 100644
--- a/pkgs/development/python-modules/qiskit-ignis/default.nix
+++ b/pkgs/development/python-modules/qiskit-ignis/default.nix
@@ -23,7 +23,7 @@
 
 buildPythonPackage rec {
   pname = "qiskit-ignis";
-  version = "0.6.0";
+  version = "0.7.0";
 
   disabled = pythonOlder "3.6";
 
@@ -32,7 +32,7 @@ buildPythonPackage rec {
     owner = "Qiskit";
     repo = "qiskit-ignis";
     rev = version;
-    hash = "sha256-L5fwCMsN03ojiDvKIyqsGfUnwej1P7bpyHlL6mu7nh0=";
+    hash = "sha256-5dsRKsz/nruWKuox/WJBghp2CWSDuYvax+G5ZxjZG4s=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/qiskit-machine-learning/default.nix b/pkgs/development/python-modules/qiskit-machine-learning/default.nix
index a2006079c1956..511bc0b2a0bed 100644
--- a/pkgs/development/python-modules/qiskit-machine-learning/default.nix
+++ b/pkgs/development/python-modules/qiskit-machine-learning/default.nix
@@ -23,7 +23,7 @@
 
 buildPythonPackage rec {
   pname = "qiskit-machine-learning";
-  version = "0.2.1";
+  version = "0.3.0";
 
   disabled = pythonOlder "3.6";
 
@@ -31,7 +31,7 @@ buildPythonPackage rec {
     owner = "qiskit";
     repo = pname;
     rev = version;
-    sha256 = "sha256-2dfrkNZYSaXwiOCaRrPckq4BllANgc6BogyBcP0vosY=";
+    sha256 = "0jycs18apnwrksarpwpmp7scndyx91vnv6fchil4jyx4kym8mnf9";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/qiskit-nature/default.nix b/pkgs/development/python-modules/qiskit-nature/default.nix
index 09941fcdd448e..2693daa6ead01 100644
--- a/pkgs/development/python-modules/qiskit-nature/default.nix
+++ b/pkgs/development/python-modules/qiskit-nature/default.nix
@@ -16,11 +16,12 @@
 , pytestCheckHook
 , ddt
 , pylatexenc
+, qiskit-aer
 }:
 
 buildPythonPackage rec {
   pname = "qiskit-nature";
-  version = "0.2.2";
+  version = "0.3.1";
 
   disabled = pythonOlder "3.6";
 
@@ -28,13 +29,9 @@ buildPythonPackage rec {
     owner = "qiskit";
     repo = pname;
     rev = version;
-    sha256 = "sha256-nQbvH911Gt4KddG23qwmiXfRJTWwVEsrzPvuTQfy4FY=";
+    sha256 = "sha256-EkYppEOQGmRIxKC4ArXZb0b+p1gPGnP6AU8LbEbOpPo=";
   };
 
-  postPatch = ''
-    substituteInPlace requirements.txt --replace "h5py<3.3" "h5py"
-  '';
-
   propagatedBuildInputs = [
     h5py
     numpy
@@ -49,30 +46,23 @@ buildPythonPackage rec {
     pytestCheckHook
     ddt
     pylatexenc
+    qiskit-aer
   ];
 
   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"
+    "test_two_qubit_reduction"  # unsure of failure reason. Might be related to recent cvxpy update?
   ];
 
   meta = with lib; {
     description = "Software for developing quantum computing programs";
     homepage = "https://qiskit.org";
-    downloadPage = "https://github.com/QISKit/qiskit-optimization/releases";
+    downloadPage = "https://github.com/QISKit/qiskit-nature/releases";
     changelog = "https://qiskit.org/documentation/release_notes.html";
     license = licenses.asl20;
     maintainers = with maintainers; [ drewrisinger ];
diff --git a/pkgs/development/python-modules/qiskit-optimization/default.nix b/pkgs/development/python-modules/qiskit-optimization/default.nix
index 5d9ae3d4375f4..b1ce0561dc4b1 100644
--- a/pkgs/development/python-modules/qiskit-optimization/default.nix
+++ b/pkgs/development/python-modules/qiskit-optimization/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "qiskit-optimization";
-  version = "0.2.3";
+  version = "0.3.0";
 
   disabled = pythonOlder "3.6";
 
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "qiskit";
     repo = pname;
     rev = version;
-    sha256 = "sha256-y/j/cerzMAKVjehh1LUqYe1Juoa4lIxH2qS165S9img=";
+    sha256 = "18qs0m21j73fjawq3pxz5q5c0g2wgqgicy7p4a57lialpv6vrmc0";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/qiskit-terra/default.nix b/pkgs/development/python-modules/qiskit-terra/default.nix
index da31f86500fb6..1a5aa516c52d0 100644
--- a/pkgs/development/python-modules/qiskit-terra/default.nix
+++ b/pkgs/development/python-modules/qiskit-terra/default.nix
@@ -1,13 +1,10 @@
 { lib
-, stdenv
 , pythonOlder
 , buildPythonPackage
 , fetchFromGitHub
   # Python requirements
 , cython
 , dill
-, fastjsonschema
-, jsonschema
 , numpy
 , networkx
 , ply
@@ -17,6 +14,7 @@
 , retworkx
 , scipy
 , scikit-quant ? null
+, stevedore
 , symengine
 , sympy
 , tweedledum
@@ -56,23 +54,21 @@ in
 
 buildPythonPackage rec {
   pname = "qiskit-terra";
-  version = "0.18.3";
+  version = "0.19.2";
 
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
-    owner = "Qiskit";
+    owner = "qiskit";
     repo = pname;
     rev = version;
-    sha256 = "sha256-w/EnkdlC1hvmLqm4I8ajEYADxqMYGdHKrySLcb/yWGs=";
+    sha256 = "sha256-P2QTdt1H9I5T/ONNoo7XEVnoHweOdq3p2NH3l3/yAn4=";
   };
 
   nativeBuildInputs = [ cython ];
 
   propagatedBuildInputs = [
     dill
-    fastjsonschema
-    jsonschema
     numpy
     networkx
     ply
@@ -82,6 +78,7 @@ buildPythonPackage rec {
     retworkx
     scipy
     scikit-quant
+    stevedore
     symengine
     sympy
     tweedledum
@@ -112,6 +109,9 @@ buildPythonPackage rec {
   ];
   pytestFlagsArray = [ "--durations=10" ];
   disabledTests = [
+    "TestUnitarySynthesisPlugin" # uses unittest mocks for transpiler.run(), seems incompatible somehow w/ pytest infrastructure
+    "test_copy" # assertNotIn doesn't seem to work as expected w/ pytest vs unittest
+
     # Flaky tests
     "test_pulse_limits" # Fails on GitHub Actions, probably due to minor floating point arithmetic error.
     "test_cx_equivalence"  # Fails due to flaky test
@@ -154,6 +154,17 @@ buildPythonPackage rec {
     "test_sample_counts_memory_superposition"
     "test_piecewise_polynomial_function"
     "test_vqe_qasm"
+    "test_piecewise_chebyshev_mutability"
+    "test_bit_conditional_no_cregbundle"
+    "test_gradient_wrapper2"
+    "test_two_qubit_weyl_decomposition_abmb"
+    "test_two_qubit_weyl_decomposition_abb"
+    "test_two_qubit_weyl_decomposition_aac"
+    "test_aqc"
+    "test_gradient"
+    "test_piecewise_polynomial_rotations_mutability"
+    "test_confidence_intervals_1"
+    "test_trotter_from_bound"
   ];
 
   # Moves tests to $PACKAGEDIR/test. They can't be run from /build because of finding
@@ -163,7 +174,6 @@ buildPythonPackage rec {
     echo "Moving Qiskit test files to package directory"
     cp -r $TMP/$sourceRoot/test $PACKAGEDIR
     cp -r $TMP/$sourceRoot/examples $PACKAGEDIR
-    cp -r $TMP/$sourceRoot/qiskit/schemas/examples $PACKAGEDIR/qiskit/schemas/
 
     # run pytest from Nix's $out path
     pushd $PACKAGEDIR
diff --git a/pkgs/development/python-modules/qiskit/default.nix b/pkgs/development/python-modules/qiskit/default.nix
index 9d050606006cb..aa81ba00a8cae 100644
--- a/pkgs/development/python-modules/qiskit/default.nix
+++ b/pkgs/development/python-modules/qiskit/default.nix
@@ -4,7 +4,6 @@
 , fetchFromGitHub
   # Python Inputs
 , qiskit-aer
-, qiskit-aqua
 , qiskit-ibmq-provider
 , qiskit-ignis
 , qiskit-terra
@@ -29,7 +28,7 @@ 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.32.1";
+  version = "0.34.2";
 
   disabled = pythonOlder "3.6";
 
@@ -37,12 +36,11 @@ buildPythonPackage rec {
     owner = "qiskit";
     repo = "qiskit";
     rev = version;
-    sha256 = "sha256-0L4TlolvL1akHhWSJ0GRQ/Cu/rZ+Es00jjNM5Ho2uEA=";
+    sha256 = "sha256-weL65IQs6vbjJiPJdaizU0ST6u9qDYb0LhTwC6yAdhY=";
   };
 
   propagatedBuildInputs = [
     qiskit-aer
-    qiskit-aqua
     qiskit-ibmq-provider
     qiskit-ignis
     qiskit-terra
@@ -52,7 +50,6 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [
     "qiskit"
-    "qiskit.aqua"
     "qiskit.circuit"
     "qiskit.ignis"
     "qiskit.providers.aer"
diff --git a/pkgs/development/python-modules/qpid-python/default.nix b/pkgs/development/python-modules/qpid-python/default.nix
deleted file mode 100644
index 24c90d072a2be..0000000000000
--- a/pkgs/development/python-modules/qpid-python/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchurl
-, isPy3k
-}:
-
-buildPythonPackage rec {
-  pname = "qpid-python";
-  version = "0.32";
-  disabled = isPy3k;
-
-  src = fetchurl {
-    url = "http://www.us.apache.org/dist/qpid/${version}/${pname}-${version}.tar.gz";
-    sha256 = "09hdfjgk8z4s3dr8ym2r6xn97j1f9mkb2743pr6zd0bnj01vhsv4";
-  };
-
-  # needs a broker running and then ./qpid-python-test
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "http://qpid.apache.org/";
-    description = "Python client implementation and AMQP conformance tests for Apache Qpid";
-    license = licenses.asl20;
-  };
-
-}
diff --git a/pkgs/development/python-modules/qscintilla-qt4/default.nix b/pkgs/development/python-modules/qscintilla-qt4/default.nix
new file mode 100644
index 0000000000000..a356bfddb9341
--- /dev/null
+++ b/pkgs/development/python-modules/qscintilla-qt4/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, isPy3k
+, isPyPy
+, pkgs
+, python
+, pyqt4
+}:
+
+buildPythonPackage {
+  pname = "qscintilla-qt4";
+  version = pkgs.qscintilla-qt4.version;
+  format = "other";
+
+  disabled = isPyPy;
+
+  src = pkgs.qscintilla-qt4.src;
+
+  nativeBuildInputs = [ pkgs.xorg.lndir ];
+
+  buildInputs = [ pyqt4.qt pyqt4 ];
+
+  preConfigure = ''
+    mkdir -p $out
+    lndir ${pyqt4} $out
+    rm -rf "$out/nix-support"
+    cd Python
+    ${python.executable} ./configure-old.py \
+        --destdir $out/lib/${python.libPrefix}/site-packages/PyQt4 \
+        --apidir $out/api/${python.libPrefix} \
+        -n ${pkgs.qscintilla-qt4}/include \
+        -o ${pkgs.qscintilla-qt4}/lib \
+        --sipdir $out/share/sip
+  '';
+
+  meta = with lib; {
+    description = "A Python binding to QScintilla, Qt based text editing control";
+    license = licenses.lgpl21Plus;
+    maintainers = with maintainers; [ danbst ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/python-modules/qscintilla-qt5/default.nix b/pkgs/development/python-modules/qscintilla-qt5/default.nix
index 70ee430891342..3e43b0d069ca0 100644
--- a/pkgs/development/python-modules/qscintilla-qt5/default.nix
+++ b/pkgs/development/python-modules/qscintilla-qt5/default.nix
@@ -2,51 +2,53 @@
 , pythonPackages
 , qscintilla
 , qtbase
+, qmake
+, qtmacextras
+, stdenv
 }:
 
 let
-  inherit (pythonPackages) buildPythonPackage isPy3k python sip_4 pyqt5;
+  inherit (pythonPackages) buildPythonPackage isPy3k python sip sipbuild pyqt5 pyqt-builder;
 in buildPythonPackage rec {
-  pname = "qscintilla";
+  pname = "qscintilla-qt5";
   version = qscintilla.version;
   src = qscintilla.src;
-  format = "other";
+  format = "pyproject";
 
   disabled = !isPy3k;
 
-  nativeBuildInputs = [ sip_4 qtbase ];
-  buildInputs = [ qscintilla ];
-  propagatedBuildInputs = [ pyqt5 ];
+  nativeBuildInputs = [ sip qmake pyqt-builder qscintilla ];
+  buildInputs = [ qtbase ];
+  propagatedBuildInputs = [ pyqt5 ] ++ lib.optionals stdenv.isDarwin [ qtmacextras ];
 
   dontWrapQtApps = true;
 
   postPatch = ''
-    substituteInPlace Python/configure.py \
+    cd Python
+    cp pyproject-qt5.toml pyproject.toml
+    echo '[tool.sip.project]' >> pyproject.toml
+    echo 'sip-include-dirs = [ "${pyqt5}/${python.sitePackages}/PyQt5/bindings"]' \
+       >> pyproject.toml
+  '' + lib.optionalString stdenv.isDarwin ''
+    substituteInPlace project.py \
       --replace \
-      "target_config.py_module_dir" \
-      "'$out/${python.sitePackages}'"
-  '';
+      "if self.project.qsci_external_lib:
+                if self.qsci_features_dir is not None:" \
+      "if self.project.qsci_external_lib:
+                self.builder_settings.append('QT += widgets')
 
-  preConfigure = ''
-    # configure.py will look for this folder
-    mkdir -p $out/share/sip/PyQt5
+                self.builder_settings.append('QT += printsupport')
 
-    cd Python
-    substituteInPlace configure.py \
-      --replace "qmake = {'CONFIG': 'qscintilla2'}" "qmake = {'CONFIG': 'qscintilla2', 'QT': 'widgets printsupport'}"
-    ${python.executable} ./configure.py \
-      --pyqt=PyQt5 \
-      --destdir=$out/${python.sitePackages}/PyQt5 \
-      --stubsdir=$out/${python.sitePackages}/PyQt5 \
-      --apidir=$out/api/${python.libPrefix} \
-      --qsci-incdir=${qscintilla}/include \
-      --qsci-featuresdir=${qscintilla}/mkspecs/features \
-      --qsci-libdir=${qscintilla}/lib \
-      --pyqt-sipdir=${pyqt5}/${python.sitePackages}/PyQt5/bindings \
-      --qsci-sipdir=$out/share/sip/PyQt5 \
-      --sip-incdir=${sip_4}/include
+                if self.qsci_features_dir is not None:"
   '';
 
+  dontConfigure = true;
+
+  build = ''
+    sip-install --qsci-features-dir ${qscintilla}/mkspecs/features \
+    --qsci-include-dir ${qscintilla}/include \
+    --qsci-library-dir ${qscintilla}/lib --api-dir ${qscintilla}/share";
+  '';
   postInstall = ''
     # Needed by pythonImportsCheck to find the module
     export PYTHONPATH="$out/${python.sitePackages}:$PYTHONPATH"
diff --git a/pkgs/development/python-modules/qscintilla/default.nix b/pkgs/development/python-modules/qscintilla/default.nix
deleted file mode 100644
index 24719de779ebb..0000000000000
--- a/pkgs/development/python-modules/qscintilla/default.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-{ lib
-, buildPythonPackage
-, disabledIf
-, isPy3k
-, isPyPy
-, pkgs
-, python
-, pyqt4
-}:
-
-disabledIf (isPy3k || isPyPy)
-  (buildPythonPackage {
-    # TODO: Qt5 support
-    pname = "qscintilla";
-    version = pkgs.qscintilla.version;
-    format = "other";
-
-    src = pkgs.qscintilla.src;
-
-    nativeBuildInputs = [ pkgs.xorg.lndir ];
-
-    buildInputs = [ pyqt4.qt pyqt4 ];
-
-    preConfigure = ''
-      mkdir -p $out
-      lndir ${pyqt4} $out
-      rm -rf "$out/nix-support"
-      cd Python
-      ${python.executable} ./configure-old.py \
-          --destdir $out/lib/${python.libPrefix}/site-packages/PyQt4 \
-          --apidir $out/api/${python.libPrefix} \
-          -n ${pkgs.qscintilla}/include \
-          -o ${pkgs.qscintilla}/lib \
-          --sipdir $out/share/sip
-    '';
-
-    meta = with lib; {
-      description = "A Python binding to QScintilla, Qt based text editing control";
-      license = licenses.lgpl21Plus;
-      maintainers = with maintainers; [ danbst ];
-      platforms = platforms.unix;
-    };
-  })
diff --git a/pkgs/development/python-modules/qserve/default.nix b/pkgs/development/python-modules/qserve/default.nix
deleted file mode 100644
index f316e3fb65c13..0000000000000
--- a/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/pkgs/development/python-modules/qt5reactor/default.nix b/pkgs/development/python-modules/qt5reactor/default.nix
new file mode 100644
index 0000000000000..a85f2ad6892a1
--- /dev/null
+++ b/pkgs/development/python-modules/qt5reactor/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pyqt5
+, twisted
+, pytest-twisted
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "qt5reactor";
+  version = "0.6.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "c3470a8a25d9a339f9ca6243502a9b2277f181d772b7acbff551d5bc363b7572";
+  };
+
+  propagatedBuildInputs = [
+    pyqt5
+    twisted
+  ];
+
+  checkInputs = [
+    pytest-twisted
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "qt5reactor" ];
+
+  meta = with lib; {
+    description = "Twisted Qt Integration";
+    homepage = "https://github.com/twisted/qt5reactor";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/qtpy/default.nix b/pkgs/development/python-modules/qtpy/default.nix
index ef981f19c6647..5c4984ca3f813 100644
--- a/pkgs/development/python-modules/qtpy/default.nix
+++ b/pkgs/development/python-modules/qtpy/default.nix
@@ -1,21 +1,49 @@
-{ lib, buildPythonPackage, fetchPypi, pyside, pytest }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+
+# propagates
+, packaging
+
+# tests
+, pyqt5
+, pyside
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "QtPy";
-  version = "1.11.2";
+  version = "2.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d6e4ae3a41f1fcb19762b58f35ad6dd443b4bdc867a4cb81ef10ccd85403c92b";
+    sha256 = "777e333df4d711b2ec9743117ab319dadfbd743a5a0eee35923855ca3d35cd9d";
   };
 
-  # no concrete propagatedBuildInputs as multiple backends are supposed
-  checkInputs = [ pyside pytest ];
+  propagatedBuildInputs = [
+    packaging
+  ];
+
+  doCheck = false; # ModuleNotFoundError: No module named 'PyQt5.QtConnectivity'
+  checkInputs = [
+    pyside
+    (pyqt5.override {
+      withConnectivity = true;
+      withMultimedia = true;
+      withWebKit = true;
+      withWebSockets = true;
+    })
+    pytestCheckHook
+  ];
 
-  doCheck = false; # require X
-  checkPhase = ''
-    py.test qtpy/tests
-  '';
+  disabledTestPaths = [
+    # Fatal error in python on x86_64
+    "qtpy/tests/test_uic.py"
+  ];
 
   meta = with lib; {
     description = "Abstraction layer for PyQt5/PyQt4/PySide2/PySide";
diff --git a/pkgs/development/python-modules/quamash/default.nix b/pkgs/development/python-modules/quamash/default.nix
index ed52c191c2278..54df9bebb57c3 100644
--- a/pkgs/development/python-modules/quamash/default.nix
+++ b/pkgs/development/python-modules/quamash/default.nix
@@ -1,4 +1,7 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pytest, isPy3k, pyqt5, pyqt ? pyqt5 }:
+{ lib, buildPythonPackage, fetchFromGitHub
+, pytest, isPy3k, pyqt5, pyqt ? pyqt5
+, fetchpatch
+}:
 
 buildPythonPackage rec {
   pname = "quamash";
@@ -14,6 +17,14 @@ buildPythonPackage rec {
     sha256 = "117rp9r4lz0kfz4dmmpa35hp6nhbh6b4xq0jmgvqm68g9hwdxmqa";
   };
 
+  patches = [
+    # add 3.10 compatibility, merged remove on next update
+    (fetchpatch {
+      url = "https://github.com/harvimt/quamash/pull/126/commits/1e9047bec739dbc9d6ab337fc1a111a8b1090244.patch";
+      sha256 = "sha256-6gomY82AOKkrt32SEBKnRugzhnC5FAyKDs6K5xaxnRM=";
+    })
+  ];
+
   propagatedBuildInputs = [ pyqt ];
 
   checkInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/quandl/default.nix b/pkgs/development/python-modules/quandl/default.nix
index b378392f7a974..e819cd24e99d2 100644
--- a/pkgs/development/python-modules/quandl/default.nix
+++ b/pkgs/development/python-modules/quandl/default.nix
@@ -1,35 +1,37 @@
-{ lib, fetchPypi, buildPythonPackage, isPy3k, pythonOlder
-# runtime dependencies
-, pandas, numpy, requests, inflection, python-dateutil, six, more-itertools, importlib-metadata
-# test suite dependencies
-, nose, unittest2, flake8, httpretty, mock, jsondate, parameterized, faker, factory_boy
-# additional runtime dependencies are required on Python 2.x
-, pyopenssl, ndg-httpsclient, pyasn1
+{ lib
+, buildPythonPackage
+, factory_boy
+, faker
+, fetchPypi
+, httpretty
+, importlib-metadata
+, inflection
+, jsondate
+, mock
+, more-itertools
+, numpy
+, pandas
+, parameterized
+, pytestCheckHook
+, python-dateutil
+, pythonOlder
+, requests
+, six
 }:
 
 buildPythonPackage rec {
   pname = "quandl";
-  version = "3.6.1";
-  disabled = !isPy3k;
+  version = "3.7.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit version;
     pname = "Quandl";
-    sha256 = "0jr69fqxhzdmkfh3fxz0yp2kks2hkmixrscjjf59q2l7irglwhc4";
+    sha256 = "6e0b82fbc7861610b3577c5397277c4220e065eee0fed4e46cd6b6021655b64c";
   };
 
-  checkInputs = [
-    nose
-    unittest2
-    flake8
-    httpretty
-    mock
-    jsondate
-    parameterized
-    faker
-    factory_boy
-  ];
-
   propagatedBuildInputs = [
     pandas
     numpy
@@ -38,15 +40,23 @@ buildPythonPackage rec {
     python-dateutil
     six
     more-itertools
-  ] ++ lib.optionals (!isPy3k) [
-    pyopenssl
-    ndg-httpsclient
-    pyasn1
   ] ++ lib.optionals (pythonOlder "3.8") [
     importlib-metadata
   ];
 
-  pythonImportsCheck = [ "quandl" ];
+  checkInputs = [
+    factory_boy
+    faker
+    httpretty
+    jsondate
+    mock
+    parameterized
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "quandl"
+  ];
 
   meta = with lib; {
     description = "Quandl Python client library";
diff --git a/pkgs/development/python-modules/quantities/default.nix b/pkgs/development/python-modules/quantities/default.nix
index 28e08eade43db..48cc70d5f2afc 100644
--- a/pkgs/development/python-modules/quantities/default.nix
+++ b/pkgs/development/python-modules/quantities/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "quantities";
-  version = "0.12.5";
+  version = "0.13.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "67546963cb2a519b1a4aa43d132ef754360268e5d551b43dd1716903d99812f0";
+    sha256 = "0fde20115410de21cefa786f3aeae69c1b51bb19ee492190324c1da705e61a81";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/qutip/default.nix b/pkgs/development/python-modules/qutip/default.nix
index 38cf79e190492..8d19e360ca4d5 100644
--- a/pkgs/development/python-modules/qutip/default.nix
+++ b/pkgs/development/python-modules/qutip/default.nix
@@ -3,13 +3,13 @@
 
 buildPythonPackage rec {
   pname = "qutip";
-  version = "4.6.2";
+  version = "4.6.3";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "04g7ixq1yrrid4lliqbcamnzyw5r0fjbl8ipklps234hvsjfwmxb";
+    sha256 = "sha256-11K7Tl7PE98nM2vGsa+OKIJYu0Wmv8dT700PDt9RRVk=";
   };
 
   # QuTiP says it needs specific (old) Numpy versions. We overwrite them here
diff --git a/pkgs/development/python-modules/radish-bdd/default.nix b/pkgs/development/python-modules/radish-bdd/default.nix
index ac01b853c873f..f75e5cc19ee58 100644
--- a/pkgs/development/python-modules/radish-bdd/default.nix
+++ b/pkgs/development/python-modules/radish-bdd/default.nix
@@ -6,7 +6,7 @@
 , fetchFromGitHub
 , freezegun
 , humanize
-, lark-parser
+, lark
 , parse-type
 , pysingleton
 , pytestCheckHook
@@ -29,7 +29,7 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [
-    lark-parser
+    lark
     click
     colorful
     tag-expressions
diff --git a/pkgs/development/python-modules/railroad-diagrams/default.nix b/pkgs/development/python-modules/railroad-diagrams/default.nix
new file mode 100644
index 0000000000000..57c07e0dc48b1
--- /dev/null
+++ b/pkgs/development/python-modules/railroad-diagrams/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "railroad-diagrams";
+  version = "1.1.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "8a1ec227666be2000e76794aa740f77987f1586077aae4d090d2633b3064c976";
+  };
+
+  # this is a dependency of pyparsing, which is a dependency of pytest
+  doCheck = false;
+
+  pythonImportsCheck = [ "railroad" ];
+
+  meta = with lib; {
+    description = "Generate SVG railroad syntax diagrams, like on JSON.org";
+    homepage = "https://github.com/tabatkins/railroad-diagrams";
+    license = licenses.cc0;
+    maintainers = with maintainers; [ jonringer ];
+  };
+}
diff --git a/pkgs/development/python-modules/rdflib/default.nix b/pkgs/development/python-modules/rdflib/default.nix
index 2ffe190a47206..73f170b90b1b6 100644
--- a/pkgs/development/python-modules/rdflib/default.nix
+++ b/pkgs/development/python-modules/rdflib/default.nix
@@ -1,7 +1,7 @@
 { lib
 , stdenv
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , html5lib
 , isodate
 , networkx
@@ -16,14 +16,16 @@
 
 buildPythonPackage rec {
   pname = "rdflib";
-  version = "6.0.2";
+  version = "6.1.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-YTauBWABR07ir/X8W5VuYqEcOpxmuw89nAqqX7tWhU4=";
+  src = fetchFromGitHub {
+    owner = "RDFLib";
+    repo = pname;
+    rev = version;
+    hash = "sha256:1ih7vx4i16np1p8ig5faw74apmbm7kgyj9alya521yvzid6d7pzd";
   };
 
   propagatedBuildInputs = [
@@ -41,6 +43,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  pytestFlagsArray = [
+    # requires network access
+    "--deselect rdflib/__init__.py::rdflib"
+    "--deselect test/jsonld/test_onedotone.py::test_suite"
+  ];
+
   disabledTests = [
     # Requires network access
     "api_key"
diff --git a/pkgs/development/python-modules/readchar/default.nix b/pkgs/development/python-modules/readchar/default.nix
index c83a2bba1cd6a..81c489bd8c09d 100644
--- a/pkgs/development/python-modules/readchar/default.nix
+++ b/pkgs/development/python-modules/readchar/default.nix
@@ -1,19 +1,41 @@
-{ lib, buildPythonPackage, fetchFromGitHub, flake8, pytest, pytest-cov, pexpect }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+
+# native
+, flake8
+
+# tests
+, pytestCheckHook
+, pexpect
+}:
 
 buildPythonPackage rec {
   pname = "readchar";
-  version = "2.0.0";
+  version = "3.0.5";
+  format = "setuptools";
 
   # Don't use wheels on PyPI
   src = fetchFromGitHub {
     owner = "magmax";
     repo = "python-${pname}";
-    rev = version;
-    sha256 = "0j1vj4f2j8x5f40rs6h8qplklcxcdbvkkvjpkpmr1xagw05i12bm";
+    rev = "v${version}";
+    sha256 = "sha256:01bjw3ipdzxq1ijn9354nlya625i26ri7jac1dnlj1d1gdd8m5lx";
   };
 
-  nativeBuildInputs = [ flake8 ];
-  checkInputs = [ pytest pytest-cov pexpect ];
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "--cov readchar" ""
+  '';
+
+  nativeBuildInputs = [
+    flake8
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    pexpect
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/magmax/python-readchar";
diff --git a/pkgs/development/python-modules/readme_renderer/default.nix b/pkgs/development/python-modules/readme_renderer/default.nix
index 43d1494a58b0d..65ab0cb2682a6 100644
--- a/pkgs/development/python-modules/readme_renderer/default.nix
+++ b/pkgs/development/python-modules/readme_renderer/default.nix
@@ -4,7 +4,6 @@
 , cmarkgfm
 , docutils
 , fetchPypi
-, future
 , mock
 , pygments
 , pytestCheckHook
@@ -12,20 +11,22 @@
 }:
 
 buildPythonPackage rec {
-  pname = "readme_renderer";
-  version = "30.0";
+  pname = "readme-renderer";
+  version = "32.0";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-gplwDXqRDDBAcqdgHq+tpnEqWwEaIBOUF+Gx6fBGRdg=";
+    pname = "readme_renderer";
+    inherit version;
+    sha256 = "sha256-tRK+r6Z5gmDH1a8+Gx8Jfli/zZpXXafE3dXgN0kKW4U=";
   };
 
   propagatedBuildInputs = [
     bleach
     cmarkgfm
     docutils
-    future
     pygments
   ];
 
@@ -34,7 +35,19 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "readme_renderer" ];
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "cmarkgfm>=0.5.0,<0.7.0" "cmarkgfm>=0.5.0,<1"
+  '';
+
+  disabledTests = [
+    # https://github.com/pypa/readme_renderer/issues/221
+    "test_GFM_"
+  ];
+
+  pythonImportsCheck = [
+    "readme_renderer"
+  ];
 
   meta = with lib; {
     description = "Python library for rendering readme descriptions";
diff --git a/pkgs/development/python-modules/redis/default.nix b/pkgs/development/python-modules/redis/default.nix
index 35109e836fa4d..0731487575b1a 100644
--- a/pkgs/development/python-modules/redis/default.nix
+++ b/pkgs/development/python-modules/redis/default.nix
@@ -1,14 +1,49 @@
-{ lib, fetchPypi, buildPythonPackage }:
+{ lib
+, fetchPypi
+, buildPythonPackage
+, pythonOlder
+
+# propagates
+, cryptography
+, deprecated
+, hiredis
+, importlib-metadata
+, packaging
+, requests
+}:
 
 buildPythonPackage rec {
   pname = "redis";
-  version = "3.5.3";
+  version = "4.1.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0e7e0cfca8660dea8b7d5cd8c4f6c5e29e11f31158c0b0ae91a397f00e5a05a2";
+    sha256 = "sha256-IfCiO85weQkHbmuizgdsulm/9g0qsily4GR/32IP/kc=";
   };
 
+  propagatedBuildInputs = [
+    cryptography
+    deprecated
+    hiredis
+    packaging
+    requests
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    importlib-metadata
+  ];
+
+  pythonImportsCheck = [
+    "redis"
+    "redis.client"
+    "redis.cluster"
+    "redis.connection"
+    "redis.exceptions"
+    "redis.sentinel"
+    "redis.utils"
+  ];
+
   # tests require a running redis
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/regenmaschine/default.nix b/pkgs/development/python-modules/regenmaschine/default.nix
index 18e9e9e6c1a50..50d29c1923d22 100644
--- a/pkgs/development/python-modules/regenmaschine/default.nix
+++ b/pkgs/development/python-modules/regenmaschine/default.nix
@@ -14,15 +14,16 @@
 
 buildPythonPackage rec {
   pname = "regenmaschine";
-  version = "2021.10.0";
+  version = "2022.01.0";
   format = "pyproject";
-  disabled = pythonOlder "3.6";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "sha256-vMXDnnIQiRuyLvem1JKop6FJ0fhwR8xP0276PdZi/QI=";
+    sha256 = "sha256-TPiz3d1GbcIWCKRz3Hq4JU9+df/Fw4dUXQkIM6QO1Fs=";
   };
 
   nativeBuildInputs = [
@@ -42,7 +43,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "regenmaschine" ];
+  disabledTestPaths = [
+    # Examples are prefix with test_
+    "examples/"
+  ];
+
+  pythonImportsCheck = [
+    "regenmaschine"
+  ];
 
   __darwinAllowLocalNetworking = true;
 
diff --git a/pkgs/development/python-modules/remarshal/default.nix b/pkgs/development/python-modules/remarshal/default.nix
index 90024e7325764..99c868eb0b804 100644
--- a/pkgs/development/python-modules/remarshal/default.nix
+++ b/pkgs/development/python-modules/remarshal/default.nix
@@ -1,22 +1,54 @@
-{ lib, buildPythonApplication, fetchPypi
+{ lib
+, buildPythonApplication
+, fetchFromGitHub
+
+# build deps
+, poetry-core
+
+# propagates
 , cbor2
 , python-dateutil
 , pyyaml
 , tomlkit
 , u-msgpack-python
+
+# tested using
+, pytestCheckHook
 }:
 
 buildPythonApplication rec {
   pname = "remarshal";
   version = "0.14.0";
+  format = "pyproject";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "16425aa1575a271dd3705d812b06276eeedc3ac557e7fd28e06822ad14cd0667";
+  src = fetchFromGitHub {
+    owner = "dbohdan";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256:nTM3jrPf0kGE15J+ZXBIt2+NGSW2a6VlZCKj70n5kHM=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "poetry.masonry.api" "poetry.core.masonry.api" \
+      --replace 'PyYAML = "^5.3"' 'PyYAML = "*"' \
+      --replace 'tomlkit = "^0.7"' 'tomlkit = "*"'
+  '';
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
   propagatedBuildInputs = [
-    pyyaml cbor2 python-dateutil tomlkit u-msgpack-python
+    cbor2
+    python-dateutil
+    pyyaml
+    tomlkit
+    u-msgpack-python
+  ];
+
+  checkInputs = [
+    pytestCheckHook
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/remotecv/default.nix b/pkgs/development/python-modules/remotecv/default.nix
deleted file mode 100644
index 078e431f3baa6..0000000000000
--- a/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/pkgs/development/python-modules/remotecv/install_requires.patch b/pkgs/development/python-modules/remotecv/install_requires.patch
deleted file mode 100644
index 37203128486ef..0000000000000
--- a/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/pkgs/development/python-modules/renault-api/default.nix b/pkgs/development/python-modules/renault-api/default.nix
index eef2459c259d5..8ebf9a2d26ab1 100644
--- a/pkgs/development/python-modules/renault-api/default.nix
+++ b/pkgs/development/python-modules/renault-api/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "renault-api";
-  version = "0.1.6";
+  version = "0.1.8";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "hacf-fr";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0v9a8p0ynikqzg7vvinvik5gjvsc5nrfqkq528mhcw7y4hmj8ndm";
+    sha256 = "sha256-gGr9yzcEgcte2uYhHzgmqT80JRJyRia31bK/v+42teU=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/reolink/default.nix b/pkgs/development/python-modules/reolink/default.nix
index 71f94d489aa14..69a1b11fea4c9 100644
--- a/pkgs/development/python-modules/reolink/default.nix
+++ b/pkgs/development/python-modules/reolink/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "reolink";
-  version = "0.56";
+  version = "0053";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "fwestenberg";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-ld1KDWweaG7y7EPN6Y19PzQRGCIFAPEb6AmlXXbjgCU=";
+    sha256 = "0qjp7n2qa9n9fdhfcgfgw89hy19z5144cxhkhmhv1xnfdiz175qd";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/repeated_test/default.nix b/pkgs/development/python-modules/repeated_test/default.nix
deleted file mode 100644
index 2c51238e19b54..0000000000000
--- a/pkgs/development/python-modules/repeated_test/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, unittest2
-, six
-}:
-
-buildPythonPackage rec {
-  pname = "repeated_test";
-  version = "1.0.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "65107444a4945668ab7be6d1a3e1814cee9b2cfc577e7c70381700b11b809d27";
-  };
-
-  buildInputs = [ unittest2 ];
-  propagatedBuildInputs = [ six ];
-
-  meta = with lib; {
-    description = "A quick unittest-compatible framework for repeating a test function over many fixtures";
-    homepage = "https://github.com/epsy/repeated_test";
-    license = licenses.mit;
-  };
-
-}
diff --git a/pkgs/development/python-modules/reportlab/default.nix b/pkgs/development/python-modules/reportlab/default.nix
index de2b799a051b1..82d84dc26a974 100644
--- a/pkgs/development/python-modules/reportlab/default.nix
+++ b/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.2";
+  version = "3.6.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f0c4b47b012d893b0b9f5703cf6f01b5593714a3fc1e7dc73efbbfe26bb7e16a";
+    sha256 = "d8fe27ad312671c9347cf5997f7c1017833fac17233f33296281ba9fa0de189a";
   };
 
   checkInputs = [ glibcLocales ];
diff --git a/pkgs/development/python-modules/repoze_who/default.nix b/pkgs/development/python-modules/repoze_who/default.nix
index 1b33bb6954bf9..47bb842cc875c 100644
--- a/pkgs/development/python-modules/repoze_who/default.nix
+++ b/pkgs/development/python-modules/repoze_who/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "repoze.who";
-  version = "2.4";
+  version = "2.4.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "cf97450de3c8eb5c03b4037be75b018db91befab1094204e452a0b1c0f7a94a6";
+    sha256 = "sha256-ikybkmi0/w7dkG6Xwu7XzoPrn2LkJQv+A7zbum0xojc=";
   };
 
   propagatedBuildInputs = [ zope_interface webob ];
diff --git a/pkgs/development/python-modules/requests-cache/default.nix b/pkgs/development/python-modules/requests-cache/default.nix
index 21732ed3a956d..adaf824d3d925 100644
--- a/pkgs/development/python-modules/requests-cache/default.nix
+++ b/pkgs/development/python-modules/requests-cache/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "requests-cache";
-  version = "0.8.1";
+  version = "0.9.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -29,7 +29,8 @@ buildPythonPackage rec {
     owner = "reclosedev";
     repo = "requests-cache";
     rev = "v${version}";
-    sha256 = "sha256-HzOcPWmvUhqPtb/7Mnw6wWY7a4CwGRwPgq+7QoHJAc8=";
+    sha256 = "sha256-MZ3N0zbo745erF52D6DqOEb4OPpXFwSsemi0z6Do02c=
+";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/requests-file/default.nix b/pkgs/development/python-modules/requests-file/default.nix
index 374627a1bb9a2..d8cd9d81c94dd 100644
--- a/pkgs/development/python-modules/requests-file/default.nix
+++ b/pkgs/development/python-modules/requests-file/default.nix
@@ -1,22 +1,38 @@
-{ lib, fetchPypi, buildPythonPackage, pytestCheckHook, requests, six }:
+{ lib
+, fetchPypi
+, buildPythonPackage
+, pytestCheckHook
+, requests
+, six
+}:
 
 buildPythonPackage rec {
-  pname   = "requests-file";
+  pname = "requests-file";
   version = "1.5.1";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "07d74208d3389d01c38ab89ef403af0cfec63957d53a0081d8eca738d0247d8e";
+    hash = "sha256-B9dCCNM4nQHDirie9AOvDP7GOVfVOgCB2OynONAkfY4=";
   };
 
-  propagatedBuildInputs = [ requests six ];
+  propagatedBuildInputs = [
+    requests
+    six
+  ];
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  meta = {
-    homepage = "https://github.com/dashea/requests-file";
+  pythonImportsCheck = [
+    "requests_file"
+  ];
+
+  meta = with lib; {
     description = "Transport adapter for fetching file:// URLs with the requests python library";
-    license = lib.licenses.asl20;
+    homepage = "https://github.com/dashea/requests-file";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/requests-http-signature/default.nix b/pkgs/development/python-modules/requests-http-signature/default.nix
index 7a27055aba2a1..c51e24e0ac9de 100644
--- a/pkgs/development/python-modules/requests-http-signature/default.nix
+++ b/pkgs/development/python-modules/requests-http-signature/default.nix
@@ -9,13 +9,13 @@
 buildPythonPackage rec {
   pname = "requests-http-signature";
   version = "0.2.0";
+  format = "setuptools";
 
-  # .pem files for tests aren't present on PyPI
   src = fetchFromGitHub {
     owner = "pyauth";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1jsplqrxadjsc86f0kb6dgpblgwplxrpi0ql1a714w8pbbz4z3h7";
+    hash = "sha256-B45P/loXcRKOChSDeHOnlz+67mtmTeAMYlo21TOmV8s=";
   };
 
   propagatedBuildInputs = [
@@ -27,17 +27,21 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [ "test/test.py" ];
+  pytestFlagsArray = [
+    "test/test.py"
+  ];
 
   disabledTests = [
     # Test require network access
     "test_readme_example"
   ];
 
-  pythonImportsCheck = [ "requests_http_signature" ];
+  pythonImportsCheck = [
+    "requests_http_signature"
+  ];
 
   meta = with lib; {
-    description = "A Requests auth module for HTTP Signature";
+    description = "Requests authentication module for HTTP Signature";
     homepage = "https://github.com/kislyuk/requests-http-signature";
     license = licenses.asl20;
     maintainers = with maintainers; [ mmai ];
diff --git a/pkgs/development/python-modules/requests-kerberos/default.nix b/pkgs/development/python-modules/requests-kerberos/default.nix
index 17a8191455aed..3a1382061bd7d 100644
--- a/pkgs/development/python-modules/requests-kerberos/default.nix
+++ b/pkgs/development/python-modules/requests-kerberos/default.nix
@@ -1,33 +1,29 @@
 { lib
-, fetchFromGitHub
 , buildPythonPackage
 , cryptography
-, requests
+, fetchFromGitHub
 , pykerberos
 , pyspnego
-, pytestCheckHook
 , pytest-mock
-, mock
+, pytestCheckHook
+, pythonOlder
+, requests
 }:
 
 buildPythonPackage rec {
   pname = "requests-kerberos";
-  version = "0.13.0";
+  version = "0.14.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
-  # tests are not present in the PyPI version
   src = fetchFromGitHub {
     owner = "requests";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0yvfg2cj3d10l8fd8kyal4hmpd7fd1c3bca13cj9ril5l573in76";
+    hash = "sha256-Y9dTzFCgVmSnbnTE0kEfjpEkXDEA+uOqFHLkSC27YGg=";
   };
 
-  # avoid needing to package krb5
-  postPatch = ''
-    substituteInPlace setup.py \
-    --replace "pyspnego[kerberos]" "pyspnego"
-  '';
-
   propagatedBuildInputs = [
     cryptography
     requests
@@ -36,12 +32,19 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    mock
     pytestCheckHook
     pytest-mock
   ];
 
-  pythonImportsCheck = [ "requests_kerberos" ];
+  # avoid needing to package krb5
+  postPatch = ''
+    substituteInPlace setup.py \
+    --replace "pyspnego[kerberos]" "pyspnego"
+  '';
+
+  pythonImportsCheck = [
+    "requests_kerberos"
+  ];
 
   meta = with lib; {
     description = "An authentication handler for using Kerberos with Python Requests";
diff --git a/pkgs/development/python-modules/requests-toolbelt/default.nix b/pkgs/development/python-modules/requests-toolbelt/default.nix
index 3ad219025a929..0417154a4a310 100644
--- a/pkgs/development/python-modules/requests-toolbelt/default.nix
+++ b/pkgs/development/python-modules/requests-toolbelt/default.nix
@@ -1,38 +1,61 @@
 { lib
+, betamax
 , buildPythonPackage
+, fetchpatch
 , fetchPypi
-, requests
-, betamax
 , mock
-, pytest
 , pyopenssl
+, pytestCheckHook
+, requests
 }:
 
 buildPythonPackage rec {
   pname = "requests-toolbelt";
   version = "0.9.1";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0";
+    hash = "sha256-loCJ1FhK1K18FxRU8KXG2sI5celHJSHqO21J1hCqb8A=";
   };
 
-  checkInputs = [ pyopenssl betamax mock pytest ];
-  propagatedBuildInputs = [ requests ];
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  checkInputs = [
+    betamax
+    mock
+    pyopenssl
+    pytestCheckHook
+  ];
+
+  patches = [
+    (fetchpatch {
+      # Fix collections.abc deprecation warning, https://github.com/requests/toolbelt/pull/246
+      name = "fix-collections-abc-deprecation.patch";
+      url = "https://github.com/requests/toolbelt/commit/7188b06330e5260be20bce8cbcf0d5ae44e34eaf.patch";
+      sha256 = "sha256-pRkG77sNglG/KsRX6JaPgk4QxmmSBXypFRp/vNA3ot4=";
+    })
+  ];
+
+  disabledTests = [
+    # https://github.com/requests/toolbelt/issues/306
+    "test_no_content_length_header"
+    "test_read_file"
+    "test_reads_file_from_url_wrapper"
+    "test_x509_der"
+    "test_x509_pem"
+  ];
 
-  checkPhase = ''
-    # 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_x509_der \
-                  and not test_x509_pem"
-  '';
+  pythonImportsCheck = [
+    "requests_toolbelt"
+  ];
 
-  meta = {
-    description = "A toolbelt of useful classes and functions to be used with python-requests";
+  meta = with lib; {
+    description = "Toolbelt of useful classes and functions to be used with requests";
     homepage = "http://toolbelt.rtfd.org";
-    license = lib.licenses.asl20;
-    maintainers = with lib.maintainers; [ matthiasbeyer ];
+    license = licenses.asl20;
+    maintainers = with maintainers; [ matthiasbeyer ];
   };
 }
diff --git a/pkgs/development/python-modules/requests-unixsocket/default.nix b/pkgs/development/python-modules/requests-unixsocket/default.nix
index 946e406c8bf6a..57f4d5787c67e 100644
--- a/pkgs/development/python-modules/requests-unixsocket/default.nix
+++ b/pkgs/development/python-modules/requests-unixsocket/default.nix
@@ -9,26 +9,35 @@
 
 buildPythonPackage rec {
   pname = "requests-unixsocket";
-  version = "0.2.0";
+  version = "0.3.0";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9e5c1a20afc3cf786197ae59c79bcdb0e7565f218f27df5f891307ee8817c1ea";
+    hash = "sha256-KDBCg+qTV9Rf/1itWxHkdwjPv1gGgXqlmyo2Mijulx4=";
   };
 
-  nativeBuildInputs = [ pbr ];
-  propagatedBuildInputs = [ requests ];
+  nativeBuildInputs = [
+    pbr
+  ];
 
-  checkInputs = [ pytestCheckHook waitress ];
+  propagatedBuildInputs = [
+    requests
+  ];
 
-  preCheck = ''
-    rm pytest.ini
-  '';
+  checkInputs = [
+    pytestCheckHook
+    waitress
+  ];
+
+  pythonImportsCheck = [
+    "requests_unixsocket"
+  ];
 
   meta = with lib; {
     description = "Use requests to talk HTTP via a UNIX domain socket";
     homepage = "https://github.com/msabramo/requests-unixsocket";
     license = licenses.asl20;
-    maintainers = [ maintainers.catern ];
+    maintainers = with maintainers; [ catern ];
   };
 }
diff --git a/pkgs/development/python-modules/requests/default.nix b/pkgs/development/python-modules/requests/default.nix
index 8ba7aef46074d..f5b021801f413 100644
--- a/pkgs/development/python-modules/requests/default.nix
+++ b/pkgs/development/python-modules/requests/default.nix
@@ -7,22 +7,23 @@
 , charset-normalizer
 , fetchPypi
 , idna
+, isPy27
+, isPy3k
+, pysocks
 , pytest-mock
 , pytest-xdist
 , pytestCheckHook
-, urllib3
-, isPy27
-, isPy3k
 , trustme
+, urllib3
 }:
 
 buildPythonPackage rec {
   pname = "requests";
-  version = "2.26.0";
+  version = "2.27.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-uKpY+M95P/2HgtPYyxnmbvNverpDU+7IWedGeLAbB6c=";
+    hash = "sha256-aNfFb9WomZiHco7zBKbRLtx7508c+kdxT8i0FFJcmmE=";
   };
 
   patches = [
@@ -32,7 +33,8 @@ buildPythonPackage rec {
 
   postPatch = ''
     # Use latest idna
-    substituteInPlace setup.py --replace ",<3" ""
+    substituteInPlace setup.py \
+      --replace ",<3" ""
   '';
 
   propagatedBuildInputs = [
@@ -48,6 +50,7 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
+    pysocks
     pytest-mock
     pytest-xdist
     pytestCheckHook
@@ -73,11 +76,13 @@ buildPythonPackage rec {
     "TestTimeout"
   ];
 
-  pythonImportsCheck = [ "requests" ];
+  pythonImportsCheck = [
+    "requests"
+  ];
 
   meta = with lib; {
-    description = "Simple HTTP library for Python";
-    homepage = "http://docs.python-requests.org/en/latest/";
+    description = "HTTP library for Python";
+    homepage = "http://docs.python-requests.org/";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/requirements-parser/default.nix b/pkgs/development/python-modules/requirements-parser/default.nix
index 71cb33560e05b..3d51f4741af62 100644
--- a/pkgs/development/python-modules/requirements-parser/default.nix
+++ b/pkgs/development/python-modules/requirements-parser/default.nix
@@ -1,31 +1,44 @@
 { lib
 , buildPythonPackage
-, fetchPypi
-, nose
+, fetchFromGitHub
+, poetry-core
+, pytestCheckHook
+, pythonOlder
+, types-setuptools
 }:
+
 buildPythonPackage rec {
   pname = "requirements-parser";
-  version = "0.2.0";
+  version = "0.5.0";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "5963ee895c2d05ae9f58d3fc641082fb38021618979d6a152b6b1398bd7d4ed4";
+  src = fetchFromGitHub {
+    owner = "madpah";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-e2dfVBMh1uGRMDw7OdPefO4/eRxc3BGwvy/D7u5ipkk=";
   };
 
-  checkInputs = [
-    nose
+  nativeBuildInputs = [
+    poetry-core
   ];
 
-  checkPhase = ''
-    nosetests
-  '';
+  propagatedBuildInputs = [
+    types-setuptools
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
 
   pythonImportsCheck = [
     "requirements"
   ];
 
   meta = with lib; {
-    description = "A Pip requirements file parser";
+    description = "Pip requirements file parser";
     homepage = "https://github.com/davidfischer/requirements-parser";
     license = licenses.bsd2;
     maintainers = teams.determinatesystems.members;
diff --git a/pkgs/development/python-modules/resolvelib/default.nix b/pkgs/development/python-modules/resolvelib/default.nix
index f5c1f43572688..30345ae654e40 100644
--- a/pkgs/development/python-modules/resolvelib/default.nix
+++ b/pkgs/development/python-modules/resolvelib/default.nix
@@ -26,6 +26,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  pythonImportsCheck = [
+    "resolvelib"
+  ];
+
   meta = with lib; {
     description = "Resolve abstract dependencies into concrete ones";
     homepage = "https://github.com/sarugaku/resolvelib";
diff --git a/pkgs/development/python-modules/responses/default.nix b/pkgs/development/python-modules/responses/default.nix
index cff31f782c5a7..86e37419c72d2 100644
--- a/pkgs/development/python-modules/responses/default.nix
+++ b/pkgs/development/python-modules/responses/default.nix
@@ -1,8 +1,6 @@
 { lib
 , buildPythonPackage
-, cookies
 , fetchPypi
-, mock
 , pytest-localserver
 , pytestCheckHook
 , pythonOlder
@@ -13,21 +11,20 @@
 
 buildPythonPackage rec {
   pname = "responses";
-  version = "0.16.0";
+  version = "0.17.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-ouOsoqgnfmElfNOxwVSx3Q14Kxrj04t/o3y+P+tTF5E=";
+    hash = "sha256-7GdeCA0Gv40fteWmih5c0N9GsJx4IwMV9lCvXkA2vsc=";
   };
 
   propagatedBuildInputs = [
     requests
-    urllib3
     six
-  ] ++ lib.optionals (pythonOlder "3.4") [
-    cookies
-  ] ++ lib.optionals (pythonOlder "3.3") [
-    mock
+    urllib3
   ];
 
   checkInputs = [
@@ -35,7 +32,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "responses" ];
+  pythonImportsCheck = [
+    "responses"
+  ];
 
   meta = with lib; {
     description = "Python module for mocking out the requests Python library";
diff --git a/pkgs/development/python-modules/respx/default.nix b/pkgs/development/python-modules/respx/default.nix
index d085d43008bb1..51d88446c0b5d 100644
--- a/pkgs/development/python-modules/respx/default.nix
+++ b/pkgs/development/python-modules/respx/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "respx";
-  version = "0.19.0";
+  version = "0.19.1";
 
   src = fetchFromGitHub {
     owner = "lundberg";
     repo = pname;
     rev = version;
-    sha256 = "sha256-xiAt42kc1+rro99KMwzYKi3XC+wxYVqOY11tM+M/uV8=";
+    sha256 = "134h9526md242p7ql0cpknqvkpd3fhxk2vridkvswg91f532w180";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/restfly/default.nix b/pkgs/development/python-modules/restfly/default.nix
index 8b47183dcfd35..d153a5f3c7531 100644
--- a/pkgs/development/python-modules/restfly/default.nix
+++ b/pkgs/development/python-modules/restfly/default.nix
@@ -6,18 +6,22 @@
 , pytest-vcr
 , pytestCheckHook
 , python-box
+, pythonOlder
 , requests
 }:
 
 buildPythonPackage rec {
   pname = "restfly";
-  version = "1.4.4";
+  version = "1.4.5";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "stevemcgrath";
     repo = pname;
     rev = version;
-    sha256 = "sha256-T5NfG+Vuguh6xZ/Rdx3a1vMDgXPcl/OYhOkxb76yEXg=";
+    hash = "sha256-wWFf8LFZkwzbHX545tA5w2sB3ClL7eFuF+jGX0fSiSc=";
   };
 
   propagatedBuildInputs = [
@@ -37,7 +41,9 @@ buildPythonPackage rec {
     "test_session_ssl_error"
   ];
 
-  pythonImportsCheck = [ "restfly" ];
+  pythonImportsCheck = [
+    "restfly"
+  ];
 
   meta = with lib; {
     description = "Python RESTfly API Library Framework";
diff --git a/pkgs/development/python-modules/restview/default.nix b/pkgs/development/python-modules/restview/default.nix
index b2fc2d9beae75..9a4a0f13369ed 100644
--- a/pkgs/development/python-modules/restview/default.nix
+++ b/pkgs/development/python-modules/restview/default.nix
@@ -1,33 +1,40 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , docutils
 , readme_renderer
 , packaging
 , pygments
-, mock
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "restview";
-  version = "2.9.2";
+  version = "3.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1p1jgdvc04ws8kga3r0vrq3m0b52qw3clwyydl96a13wb3mrf03r";
+    sha256 = "sha256-K5iWEKrtL9Qtpk9s3FOc8+5wzjcLy6hy23JCGtUV3R4=";
   };
 
-  patches = [
-    (fetchpatch {
-      url = "https://github.com/mgedmin/restview/commit/a1ded30a87c65f3ce59a18497a7fc5099317c2be.patch";
-      sha256 = "1ax7pih456a3nbj8qrrq7hqigbyag4ihzpn6bm0z4y74d0r3v8a5";
-    })
+  propagatedBuildInputs = [
+    docutils
+    readme_renderer
+    packaging
+    pygments
+  ];
+
+  checkInputs = [
+    pytestCheckHook
   ];
 
-  propagatedBuildInputs = [ docutils readme_renderer packaging pygments ];
-  checkInputs = [ mock pytestCheckHook ];
+  pythonImportsCheck = [
+    "restview"
+  ];
 
   meta = {
     description = "ReStructuredText viewer";
diff --git a/pkgs/development/python-modules/retworkx/default.nix b/pkgs/development/python-modules/retworkx/default.nix
index f4490c72876dd..62b419def8804 100644
--- a/pkgs/development/python-modules/retworkx/default.nix
+++ b/pkgs/development/python-modules/retworkx/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "retworkx";
-  version = "0.9.0";
+  version = "0.11.0";
   format = "pyproject";
   disabled = pythonOlder "3.6";
 
@@ -25,13 +25,13 @@ buildPythonPackage rec {
     owner = "Qiskit";
     repo = "retworkx";
     rev = version;
-    hash = "sha256-1W7DexS+ECAPsxyZAF36xcEguFkjUMX9lDBylNVPqyk=";
+    hash = "sha256-o3XPMTaiFH5cBtyqtW650wiDBElLvCmERr2XwwdPO1c=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit src;
     name = "${pname}-${version}";
-    hash = "sha256-y5l7jqrlk3ONHefZPS31IvcaO9ttXWLM7fIUmNVwbco=";
+    hash = "sha256-Zhk4m+HNtimhPWfiBLi9dqJ0fp2D8d0u9k6ROG0/jBo=";
   };
 
   nativeBuildInputs = with rustPlatform; [ cargoSetupHook maturinBuildHook ];
diff --git a/pkgs/development/python-modules/rfc3986/default.nix b/pkgs/development/python-modules/rfc3986/default.nix
index 71a7d0730bdfc..f8fcc9aef7ab4 100644
--- a/pkgs/development/python-modules/rfc3986/default.nix
+++ b/pkgs/development/python-modules/rfc3986/default.nix
@@ -1,17 +1,34 @@
-{ lib, buildPythonPackage, fetchPypi, idna, pytestCheckHook }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, idna
+, pytestCheckHook
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "rfc3986";
-  version = "1.5.0";
+  version = "2.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835";
+    sha256 = "sha256-l6rPnb1L/YKbqtbmMJ+mVzqvG+P2+nNcirBeRs7LJhw=";
   };
 
-  propagatedBuildInputs = [ idna ];
+  propagatedBuildInputs = [
+    idna
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  checkInputs = [ pytestCheckHook ];
+  pythonImportsCheck = [
+    "rfc3986"
+  ];
 
   meta = with lib; {
     description = "Validating URI References per RFC 3986";
diff --git a/pkgs/development/python-modules/rflink/default.nix b/pkgs/development/python-modules/rflink/default.nix
index 82374a8a0423e..c33d44f628fbc 100644
--- a/pkgs/development/python-modules/rflink/default.nix
+++ b/pkgs/development/python-modules/rflink/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "rflink";
-  version = "0.0.58";
+  version = "0.0.62";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "aequitas";
     repo = "python-rflink";
     rev = version;
-    sha256 = "1zab55lsw419gg0jfrl69ap6128vbi3wdmg5z7qin65ijpjdhasc";
+    sha256 = "sha256-dEzkYE8xtUzvdsnPaSiQR8960WLOEcr/QhwDiQlobcs=";
   };
 
   propagatedBuildInputs = [
@@ -34,15 +34,6 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  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}'"
diff --git a/pkgs/development/python-modules/rhpl/builder.sh b/pkgs/development/python-modules/rhpl/builder.sh
deleted file mode 100644
index 15e05a73f93fb..0000000000000
--- a/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/pkgs/development/python-modules/rhpl/default.nix b/pkgs/development/python-modules/rhpl/default.nix
deleted file mode 100644
index bfc53910b29a3..0000000000000
--- a/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/pkgs/development/python-modules/rich/default.nix b/pkgs/development/python-modules/rich/default.nix
index 98c26c7a7ff37..f6194970adbd0 100644
--- a/pkgs/development/python-modules/rich/default.nix
+++ b/pkgs/development/python-modules/rich/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "rich";
-  version = "10.14.0";
+  version = "11.0.0";
   format = "pyproject";
   disabled = pythonOlder "3.6";
 
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "willmcgugan";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1j1m1064gmy07ah4crds5sd0k7dcwvf2b1z6rvjfvq4v9fx962qv";
+    sha256 = "0vkwar22rv1j6a3kqj3c016j0vnnha0kwi79fkd90ib1n501m7rn";
   };
 
   nativeBuildInputs = [ poetry-core ];
diff --git a/pkgs/development/python-modules/rlp/default.nix b/pkgs/development/python-modules/rlp/default.nix
index eca38c08f0149..ec735c057abf7 100644
--- a/pkgs/development/python-modules/rlp/default.nix
+++ b/pkgs/development/python-modules/rlp/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "rlp";
-  version = "2.0.1";
+  version = "3.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "665e8312750b3fc5f7002e656d05b9dcb6e93b6063df40d95c49ad90c19d1f0e";
+    sha256 = "63b0465d2948cd9f01de449d7adfb92d207c1aef3982f20310f8009be4a507e8";
   };
 
   checkInputs = [ pytest hypothesis ];
diff --git a/pkgs/development/python-modules/roboschool/default.nix b/pkgs/development/python-modules/roboschool/default.nix
deleted file mode 100644
index 97eee2155a5e1..0000000000000
--- a/pkgs/development/python-modules/roboschool/default.nix
+++ /dev/null
@@ -1,79 +0,0 @@
-{ lib
-, buildPythonPackage
-, isPy3k
-, python
-, fetchFromGitHub
-, fetchpatch
-, qtbase
-, boost
-, assimp
-, gym
-, bullet-roboschool
-, pkg-config
-, which
-}:
-
-buildPythonPackage rec {
-  pname = "roboschool";
-  version = "1.0.39";
-
-  src = fetchFromGitHub {
-    owner = "openai";
-    repo = "roboschool";
-    rev = version;
-    sha256 = "1s7rp5bbiglnrfm33wf7x7kqj0ks3b21bqyz18c5g6vx39rxbrmh";
-  };
-
-  # fails to find boost_python for some reason
-  disabled = !isPy3k;
-
-  propagatedBuildInputs = [
-    gym
-  ];
-
-  nativeBuildInputs = [
-    pkg-config
-    qtbase # needs the `moc` tool
-    which
-  ];
-
-  buildInputs = [
-    bullet-roboschool
-    assimp
-    qtbase
-    boost
-  ];
-
-  dontWrapQtApps = true;
-
-  NIX_CFLAGS_COMPILE="-I ${python}/include/${python.libPrefix}";
-
-  patches = [
-    # Remove kwarg that was removed in upstream gym
-    # https://github.com/openai/roboschool/pull/180
-    (fetchpatch {
-      name = "remove-close-kwarg.patch";
-      url = "https://github.com/openai/roboschool/pull/180/commits/334f489c8ce7af4887e376139ec676f89da5b16f.patch";
-      sha256 = "0bbz8b63m40a9lrwmh7c8d8gj9kpa8a7svdh08qhrddjkykvip6r";
-    })
-  ];
-
-  preBuild = ''
-    # First build the cpp dependencies
-    cd roboschool/cpp-household
-    make \
-      MOC=moc \
-      -j$NIX_BUILD_CORES
-    cd ../..
-  '';
-
-  # Does a QT sanity check, but QT is not expected to work in isolation
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Open-source software for robot simulation, integrated with OpenAI Gym";
-    homepage = "https://github.com/openai/roboschool";
-    license = licenses.mit;
-    maintainers = with maintainers; [ timokau ];
-  };
-}
diff --git a/pkgs/development/python-modules/robotframework-ride/default.nix b/pkgs/development/python-modules/robotframework-ride/default.nix
deleted file mode 100644
index bc9e0873fe548..0000000000000
--- a/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/pkgs/development/python-modules/robotframework-seleniumlibrary/default.nix b/pkgs/development/python-modules/robotframework-seleniumlibrary/default.nix
index ed2ba7155c7e0..012d899ef2a54 100644
--- a/pkgs/development/python-modules/robotframework-seleniumlibrary/default.nix
+++ b/pkgs/development/python-modules/robotframework-seleniumlibrary/default.nix
@@ -1,7 +1,7 @@
 { lib, buildPythonPackage, fetchFromGitHub, python, robotframework, selenium, mockito, robotstatuschecker, approvaltests }:
 
 buildPythonPackage rec {
-  version = "5.1.3";
+  version = "6.0.0";
   pname = "robotframework-seleniumlibrary";
 
   # no tests included in PyPI tarball
@@ -9,7 +9,7 @@ buildPythonPackage rec {
     owner = "robotframework";
     repo = "SeleniumLibrary";
     rev = "v${version}";
-    sha256 = "1djlrbrgd7v15xk5w90xk7iy98cr1p2g57k614gvbd298dmnf2wd";
+    sha256 = "1rjzz6mrx4zavcck2ry8269rf3dkvvs1qfa9ra7dkppbarrjin3f";
   };
 
   propagatedBuildInputs = [ robotframework selenium ];
diff --git a/pkgs/development/python-modules/robotstatuschecker/default.nix b/pkgs/development/python-modules/robotstatuschecker/default.nix
index 81226a23452e5..63e87609ac25b 100644
--- a/pkgs/development/python-modules/robotstatuschecker/default.nix
+++ b/pkgs/development/python-modules/robotstatuschecker/default.nix
@@ -1,7 +1,7 @@
 { lib, buildPythonPackage, fetchFromGitHub, python, robotframework }:
 
 buildPythonPackage rec {
-  version = "1.3";
+  version = "2.1.0";
   pname = "robotstatuschecker";
 
   # no tests included in PyPI tarball
@@ -9,7 +9,7 @@ buildPythonPackage rec {
     owner = "robotframework";
     repo = "statuschecker";
     rev = version;
-    sha256 = "0rppwwpp4djn5c43x7icwslnxbzcfnnn3c6awpg1k97j69d2nmln";
+    sha256 = "0hy1390j3l4kkfna9x9xax4y5mqaa3hdndv3fiyg9wr5f7sx3wnz";
   };
 
   propagatedBuildInputs = [ robotframework ];
diff --git a/pkgs/development/python-modules/rokuecp/default.nix b/pkgs/development/python-modules/rokuecp/default.nix
index e1ee42b08157d..ba892f2228b18 100644
--- a/pkgs/development/python-modules/rokuecp/default.nix
+++ b/pkgs/development/python-modules/rokuecp/default.nix
@@ -1,8 +1,12 @@
 { lib
 , aiohttp
 , aresponses
+, awesomeversion
+, backoff
 , buildPythonPackage
+, cachetools
 , fetchFromGitHub
+, poetry
 , pytest-asyncio
 , pytestCheckHook
 , pythonOlder
@@ -12,21 +16,29 @@
 
 buildPythonPackage rec {
   pname = "rokuecp";
-  version = "0.8.4";
-  format = "setuptools";
+  version = "0.14.0";
+  format = "pyproject";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "ctalkington";
     repo = "python-rokuecp";
     rev = version;
-    sha256 = "sha256-vwXBYwiDQZBxEZDwLX9if6dt7tKQQOLyKL5m0q/3eUw=";
+    hash = "sha256-B8tcYcBtgPkT6REDC7vhHmfO/MjMRQgR3PkF0pfjbyk=";
   };
 
+  nativeBuildInputs = [
+    # Requires poetry not poetry-core
+    poetry
+  ];
+
   propagatedBuildInputs = [
     aiohttp
+    backoff
+    cachetools
     xmltodict
+    awesomeversion
     yarl
   ];
 
@@ -36,9 +48,16 @@ buildPythonPackage rec {
     pytest-asyncio
   ];
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace " --cov" ""
+  '';
+
   disabledTests = [
     # https://github.com/ctalkington/python-rokuecp/issues/249
     "test_resolve_hostname"
+    # Assertion issue
+    "test_guess_stream_format"
   ];
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/rollbar/default.nix b/pkgs/development/python-modules/rollbar/default.nix
index fb3d792edd24d..7ce7dd9a950ce 100644
--- a/pkgs/development/python-modules/rollbar/default.nix
+++ b/pkgs/development/python-modules/rollbar/default.nix
@@ -1,20 +1,24 @@
-{ aiocontextvars
+{ lib
+, aiocontextvars
 , blinker
 , buildPythonPackage
 , fetchPypi
+, fetchpatch
 , httpx
-, lib
 , mock
 , pytestCheckHook
 , requests
 , six
-, unittest2
+, pythonOlder
 , webob
 }:
 
 buildPythonPackage rec {
   pname = "rollbar";
   version = "0.16.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
@@ -29,14 +33,20 @@ buildPythonPackage rec {
   checkInputs = [
     webob
     blinker
-    unittest2
     mock
     httpx
     aiocontextvars
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "rollbar" ];
+  # Still supporting unittest2
+  # https://github.com/rollbar/pyrollbar/pull/346
+  # https://github.com/rollbar/pyrollbar/pull/340
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "rollbar"
+  ];
 
   meta = with lib; {
     description = "Error tracking and logging from Python to Rollbar";
diff --git a/pkgs/development/python-modules/roombapy/default.nix b/pkgs/development/python-modules/roombapy/default.nix
index 2a97993669f17..dff19589dcc43 100644
--- a/pkgs/development/python-modules/roombapy/default.nix
+++ b/pkgs/development/python-modules/roombapy/default.nix
@@ -37,6 +37,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  postPatch = ''
+    # hbmqtt was replaced by amqtt
+    substituteInPlace tests/test_roomba_integration.py \
+      --replace "from hbmqtt.broker import Broker" "from amqtt.broker import Broker"
+  '';
+
   disabledTestPaths = [
     # Requires network access
     "tests/test_discovery.py"
diff --git a/pkgs/development/python-modules/roonapi/default.nix b/pkgs/development/python-modules/roonapi/default.nix
index ccc5749387b15..84909ca056599 100644
--- a/pkgs/development/python-modules/roonapi/default.nix
+++ b/pkgs/development/python-modules/roonapi/default.nix
@@ -11,15 +11,16 @@
 
 buildPythonPackage rec {
   pname = "roonapi";
-  version = "0.0.38";
+  version = "0.1.1";
   format = "pyproject";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "pavoni";
     repo = "pyroon";
     rev = version;
-    sha256 = "sha256-vXx7MgoGjBPdx7uKUtAVqlXphPJYt5SyuTo2JlKia60=";
+    sha256 = "sha256-GEgm250uALTXIEMBWmluqGw/dw2TfGmUIcItfzonGkU=";
   };
 
   nativeBuildInputs = [
@@ -36,7 +37,9 @@ buildPythonPackage rec {
   # Tests require access to the Roon API
   doCheck = false;
 
-  pythonImportsCheck = [ "roonapi" ];
+  pythonImportsCheck = [
+    "roonapi"
+  ];
 
   meta = with lib; {
     description = "Python library to interface with the Roon API";
diff --git a/pkgs/development/python-modules/rpi-bad-power/default.nix b/pkgs/development/python-modules/rpi-bad-power/default.nix
new file mode 100644
index 0000000000000..205cefad6143c
--- /dev/null
+++ b/pkgs/development/python-modules/rpi-bad-power/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+}:
+
+let
+  pname = "rpi-bad-power";
+  version = "0.1.0";
+in
+buildPythonPackage {
+  inherit pname version;
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "shenxn";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256:1yvfz28blq4fdnn614n985vbs5hcw1gm3i9am53k410sfs7ilvkk";
+  };
+
+  pythonImportsCheck = [
+    "rpi_bad_power"
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    description = "Python library to detect bad power supply on Raspberry Pi";
+    homepage = "https://github.com/shenxn/rpi-bad-power";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hexa ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/python-modules/rpkg/default.nix b/pkgs/development/python-modules/rpkg/default.nix
deleted file mode 100644
index 5f1cfc622c9fd..0000000000000
--- a/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/pkgs/development/python-modules/rpy2/2.nix b/pkgs/development/python-modules/rpy2/2.nix
deleted file mode 100644
index 3108861e9ce22..0000000000000
--- a/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/pkgs/development/python-modules/rpy2/r-libs-site.patch b/pkgs/development/python-modules/rpy2/r-libs-site.patch
deleted file mode 100644
index a55b6038bb4b6..0000000000000
--- a/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/pkgs/development/python-modules/rpyc/default.nix b/pkgs/development/python-modules/rpyc/default.nix
index e56aed2aeb7c5..61a2f1e756051 100644
--- a/pkgs/development/python-modules/rpyc/default.nix
+++ b/pkgs/development/python-modules/rpyc/default.nix
@@ -3,11 +3,15 @@
 , fetchFromGitHub
 , plumbum
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "rpyc";
   version = "5.0.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "tomerfiliba";
@@ -16,17 +20,27 @@ buildPythonPackage rec {
     sha256 = "1g75k4valfjgab00xri4pf8c8bb2zxkhgkpyy44fjk7s5j66daa1";
   };
 
-  propagatedBuildInputs = [ plumbum ];
+  propagatedBuildInputs = [
+    plumbum
+  ];
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  # Disable tests that requires network access
   disabledTests = [
+    # Disable tests that requires network access
     "test_api"
     "test_pruning"
     "test_rpyc"
+    # Test is outdated
+    # ssl.SSLError: [SSL: NO_CIPHERS_AVAILABLE] no ciphers available (_ssl.c:997)
+    "test_ssl_conenction"
+  ];
+
+  pythonImportsCheck = [
+    "rpyc"
   ];
-  pythonImportsCheck = [ "rpyc" ];
 
   meta = with lib; {
     description = "Remote Python Call (RPyC), a transparent and symmetric RPC library";
diff --git a/pkgs/development/python-modules/rsa/4_0.nix b/pkgs/development/python-modules/rsa/4_0.nix
deleted file mode 100644
index 1a9ad2171a075..0000000000000
--- a/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/pkgs/development/python-modules/rtoml/default.nix b/pkgs/development/python-modules/rtoml/default.nix
index 9ff43bce08432..2d2aef6f7226a 100644
--- a/pkgs/development/python-modules/rtoml/default.nix
+++ b/pkgs/development/python-modules/rtoml/default.nix
@@ -1,16 +1,17 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, libiconv
+, pytestCheckHook
 , pythonOlder
-, setuptools-rust
 , rustPlatform
-, pytestCheckHook
-, libiconv
+, setuptools-rust
 }:
 
 buildPythonPackage rec {
   pname = "rtoml";
   version = "0.7";
+
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
@@ -33,17 +34,29 @@ buildPythonPackage rec {
     cargoSetupHook
   ];
 
-  buildInputs = [ libiconv ];
+  buildInputs = [
+    libiconv
+  ];
+
+  pythonImportsCheck = [
+    "rtoml"
+  ];
 
-  pythonImportsCheck = [ "rtoml" ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  checkInputs = [ pytestCheckHook ];
   preCheck = ''
     cd tests
   '';
 
+  pytestFlagsArray = [
+    "-W"
+    "ignore::DeprecationWarning"
+  ];
+
   meta = with lib; {
-    description = "Rust based TOML library for python";
+    description = "Rust based TOML library for Python";
     homepage = "https://github.com/samuelcolvin/rtoml";
     license = licenses.mit;
     maintainers = with maintainers; [ evils ];
diff --git a/pkgs/development/python-modules/rtsp-to-webrtc/default.nix b/pkgs/development/python-modules/rtsp-to-webrtc/default.nix
new file mode 100644
index 0000000000000..9cc4a85bee6a1
--- /dev/null
+++ b/pkgs/development/python-modules/rtsp-to-webrtc/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchFromGitHub
+, pytest-aiohttp
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "rtsp-to-webrtc";
+  version = "0.5.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "allenporter";
+    repo = "rtsp-to-webrtc-client";
+    rev = version;
+    hash = "sha256-ry6xNymWgkkvYXliVLUFOUiPz8gbCsQDrSuGmCaH4ZE=";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+  ];
+
+  checkInputs = [
+    pytest-aiohttp
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "rtsp_to_webrtc"
+  ];
+
+  meta = with lib; {
+    description = "Module for RTSPtoWeb and RTSPtoWebRTC";
+    homepage = "https://github.com/allenporter/rtsp-to-webrtc-client";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/ruamel-ordereddict/default.nix b/pkgs/development/python-modules/ruamel-ordereddict/default.nix
deleted file mode 100644
index 987680ad596f2..0000000000000
--- a/pkgs/development/python-modules/ruamel-ordereddict/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, isPyPy
-}:
-
-buildPythonPackage rec {
-  pname = "ruamel-ordereddict";
-  version = "0.4.15";
-  disabled = isPy3k || isPyPy;
-
-  src = fetchPypi {
-    pname = "ruamel.ordereddict";
-    inherit 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;
-    maintainers = with maintainers; [ SuperSandro2000 ];
-  };
-}
diff --git a/pkgs/development/python-modules/ruamel-yaml-clib/default.nix b/pkgs/development/python-modules/ruamel-yaml-clib/default.nix
index b12920fc7640d..143452274abb2 100644
--- a/pkgs/development/python-modules/ruamel-yaml-clib/default.nix
+++ b/pkgs/development/python-modules/ruamel-yaml-clib/default.nix
@@ -5,12 +5,13 @@
 
 buildPythonPackage rec {
   pname = "ruamel-yaml-clib";
-  version = "0.2.4";
+  version = "0.2.6";
+  format = "setuptools";
 
   src = fetchhg {
     url = "http://hg.code.sf.net/p/ruamel-yaml-clib/code";
     rev = version;
-    sha256 = "sha256-HQZY1opUvVQdXUHmsZmcYX2vfgjKsl6xATmVIXjnBlc=";
+    sha256 = "sha256-mpkh9JhYKRX47jfKprjt1Vpm9DMz8LcWzkotJ+/xoxY=";
   };
 
   # no tests
diff --git a/pkgs/development/python-modules/ruamel-yaml/0.16.nix b/pkgs/development/python-modules/ruamel-yaml/0.16.nix
deleted file mode 100644
index 0d9b1b4a16372..0000000000000
--- a/pkgs/development/python-modules/ruamel-yaml/0.16.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, ruamel-base
-, ruamel-ordereddict
-, ruamel-yaml-clib ? null
-, isPy27
-, isPyPy
-}:
-
-buildPythonPackage rec {
-  pname = "ruamel-yaml";
-  version = "0.16.13";
-
-  src = fetchPypi {
-    pname = "ruamel.yaml";
-    inherit version;
-    sha256 = "0hm9yg785f46bkrgqknd6fdvmkby9dpzjnm0b63qf0i748acaj5v";
-  };
-
-  # Tests use relative paths
-  doCheck = false;
-
-  propagatedBuildInputs = [ ruamel-base ]
-    ++ lib.optional isPy27 ruamel-ordereddict
-    ++ lib.optional (!isPyPy) ruamel-yaml-clib;
-
-  # causes namespace clash on py27
-  dontUsePythonImportsCheck = isPy27;
-  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/pkgs/development/python-modules/ruamel-yaml/default.nix b/pkgs/development/python-modules/ruamel-yaml/default.nix
index 2a30bd95f968b..79f21ba6aabde 100644
--- a/pkgs/development/python-modules/ruamel-yaml/default.nix
+++ b/pkgs/development/python-modules/ruamel-yaml/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "ruamel-yaml";
-  version = "0.17.16";
+  version = "0.17.20";
 
   src = fetchPypi {
     pname = "ruamel.yaml";
     inherit version;
-    sha256 = "1a771fc92d3823682b7f0893ad56cb5a5c87c48e62b5399d6f42c8759a583b33";
+    sha256 = "sha256-S4ozwe+ytEOpP8qvz6TS5EX46MKcUo2fXNr7fMnkAEw=";
   };
 
   # Tests use relative paths
diff --git a/pkgs/development/python-modules/runsnakerun/default.nix b/pkgs/development/python-modules/runsnakerun/default.nix
deleted file mode 100644
index ace9b8269c538..0000000000000
--- a/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/pkgs/development/python-modules/rxv/default.nix b/pkgs/development/python-modules/rxv/default.nix
index 728d56527bbe9..9d59efd9bd356 100644
--- a/pkgs/development/python-modules/rxv/default.nix
+++ b/pkgs/development/python-modules/rxv/default.nix
@@ -10,6 +10,7 @@
 , pythonOlder
 , requests
 , requests-mock
+, setuptools-scm
 }:
 
 buildPythonPackage rec {
@@ -26,6 +27,12 @@ buildPythonPackage rec {
     sha256 = "0jldnlzbfg5jm1nbgv91mlvcqkswd9f2n3qj9aqlbmj1cxq19yz8";
   };
 
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [
     defusedxml
     requests
diff --git a/pkgs/development/python-modules/s3fs/default.nix b/pkgs/development/python-modules/s3fs/default.nix
index e8a8bbea801b4..d90d1052282dc 100644
--- a/pkgs/development/python-modules/s3fs/default.nix
+++ b/pkgs/development/python-modules/s3fs/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "s3fs";
-  version = "2021.11.0";
+  version = "2022.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3c23eac1fa5b685c9d507950b24f75929e8bcd1ea98b9a95cf2a9cb66ee6c9f5";
+    sha256 = "6bafc1f6b4e935ea59512c0f38d5cb9c299dbbfe738e40c3d1de8f67b4ee1fd4";
   };
 
   buildInputs = [
diff --git a/pkgs/development/python-modules/s3transfer/0_4.nix b/pkgs/development/python-modules/s3transfer/0_4.nix
deleted file mode 100644
index 8cfd324f00a5a..0000000000000
--- a/pkgs/development/python-modules/s3transfer/0_4.nix
+++ /dev/null
@@ -1,52 +0,0 @@
-{ lib
-, fetchPypi
-, pythonOlder
-, buildPythonPackage
-, docutils
-, mock
-, nose
-, coverage
-, wheel
-, unittest2
-, botocore
-, futures ? null
-}:
-
-buildPythonPackage rec {
-  pname = "s3transfer";
-  version = "0.4.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-ywIvSxZVHt67sxo3fT8JYA262nNj2MXbeXbn9Hcy4bI=";
-  };
-
-  propagatedBuildInputs =
-    [
-      botocore
-    ] ++ lib.optional (pythonOlder "3") futures;
-
-  buildInputs = [
-    docutils
-    mock
-    nose
-    coverage
-    wheel
-    unittest2
-  ];
-
-  checkPhase = ''
-    pushd s3transfer/tests
-    nosetests -v unit/ functional/
-    popd
-  '';
-
-  # version on pypi has no tests/ dir
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://github.com/boto/s3transfer";
-    license = licenses.asl20;
-    description = "A library for managing Amazon S3 transfers";
-  };
-}
diff --git a/pkgs/development/python-modules/s3transfer/default.nix b/pkgs/development/python-modules/s3transfer/default.nix
index 9ed50fb9e49e3..3b07fe5b6d400 100644
--- a/pkgs/development/python-modules/s3transfer/default.nix
+++ b/pkgs/development/python-modules/s3transfer/default.nix
@@ -1,52 +1,53 @@
 { lib
-, fetchPypi
-, pythonOlder
+, botocore
 , buildPythonPackage
 , docutils
+, fetchFromGitHub
 , mock
-, nose
-, coverage
+, pytestCheckHook
+, pythonOlder
+, stdenv
 , wheel
-, unittest2
-, botocore
-, futures ? null
 }:
 
 buildPythonPackage rec {
   pname = "s3transfer";
   version = "0.5.0";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-UO2CPh3FhorUDI3JIHL3V6oOZToZKEXJSjtnb0pi2kw=";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "boto";
+    repo = pname;
+    rev = version;
+    hash = "sha256-0Dl7oKB2xxq/a8do3HgBUIGay88yOGBUdOGo+QCtnUE=";
   };
 
-  propagatedBuildInputs =
-    [
-      botocore
-    ] ++ lib.optional (pythonOlder "3") futures;
-
-  buildInputs = [
-    docutils
-    mock
-    nose
-    coverage
-    wheel
-    unittest2
-  ];
-
-  checkPhase = ''
-    pushd s3transfer/tests
-    nosetests -v unit/ functional/
-    popd
-  '';
-
-  # version on pypi has no tests/ dir
-  doCheck = false;
+  propagatedBuildInputs = [ botocore ];
+
+  buildInputs = [ docutils mock pytestCheckHook wheel ];
+
+  disabledTestPaths = [
+    # Requires network access
+    "tests/integration/test_copy.py"
+    "tests/integration/test_delete.py"
+    "tests/integration/test_download.py"
+    "tests/integration/test_processpool.py"
+    "tests/integration/test_s3transfer.py"
+    "tests/integration/test_upload.py"
+  ] ++
+  # There was a change in python 3.8 that defaults multiprocessing to spawn instead of fork on macOS
+  # See https://bugs.python.org/issue33725 and https://github.com/python/cpython/pull/13603.
+  # I suspect the underlying issue here is that upstream tests aren't compatible with spawn multiprocessing, and pass on linux where the default is still fork
+  lib.optionals stdenv.isDarwin [ "tests/unit/test_compat.py" ];
+
+  pythonImportsCheck = [ "s3transfer" ];
 
   meta = with lib; {
+    description = "Library for managing Amazon S3 transfers";
     homepage = "https://github.com/boto/s3transfer";
     license = licenses.asl20;
-    description = "A library for managing Amazon S3 transfers";
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sagemaker/default.nix b/pkgs/development/python-modules/sagemaker/default.nix
index 3df0a94cf8e5a..80c4bd92a385a 100644
--- a/pkgs/development/python-modules/sagemaker/default.nix
+++ b/pkgs/development/python-modules/sagemaker/default.nix
@@ -12,22 +12,21 @@
 , pandas
 , pathos
 , packaging
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "sagemaker";
-  version = "2.69.0";
+  version = "2.75.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8e9051a44a82be07e32d83cfc12d724fd1cb76f83ade34cd9e69c45a8d37c676";
+    sha256 = "sha256-MN/F7TWaKsQpKMR7Pxx0Vam1+O+PFEJ/H5jLJh3zpe4=";
   };
 
-  pythonImportsCheck = [
-    "sagemaker"
-    "sagemaker.lineage.visualizer"
-  ];
-
   propagatedBuildInputs = [
     attrs
     boto3
@@ -42,12 +41,17 @@ buildPythonPackage rec {
     pandas
   ];
 
-  doCheck = false;
-
   postFixup = ''
     [ "$($out/bin/sagemaker-upgrade-v2 --help 2>&1 | grep -cim1 'pandas failed to import')" -eq "0" ]
   '';
 
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "sagemaker"
+    "sagemaker.lineage.visualizer"
+  ];
+
   meta = with lib; {
     description = "Library for training and deploying machine learning models on Amazon SageMaker";
     homepage = "https://github.com/aws/sagemaker-python-sdk/";
diff --git a/pkgs/development/python-modules/sandboxlib/default.nix b/pkgs/development/python-modules/sandboxlib/default.nix
deleted file mode 100644
index 1be4c485b800d..0000000000000
--- a/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/pkgs/development/python-modules/sanic-testing/default.nix b/pkgs/development/python-modules/sanic-testing/default.nix
index c99a78e0cc180..4bc446c2e1425 100644
--- a/pkgs/development/python-modules/sanic-testing/default.nix
+++ b/pkgs/development/python-modules/sanic-testing/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "sanic-testing";
-  version = "0.7.0";
+  version = "0.8.2";
 
   src = fetchFromGitHub {
     owner = "sanic-org";
     repo = "sanic-testing";
     rev = "v${version}";
-    sha256 = "0ib6rf1ly1059lfprc3hpmy377c3wfgfhnar6n4jgbxiyin7vzm7";
+    sha256 = "17fbb78gvic5s9nlcgwj817fq1f9j9d1d7z6n2ahhinmvyzl9gc8";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/sanic/default.nix b/pkgs/development/python-modules/sanic/default.nix
index 2fab2a3df889c..660ca5de80bf6 100644
--- a/pkgs/development/python-modules/sanic/default.nix
+++ b/pkgs/development/python-modules/sanic/default.nix
@@ -23,7 +23,7 @@
 
 buildPythonPackage rec {
   pname = "sanic";
-  version = "21.9.3";
+  version = "21.12.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -32,7 +32,7 @@ buildPythonPackage rec {
     owner = "sanic-org";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0m18jdw1mvf7jhpnrxhm96p24pxvv0h9m71a8c7sqqkwnnpa3p5i";
+    sha256 = "0jyl23q7b7fyqzan97qflkqcvmfpzbxbzv0qgygxasrzh80zx67g";
   };
 
   postPatch = ''
@@ -73,9 +73,24 @@ buildPythonPackage rec {
   preCheck = ''
     # Some tests depends on sanic on PATH
     PATH="$out/bin:$PATH"
+    PYTHONPATH=$PWD:$PYTHONPATH
+
+    # needed for relative paths for some packages
+    cd tests
   '';
 
+  # uvloop usage is buggy
+  #SANIC_NO_UVLOOP = true;
+
+  pytestFlagsArray = [
+    "--asyncio-mode=auto"
+  ];
+
   disabledTests = [
+    # Lack of uvloop setup through fixtures
+    "test_create_asyncio_server"
+    "test_listeners_triggered_async"
+    "test_tls_options"
     # Tests are flaky
     "test_keep_alive_client_timeout"
     "test_check_timeouts_request_timeout"
@@ -103,6 +118,14 @@ buildPythonPackage rec {
     "test_version"
   ];
 
+  disabledTestPaths = [
+    # unable to create async loop
+    "test_app.py"
+    "test_asgi.py"
+    # occasionally hangs
+    "test_multiprocessing.py"
+  ];
+
   # avoid usage of nixpkgs-review in darwin since tests will compete usage
   # for the same local port
   __darwinAllowLocalNetworking = true;
diff --git a/pkgs/development/python-modules/sapi-python-client/default.nix b/pkgs/development/python-modules/sapi-python-client/default.nix
index 58cdfe646c657..8375c62e979f4 100644
--- a/pkgs/development/python-modules/sapi-python-client/default.nix
+++ b/pkgs/development/python-modules/sapi-python-client/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
     pname = "sapi-python-client";
-    version = "0.1.3";
+    version = "0.4.1";
 
     src = fetchFromGitHub {
         owner = "keboola";
         repo = pname;
         rev  = version;
-        sha256 = "1xja4v5d30hy26lfys21vcz1lcs88v8mvjxwl2dc3wxx2pzdvcf6";
+        sha256 = "189dzj06vzp7366h2qsfvbjmw9qgl7jbp8syhynn9yvrjqp4k8h3";
     };
 
     postPatch = ''
diff --git a/pkgs/development/python-modules/sarge/default.nix b/pkgs/development/python-modules/sarge/default.nix
index 34d10f8a07719..98187f96af9f5 100644
--- a/pkgs/development/python-modules/sarge/default.nix
+++ b/pkgs/development/python-modules/sarge/default.nix
@@ -6,20 +6,26 @@
 
 buildPythonPackage rec {
   pname = "sarge";
-  version = "0.1.7";
+  version = "0.1.7.post1";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "vsajip";
     repo = pname;
     rev = version;
-    sha256 = "sha256-E1alSDXj0oeyB6dN5PAtN62FPpMsCKb4R9DpfWdFtn0=";
+    sha256 = "sha256-bT1DbcQi+SbeRBsL7ILuQbSnAj3BBB4+FNl+Zek5xU4=";
   };
 
   checkInputs = [
     pytestCheckHook
   ];
 
+  disabledTests = [
+    # Aarch64-linux times out for these tests, so they need to be disabled.
+    "test_timeout"
+    "test_feeder"
+  ];
+
   pythonImportsCheck = [
     "sarge"
   ];
diff --git a/pkgs/development/python-modules/sasmodels/default.nix b/pkgs/development/python-modules/sasmodels/default.nix
index 0e9b563f0f705..f7d0e62ff15b3 100644
--- a/pkgs/development/python-modules/sasmodels/default.nix
+++ b/pkgs/development/python-modules/sasmodels/default.nix
@@ -1,7 +1,7 @@
 { lib
 , fetchFromGitHub
 , buildPythonPackage
-, pytest_5
+, pytest
 , numpy
 , scipy
 , matplotlib
@@ -24,7 +24,7 @@ buildPythonPackage rec {
   buildInputs = [ opencl-headers ];
   # Note: the 1.0.5 release should be compatible with pytest6, so this can
   # be set back to 'pytest' at that point
-  checkInputs = [ pytest_5 ];
+  checkInputs = [ pytest ];
   propagatedBuildInputs = [ docutils matplotlib numpy scipy pyopencl ];
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/scandir/default.nix b/pkgs/development/python-modules/scandir/default.nix
deleted file mode 100644
index f92b1f5a6ed73..0000000000000
--- a/pkgs/development/python-modules/scandir/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ lib, python, buildPythonPackage, fetchPypi }:
-
-buildPythonPackage rec {
-  pname = "scandir";
-  version = "1.10.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 ="1bkqwmf056pkchf05ywbnf659wqlp6lljcdb0y88wr9f0vv32ijd";
-  };
-
-  checkPhase = "${python.interpreter} test/run_tests.py";
-
-  meta = with lib; {
-    description = "A better directory iterator and faster os.walk()";
-    homepage = "https://github.com/benhoyt/scandir";
-    license = licenses.gpl3;
-    maintainers = with maintainers; [ abbradar ];
-  };
-}
diff --git a/pkgs/development/python-modules/schema-salad/default.nix b/pkgs/development/python-modules/schema-salad/default.nix
index 66a5dc1d14752..bea5b766b5c91 100644
--- a/pkgs/development/python-modules/schema-salad/default.nix
+++ b/pkgs/development/python-modules/schema-salad/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "schema-salad";
-  version = "8.2.20211222191353";
+  version = "8.2.20220103095339";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bae31897a9f5c16546081811728cc20296455dc805ffd0bac0064de6cbbcbf88";
+    sha256 = "051690a2f89b98e35100cd2cb489406a5169a60c2f27a716f3f287a42d45be2d";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/schema/default.nix b/pkgs/development/python-modules/schema/default.nix
index 3ace46489db57..dabe046e48617 100644
--- a/pkgs/development/python-modules/schema/default.nix
+++ b/pkgs/development/python-modules/schema/default.nix
@@ -1,28 +1,41 @@
-{ lib, buildPythonPackage, fetchPypi, contextlib2, pytest, mock }:
+{ lib
+, buildPythonPackage
+, contextlib2
+, fetchPypi
+, mock
+, pytestCheckHook
+, pythonOlder
+}:
 
 buildPythonPackage rec {
-
   pname = "schema";
   version = "0.7.5";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f06717112c61895cabc4707752b88716e8420a8819d71404501e114f91043197";
+    hash = "sha256-8GcXESxhiVyrxHB3UriHFuhCCogZ1xQEUB4RT5EEMZc=";
   };
 
-  preConfigure = ''
-    substituteInPlace requirements.txt --replace '==' '>='
-  '';
+  propagatedBuildInputs = [
+    contextlib2
+  ];
 
-  propagatedBuildInputs = [ contextlib2 ];
+  checkInputs = [
+    mock
+    pytestCheckHook
+  ];
 
-  checkInputs = [ pytest mock ];
-  checkPhase = "pytest ./test_schema.py";
+  pythonImportsCheck = [
+    "schema"
+  ];
 
   meta = with lib; {
     description = "Library for validating Python data structures";
     homepage = "https://github.com/keleshev/schema";
     license = licenses.mit;
-    maintainers = [ maintainers.tobim ];
+    maintainers = with maintainers; [ tobim ];
   };
 }
diff --git a/pkgs/development/python-modules/schiene/default.nix b/pkgs/development/python-modules/schiene/default.nix
index 8f479500a138d..952a00440d924 100644
--- a/pkgs/development/python-modules/schiene/default.nix
+++ b/pkgs/development/python-modules/schiene/default.nix
@@ -1,17 +1,21 @@
 { lib
+, beautifulsoup4
 , buildPythonPackage
 , fetchPypi
+, pythonOlder
 , requests
-, beautifulsoup4
 }:
 
 buildPythonPackage rec {
   pname = "schiene";
-  version = "0.23";
+  version = "0.24";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "014aaxmk7yxyml1xgfk3zqallyb5zi04m0v7jgqjkbjqq4n4j3ck";
+    sha256 = "sha256-y1gbeavZNFniRiOBbJ4Mgmb0F01HedSmpAWaeZEv0Go=";
   };
 
   propagatedBuildInputs = [
@@ -19,10 +23,12 @@ buildPythonPackage rec {
     beautifulsoup4
   ];
 
-  # tests are not present
+  # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "schiene" ];
+  pythonImportsCheck = [
+    "schiene"
+  ];
 
   meta = with lib; {
     description = "Python library for interacting with Bahn.de";
diff --git a/pkgs/development/python-modules/scikit-fmm/default.nix b/pkgs/development/python-modules/scikit-fmm/default.nix
index c18f2934c23d9..4f823a54580b2 100644
--- a/pkgs/development/python-modules/scikit-fmm/default.nix
+++ b/pkgs/development/python-modules/scikit-fmm/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "scikit-fmm";
-  version = "2021.10.29";
+  version = "2022.2.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "799f36e918a2b64ed8434d6c4fef3a1a47757055955c240fba0d4aadccca26b2";
+    sha256 = "sha256-0Pvm6Sn0OWOwEX7E4OhBwo2hxzQmGzV2Yvytkm14+ls=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/scikit-learn/0.20.nix b/pkgs/development/python-modules/scikit-learn/0.20.nix
deleted file mode 100644
index 0ed8637558973..0000000000000
--- a/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/pkgs/development/python-modules/scikit-learn/default.nix b/pkgs/development/python-modules/scikit-learn/default.nix
index b717432a653ee..7e2096c9b9ba6 100644
--- a/pkgs/development/python-modules/scikit-learn/default.nix
+++ b/pkgs/development/python-modules/scikit-learn/default.nix
@@ -19,12 +19,12 @@
 
 buildPythonPackage rec {
   pname = "scikit-learn";
-  version = "1.0.1";
+  version = "1.0.2";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-rCyp27dU1hz+HIO6hINJjvlR0puT7AnW8AKEfyEKmdo=";
+    sha256 = "sha256-tYcJWaVIS2FPJtMcpMF1JLGwMXUiGZ3JhcO0JW4DB2c=";
   };
 
   buildInputs = [
diff --git a/pkgs/development/python-modules/scikit-survival/default.nix b/pkgs/development/python-modules/scikit-survival/default.nix
index 568643afbbf15..69b9bf05467c8 100644
--- a/pkgs/development/python-modules/scikit-survival/default.nix
+++ b/pkgs/development/python-modules/scikit-survival/default.nix
@@ -8,6 +8,7 @@
 , numpy
 , osqp
 , pandas
+, setuptools-scm
 , scikit-learn
 , scipy
 , pytestCheckHook
@@ -15,15 +16,16 @@
 
 buildPythonPackage rec {
   pname = "scikit-survival";
-  version = "0.16.0";
+  version = "0.17.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d3573eb1df9d516c75994a8a82108b6c7a5ca7ea8a9af60b38f3f65c3e227fa7";
+    sha256 = "ba49325f6a31e8bdccfb88337aa85218d209e88a6a704e9c41ef13bf749e0f46";
   };
 
   nativeBuildInputs = [
     cython
+    setuptools-scm
   ];
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/scikit-tda/default.nix b/pkgs/development/python-modules/scikit-tda/default.nix
index bf3e1d1ef4694..cf2e524337de6 100644
--- a/pkgs/development/python-modules/scikit-tda/default.nix
+++ b/pkgs/development/python-modules/scikit-tda/default.nix
@@ -19,14 +19,14 @@
 
 buildPythonPackage rec {
   pname = "scikit-tda";
-  version = "0.0.4";
+  version = "1.0.0";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "scikit-tda";
     repo = "scikit-tda";
-    rev = version;
-    sha256 = "0a90k6i9fkmc9gf250b4fidx2fzd2qrn025l74mjk51fvf23q13a";
+    rev = "v${version}";
+    sha256 = "0yhmf5jmxywyj6l9q0rfv9r8wpdk063fvvfnb4azwwccblgz37rj";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/scikits-odes/default.nix b/pkgs/development/python-modules/scikits-odes/default.nix
index c96cf1b2ddd43..78ed6446f42ac 100644
--- a/pkgs/development/python-modules/scikits-odes/default.nix
+++ b/pkgs/development/python-modules/scikits-odes/default.nix
@@ -15,13 +15,13 @@
 
 buildPythonPackage rec {
   pname = "scikits.odes";
-  version = "2.6.2";
+  version = "2.6.3";
 
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "267d8bfa1e18d075d574158053d887562381e88176ebab856516b52b14860983";
+    sha256 = "9693da78d1bd0bd6af8db59aeaaed92a399c6af36960c6a0a665a2130eab59e7";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/scmrepo/default.nix b/pkgs/development/python-modules/scmrepo/default.nix
new file mode 100644
index 0000000000000..f4a024a46e99e
--- /dev/null
+++ b/pkgs/development/python-modules/scmrepo/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, asyncssh
+, buildPythonPackage
+, dulwich
+, fetchFromGitHub
+, fsspec
+, funcy
+, GitPython
+, pathspec
+, pygit2
+, pygtrie
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "scmrepo";
+  version = "0.0.7";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "iterative";
+    repo = pname;
+    rev = version;
+    hash = "sha256-tZsogqcfAqpSo9yOz4z0mgY9SVU1epPmcBuyLJsHLfY=";
+  };
+
+  propagatedBuildInputs = [
+    asyncssh
+    dulwich
+    fsspec
+    funcy
+    GitPython
+    pathspec
+    pygit2
+    pygtrie
+  ];
+
+  # Requires a running Docker instance
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "scmrepo"
+  ];
+
+  meta = with lib; {
+    description = "SCM wrapper and fsspec filesystem";
+    homepage = "https://github.com/iterative/scmrepo";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/scp/default.nix b/pkgs/development/python-modules/scp/default.nix
index e62581057d04c..61baf3724e1a1 100644
--- a/pkgs/development/python-modules/scp/default.nix
+++ b/pkgs/development/python-modules/scp/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "scp";
-  version = "0.14.2";
+  version = "0.14.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "713f117413bbd616a1a7da8f07db9adcd835ce73d8585fb469ea5b5785f92e4d";
+    sha256 = "sha256-LQNJpUAIHdJGyBQeRWmfP4Y/LVOswISr0H0+OHox5cc=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/scrapy/default.nix b/pkgs/development/python-modules/scrapy/default.nix
index dc05f55798177..c26ec74ac310d 100644
--- a/pkgs/development/python-modules/scrapy/default.nix
+++ b/pkgs/development/python-modules/scrapy/default.nix
@@ -86,9 +86,10 @@ buildPythonPackage rec {
 
   LC_ALL = "en_US.UTF-8";
 
-  # Disable doctest plugin because it causes pytest to hang
   preCheck = ''
-    substituteInPlace pytest.ini --replace "--doctest-modules" ""
+    # Disable doctest plugin because it causes pytest to hang
+    substituteInPlace pytest.ini \
+      --replace "--doctest-modules" ""
   '';
 
   disabledTestPaths = [
@@ -111,10 +112,12 @@ buildPythonPackage rec {
     "test_custom_loop_asyncio"
     "test_custom_loop_asyncio_deferred_signal"
     "FileFeedStoragePreFeedOptionsTest"  # https://github.com/scrapy/scrapy/issues/5157
+    "test_timeout_download_from_spider_nodata_rcvd"
     # Fails with AssertionError
     "test_peek_fifo"
     "test_peek_one_element"
     "test_peek_lifo"
+    "test_callback_kwargs"
   ] ++ lib.optionals stdenv.isDarwin [
     "test_xmliter_encoding"
     "test_download"
@@ -126,7 +129,9 @@ buildPythonPackage rec {
     install -m 644 -D extras/scrapy_zsh_completion $out/share/zsh/site-functions/_scrapy
   '';
 
-  pythonImportsCheck = [ "scrapy" ];
+  pythonImportsCheck = [
+    "scrapy"
+  ];
 
   __darwinAllowLocalNetworking = true;
 
diff --git a/pkgs/development/python-modules/screenlogicpy/default.nix b/pkgs/development/python-modules/screenlogicpy/default.nix
index 1ade4b8ea1deb..90caa943ebde1 100644
--- a/pkgs/development/python-modules/screenlogicpy/default.nix
+++ b/pkgs/development/python-modules/screenlogicpy/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "screenlogicpy";
-  version = "0.5.3";
+  version = "0.5.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "dieselrabbit";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1ic19l0xr2wlnc8q6nhvv747k0f4j9k94ix14zkrwpp9nl09sm8j";
+    sha256 = "0r9227s4v17jm5n0j31ssnak9f5p7xfvz4r1fwy61286is3j5gbb";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/seaborn/0.9.1.nix b/pkgs/development/python-modules/seaborn/0.9.1.nix
deleted file mode 100644
index 79361a4916981..0000000000000
--- a/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/pkgs/development/python-modules/seahub/default.nix b/pkgs/development/python-modules/seahub/default.nix
deleted file mode 100644
index 81728dfe78648..0000000000000
--- a/pkgs/development/python-modules/seahub/default.nix
+++ /dev/null
@@ -1,56 +0,0 @@
-{ lib, fetchFromGitHub, python3Packages, makeWrapper }:
-
-python3Packages.buildPythonPackage rec {
-  pname = "seahub";
-  version = "8.0.7";
-
-  src = fetchFromGitHub {
-    owner = "haiwen";
-    repo = "seahub";
-    rev = "4f7bb3f617dd847cf0a6b33c0bfb567b44c06059"; # using a fixed revision because upstream may re-tag releases :/
-    sha256 = "09d05sxly1bljxxzm77limhwsbg8c4b54fzv3kmaih59pjnjyr03";
-  };
-
-  dontBuild = true;
-  doCheck = false; # disabled because it requires a ccnet environment
-
-  nativeBuildInputs = [ makeWrapper ];
-
-  propagatedBuildInputs = with python3Packages; [
-    django
-    future
-    django-statici18n
-    django-webpack-loader
-    django-simple-captcha
-    django-picklefield
-    django-formtools
-    mysqlclient
-    pillow
-    python-dateutil
-    django_compressor
-    djangorestframework
-    openpyxl
-    requests
-    requests_oauthlib
-    pyjwt
-    pycryptodome
-    qrcode
-    pysearpc
-    seaserv
-  ];
-
-  installPhase = ''
-    cp -dr --no-preserve='ownership' . $out/
-    wrapProgram $out/manage.py \
-      --prefix PYTHONPATH : "$PYTHONPATH:$out/thirdpart:" \
-      --prefix PATH : "${python3Packages.python}/bin"
-  '';
-
-  meta = with lib; {
-    homepage = "https://github.com/haiwen/seahub";
-    description = "The web end of seafile server";
-    license = licenses.asl20;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ greizgh schmittlauch ];
-  };
-}
diff --git a/pkgs/development/python-modules/seatconnect/default.nix b/pkgs/development/python-modules/seatconnect/default.nix
index 7adef77210ab0..25b1773472fff 100644
--- a/pkgs/development/python-modules/seatconnect/default.nix
+++ b/pkgs/development/python-modules/seatconnect/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "seatconnect";
-  version = "1.1.3";
+  version = "1.1.6";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -21,8 +21,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "farfar";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "sha256-EOaFZch/C9N4lacZ4IqIJUVSaEn8wOFN/WN6WOL/1mo=";
+    rev = version;
+    hash = "sha256-8ZqqNDLygHgtUzTgdb34+4BHuStXJXnl9fBfo0WSNZw=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
diff --git a/pkgs/development/python-modules/secp256k1/default.nix b/pkgs/development/python-modules/secp256k1/default.nix
index 1637814cadd26..cfcc235f15006 100644
--- a/pkgs/development/python-modules/secp256k1/default.nix
+++ b/pkgs/development/python-modules/secp256k1/default.nix
@@ -36,7 +36,8 @@ buildPythonPackage rec {
   '';
 
   postPatch = ''
-    sed -i '38,45d' setup.py
+    # don't do hacky tarball download + setuptools check
+    sed -i '38,54d' setup.py
     substituteInPlace setup.py --replace ", 'pytest-runner==2.6.2'" ""
   '';
 
diff --git a/pkgs/development/python-modules/secretstorage/2.nix b/pkgs/development/python-modules/secretstorage/2.nix
deleted file mode 100644
index 378be5be31300..0000000000000
--- a/pkgs/development/python-modules/secretstorage/2.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib, fetchPypi, buildPythonPackage, cryptography, dbus-python }:
-
-buildPythonPackage rec {
-  pname = "secretstorage";
-  version = "2.3.1";
-
-  src = fetchPypi {
-    pname = "SecretStorage";
-    inherit version;
-    sha256 = "1di9gx4m27brs6ar774m64s017iz742mnmw39kvfc8skfs3mrxis";
-  };
-
-  propagatedBuildInputs = [ cryptography dbus-python ];
-
-  # Needs a D-Bus Sesison
-  doCheck = false;
-
-  meta = with lib; {
-    homepage = "https://github.com/mitya57/secretstorage";
-    description = "Python bindings to FreeDesktop.org Secret Service API";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ orivej ];
-  };
-}
diff --git a/pkgs/development/python-modules/semantic/default.nix b/pkgs/development/python-modules/semantic/default.nix
deleted file mode 100644
index 518b7637ad71d..0000000000000
--- a/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/pkgs/development/python-modules/semver/default.nix b/pkgs/development/python-modules/semver/default.nix
index cb4578671b98b..a86b51c005ba9 100644
--- a/pkgs/development/python-modules/semver/default.nix
+++ b/pkgs/development/python-modules/semver/default.nix
@@ -1,30 +1,46 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, pytest-cov
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "semver";
   version = "2.13.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "python-semver";
     repo = "python-semver";
     rev = version;
-    sha256 = "sha256-IWTo/P9JRxBQlhtcH3JMJZZrwAA8EALF4dtHajWUc4w=";
+    hash = "sha256-IWTo/P9JRxBQlhtcH3JMJZZrwAA8EALF4dtHajWUc4w=";
   };
 
   checkInputs = [
-    pytest-cov
     pytestCheckHook
   ];
 
-  # Confuses source vs dist imports in pytest
-  preCheck = "rm -r dist";
+  postPatch = ''
+    sed -i "/--cov/d" setup.cfg
+    sed -i "/--no-cov-on-fail/d" setup.cfg
+  '';
+
+  preCheck = ''
+    # Confuses source vs dist imports in pytest
+    rm -r dist
+  '';
 
-  pythonImportsCheck = [ "semver" ];
+  disabledTestPaths = [
+    # Don't test the documentation
+    "docs/*.rst"
+  ];
+
+  pythonImportsCheck = [
+    "semver"
+  ];
 
   meta = with lib; {
     description = "Python package to work with Semantic Versioning (http://semver.org/)";
diff --git a/pkgs/development/python-modules/sendgrid/default.nix b/pkgs/development/python-modules/sendgrid/default.nix
index b71c25a283d07..c9b6d7c96808f 100644
--- a/pkgs/development/python-modules/sendgrid/default.nix
+++ b/pkgs/development/python-modules/sendgrid/default.nix
@@ -4,6 +4,7 @@
 , flask
 , pytestCheckHook
 , python-http-client
+, pythonOlder
 , pyyaml
 , starkbank-ecdsa
 , werkzeug
@@ -11,14 +12,16 @@
 
 buildPythonPackage rec {
   pname = "sendgrid";
-  version = "6.9.3";
+  version = "6.9.6";
   format = "setuptools";
 
+  disabled = pythonOlder "3.6";
+
   src = fetchFromGitHub {
     owner = pname;
     repo = "sendgrid-python";
     rev = version;
-    sha256 = "sha256-/4Wk+1zAFwK+FxRhABQBha43/zapgPDfTFGrPJjXA7s=";
+    sha256 = "sha256-6MkAtkbKVoa8UatG92RzbCdAM+WsQN2WnOIh4pRoUVk=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/sense-energy/default.nix b/pkgs/development/python-modules/sense-energy/default.nix
index 8d73407c98029..57a7e367d726b 100644
--- a/pkgs/development/python-modules/sense-energy/default.nix
+++ b/pkgs/development/python-modules/sense-energy/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "sense-energy";
-  version = "0.9.3";
+  version = "0.10.2";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "scottbonline";
     repo = "sense";
     rev = version;
-    sha256 = "sha256-LUM7SP03U3mRxCTjgxPRXh/ZLz15R04zBWOxLKnan98=";
+    hash = "sha256-0D0AagmLozF5nLbdcmtE9q65vG2WxWv+hZLTnjmmfEY=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/sentinels/default.nix b/pkgs/development/python-modules/sentinels/default.nix
new file mode 100644
index 0000000000000..17c2c94a30ff3
--- /dev/null
+++ b/pkgs/development/python-modules/sentinels/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, setuptools
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "sentinels";
+  version = "1.0.0";
+
+  disabled = pythonOlder "3.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1cglkxph47pki4db4kjx5g4ikxp2milqdlcjgqwmx4p1gx6p1q3v";
+  };
+
+  propagatedBuildInputs = [
+    setuptools
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "sentinels" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/vmalloc/sentinels/";
+    description = "Various objects to denote special meanings in python";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ gador ];
+  };
+}
diff --git a/pkgs/development/python-modules/sentry-sdk/default.nix b/pkgs/development/python-modules/sentry-sdk/default.nix
index 0d06fa96563ba..a6fc087c9041d 100644
--- a/pkgs/development/python-modules/sentry-sdk/default.nix
+++ b/pkgs/development/python-modules/sentry-sdk/default.nix
@@ -40,14 +40,14 @@
 
 buildPythonPackage rec {
   pname = "sentry-sdk";
-  version = "1.5.1";
+  version = "1.5.5";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "getsentry";
     repo = "sentry-python";
     rev = version;
-    sha256 = "sha256-vQ5zeAscPMQH3L+Ogj50IZZp2pBoYaxHzvcXakaoC4k=";
+    sha256 = "sha256-hOWMrAFPwtURIngCN4vCxWrI6QZLOnakkNf+fZVyzzc=";
   };
 
   propagatedBuildInputs = [
@@ -107,8 +107,11 @@ buildPythonPackage rec {
     "test_start_sentry_listener"
     # Failing threading test
     "test_circular_references"
-    # Failing wsgi test
+    # Failing wsgi tests
     "test_session_mode_defaults_to_request_mode_in_wsgi_handler"
+    "test_auto_session_tracking_with_aggregates"
+    # Network requests to public web
+    "test_crumb_capture"
   ];
 
   disabledTestPaths = [
diff --git a/pkgs/development/python-modules/serverlessrepo/default.nix b/pkgs/development/python-modules/serverlessrepo/default.nix
index 2a8267710a090..d3cc7e9c633bd 100644
--- a/pkgs/development/python-modules/serverlessrepo/default.nix
+++ b/pkgs/development/python-modules/serverlessrepo/default.nix
@@ -1,16 +1,20 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pytest
+, pytestCheckHook
 , boto3
 , six
 , pyyaml
 , mock
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "serverlessrepo";
   version = "0.1.10";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
@@ -23,12 +27,25 @@ buildPythonPackage rec {
     pyyaml
   ];
 
-  checkInputs = [ pytest mock ];
+  checkInputs = [
+    pytestCheckHook
+    mock
+  ];
 
-  checkPhase = ''
-    pytest tests/unit
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "pyyaml~=5.1" "pyyaml" \
+      --replace "boto3~=1.9, >=1.9.56" "boto3"
   '';
 
+  pytestFlagsArray = [
+    "tests/unit"
+  ];
+
+  pythonImportsCheck = [
+    "serverlessrepo"
+  ];
+
   meta = with lib; {
     homepage = "https://github.com/awslabs/aws-serverlessrepo-python";
     description = "Helpers for working with the AWS Serverless Application Repository";
@@ -36,7 +53,7 @@ buildPythonPackage rec {
       A Python library with convenience helpers for working with the
       AWS Serverless Application Repository.
     '';
-    license = lib.licenses.asl20;
+    license = licenses.asl20;
     maintainers = with maintainers; [ dhkl ];
   };
 }
diff --git a/pkgs/development/python-modules/serversyncstorage/default.nix b/pkgs/development/python-modules/serversyncstorage/default.nix
deleted file mode 100644
index a409d48837e64..0000000000000
--- a/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/pkgs/development/python-modules/setupmeta/default.nix b/pkgs/development/python-modules/setupmeta/default.nix
index 07b521ee94954..c42565082cfd2 100644
--- a/pkgs/development/python-modules/setupmeta/default.nix
+++ b/pkgs/development/python-modules/setupmeta/default.nix
@@ -23,14 +23,25 @@ buildPythonPackage rec {
     sha256 = "21hABRiY8CTKkpFjePgBAtjs4/G5eFS3aPNMCBC41CY=";
   };
 
+  preBuild = ''
+    export PYGRADLE_PROJECT_VERSION=${version};
+  '';
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   checkInputs = [
     git
     mock
     pep440
     pytestCheckHook
-    setuptools-scm
   ];
 
+  preCheck = ''
+    unset PYGRADLE_PROJECT_VERSION
+  '';
+
   disabledTests = [
     # Tests want to scan site-packages
     "test_check_dependencies"
diff --git a/pkgs/development/python-modules/setuptools-rust/default.nix b/pkgs/development/python-modules/setuptools-rust/default.nix
index 81276f4e338df..2ab609c7d0c1e 100644
--- a/pkgs/development/python-modules/setuptools-rust/default.nix
+++ b/pkgs/development/python-modules/setuptools-rust/default.nix
@@ -6,22 +6,23 @@
 , semantic-version
 , setuptools
 , setuptools-scm
+, typing-extensions
 , toml
 }:
 
 buildPythonPackage rec {
   pname = "setuptools-rust";
-  version = "0.12.1";
+  version = "1.1.2";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "647009e924f0ae439c7f3e0141a184a69ad247ecb9044c511dabde232d3d570e";
+    sha256 = "a0adb9b503c0ffc4e8fe80b7c617898cefa78049983aaaea7f747e153a3e65d1";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
 
-  propagatedBuildInputs = [ semantic-version setuptools toml ];
+  propagatedBuildInputs = [ semantic-version setuptools toml typing-extensions ];
 
   doCheck = false;
   pythonImportsCheck = [ "setuptools_rust" ];
diff --git a/pkgs/development/python-modules/setuptools-scm/2.nix b/pkgs/development/python-modules/setuptools-scm/2.nix
deleted file mode 100644
index 4cf6f16fedfb5..0000000000000
--- a/pkgs/development/python-modules/setuptools-scm/2.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, toml }:
-
-buildPythonPackage rec {
-  pname = "setuptools_scm";
-  version = "5.0.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-g6DO3TRJ45RjB4EaTHudicS1/UZKL7XuzNCluxWK5cg=";
-  };
-
-  propagatedBuildInputs = [ toml ];
-
-  # Requires pytest, circular dependency
-  doCheck = false;
-  pythonImportsCheck = [ "setuptools_scm" ];
-
-  meta = with lib; {
-    homepage = "https://github.com/pypa/setuptools_scm/";
-    description = "Handles managing your python package versions in scm metadata";
-    license = licenses.mit;
-    maintainers = with maintainers; [ SuperSandro2000 ];
-  };
-}
diff --git a/pkgs/development/python-modules/setuptools-scm/default.nix b/pkgs/development/python-modules/setuptools-scm/default.nix
index 62568869b7bfd..c175cfb4c609b 100644
--- a/pkgs/development/python-modules/setuptools-scm/default.nix
+++ b/pkgs/development/python-modules/setuptools-scm/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "setuptools-scm";
-  version = "6.3.2";
+  version = "6.4.2";
 
   src = fetchPypi {
     pname = "setuptools_scm";
     inherit version;
-    sha256 = "1wm0i27siyy1yqr9rv7lqvb65agay9051yi8jzmi8dgb3q4ai6m4";
+    sha256 = "sha256-aDOsZcbtlxGk1dImb4Akz6B8UzoOVfTBL27/KApanjA=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/setuptools/44.0.nix b/pkgs/development/python-modules/setuptools/44.0.nix
deleted file mode 100644
index ca70a10615123..0000000000000
--- a/pkgs/development/python-modules/setuptools/44.0.nix
+++ /dev/null
@@ -1,80 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, bootstrapped-pip
-, lib
-, pipInstallHook
-, setuptoolsBuildHook
-}:
-
-let
-  pname = "setuptools";
-  version = "44.0.0";
-
-  # Create an sdist of setuptools
-  sdist = stdenv.mkDerivation rec {
-    name = "${pname}-${version}-sdist.tar.gz";
-
-    src = fetchFromGitHub {
-      owner = "pypa";
-      repo = pname;
-      rev = "v${version}";
-      sha256 = "0z3q0qinyp1rmnxkw3y5f6nbsxhqlfq5k7skfrqa6ymb3zr009y1";
-      name = "${pname}-${version}-source";
-    };
-
-    patches = [
-      ./tag-date.patch
-    ];
-
-    buildPhase = ''
-      ${python.pythonForBuild.interpreter} bootstrap.py
-      ${python.pythonForBuild.interpreter} setup.py sdist --formats=gztar
-
-      # Here we untar the sdist and retar it in order to control the timestamps
-      # of all the files included
-      tar -xzf dist/${pname}-${version}.post0.tar.gz -C dist/
-      tar -czf dist/${name} -C dist/ --mtime="@$SOURCE_DATE_EPOCH" ${pname}-${version}.post0
-    '';
-
-    installPhase = ''
-      echo "Moving sdist..."
-      mv dist/${name} $out
-    '';
-  };
-in buildPythonPackage rec {
-  inherit pname version;
-  # Because of bootstrapping we don't use the setuptoolsBuildHook that comes with format="setuptools" directly.
-  # Instead, we override it to remove setuptools to avoid a circular dependency.
-  # The same is done for pip and the pipInstallHook.
-  format = "other";
-
-  src = sdist;
-
-  nativeBuildInputs = [
-    bootstrapped-pip
-    (pipInstallHook.override{pip=null;})
-    (setuptoolsBuildHook.override{setuptools=null; wheel=null;})
-  ];
-
-  preBuild = lib.optionalString (!stdenv.hostPlatform.isWindows) ''
-    export SETUPTOOLS_INSTALL_WINDOWS_SPECIFIC_FILES=0
-  '';
-
-  pipInstallFlags = [ "--ignore-installed" ];
-
-  # Adds setuptools to nativeBuildInputs causing infinite recursion.
-  catchConflicts = false;
-
-  # Requires pytest, causing infinite recursion.
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Utilities to facilitate the installation of Python packages";
-    homepage = "https://pypi.python.org/pypi/setuptools";
-    license = with licenses; [ psfl zpl20 ];
-    platforms = python.meta.platforms;
-    priority = 10;
-  };
-}
diff --git a/pkgs/development/python-modules/setuptoolsdarcs/default.nix b/pkgs/development/python-modules/setuptoolsdarcs/default.nix
deleted file mode 100644
index 41fe5043ea852..0000000000000
--- a/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/pkgs/development/python-modules/sfepy/default.nix b/pkgs/development/python-modules/sfepy/default.nix
index 7b939342bfc22..3d895f4a3f364 100644
--- a/pkgs/development/python-modules/sfepy/default.nix
+++ b/pkgs/development/python-modules/sfepy/default.nix
@@ -18,14 +18,14 @@
 
 buildPythonPackage rec {
   pname = "sfepy";
-  version = "2021.2";
+  version = "2021.4";
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "sfepy";
     repo = "sfepy";
     rev = "release_${version}";
-    sha256 = "sha256-zFtm4KrpqjYfxVHcMrTU4tMyHYnD9VPEvuId2lR1MHU=";
+    sha256 = "sha256-+wvFcME02la5JwzD5bvPgBBlkQKF5LWz5MC3+0s5jSs=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/sgmllib3k/default.nix b/pkgs/development/python-modules/sgmllib3k/default.nix
index 1104c843c6eeb..c4b0d9bdb94d1 100644
--- a/pkgs/development/python-modules/sgmllib3k/default.nix
+++ b/pkgs/development/python-modules/sgmllib3k/default.nix
@@ -2,14 +2,17 @@
 , buildPythonPackage
 , fetchFromGitHub
 , isPy27
+, pytestCheckHook
+, pythonAtLeast
 }:
 
 buildPythonPackage rec {
   pname = "sgmllib3k";
   version = "1.0.0";
+  format = "setuptools";
+
   disabled = isPy27;
 
-  # fetchFromGitHub instead of fetchPypi to run tests.
   src = fetchFromGitHub {
     owner = "hsoft";
     repo = "sgmllib";
@@ -17,6 +20,18 @@ buildPythonPackage rec {
     sha256 = "0bzf6pv85dzfxfysm6zbj8m40hp0xzr9h8qlk4hp3nmy88rznqvr";
   };
 
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = lib.optionals (pythonAtLeast "3.10") [
+    "test_declaration_junk_chars"
+  ];
+
+  pythonImportsCheck = [
+    "sgmllib"
+  ];
+
   meta = with lib; {
     homepage = "https://pypi.org/project/sgmllib3k/";
     description = "Python 3 port of sgmllib";
diff --git a/pkgs/development/python-modules/shodan/default.nix b/pkgs/development/python-modules/shodan/default.nix
index 9637602cce1ff..772b38be30f20 100644
--- a/pkgs/development/python-modules/shodan/default.nix
+++ b/pkgs/development/python-modules/shodan/default.nix
@@ -5,16 +5,20 @@
 , colorama
 , requests
 , setuptools
+, pythonOlder
 , XlsxWriter
 }:
 
 buildPythonPackage rec {
   pname = "shodan";
-  version = "1.25.0";
+  version = "1.26.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-fivdvBtgv2IAQtABD0t2KoC0MRHb6pwEHXLUMl4mDCM=";
+    sha256 = "sha256-8oJ7QNaRiYjvn18W3LihM4OqrhooRYmPcBLqyJBru4c=";
   };
 
   propagatedBuildInputs = [
@@ -27,7 +31,10 @@ buildPythonPackage rec {
 
   # The tests require a shodan api key, so skip them.
   doCheck = false;
-  pythonImportsCheck = [ "shodan" ];
+
+  pythonImportsCheck = [
+    "shodan"
+  ];
 
   meta = with lib; {
     description = "Python library and command-line utility for Shodan";
diff --git a/pkgs/development/python-modules/shtab/default.nix b/pkgs/development/python-modules/shtab/default.nix
new file mode 100644
index 0000000000000..78e160058b238
--- /dev/null
+++ b/pkgs/development/python-modules/shtab/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytest-timeout
+, pytestCheckHook
+, pythonOlder
+, setuptools-scm
+, bashInteractive
+}:
+
+buildPythonPackage rec {
+  pname = "shtab";
+  version = "1.5.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "iterative";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-Wuc4m3VdOGEcevYXUpbL4gTvyW9t13pj57zPYdqx0UY=";
+  };
+
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  checkInputs = [
+    bashInteractive
+    pytest-timeout
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace " --cov=shtab --cov-report=term-missing --cov-report=xml" ""
+  '';
+
+  pythonImportsCheck = [
+    "shtab"
+  ];
+
+  meta = with lib; {
+    description = "Module for shell tab completion of Python CLI applications";
+    homepage = "https://docs.iterative.ai/shtab/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/sigrok/default.nix b/pkgs/development/python-modules/sigrok/default.nix
new file mode 100644
index 0000000000000..b8b925ba6b16a
--- /dev/null
+++ b/pkgs/development/python-modules/sigrok/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, stdenv
+, libsigrok
+, toPythonModule
+, python
+, autoreconfHook
+, pythonImportsCheckHook
+, pythonCatchConflictsHook
+, swig
+, setuptools
+, numpy
+, pygobject3
+}:
+
+# build libsigrok plus its Python bindings. Unfortunately it does not appear
+# to be possible to build them separately, at least not easily.
+toPythonModule ((libsigrok.override {
+  inherit python;
+}).overrideAttrs (orig: {
+  pname = "${python.libPrefix}-sigrok";
+
+  patches = orig.patches or [] ++ [
+    # Makes libsigrok install the bindings into site-packages properly (like
+    # we expect) instead of making a version-specific *.egg subdirectory.
+    ./python-install.patch
+  ];
+
+  nativeBuildInputs = orig.nativeBuildInputs or [] ++ [
+    autoreconfHook
+    setuptools
+    swig
+    numpy
+  ] ++ lib.optionals (stdenv.hostPlatform == stdenv.buildPlatform) [
+    pythonImportsCheckHook
+    pythonCatchConflictsHook
+  ];
+
+  buildInputs = orig.buildInputs or [] ++ [
+    pygobject3 # makes headers available the configure script checks for
+  ];
+
+  propagatedBuildInputs = orig.propagatedBuildInputs or [] ++ [
+    pygobject3
+    numpy
+  ];
+
+  postInstall = ''
+    ${orig.postInstall or ""}
+
+    # for pythonImportsCheck
+    export PYTHONPATH="$out/${python.sitePackages}:$PYTHONPATH"
+  '';
+
+  pythonImportsCheck = [ "sigrok" "sigrok.core" ];
+
+  meta = orig.meta // {
+    description = "Python bindings for libsigrok";
+    maintainers = orig.meta.maintainers ++ [
+      lib.maintainers.sternenseemann
+    ];
+  };
+}))
diff --git a/pkgs/development/python-modules/sigrok/python-install.patch b/pkgs/development/python-modules/sigrok/python-install.patch
new file mode 100644
index 0000000000000..9c25eab6f39a3
--- /dev/null
+++ b/pkgs/development/python-modules/sigrok/python-install.patch
@@ -0,0 +1,16 @@
+diff --git a/Makefile.am b/Makefile.am
+index 280cf64d..e10eb79f 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -888,8 +888,9 @@ $(PDIR)/timestamp: $(PDIR)/sigrok/core/classes.i \
+ 
+ python-install:
+ 	$(AM_V_at)$(MKDIR_P) "$(DESTDIR)$(prefix)" "$(DESTDIR)$(exec_prefix)"
+-	destdir='$(DESTDIR)'; $(setup_py) install $${destdir:+"--root=$$destdir"} \
+-		--prefix "$(prefix)" --exec-prefix "$(exec_prefix)"
++	destdir='$(DESTDIR)'; $(setup_py) install --root=$${destdir:-/} \
++		--prefix "$(prefix)" --exec-prefix "$(exec_prefix)" \
++		--single-version-externally-managed
+ 
+ python-clean:
+ 	-$(AM_V_at)rm -f $(PDIR)/timestamp
diff --git a/pkgs/development/python-modules/sigtools/default.nix b/pkgs/development/python-modules/sigtools/default.nix
index b61e64684c865..49ba916b481ca 100644
--- a/pkgs/development/python-modules/sigtools/default.nix
+++ b/pkgs/development/python-modules/sigtools/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, repeated_test
 , sphinx
 , mock
 , coverage
@@ -19,11 +18,15 @@ buildPythonPackage rec {
     sha256 = "e7789628ec0d02e421bca76532b0d5da149f96f09e7ed4a5cbf318624b75e949";
   };
 
-  buildInputs = [ repeated_test sphinx mock coverage unittest2 ];
   propagatedBuildInputs = [ funcsigs six ];
 
   patchPhase = ''sed -i s/test_suite="'"sigtools.tests"'"/test_suite="'"unittest2.collector"'"/ setup.py'';
 
+  # repeated_test no longer exists in nixpkgs
+  # Also see: https://github.com/epsy/sigtools/issues/26
+  doCheck = false;
+  checkInputs = [ sphinx mock coverage unittest2 ];
+
   meta = with lib; {
     description = "Utilities for working with 3.3's inspect.Signature objects.";
     homepage = "https://pypi.python.org/pypi/sigtools";
diff --git a/pkgs/development/python-modules/simpleai/default.nix b/pkgs/development/python-modules/simpleai/default.nix
deleted file mode 100644
index 9dbf40a547068..0000000000000
--- a/pkgs/development/python-modules/simpleai/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, numpy
-, isPy3k
-}:
-
-buildPythonPackage rec {
-   version = "0.8.3";
-   pname = "simpleai";
-   disabled = isPy3k;
-
-   src = fetchPypi {
-     inherit pname version;
-     sha256 = "1d5be7a00f1f42ed86683019262acbb14e6eca1ed92ce7d7fdf932838d3742e5";
-   };
-
-   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/pkgs/development/python-modules/simpleeval/default.nix b/pkgs/development/python-modules/simpleeval/default.nix
index 6467dc964ef33..a296a721a8e0a 100644
--- a/pkgs/development/python-modules/simpleeval/default.nix
+++ b/pkgs/development/python-modules/simpleeval/default.nix
@@ -6,14 +6,14 @@
 
 buildPythonPackage rec {
   pname = "simpleeval";
-  version = "0.9.11";
+  version = "0.9.12";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "danthedeckie";
     repo = pname;
     rev = version;
-    sha256 = "111w76mahbf3lm2p72dkqp5fhwg7nvnwm4l078dgsgkixssjazi7";
+    sha256 = "0khgl729q5133fgc00d550f4r77707rkkn7r56az4v8bvx0q8xp4";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/simplefix/default.nix b/pkgs/development/python-modules/simplefix/default.nix
index 6e498ebeaea81..fc241ce278ac6 100644
--- a/pkgs/development/python-modules/simplefix/default.nix
+++ b/pkgs/development/python-modules/simplefix/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "simplefix";
-  version = "1.0.14";
+  version = "1.0.15";
 
   src = fetchFromGitHub {
     repo = "simplefix";
     owner = "da4089";
     rev = "v${version}";
-    sha256 = "1qccb63w6swq7brp0zinkkngpazmb25r21adry5cq6nniqs5g5zx";
+    sha256 = "sha256-GQHMotxNRuRv6zXhrD02T+aFgfYe3RnvUGADsBeSPbA=";
   };
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/simpleparse/default.nix b/pkgs/development/python-modules/simpleparse/default.nix
deleted file mode 100644
index e81a7d41b7a5e..0000000000000
--- a/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/pkgs/development/python-modules/simplisafe-python/default.nix b/pkgs/development/python-modules/simplisafe-python/default.nix
index bbfd95cd9212d..fa813c4b5fd12 100644
--- a/pkgs/development/python-modules/simplisafe-python/default.nix
+++ b/pkgs/development/python-modules/simplisafe-python/default.nix
@@ -19,7 +19,7 @@
 
 buildPythonPackage rec {
   pname = "simplisafe-python";
-  version = "2021.12.2";
+  version = "2022.02.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -28,7 +28,7 @@ buildPythonPackage rec {
     owner = "bachya";
     repo = pname;
     rev = version;
-    sha256 = "sha256-XVSoPPBdjSQBYrUs0AFGsGFRrQOWbPzlB2mmEBSbFI4=";
+    sha256 = "sha256-r+TcSzFkEGRsuTtEHBT/GMNa9r6GsIyvbLaF32cFfeQ=";
   };
 
   nativeBuildInputs = [
@@ -40,7 +40,6 @@ buildPythonPackage rec {
     backoff
     docutils
     pytz
-    types-pytz
     voluptuous
     websockets
   ];
@@ -51,6 +50,7 @@ buildPythonPackage rec {
     pytest-aiohttp
     pytest-asyncio
     pytestCheckHook
+    types-pytz
   ];
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/singledispatch/default.nix b/pkgs/development/python-modules/singledispatch/default.nix
deleted file mode 100644
index 837271b4d57c7..0000000000000
--- a/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/pkgs/development/python-modules/siosocks/default.nix b/pkgs/development/python-modules/siosocks/default.nix
index 2a4803ef8bd26..4292c167782a0 100644
--- a/pkgs/development/python-modules/siosocks/default.nix
+++ b/pkgs/development/python-modules/siosocks/default.nix
@@ -30,6 +30,13 @@ buildPythonPackage rec {
     pytest-trio
   ];
 
+  disabledTestPaths = [
+    # Timeout on Hydra
+    "tests/test_trio.py"
+    "tests/test_sansio.py"
+    "tests/test_socketserver.py"
+  ];
+
   pythonImportsCheck = [
     "siosocks"
   ];
diff --git a/pkgs/development/python-modules/sip/default.nix b/pkgs/development/python-modules/sip/default.nix
index 9604d47c4e2f4..5cd8136f84efa 100644
--- a/pkgs/development/python-modules/sip/default.nix
+++ b/pkgs/development/python-modules/sip/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "sip";
-  version = "6.1.1";
+  version = "6.5.0";
 
   src = fetchPypi {
     pname = "sip";
     inherit version;
-    sha256 = "083ykzg7zbvrfrg3ram2vx93zrmhpm817kf9bkhw8r6pzkr5mljj";
+    sha256 = "a1cf8431a8eb9392b3ff6dc61d832d0447bfdcae5b3e4256a5fa74dbc25b0734";
   };
 
   propagatedBuildInputs = [ packaging toml ];
diff --git a/pkgs/development/python-modules/sipsimple/default.nix b/pkgs/development/python-modules/sipsimple/default.nix
deleted file mode 100644
index 34b95fe781d93..0000000000000
--- a/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/pkgs/development/python-modules/skein/skeinjar.nix b/pkgs/development/python-modules/skein/skeinjar.nix
index c1a0d8a57515b..d29e0e2f99c77 100644
--- a/pkgs/development/python-modules/skein/skeinjar.nix
+++ b/pkgs/development/python-modules/skein/skeinjar.nix
@@ -4,9 +4,9 @@ let
   skeinRepo = callPackage ./skeinrepo.nix { inherit src version; };
 in
 stdenv.mkDerivation rec {
-  name = "skein-${version}.jar";
+  pname = "skein.jar";
 
-  inherit src;
+  inherit version src;
 
   nativeBuildInputs = [ maven ];
 
diff --git a/pkgs/development/python-modules/skein/skeinrepo.nix b/pkgs/development/python-modules/skein/skeinrepo.nix
index d7bdef56ebe38..86cbf82b7f0f2 100644
--- a/pkgs/development/python-modules/skein/skeinrepo.nix
+++ b/pkgs/development/python-modules/skein/skeinrepo.nix
@@ -1,9 +1,9 @@
 { autoPatchelfHook, lib, maven, stdenv, src, version }:
 
 stdenv.mkDerivation rec {
-  name = "skein-${version}-maven-repo";
+  pname = "skein-maven-repo";
 
-  inherit src;
+  inherit version src;
 
   nativeBuildInputs = [ maven ] ++ lib.optional stdenv.isLinux autoPatchelfHook;
 
diff --git a/pkgs/development/python-modules/skodaconnect/default.nix b/pkgs/development/python-modules/skodaconnect/default.nix
index 5196651959c7c..7fe887d3ea107 100644
--- a/pkgs/development/python-modules/skodaconnect/default.nix
+++ b/pkgs/development/python-modules/skodaconnect/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "skodaconnect";
-  version = "1.1.12";
+  version = "1.1.19";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -20,8 +20,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "lendy007";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "sha256-OKNw+t8S6rRQDKNRBN/CU36OwWojuOH6mMQ5QItkkb8=";
+    rev = version;
+    hash = "sha256-IbCGveRcn6Kn0kGw+/kWTBTqCdWqsPTv6aPq71vc1mw=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
diff --git a/pkgs/development/python-modules/slack-sdk/default.nix b/pkgs/development/python-modules/slack-sdk/default.nix
index 8a8957459ee5f..196d3641eeb44 100644
--- a/pkgs/development/python-modules/slack-sdk/default.nix
+++ b/pkgs/development/python-modules/slack-sdk/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "slack-sdk";
-  version = "3.13.0";
+  version = "3.15.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = "slackapi";
     repo = "python-slack-sdk";
     rev = "v${version}";
-    sha256 = "sha256-L12faNLwjlEkJZ9s9aIyUHSk7x3n908EHCYU9jECiYQ=";
+    sha256 = "sha256-ndJdf8BGYfJsLVWqp00YD4vndS3n24UBm06ibcVRMpY=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/slowaes/default.nix b/pkgs/development/python-modules/slowaes/default.nix
deleted file mode 100644
index ddca8509744d6..0000000000000
--- a/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/pkgs/development/python-modules/smart-meter-texas/default.nix b/pkgs/development/python-modules/smart-meter-texas/default.nix
index a9364ad0d1f29..dbe24923bbf63 100644
--- a/pkgs/development/python-modules/smart-meter-texas/default.nix
+++ b/pkgs/development/python-modules/smart-meter-texas/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "smart-meter-texas";
-  version = "0.4.7";
+  version = "0.5.0";
 
   disabled = pythonOlder "3.6";
 
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "grahamwetzler";
     repo = "smart-meter-texas";
     rev = "v${version}";
-    sha256 = "1hfvv3kpkc7i9mn58bjgvwjj0mi2syr8fv4r8bwbhq5sailma27j";
+    sha256 = "1f5blmz3w549qjqn5xmdk1fx2pqd76hnlc9p439r7yc473nhw69w";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/smartdc/default.nix b/pkgs/development/python-modules/smartdc/default.nix
deleted file mode 100644
index ceba9eae9e4b2..0000000000000
--- a/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/pkgs/development/python-modules/smmap/default.nix b/pkgs/development/python-modules/smmap/default.nix
index 800cf08425821..5e8344e3d637d 100644
--- a/pkgs/development/python-modules/smmap/default.nix
+++ b/pkgs/development/python-modules/smmap/default.nix
@@ -2,10 +2,10 @@
 
 buildPythonPackage rec {
   pname = "smmap";
-  version = "4.0.0";
+  version = "5.0.0";
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7e65386bd122d45405ddf795637b7f7d2b532e7e401d46bbe3fb49b9986d5182";
+    sha256 = "c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936";
   };
 
   checkInputs = [ nosexcover ];
diff --git a/pkgs/development/python-modules/snowflake-connector-python/default.nix b/pkgs/development/python-modules/snowflake-connector-python/default.nix
index c157a6a2132ab..744883302a0ec 100644
--- a/pkgs/development/python-modules/snowflake-connector-python/default.nix
+++ b/pkgs/development/python-modules/snowflake-connector-python/default.nix
@@ -24,12 +24,12 @@
 
 buildPythonPackage rec {
   pname = "snowflake-connector-python";
-  version = "2.7.2";
+  version = "2.7.4";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b2f8f360750eefa98be09ff53c130381646f8dfc8c6e4a705387676210ff8578";
+    sha256 = "sha256-Es8Xe7yHetAl9bAO83ecTuv9r0cueRL4fCvNyfOGQAg=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/snug/default.nix b/pkgs/development/python-modules/snug/default.nix
deleted file mode 100644
index 08896467b4e52..0000000000000
--- a/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/pkgs/development/python-modules/socid-extractor/default.nix b/pkgs/development/python-modules/socid-extractor/default.nix
index 34c0c20e075a0..38b1de48b2f4a 100644
--- a/pkgs/development/python-modules/socid-extractor/default.nix
+++ b/pkgs/development/python-modules/socid-extractor/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "socid-extractor";
-  version = "0.0.22";
+  version = "0.0.23";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "soxoj";
     repo = pname;
     rev = "v${version}";
-    sha256 = "kHF9CBlUKrD/DRVwJveenpFMr7pIrxEBNkFHHLa46KQ=";
+    sha256 = "0vdcxinpnl3vn2l4dybbyggdzm5mpmi3qbpars7lrg5m0mib0cml";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/socketio-client/default.nix b/pkgs/development/python-modules/socketio-client/default.nix
new file mode 100644
index 0000000000000..2842e37517320
--- /dev/null
+++ b/pkgs/development/python-modules/socketio-client/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, requests
+, six
+, websocket-client
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+  pname = "socketio-client";
+  version = "0.7.2";
+
+  src = fetchFromGitHub {
+    owner = "invisibleroads";
+    repo = "socketio-client";
+    rev = version;
+    sha256 = "sha256-71sjiGJDDYElPGUNCH1HaVdvgMt8KeD/kXVDpF615ho=";
+  };
+
+  propagatedBuildInputs = [
+    six
+    websocket-client
+    requests
+  ];
+
+  # Perform networking tests.
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "socketIO_client"
+  ];
+
+  meta = with lib; {
+    description = "A socket.io client library for protocol 1.x";
+    homepage = "https://github.com/invisibleroads/socketIO-client";
+    license = licenses.mit;
+    maintainers = with maintainers; [ raitobezarius ];
+  };
+}
diff --git a/pkgs/development/python-modules/soco/default.nix b/pkgs/development/python-modules/soco/default.nix
index df9a06aec14c6..ac95384fb6ce8 100644
--- a/pkgs/development/python-modules/soco/default.nix
+++ b/pkgs/development/python-modules/soco/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , fetchFromGitHub
 , graphviz
+, appdirs
 , ifaddr
 , pythonOlder
 , mock
@@ -14,17 +15,18 @@
 
 buildPythonPackage rec {
   pname = "soco";
-  version = "0.25.2";
+  version = "0.26.2";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "SoCo";
     repo = "SoCo";
     rev = "v${version}";
-    sha256 = "sha256-Bu9RtzvQVDPekIzkVvcDkTs5Z+IDx6lSBCMv5zs8gNA=";
+    sha256 = "sha256-VOGdv3g11OzNeTlBwm8hRy6fThDKVKIlgQxR4b07y/8=";
   };
 
   propagatedBuildInputs = [
+    appdirs
     ifaddr
     requests
     xmltodict
diff --git a/pkgs/development/python-modules/softlayer/default.nix b/pkgs/development/python-modules/softlayer/default.nix
index b0705346abdb2..e5a55cc9bb1b9 100644
--- a/pkgs/development/python-modules/softlayer/default.nix
+++ b/pkgs/development/python-modules/softlayer/default.nix
@@ -17,14 +17,14 @@
 
 buildPythonPackage rec {
   pname = "softlayer";
-  version = "5.9.8";
+  version = "5.9.9";
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = "softlayer-python";
     rev = "v${version}";
-    sha256 = "087kyl2yacvh12i4x3357659mgq4xycv8a4y9rl3rj57kp5jc6ah";
+    sha256 = "sha256-LskPz5KXOi7olb3+DUP9uEFESQeo6ec/ZLx9B/w6Ni0=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/somajo/default.nix b/pkgs/development/python-modules/somajo/default.nix
index 8701fa98e67d0..e332d0defd738 100644
--- a/pkgs/development/python-modules/somajo/default.nix
+++ b/pkgs/development/python-modules/somajo/default.nix
@@ -1,22 +1,36 @@
-{ lib, stdenv, fetchFromGitHub, buildPythonPackage, isPy3k, regex }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, buildPythonPackage
+, pythonOlder
+, regex
+}:
 
 buildPythonPackage rec {
-  pname = "SoMaJo";
-  version = "2.1.6";
-  disabled = !isPy3k;
+  pname = "somajo";
+  version = "2.2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "tsproisl";
-    repo = pname;
+    repo = "SoMaJo";
     rev = "v${version}";
-    sha256 = "1q88x05729qdnl1gbahisjk3s97wha0b5dj3n63kq2qyvyy0929s";
+    sha256 = "0ywdh1pfk0pgm64p97i9cwz0h9wggbp4shxp5l7kkqs2n2v5c6qg";
   };
 
-  propagatedBuildInputs = [ regex ];
+  propagatedBuildInputs = [
+    regex
+  ];
 
   # loops forever
   doCheck = !stdenv.isDarwin;
 
+  pythonImportsCheck = [
+    "somajo"
+  ];
+
   meta = with lib; {
     description = "Tokenizer and sentence splitter for German and English web texts";
     homepage = "https://github.com/tsproisl/SoMaJo";
diff --git a/pkgs/development/python-modules/sopel/default.nix b/pkgs/development/python-modules/sopel/default.nix
index 4f9fe7c39e10f..bc39bb998e8e2 100644
--- a/pkgs/development/python-modules/sopel/default.nix
+++ b/pkgs/development/python-modules/sopel/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "sopel";
-  version = "7.1.6";
+  version = "7.1.7";
   disabled = isPyPy;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ebd3b2aa9230835f8a68ea7f5a10324ddf35d70d89a9c92c8cba81c558565efb";
+    sha256 = "4eb12e9753162e4c19a1bfdd42aea9eb7f5f15e316a6609b925350792fb454fd";
   };
 
   propagatedBuildInputs = [
@@ -56,7 +56,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Simple and extensible IRC bot";
-    homepage = "http://sopel.chat";
+    homepage = "https://sopel.chat";
     license = licenses.efl20;
     maintainers = with maintainers; [ mog ];
   };
diff --git a/pkgs/development/python-modules/sorl_thumbnail/default.nix b/pkgs/development/python-modules/sorl_thumbnail/default.nix
index 4a6f1c1ae9d74..61150ac45bbf1 100644
--- a/pkgs/development/python-modules/sorl_thumbnail/default.nix
+++ b/pkgs/development/python-modules/sorl_thumbnail/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "sorl-thumbnail";
-  version = "12.7.0";
+  version = "12.8.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "fbe6dfd66a1aceb7e0203895ff5622775e50266f8d8cfd841fe1500bd3e19018";
+    sha256 = "sha256-7io8nwuInlmRk4PTeB8TF9ycSSf7RLIvsUN/b+cFS5Y=";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/sounddevice/default.nix b/pkgs/development/python-modules/sounddevice/default.nix
index 036f91614b1b9..81f99d76d6ca8 100644
--- a/pkgs/development/python-modules/sounddevice/default.nix
+++ b/pkgs/development/python-modules/sounddevice/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fetchPypi
 , isPy27
@@ -10,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "sounddevice";
-  version = "0.4.3";
+  version = "0.4.4";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f1667a7467b65fac4c4ebf668b4e9698eb7333fc3d32bc3c7ec9839ea7cb6c20";
+    sha256 = "sha256-9pD1qkGKViaMe9vJfWl8ha3QE0xcedRLiirXobhdp4k=";
   };
 
   propagatedBuildInputs = [ cffi numpy portaudio ];
@@ -28,7 +29,7 @@ buildPythonPackage rec {
   patches = [
     (substituteAll {
       src = ./fix-portaudio-library-path.patch;
-      portaudio = "${portaudio}/lib/libportaudio.so.2";
+      portaudio = "${portaudio}/lib/libportaudio${stdenv.hostPlatform.extensions.sharedLibrary}";
     })
   ];
 
diff --git a/pkgs/development/python-modules/soupsieve/1.nix b/pkgs/development/python-modules/soupsieve/1.nix
deleted file mode 100644
index bb5ecbc839c2f..0000000000000
--- a/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/pkgs/development/python-modules/spacy-loggers/default.nix b/pkgs/development/python-modules/spacy-loggers/default.nix
new file mode 100644
index 0000000000000..7e4d572e18123
--- /dev/null
+++ b/pkgs/development/python-modules/spacy-loggers/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, callPackage
+, fetchPypi
+, buildPythonPackage
+, wandb
+, wasabi
+}:
+
+buildPythonPackage rec {
+  pname = "spacy-loggers";
+  version = "1.0.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-F9DiSbLmxlRsSfxlYaCmhfkajtvySlsrd1nq1EPHRlQ=";
+  };
+
+  propagatedBuildInputs = [
+    wandb
+    wasabi
+  ];
+
+  pythonImportsCheck = [ "spacy_loggers" ];
+
+  # skipping the checks, becaus it requires a cycle dependency to spacy as well.
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Logging utilities for spaCy";
+    homepage = "https://github.com/explosion/spacy-loggers";
+    license = licenses.mit;
+    maintainers = with maintainers; [ stunkymonkey ];
+  };
+}
diff --git a/pkgs/development/python-modules/spacy-transformers/default.nix b/pkgs/development/python-modules/spacy-transformers/default.nix
index 757c945f3f05b..2f70732caa316 100644
--- a/pkgs/development/python-modules/spacy-transformers/default.nix
+++ b/pkgs/development/python-modules/spacy-transformers/default.nix
@@ -22,7 +22,7 @@ buildPythonPackage rec {
   };
 
   postPatch = ''
-    sed -i 's/transformers>=3.4.0,<4.12.0/transformers/' setup.cfg
+    sed -i 's/transformers>=3.4.0,<4.13.0/transformers/' setup.cfg
   '';
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/spacy/default.nix b/pkgs/development/python-modules/spacy/default.nix
index 0d095cfef07e0..e8b46e99cc1dd 100644
--- a/pkgs/development/python-modules/spacy/default.nix
+++ b/pkgs/development/python-modules/spacy/default.nix
@@ -25,17 +25,19 @@
 , python
 , tqdm
 , typing-extensions
+, spacy-loggers
+, langcodes
 }:
 
 buildPythonPackage rec {
   pname = "spacy";
-  version = "3.2.0";
+  version = "3.2.2";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "68e54b2a14ce74eeecea9bfb0b9bdadf8a4a8157765dbefa7e50d25a1bf0f2f3";
+    sha256 = "sha256-s9mjYeHjwcGtD38kTyaH+s5CD+LWQtkpic01eUSn1w8=";
   };
 
   propagatedBuildInputs = [
@@ -58,8 +60,15 @@ buildPythonPackage rec {
     tqdm
     typer
     wasabi
+    spacy-loggers
+    langcodes
   ] ++ lib.optional (pythonOlder "3.8") typing-extensions;
 
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "pydantic>=1.7.4,!=1.8,!=1.8.1,<1.9.0" "pydantic~=1.2"
+  '';
+
   checkInputs = [
     pytest
   ];
diff --git a/pkgs/development/python-modules/spambayes/default.nix b/pkgs/development/python-modules/spambayes/default.nix
deleted file mode 100644
index f33748379d1ed..0000000000000
--- a/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/pkgs/development/python-modules/speaklater3/default.nix b/pkgs/development/python-modules/speaklater3/default.nix
new file mode 100644
index 0000000000000..60c4c99fd3a28
--- /dev/null
+++ b/pkgs/development/python-modules/speaklater3/default.nix
@@ -0,0 +1,23 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "speaklater3";
+  version = "1.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "ySYdS2taMEZyMS0esImb4Cj6yRdgGQqA/szTHTo7UEI=";
+  };
+
+  pythonImportsCheck = [ "speaklater" ];
+
+  meta = with lib; {
+    description = "Implements a lazy string for python useful for use with gettext";
+    homepage = "https://github.com/mitsuhiko/speaklater";
+    license = licenses.bsd0;
+    maintainers = with maintainers; [ gador ];
+  };
+}
diff --git a/pkgs/development/python-modules/spectral-cube/default.nix b/pkgs/development/python-modules/spectral-cube/default.nix
index b11ca178fc759..fae812319ec85 100644
--- a/pkgs/development/python-modules/spectral-cube/default.nix
+++ b/pkgs/development/python-modules/spectral-cube/default.nix
@@ -12,6 +12,7 @@
 , pytestCheckHook
 , pytest-astropy
 , astropy-helpers
+, setuptools-scm
 }:
 
 buildPythonPackage rec {
@@ -24,6 +25,12 @@ buildPythonPackage rec {
     sha256 = "1c0pp82wgl680w2vcwlrrz46sy83z1qs74w5bd691wg0512hv2jx";
   };
 
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [ astropy casa-formats-io radio_beam joblib six dask ];
   checkInputs = [ pytestCheckHook aplpy pytest-astropy ];
 
diff --git a/pkgs/development/python-modules/sphinx-copybutton/default.nix b/pkgs/development/python-modules/sphinx-copybutton/default.nix
index 8d408d300c71b..259a7dde28b3c 100644
--- a/pkgs/development/python-modules/sphinx-copybutton/default.nix
+++ b/pkgs/development/python-modules/sphinx-copybutton/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "sphinx-copybutton";
-  version = "0.4.0";
+  version = "0.5.0";
 
   src = fetchFromGitHub {
     owner = "executablebooks";
     repo = "sphinx-copybutton";
     rev = "v${version}";
-    sha256 = "sha256-vrEIvQeP7AMXSme1PBp0ox5k8Q1rz+1cbHIO+o17Jqc=";
+    sha256 = "sha256-W27kCU/8NHoBtiAyA+CgNa00j6ck3CAaq1hLLGo60Ro=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/development/python-modules/sphinx-inline-tabs/default.nix b/pkgs/development/python-modules/sphinx-inline-tabs/default.nix
index f5cf0fbd3b655..0dd855fee2ae3 100644
--- a/pkgs/development/python-modules/sphinx-inline-tabs/default.nix
+++ b/pkgs/development/python-modules/sphinx-inline-tabs/default.nix
@@ -6,14 +6,14 @@
 
 buildPythonPackage rec {
   pname = "sphinx-inline-tabs";
-  version = "2021.08.17.beta10";
+  version = "2022.01.02.beta11";
   format = "flit";
 
   src = fetchFromGitHub {
     owner = "pradyunsg";
     repo = "sphinx-inline-tabs";
     rev = version;
-    sha256 = "sha256-T3OqK0eXNiBs2zQURCSPLc8aIyf2an32UyDh4qSmxQ4=";
+    sha256 = "sha256-k2nOidUk87EZbFsqQ7zr/4eHk+T7wUOYimjbllfneUM=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/sphinx-jinja/default.nix b/pkgs/development/python-modules/sphinx-jinja/default.nix
index 6f721ad1a8f61..7f5ea8c4241a1 100644
--- a/pkgs/development/python-modules/sphinx-jinja/default.nix
+++ b/pkgs/development/python-modules/sphinx-jinja/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "sphinx-jinja";
-  version = "1.1.1";
+  version = "1.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0hz13vc65zi4zmay40nz8wzxickv1q9zzl6x03qc7rvvapz0c91p";
+    sha256 = "e6614d986c0289cb85b016c25eb8cb9781ceb841e70bee639c5123f39ad90b38";
   };
 
   buildInputs = [ pbr ];
diff --git a/pkgs/development/python-modules/sphinx/2.nix b/pkgs/development/python-modules/sphinx/2.nix
deleted file mode 100644
index 0424b9b4c39b2..0000000000000
--- a/pkgs/development/python-modules/sphinx/2.nix
+++ /dev/null
@@ -1,82 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pytest
-, simplejson
-, mock
-, glibcLocales
-, html5lib
-, pythonOlder
-, enum34
-, python
-, docutils
-, jinja2
-, pygments
-, alabaster
-, Babel
-, snowballstemmer
-, six
-, sqlalchemy
-, whoosh
-, imagesize
-, requests
-, typing
-, sphinxcontrib-websupport
-, setuptools
-}:
-
-buildPythonPackage rec {
-  pname = "sphinx";
-  version = "1.8.5";
-  src = fetchPypi {
-    pname = "Sphinx";
-    inherit version;
-    sha256 = "c7658aab75c920288a8cf6f09f244c6cfdae30d82d803ac1634d9f223a80ca08";
-  };
-  LC_ALL = "en_US.UTF-8";
-
-  checkInputs = [ pytest ];
-  buildInputs = [ simplejson mock glibcLocales html5lib ] ++ lib.optional (pythonOlder "3.4") enum34;
-  # Disable two tests that require network access.
-  checkPhase = ''
-    cd tests; ${python.interpreter} run.py --ignore py35 -k 'not test_defaults and not test_anchors_ignored'
-  '';
-  propagatedBuildInputs = [
-    docutils
-    jinja2
-    pygments
-    alabaster
-    Babel
-    setuptools
-    snowballstemmer
-    six
-    sphinxcontrib-websupport
-    sqlalchemy
-    whoosh
-    imagesize
-    requests
-  ] ++ lib.optional (pythonOlder "3.5") typing;
-
-  # Lots of tests. Needs network as well at some point.
-  doCheck = false;
-
-  patches = [
-    # Since pygments 2.5, PythonLexer refers to python3. If we want to use
-    # python2, we need to explicitly specify Python2Lexer.
-    # Not upstreamed since there doesn't seem to be any upstream maintenance
-    # branch for 1.8 (and this patch doesn't make any sense for 2.x).
-    ./python2-lexer.patch
-  ];
-  # https://github.com/NixOS/nixpkgs/issues/22501
-  # Do not run `python sphinx-build arguments` but `sphinx-build arguments`.
-  postPatch = ''
-    substituteInPlace sphinx/make_mode.py --replace "sys.executable, " ""
-  '';
-
-  meta = {
-    description = "A tool that makes it easy to create intelligent and beautiful documentation for Python projects";
-    homepage = "http://sphinx.pocoo.org/";
-    license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ ];
-  };
-}
diff --git a/pkgs/development/python-modules/sphinx/default.nix b/pkgs/development/python-modules/sphinx/default.nix
index 75693f3657e43..19961cc2ec182 100644
--- a/pkgs/development/python-modules/sphinx/default.nix
+++ b/pkgs/development/python-modules/sphinx/default.nix
@@ -8,12 +8,13 @@
 , alabaster
 , docutils
 , imagesize
+, importlib-metadata
 , jinja2
 , packaging
 , pygments
 , requests
-, setuptools
 , snowballstemmer
+, sphinxcontrib-apidoc
 , sphinxcontrib-applehelp
 , sphinxcontrib-devhelp
 , sphinxcontrib-htmlhelp
@@ -29,14 +30,14 @@
 
 buildPythonPackage rec {
   pname = "sphinx";
-  version = "4.3.1";
+  version = "4.4.0";
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "sphinx-doc";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-8Yj6cPZFG8ycbbZtMR+fsIAOX0brxroi6nYjP+WhnxA=";
+    sha256 = "sha256-Q4CqPO08AfR+CDB02al65A+FHRFUDUfFTba0u8YQx+8=";
     extraPostFetch = ''
       cd $out
       mv tests/roots/test-images/testimäge.png \
@@ -54,7 +55,6 @@ buildPythonPackage rec {
     packaging
     pygments
     requests
-    setuptools
     snowballstemmer
     sphinxcontrib-applehelp
     sphinxcontrib-devhelp
@@ -64,6 +64,11 @@ buildPythonPackage rec {
     sphinxcontrib-serializinghtml
     # extra[docs]
     sphinxcontrib-websupport
+
+    # extra plugins which are otherwise not found by sphinx-build
+    sphinxcontrib-apidoc
+  ] ++ lib.optionals (pythonOlder "3.10") [
+    importlib-metadata
   ];
 
   checkInputs = [
@@ -114,6 +119,6 @@ buildPythonPackage rec {
     '';
     homepage = "https://www.sphinx-doc.org";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = teams.sphinx.members;
   };
 }
diff --git a/pkgs/development/python-modules/sphinx/python2-lexer.patch b/pkgs/development/python-modules/sphinx/python2-lexer.patch
deleted file mode 100644
index cf4a243315a23..0000000000000
--- a/pkgs/development/python-modules/sphinx/python2-lexer.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/sphinx/highlighting.py b/sphinx/highlighting.py
-index ac2bd1b06..63ca52de2 100644
---- a/sphinx/highlighting.py
-+++ b/sphinx/highlighting.py
-@@ -16,7 +16,7 @@ from pygments.filters import ErrorToken
- from pygments.formatters import HtmlFormatter, LatexFormatter
- from pygments.lexer import Lexer  # NOQA
- from pygments.lexers import get_lexer_by_name, guess_lexer
--from pygments.lexers import PythonLexer, Python3Lexer, PythonConsoleLexer, \
-+from pygments.lexers import Python2Lexer, Python3Lexer, PythonConsoleLexer, \
-     CLexer, TextLexer, RstLexer
- from pygments.styles import get_style_by_name
- from pygments.util import ClassNotFound
-@@ -40,7 +40,7 @@ logger = logging.getLogger(__name__)
- 
- lexers = dict(
-     none = TextLexer(stripnl=False),
--    python = PythonLexer(stripnl=False),
-+    python = Python2Lexer(stripnl=False),
-     python3 = Python3Lexer(stripnl=False),
-     pycon = PythonConsoleLexer(stripnl=False),
-     pycon3 = PythonConsoleLexer(python3=True, stripnl=False),
diff --git a/pkgs/development/python-modules/sphinxcontrib-apidoc/default.nix b/pkgs/development/python-modules/sphinxcontrib-apidoc/default.nix
new file mode 100644
index 0000000000000..c7bdb26b0008e
--- /dev/null
+++ b/pkgs/development/python-modules/sphinxcontrib-apidoc/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pbr
+}:
+
+buildPythonPackage rec {
+  pname = "sphinxcontrib-apidoc";
+  version = "0.3.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-cpv1ks97fdV8TAV5T3MtwCYScnXXhcKlSUUh/d53P7k=";
+  };
+
+  postPatch = ''
+    # break infite recursion, remove pytest 4 requirement
+    rm test-requirements.txt requirements.txt
+  '';
+
+  propagatedBuildInputs = [
+    pbr
+  ];
+
+  # Check is disabled due to circular dependency of sphinx
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Sphinx extension for running sphinx-apidoc on each build";
+    homepage = "https://github.com/sphinx-contrib/apidoc";
+    license = licenses.bsd2;
+    maintainers = teams.openstack.members;
+  };
+}
diff --git a/pkgs/development/python-modules/sphinxcontrib-applehelp/default.nix b/pkgs/development/python-modules/sphinxcontrib-applehelp/default.nix
index 9c3c16657f291..ef7a50382c6e2 100644
--- a/pkgs/development/python-modules/sphinxcontrib-applehelp/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-applehelp/default.nix
@@ -14,14 +14,13 @@ buildPythonPackage rec {
     sha256 = "a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58";
   };
 
-
   # Check is disabled due to circular dependency of sphinx
   doCheck = false;
 
   meta = with lib; {
     description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books";
-    homepage = "http://sphinx-doc.org/";
+    homepage = "https://github.com/sphinx-doc/sphinxcontrib-applehelp";
     license = licenses.bsd0;
+    maintainers = teams.sphinx.members;
   };
-
 }
diff --git a/pkgs/development/python-modules/sphinxcontrib-devhelp/default.nix b/pkgs/development/python-modules/sphinxcontrib-devhelp/default.nix
index 1f33c06b984ed..293f4c856ef53 100644
--- a/pkgs/development/python-modules/sphinxcontrib-devhelp/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-devhelp/default.nix
@@ -12,14 +12,13 @@ buildPythonPackage rec {
     sha256 = "ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4";
   };
 
-
   # Check is disabled due to circular dependency of sphinx
   doCheck = false;
 
   meta = with lib; {
     description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document.";
-    homepage = "http://sphinx-doc.org/";
+    homepage = "https://github.com/sphinx-doc/sphinxcontrib-devhelp";
     license = licenses.bsd0;
+    maintainers = teams.sphinx.members;
   };
-
 }
diff --git a/pkgs/development/python-modules/sphinxcontrib-htmlhelp/default.nix b/pkgs/development/python-modules/sphinxcontrib-htmlhelp/default.nix
index 4efdb2633f28b..901132176ed9d 100644
--- a/pkgs/development/python-modules/sphinxcontrib-htmlhelp/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-htmlhelp/default.nix
@@ -14,14 +14,13 @@ buildPythonPackage rec {
     sha256 = "f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2";
   };
 
-
   # Check is disabled due to circular dependency of sphinx
   doCheck = false;
 
   meta = with lib; {
-    description = "sphinxcontrib-htmlhelp is a sphinx extension which ...";
-    homepage = "http://sphinx-doc.org/";
+    description = "Sphinx extension which renders HTML help files";
+    homepage = "https://github.com/sphinx-doc/sphinxcontrib-htmlhelp";
     license = licenses.bsd0;
+    maintainers = teams.sphinx.members;
   };
-
 }
diff --git a/pkgs/development/python-modules/sphinxcontrib-jsmath/default.nix b/pkgs/development/python-modules/sphinxcontrib-jsmath/default.nix
index cd67732605bbf..da630c6ee96dd 100644
--- a/pkgs/development/python-modules/sphinxcontrib-jsmath/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-jsmath/default.nix
@@ -14,14 +14,13 @@ buildPythonPackage rec {
     sha256 = "a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8";
   };
 
-
   # Check is disabled due to circular dependency of sphinx
   doCheck = false;
 
   meta = with lib; {
     description = "sphinxcontrib-jsmath is a sphinx extension which renders display math in HTML via JavaScript.";
-    homepage = "http://sphinx-doc.org/";
+    homepage = "https://github.com/sphinx-doc/sphinxcontrib-jsmath";
     license = licenses.bsd0;
+    maintainers = teams.sphinx.members;
   };
-
 }
diff --git a/pkgs/development/python-modules/sphinxcontrib-programoutput/default.nix b/pkgs/development/python-modules/sphinxcontrib-programoutput/default.nix
new file mode 100644
index 0000000000000..676f72c3f14bd
--- /dev/null
+++ b/pkgs/development/python-modules/sphinxcontrib-programoutput/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, sphinx
+, sphinxcontrib-serializinghtml
+}:
+
+buildPythonPackage rec {
+  pname = "sphinxcontrib-programoutput";
+  version = "0.17";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-MA7puMrug1XSXMdLTRx+/RLmCNKtFl4xQdMeb7wVK38=";
+  };
+
+  buildInputs = [
+    sphinx
+  ];
+
+  # fails to import sphinxcontrib.serializinghtml
+  doCheck = false;
+
+  pythonImportsCheck = [ "sphinxcontrib.programoutput" ];
+
+  meta = with lib; {
+    description = "Sphinx extension to include program output";
+    homepage = "https://github.com/NextThought/sphinxcontrib-programoutput";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/sphinxcontrib-qthelp/default.nix b/pkgs/development/python-modules/sphinxcontrib-qthelp/default.nix
index 9d16ede62a202..4364fcb99dc6f 100644
--- a/pkgs/development/python-modules/sphinxcontrib-qthelp/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-qthelp/default.nix
@@ -14,14 +14,13 @@ buildPythonPackage rec {
     sha256 = "4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72";
   };
 
-
   # Check is disabled due to circular dependency of sphinx
   doCheck = false;
 
   meta = with lib; {
     description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document.";
-    homepage = "http://sphinx-doc.org/";
+    homepage = "https://github.com/sphinx-doc/sphinxcontrib-qthelp";
     license = licenses.bsd0;
+    maintainers = teams.sphinx.members;
   };
-
 }
diff --git a/pkgs/development/python-modules/sphinxcontrib-serializinghtml/default.nix b/pkgs/development/python-modules/sphinxcontrib-serializinghtml/default.nix
index a238c0191a7b6..85ed3cdc596db 100644
--- a/pkgs/development/python-modules/sphinxcontrib-serializinghtml/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-serializinghtml/default.nix
@@ -14,14 +14,13 @@ buildPythonPackage rec {
     sha256 = "aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952";
   };
 
-
   # Check is disabled due to circular dependency of sphinx
   doCheck = false;
 
   meta = with lib; {
     description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle).";
-    homepage = "http://sphinx-doc.org/";
+    homepage = "https://github.com/sphinx-doc/sphinxcontrib-serializinghtml";
     license = licenses.bsd0;
+    maintainers = teams.sphinx.members;
   };
-
 }
diff --git a/pkgs/development/python-modules/sphinxcontrib-websupport/1_1.nix b/pkgs/development/python-modules/sphinxcontrib-websupport/1_1.nix
deleted file mode 100644
index b1bdf6a0dff62..0000000000000
--- a/pkgs/development/python-modules/sphinxcontrib-websupport/1_1.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, six
-}:
-
-buildPythonPackage rec {
-  pname = "sphinxcontrib-websupport";
-  version = "1.1.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1501befb0fdf1d1c29a800fdbf4ef5dc5369377300ddbdd16d2cd40e54c6eefc";
-  };
-
-  propagatedBuildInputs = [ six ];
-
-  doCheck = false;
-
-  meta = {
-    description = "Sphinx API for Web Apps";
-    homepage = "http://sphinx-doc.org/";
-    license = lib.licenses.bsd2;
-  };
-}
diff --git a/pkgs/development/python-modules/spyder-kernels/default.nix b/pkgs/development/python-modules/spyder-kernels/default.nix
index 4c43ce2f1617a..4ddacc9119036 100644
--- a/pkgs/development/python-modules/spyder-kernels/default.nix
+++ b/pkgs/development/python-modules/spyder-kernels/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "spyder-kernels";
-  version = "2.2.0";
+  version = "2.2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6b19ea224f183dbff8ff0031bee35ae6b5b3a6eef4aa84cfab04e3bc3e304b91";
+    sha256 = "574ee1bd03f7236b9f9dacae34936a0625cd67ccfe3df11fec69f26889a0b866";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/spyder/default.nix b/pkgs/development/python-modules/spyder/default.nix
index 38558f004984f..419ac6bbb39c7 100644
--- a/pkgs/development/python-modules/spyder/default.nix
+++ b/pkgs/development/python-modules/spyder/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "spyder";
-  version = "5.2.0";
+  version = "5.2.1";
 
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "cd04acc88426acee9c4ce6bb91f50c13fc161a437e68bca701243b3415ce9d08";
+    sha256 = "b318a70a75acd200018a547d2ff2d2f55e7507054469d0c77ec6f967ac3c2d28";
   };
 
   nativeBuildInputs = [ pyqtwebengine.wrapQtAppsHook ];
diff --git a/pkgs/development/python-modules/spyse-python/default.nix b/pkgs/development/python-modules/spyse-python/default.nix
index 65e382ce30d14..bd73edc61e70c 100644
--- a/pkgs/development/python-modules/spyse-python/default.nix
+++ b/pkgs/development/python-modules/spyse-python/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , dataclasses-json
 , fetchFromGitHub
+, fetchpatch
 , limiter
 , pythonOlder
 , requests
@@ -11,6 +12,7 @@
 buildPythonPackage rec {
   pname = "spyse-python";
   version = "2.2.3";
+  format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
@@ -31,10 +33,21 @@ buildPythonPackage rec {
   # Tests requires an API token
   doCheck = false;
 
+  patches = [
+    # Update limiter import and rate limit, https://github.com/spyse-com/spyse-python/pull/11
+    (fetchpatch {
+      name = "support-later-limiter.patch";
+      url = "https://github.com/spyse-com/spyse-python/commit/ff68164c514dfb28ab77d8690b3a5153962dbe8c.patch";
+      sha256 = "sha256-PoWPJCK/Scsh4P7lr97u4JpVHXNlY0C9rJgY4TDYmv0=";
+    })
+  ];
+
   postPatch = ''
     substituteInPlace setup.py \
       --replace "'dataclasses~=0.6'," "" \
-      --replace "responses~=0.13.3" "responses>=0.13.3"
+      --replace "responses~=0.13.3" "responses>=0.13.3" \
+      --replace "limiter~=0.1.2" "limiter>=0.1.2" \
+      --replace "requests~=2.26.0" "requests>=2.26.0"
   '';
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/sqlalchemy-continuum/default.nix b/pkgs/development/python-modules/sqlalchemy-continuum/default.nix
index 944a2cf08e096..da64d44a43fe6 100644
--- a/pkgs/development/python-modules/sqlalchemy-continuum/default.nix
+++ b/pkgs/development/python-modules/sqlalchemy-continuum/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "SQLAlchemy-Continuum";
-  version = "1.3.11";
+  version = "1.3.12";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1c9yd9s98crqgs39rc2ld2r0nchgyjrfbjdlqb99y4hhc6lv04xw";
+    sha256 = "rlHl59MAQhsicMtZQT9rv1iQrDyVYJlawtyhvFaAM7o=";
   };
 
   propagatedBuildInputs = [
@@ -41,7 +41,5 @@ buildPythonPackage rec {
     homepage = "https://github.com/kvesteri/sqlalchemy-continuum/";
     description = "Versioning and auditing extension for SQLAlchemy";
     license = licenses.bsd3;
-    # https://github.com/kvesteri/sqlalchemy-continuum/issues/255
-    broken = lib.versionAtLeast sqlalchemy.version "1.4";
   };
 }
diff --git a/pkgs/development/python-modules/sqlalchemy-migrate/default.nix b/pkgs/development/python-modules/sqlalchemy-migrate/default.nix
index bb757ab45b0ad..bfae1d7b3b9d9 100644
--- a/pkgs/development/python-modules/sqlalchemy-migrate/default.nix
+++ b/pkgs/development/python-modules/sqlalchemy-migrate/default.nix
@@ -1,8 +1,8 @@
 { lib, stdenv, buildPythonPackage, fetchPypi, fetchpatch, python
-, unittest2, scripttest, pytz, mock
-, testtools, pbr, tempita, decorator, sqlalchemy
+, scripttest, pytz, pbr, tempita, decorator, sqlalchemy
 , six, sqlparse, testrepository
 }:
+
 buildPythonPackage rec {
   pname = "sqlalchemy-migrate";
   version = "0.13.0";
@@ -13,21 +13,27 @@ buildPythonPackage rec {
   };
 
   # See: https://review.openstack.org/#/c/608382/
-  patches = [ (fetchpatch {
-    url = "https://github.com/openstack/sqlalchemy-migrate/pull/18.patch";
-    sha256 = "1qyfq2m7w7xqf0r9bc2x42qcra4r9k9l9g1jy5j0fvlb6bvvjj07";
-  }) ];
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/openstack/sqlalchemy-migrate/pull/18.patch";
+      sha256 = "1qyfq2m7w7xqf0r9bc2x42qcra4r9k9l9g1jy5j0fvlb6bvvjj07";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace test-requirements.txt \
+      --replace "ibm_db_sa>=0.3.0;python_version<'3.0'" "" \
+      --replace "ibm-db-sa-py3;python_version>='3.0'" "" \
+      --replace "tempest-lib>=0.1.0" "" \
+      --replace "testtools>=0.9.34,<0.9.36" "" \
+      --replace "pylint" ""
+  '';
 
-  checkInputs = [ unittest2 scripttest pytz mock testtools testrepository ];
+  checkInputs = [ scripttest pytz testrepository ];
   propagatedBuildInputs = [ pbr tempita decorator sqlalchemy six sqlparse ];
 
   doCheck = !stdenv.isDarwin;
 
-  prePatch = ''
-    sed -i -e /tempest-lib/d \
-           -e /testtools/d \
-      test-requirements.txt
-  '';
   checkPhase = ''
     export PATH=$PATH:$out/bin
     echo sqlite:///__tmp__ > test_db.cfg
@@ -41,9 +47,9 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    homepage = "https://github.com/openstack/sqlalchemy-migrate";
+    homepage = "https://opendev.org/x/sqlalchemy-migrate";
     description = "Schema migration tools for SQLAlchemy";
     license = licenses.asl20;
-    maintainers = with maintainers; [ makefu ];
+    maintainers = teams.openstack.members ++ (with maintainers; [ makefu ]);
   };
 }
diff --git a/pkgs/development/python-modules/sqlalchemy-utils/default.nix b/pkgs/development/python-modules/sqlalchemy-utils/default.nix
index dc983e20ce236..05ef00dae0ef9 100644
--- a/pkgs/development/python-modules/sqlalchemy-utils/default.nix
+++ b/pkgs/development/python-modules/sqlalchemy-utils/default.nix
@@ -5,12 +5,12 @@
 
 buildPythonPackage rec {
   pname = "sqlalchemy-utils";
-  version = "0.37.7";
+  version = "0.38.2";
 
   src = fetchPypi {
     inherit version;
     pname = "SQLAlchemy-Utils";
-    sha256 = "sha256-cW2dlZIljbllGlEdA+ayVTJCwqRAhV7j99WBK7tV2es=";
+    sha256 = "9e01d6d3fb52d3926fcd4ea4a13f3540701b751aced0316bff78264402c2ceb4";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/sqlalchemy/default.nix b/pkgs/development/python-modules/sqlalchemy/default.nix
index a8c85fdffd64b..1d6406c5db13c 100644
--- a/pkgs/development/python-modules/sqlalchemy/default.nix
+++ b/pkgs/development/python-modules/sqlalchemy/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "SQLAlchemy";
-  version = "1.4.27";
+  version = "1.4.31";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-12g1na6zqGZE84VMZlnkSWo+a7orRlHsyHznrUFbMgw=";
+    sha256 = "sha256-WCtZ0eV4CkR6raIrRh5QtASp3AV2jaHYc2itgZBGhBg=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/sqlite-utils/default.nix b/pkgs/development/python-modules/sqlite-utils/default.nix
index ee1181e9c93c6..07a7fa04485f8 100644
--- a/pkgs/development/python-modules/sqlite-utils/default.nix
+++ b/pkgs/development/python-modules/sqlite-utils/default.nix
@@ -5,7 +5,7 @@
 , pythonOlder
 , click
 , click-default-group
-, dateutils
+, python-dateutil
 , sqlite-fts4
 , tabulate
 , pytestCheckHook
@@ -14,32 +14,18 @@
 
 buildPythonPackage rec {
   pname = "sqlite-utils";
-  version = "3.19";
+  version = "3.23";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "509099fce5f25faada6e76b6fb90e8ef5ba0f1715177933a816718be0c8e7244";
+    sha256 = "sha256-BNlOP/gWDERh4Rzth5zjeghHr7ozyAGeRJxoeE6baWY=";
   };
 
-  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"' ""
-  '';
-
   propagatedBuildInputs = [
     click
     click-default-group
-    dateutils
+    python-dateutil
     sqlite-fts4
     tabulate
   ];
diff --git a/pkgs/development/python-modules/sqlite3dbm/default.nix b/pkgs/development/python-modules/sqlite3dbm/default.nix
deleted file mode 100644
index 3057f89adf4e2..0000000000000
--- a/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/pkgs/development/python-modules/sqlitedict/default.nix b/pkgs/development/python-modules/sqlitedict/default.nix
index 1c28d6a0976d0..178617e18dea8 100644
--- a/pkgs/development/python-modules/sqlitedict/default.nix
+++ b/pkgs/development/python-modules/sqlitedict/default.nix
@@ -1,22 +1,28 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pytest }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
   pname = "sqlitedict";
-  version = "1.6.0";
+  version = "1.7.0";
 
   src = fetchFromGitHub {
     owner = "RaRe-Technologies";
     repo = "sqlitedict";
     rev = version;
-    sha256 = "1yq94lgpny9qcfbsl39npjvrsjfggi3lj2kpzcsxcfdfgxag6m2m";
+    sha256 = "08fr81rz1fz35d35kravg7vl234aqagr9wqb09x6wi9lx9zkkh28";
   };
 
-  checkInputs = [ pytest ];
-
-  checkPhase = ''
-    pytest tests
+  preCheck = ''
+    mkdir tests/db
   '';
 
+  checkInputs = [
+    pytestCheckHook
+  ];
+
   meta = with lib; {
     description = "Persistent, thread-safe dict";
     homepage = "https://github.com/RaRe-Technologies/sqlitedict";
diff --git a/pkgs/development/python-modules/sqlmap/default.nix b/pkgs/development/python-modules/sqlmap/default.nix
index 429ebc9e0d616..18dac082f06ae 100644
--- a/pkgs/development/python-modules/sqlmap/default.nix
+++ b/pkgs/development/python-modules/sqlmap/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "sqlmap";
-  version = "1.5.12";
+  version = "1.6.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-9FplToUd4CIkYZ88+Lat+joniZzRZDOfifH5z4sH8RM=";
+    sha256 = "sha256-X8FpGnrF0aHuf3yIzRrxoNAu77UASTL36CQpcuxESV8=";
   };
 
   postPatch = ''
@@ -30,7 +30,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Automatic SQL injection and database takeover tool";
-    homepage = "http://sqlmap.org";
+    homepage = "https://sqlmap.org";
+    changelog = "https://github.com/sqlmapproject/sqlmap/releases/tag/${version}";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ bennofs ];
   };
diff --git a/pkgs/development/python-modules/sqlobject/default.nix b/pkgs/development/python-modules/sqlobject/default.nix
index c645a850f4972..817ba2dfc7061 100644
--- a/pkgs/development/python-modules/sqlobject/default.nix
+++ b/pkgs/development/python-modules/sqlobject/default.nix
@@ -9,17 +9,35 @@
 }:
 
 buildPythonPackage rec {
-  pname = "SQLObject";
+  pname = "sqlobject";
   version = "3.9.1";
+  format = "setuptools";
 
   src = fetchPypi {
-    inherit pname version;
+    pname = "SQLObject";
+    inherit version;
     sha256 = "45064184decf7f42d386704e5f47a70dee517d3e449b610506e174025f84d921";
   };
 
-  propagatedBuildInputs = [ FormEncode pastedeploy paste pydispatcher ];
+  propagatedBuildInputs = [
+    FormEncode
+    paste
+    pastedeploy
+    pydispatcher
+  ];
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # https://github.com/sqlobject/sqlobject/issues/179
+    "test_fail"
+  ];
+
+  pythonImportsCheck = [
+    "sqlobject"
+  ];
 
   meta = with lib; {
     description = "Object Relational Manager for providing an object interface to your database";
diff --git a/pkgs/development/python-modules/squaremap/default.nix b/pkgs/development/python-modules/squaremap/default.nix
deleted file mode 100644
index bab9e2f99f285..0000000000000
--- a/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/pkgs/development/python-modules/srpenergy/default.nix b/pkgs/development/python-modules/srpenergy/default.nix
index c5d20436a09cc..d0ac3602445db 100644
--- a/pkgs/development/python-modules/srpenergy/default.nix
+++ b/pkgs/development/python-modules/srpenergy/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "srpenergy";
-  version = "1.3.5";
+  version = "1.3.6";
 
   disabled = pythonOlder "3.6";
 
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "lamoreauxlab";
     repo = "srpenergy-api-client-python";
     rev = version;
-    sha256 = "sha256-s90+gzjcG27pUcMGpzf2rf+mR8/fmpvwBXGfvv3rNGI=";
+    hash = "sha256-aZnqGtfklWgigac2gdkQv29Qy5HC34zGGY2iWr2cOMo=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/srsly/default.nix b/pkgs/development/python-modules/srsly/default.nix
index 86550f998734b..18771886b0faa 100644
--- a/pkgs/development/python-modules/srsly/default.nix
+++ b/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/pkgs/development/python-modules/sshtunnel/default.nix b/pkgs/development/python-modules/sshtunnel/default.nix
index 90e4962d3e8f6..3c53864ec332b 100644
--- a/pkgs/development/python-modules/sshtunnel/default.nix
+++ b/pkgs/development/python-modules/sshtunnel/default.nix
@@ -1,6 +1,6 @@
 { lib, buildPythonPackage, fetchPypi
 , paramiko
-, pytest
+, pytestCheckHook
 , mock
 }:
 
@@ -15,12 +15,14 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ paramiko ];
 
-  checkInputs = [ pytest mock ];
+  checkInputs = [ pytestCheckHook mock ];
 
   # disable impure tests
-  checkPhase = ''
-    pytest -k 'not connect_via_proxy and not read_ssh_config'
-  '';
+  disabledTests = [
+    "test_get_keys"
+    "connect_via_proxy"
+    "read_ssh_config"
+  ];
 
   meta = with lib; {
     description = "Pure python SSH tunnels";
diff --git a/pkgs/development/python-modules/sslyze/default.nix b/pkgs/development/python-modules/sslyze/default.nix
index 587572646abcc..f76ba96a5b8f3 100644
--- a/pkgs/development/python-modules/sslyze/default.nix
+++ b/pkgs/development/python-modules/sslyze/default.nix
@@ -16,14 +16,14 @@
 
 buildPythonPackage rec {
   pname = "sslyze";
-  version = "5.0.0";
+  version = "5.0.2";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "nabla-c0d3";
     repo = pname;
     rev = version;
-    hash = "sha256-7kUriEMHcGCXKs42KVWxXvM+JEEWf/8tnuoGujHbqHY=";
+    hash = "sha256-8xtnE5oFxH3wo2Smt65/xGDHxivexN6ggUpyUg42Cjk=";
   };
 
   patchPhase = ''
diff --git a/pkgs/development/python-modules/starlette/default.nix b/pkgs/development/python-modules/starlette/default.nix
index a9fbc74f44799..1084a50be7707 100644
--- a/pkgs/development/python-modules/starlette/default.nix
+++ b/pkgs/development/python-modules/starlette/default.nix
@@ -5,7 +5,6 @@
 , aiofiles
 , anyio
 , contextlib2
-, graphene
 , itsdangerous
 , jinja2
 , python-multipart
@@ -13,7 +12,6 @@
 , requests
 , aiosqlite
 , databases
-, pytest-asyncio
 , pytestCheckHook
 , pythonOlder
 , trio
@@ -23,14 +21,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 = ''
@@ -41,7 +41,6 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     aiofiles
     anyio
-    graphene
     itsdangerous
     jinja2
     python-multipart
@@ -58,25 +57,20 @@ buildPythonPackage rec {
   checkInputs = [
     aiosqlite
     databases
-    pytest-asyncio
     pytestCheckHook
     trio
     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/pkgs/development/python-modules/staticjinja/default.nix b/pkgs/development/python-modules/staticjinja/default.nix
index d0c4d39f11656..ac3c173c09a5b 100644
--- a/pkgs/development/python-modules/staticjinja/default.nix
+++ b/pkgs/development/python-modules/staticjinja/default.nix
@@ -12,11 +12,12 @@
 , testVersion
 , tomlkit
 , staticjinja
+, callPackage
 }:
 
 buildPythonPackage rec {
   pname = "staticjinja";
-  version = "4.1.1";
+  version = "4.1.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -26,7 +27,7 @@ buildPythonPackage rec {
     owner = "staticjinja";
     repo = pname;
     rev = version;
-    sha256 = "sha256-Bpgff3VaTylnYpkWoaWEiRWu4sYSP6dLbHDOjAhj7BM=";
+    sha256 = "0qqyadhqsn66b7qrpfj08qc899pjwfa2byqqzh73xq1n22i4cy30";
   };
 
   nativeBuildInputs = [
@@ -51,8 +52,9 @@ buildPythonPackage rec {
     export PATH="$PATH:$out/bin";
   '';
 
-  passthru.tests.version = testVersion {
-    package = staticjinja;
+  passthru.tests = {
+    version = testVersion { package = staticjinja; };
+    minimal-template = callPackage ./test-minimal-template {};
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/staticjinja/test-minimal-template/default.nix b/pkgs/development/python-modules/staticjinja/test-minimal-template/default.nix
new file mode 100644
index 0000000000000..e51a619c9e900
--- /dev/null
+++ b/pkgs/development/python-modules/staticjinja/test-minimal-template/default.nix
@@ -0,0 +1,11 @@
+{ stdenv, staticjinja }:
+
+stdenv.mkDerivation {
+  name = "staticjinja-test-minimal-template";
+  meta.timeout = 30;
+  buildCommand = ''
+    ${staticjinja}/bin/staticjinja build --srcpath ${./templates}
+    grep 'Hello World!' index
+    touch $out
+  '';
+}
diff --git a/pkgs/development/python-modules/staticjinja/test-minimal-template/templates/include b/pkgs/development/python-modules/staticjinja/test-minimal-template/templates/include
new file mode 100644
index 0000000000000..216e97ce08229
--- /dev/null
+++ b/pkgs/development/python-modules/staticjinja/test-minimal-template/templates/include
@@ -0,0 +1 @@
+World
diff --git a/pkgs/development/python-modules/staticjinja/test-minimal-template/templates/index b/pkgs/development/python-modules/staticjinja/test-minimal-template/templates/index
new file mode 100644
index 0000000000000..03e1043180d85
--- /dev/null
+++ b/pkgs/development/python-modules/staticjinja/test-minimal-template/templates/index
@@ -0,0 +1 @@
+Hello {% include './include' %}!
diff --git a/pkgs/development/python-modules/statmake/default.nix b/pkgs/development/python-modules/statmake/default.nix
new file mode 100644
index 0000000000000..7de42d5bc9454
--- /dev/null
+++ b/pkgs/development/python-modules/statmake/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, attrs
+, cattrs
+, fonttools
+, fs
+, pytestCheckHook
+, ufo2ft
+, ufoLib2
+}:
+
+buildPythonPackage rec {
+  pname = "statmake";
+  version = "0.4.1";
+
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "daltonmaag";
+    repo = "statmake";
+    rev = "v${version}";
+    sha256 = "OXhoQAD4LEh80iRUZE2z8sCtWJDv/bSo0bwHbOOPVE0=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    attrs
+    cattrs
+    fonttools
+    # required by fonttools[ufo]
+    fs
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    ufo2ft
+    ufoLib2
+  ];
+
+  postPatch = ''
+    # https://github.com/daltonmaag/statmake/pull/41
+    substituteInPlace pyproject.toml \
+      --replace 'requires = ["poetry>=1.0.0"]' 'requires = ["poetry-core"]' \
+      --replace 'build-backend = "poetry.masonry.api"' 'build-backend = "poetry.core.masonry.api"'
+  '';
+
+  meta = with lib; {
+    description = "Applies STAT information from a Stylespace to a variable font";
+    homepage = "https://github.com/daltonmaag/statmake";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jtojnar ];
+  };
+}
diff --git a/pkgs/development/python-modules/statsmodels/default.nix b/pkgs/development/python-modules/statsmodels/default.nix
index 173458a634b6d..0f01870c41b4f 100644
--- a/pkgs/development/python-modules/statsmodels/default.nix
+++ b/pkgs/development/python-modules/statsmodels/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "statsmodels";
-  version = "0.13.1";
+  version = "0.13.2";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "006ec8d896d238873af8178d5475203844f2c391194ed8d42ddac37f5ff77a69";
+    sha256 = "sha256-d9wpLJk5wDakdvF3D50Il2sFQ32qIpko2nMjEUfN59Q=";
   };
 
   nativeBuildInputs = [ cython ];
diff --git a/pkgs/development/python-modules/stompclient/default.nix b/pkgs/development/python-modules/stompclient/default.nix
deleted file mode 100644
index 149be55da5807..0000000000000
--- a/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/pkgs/development/python-modules/strenum/default.nix b/pkgs/development/python-modules/strenum/default.nix
new file mode 100644
index 0000000000000..f287b2623a6b1
--- /dev/null
+++ b/pkgs/development/python-modules/strenum/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "strenum";
+  version = "0.4.7";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "irgeek";
+    repo = "StrEnum";
+    rev = "v${version}";
+    hash = "sha256-ktsPROIv/BbPinZfrBknI4c/WwRYGhWgmw209Hfg8EQ=";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace '"pytest-runner"' ""
+    substituteInPlace pytest.ini \
+      --replace " --cov=strenum --cov-report term-missing --black --pylint" ""
+  '';
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "strenum"
+  ];
+
+  meta = with lib; {
+    description = "MOdule for enum that inherits from str";
+    homepage = "https://github.com/irgeek/StrEnum";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/strictyaml/default.nix b/pkgs/development/python-modules/strictyaml/default.nix
index 1d74a62babd43..66ed134772d70 100644
--- a/pkgs/development/python-modules/strictyaml/default.nix
+++ b/pkgs/development/python-modules/strictyaml/default.nix
@@ -7,13 +7,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.6.0";
+  version = "1.6.1";
   pname = "strictyaml";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "73fa9769214a310486d7916453a09bd38b07d28a9dcbdf27719183c1d7d949f6";
+    sha256 = "688be16ee5d1a2f94aa4abdc6d881e8e254d173d724ac88725955fe66bdb63d4";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/stringtemplate/default.nix b/pkgs/development/python-modules/stringtemplate/default.nix
deleted file mode 100644
index 336a371c07143..0000000000000
--- a/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/pkgs/development/python-modules/stripe/default.nix b/pkgs/development/python-modules/stripe/default.nix
index 4acad30ea322b..5b1ff139ff9cb 100644
--- a/pkgs/development/python-modules/stripe/default.nix
+++ b/pkgs/development/python-modules/stripe/default.nix
@@ -1,20 +1,32 @@
-{ lib, buildPythonPackage, fetchPypi, requests }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, requests
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "stripe";
-  version = "2.64.0";
+  version = "2.66.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2f4b2175046104e4fcd8a2689a68bb9828a857814126d2ed13772cf2554fb93e";
+    hash = "sha256-d8YDIjD3cUsaG0WQdPCMYNYMIpucO+rDcnGQY+PRQJw=";
   };
 
-  propagatedBuildInputs = [ requests ];
+  propagatedBuildInputs = [
+    requests
+  ];
 
   # Tests require network connectivity and there's no easy way to disable them
   doCheck = false;
 
-  pythonImportsCheck = [ "stripe" ];
+  pythonImportsCheck = [
+    "stripe"
+  ];
 
   meta = with lib; {
     description = "Stripe Python bindings";
diff --git a/pkgs/development/python-modules/striprtf/default.nix b/pkgs/development/python-modules/striprtf/default.nix
index 3f941d59dac7f..0e884a09b4404 100644
--- a/pkgs/development/python-modules/striprtf/default.nix
+++ b/pkgs/development/python-modules/striprtf/default.nix
@@ -5,13 +5,18 @@
 
 buildPythonPackage rec {
   pname = "striprtf";
-  version = "0.0.17";
+  version = "0.0.19";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e122b5d334cda9b0edb3eeb8910f01d0ffb02eaca054facd75b17b98fcf646f5";
+    sha256 = "b7f15e11306e466dbe91665409233a06d9fdb4ee156489a3d879579891b04c25";
   };
 
+  pythonImportsCheck = [
+    "striprtf"
+  ];
+
   meta = with lib; {
     homepage = "https://github.com/joshy/striprtf";
     description = "A simple library to convert rtf to text";
diff --git a/pkgs/development/python-modules/structlog/default.nix b/pkgs/development/python-modules/structlog/default.nix
index 2e90d3350dbe7..b6eb0c2672ad6 100644
--- a/pkgs/development/python-modules/structlog/default.nix
+++ b/pkgs/development/python-modules/structlog/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "structlog";
-  version = "21.4.0";
+  version = "21.5.0";
   format = "flit";
 
   # sdist is missing conftest.py
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "hynek";
     repo = "structlog";
     rev = version;
-    sha256 = "sha256-uXFSrC1TvQV46uu0sadC3eMq7yk5TnrpQE8m6NSv1Bg=";
+    sha256 = "0bc5lj0732j0hjq89llgrncyzs6k3aaffvg07kr3la44w0hlrb4l";
   };
 
   checkInputs = [ pytestCheckHook pytest-asyncio pretend freezegun simplejson twisted ];
diff --git a/pkgs/development/python-modules/stumpy/default.nix b/pkgs/development/python-modules/stumpy/default.nix
index 00e8306a25d46..68e35a1d0eca7 100644
--- a/pkgs/development/python-modules/stumpy/default.nix
+++ b/pkgs/development/python-modules/stumpy/default.nix
@@ -7,11 +7,7 @@
 , pandas
 , dask
 , distributed
-, coverage
-, flake8
-, black
-, pytest
-, codecov
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
@@ -35,18 +31,9 @@ buildPythonPackage rec {
     pandas
     dask
     distributed
-    coverage
-    flake8
-    black
-    pytest
-    codecov
+    pytestCheckHook
   ];
 
-  # ignore changed numpy operations
-  checkPhase = ''
-    pytest -k 'not allc'
-  '';
-
   meta = with lib; {
     description = "A powerful and scalable library that can be used for a variety of time series data mining tasks";
     homepage = "https://github.com/TDAmeritrade/stumpy";
diff --git a/pkgs/development/python-modules/stups-pierone/default.nix b/pkgs/development/python-modules/stups-pierone/default.nix
index 92cd344edb6dc..4757cd3231868 100644
--- a/pkgs/development/python-modules/stups-pierone/default.nix
+++ b/pkgs/development/python-modules/stups-pierone/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "stups-pierone";
-  version = "1.1.45";
+  version = "1.1.49";
   disabled = !isPy3k;
 
   src = fetchFromGitHub {
     owner = "zalando-stups";
     repo = "pierone-cli";
     rev = version;
-    sha256 = "1ggfizw27wpcagbbk15xpfrhq6b250cx4278b5d7y8s438g128cs";
+    sha256 = "1kb1lpnxbcq821mx75vzapndvxfvsdrplyhsqjq4vdhyqrx2dn3q";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/subarulink/default.nix b/pkgs/development/python-modules/subarulink/default.nix
index 1b6d1033c4566..24678319b04a4 100644
--- a/pkgs/development/python-modules/subarulink/default.nix
+++ b/pkgs/development/python-modules/subarulink/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "subarulink";
-  version = "0.3.16";
+  version = "0.4.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "G-Two";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-7waY5AOONi+u056JRH9KcoBWSB4AlMw4QcMW0uoCARc=";
+    sha256 = "sha256-EI7m2SFa1eAtncMA0g1OmXumzub4UvE6ssGfUGtLO2Q=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/subprocess32/default.nix b/pkgs/development/python-modules/subprocess32/default.nix
deleted file mode 100644
index 3fc4378fc34d9..0000000000000
--- a/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/pkgs/development/python-modules/subunit/default.nix b/pkgs/development/python-modules/subunit/default.nix
index c59626fc85c3f..704a4cb924ac7 100644
--- a/pkgs/development/python-modules/subunit/default.nix
+++ b/pkgs/development/python-modules/subunit/default.nix
@@ -4,6 +4,7 @@
 , cppunit
 , pkg-config
 , subunit
+, pythonOlder
 
 # python dependencies
 , fixtures
@@ -11,6 +12,7 @@
 , pytest
 , testscenarios
 , testtools
+, unittest2
 }:
 
 buildPythonPackage {
@@ -20,7 +22,10 @@ buildPythonPackage {
   buildInputs = [ check cppunit ];
   propagatedBuildInputs = [ testtools ];
 
-  checkInputs = [ testscenarios hypothesis fixtures pytest ];
+  checkInputs = [ testscenarios hypothesis fixtures pytest unittest2 ];
+
+  # requires unittest2, which no longer supported in 3.10
+  doCheck = pythonOlder "3.10";
   # ignore tests which call shell code, or call methods which haven't been implemented
   checkPhase = ''
     pytest python/subunit \
diff --git a/pkgs/development/python-modules/suds/default.nix b/pkgs/development/python-modules/suds/default.nix
deleted file mode 100644
index 1a96df26da1da..0000000000000
--- a/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/pkgs/development/python-modules/suds/suds-0.4-CVE-2013-2217.patch b/pkgs/development/python-modules/suds/suds-0.4-CVE-2013-2217.patch
deleted file mode 100644
index 235fc1f928c06..0000000000000
--- a/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/pkgs/development/python-modules/sumo/default.nix b/pkgs/development/python-modules/sumo/default.nix
index 204bb80e5870a..68f298de10802 100644
--- a/pkgs/development/python-modules/sumo/default.nix
+++ b/pkgs/development/python-modules/sumo/default.nix
@@ -1,5 +1,8 @@
-{ lib, buildPythonPackage, fetchFromGitHub
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
 , pythonOlder
+, cython
 , h5py
 , matplotlib
 , numpy
@@ -15,10 +18,10 @@
 buildPythonPackage rec {
   pname = "sumo";
   version = "2.2.5";
+  format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
-  # No tests in Pypi tarball
   src = fetchFromGitHub {
     owner = "SMTG-UCL";
     repo = "sumo";
@@ -26,6 +29,10 @@ buildPythonPackage rec {
     sha256 = "1vwqyv215yf51j1278cn7l8mpqmy1grm9j7z3hxjlz4w65cff324";
   };
 
+  nativeBuildInputs = [
+    cython
+  ];
+
   propagatedBuildInputs = [
     spglib
     numpy
@@ -38,7 +45,23 @@ buildPythonPackage rec {
     castepxbin
   ];
 
-  checkInputs = [ pytestCheckHook ];
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # slight disagreement between caastepxbin versions
+    "test_castep_phonon_read_bands"
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "castepxbin==0.1.0" "castepxbin>=0.1.0"
+  '';
+
+  pythonImportsCheck = [
+    "sumo"
+  ];
 
   meta = with lib; {
     description = "Toolkit for plotting and analysis of ab initio solid-state calculation data";
diff --git a/pkgs/development/python-modules/sunpy/default.nix b/pkgs/development/python-modules/sunpy/default.nix
index 2bb07b37301ee..4e61f8665ba6a 100644
--- a/pkgs/development/python-modules/sunpy/default.nix
+++ b/pkgs/development/python-modules/sunpy/default.nix
@@ -1,5 +1,5 @@
-{ stdenv
-, lib
+{ lib
+, stdenv
 , buildPythonPackage
 , fetchPypi
 , pythonOlder
@@ -31,45 +31,47 @@
 
 buildPythonPackage rec {
   pname = "sunpy";
-  version = "3.1.2";
+  version = "3.1.3";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5eeb479c3f2424bf46355165249a1caa849872f8bee525349c4dca4d15b271fd";
+    sha256 = "4acb05a05c7e6a2090cd0bb426b34c7e1620be0de2bf90a95a3f48ba15a5fce2";
   };
 
   nativeBuildInputs = [
-    setuptools-scm
     astropy-extension-helpers
+    setuptools-scm
   ];
 
   propagatedBuildInputs = [
-    numpy
-    scipy
-    matplotlib
-    pandas
+    asdf
     astropy
     astropy-helpers
+    beautifulsoup4
+    drms
+    glymur
     h5netcdf
+    matplotlib
+    numpy
+    pandas
     parfive
-    sqlalchemy
+    python-dateutil
     scikitimage
+    scipy
+    sqlalchemy
     towncrier
-    glymur
-    beautifulsoup4
-    drms
-    python-dateutil
-    zeep
     tqdm
-    asdf
+    zeep
   ];
 
   checkInputs = [
     hypothesis
-    pytestCheckHook
     pytest-astropy
     pytest-mock
+    pytestCheckHook
   ];
 
   # darwin has write permission issues
@@ -81,11 +83,20 @@ buildPythonPackage rec {
 
   disabledTests = [
     "rst"
+    "test_sunpy_warnings_logging"
+    "test_main_nonexisting_module"
+    "test_main_stdlib_module"
   ];
 
   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"
+    "sunpy/io/special/asdf/schemas/sunpy.org/sunpy/coordinates/frames/heliographic_carrington-*.yaml"
+    "sunpy/io/special/asdf/schemas/sunpy.org/sunpy/coordinates/frames/geocentricearthequatorial-1.0.0.yaml"
+    "sunpy/io/special/asdf/schemas/sunpy.org/sunpy/coordinates/frames/geocentricsolarecliptic-1.0.0.yaml"
+    "sunpy/io/special/asdf/schemas/sunpy.org/sunpy/coordinates/frames/heliocentricearthecliptic-1.0.0.yaml"
+    "sunpy/io/special/asdf/schemas/sunpy.org/sunpy/coordinates/frames/heliocentricinertial-1.0.0.yaml"
+    "sunpy/io/special/asdf/schemas/sunpy.org/sunpy/map/generic_map-1.0.0.yaml"
     # requires mpl-animators package
     "sunpy/map/tests/test_compositemap.py"
     "sunpy/map/tests/test_mapbase.py"
@@ -100,17 +111,24 @@ buildPythonPackage rec {
     "sunpy/visualization/colormaps/tests/test_cm.py"
     # requires cdflib package
     "sunpy/timeseries/tests/test_timeseries_factory.py"
+    # distutils is deprecated
+    "sunpy/io/setup_package.py"
   ];
 
   pytestFlagsArray = [
-    "--deselect=sunpy/tests/tests/test_self_test.py::test_main_nonexisting_module"
-    "--deselect=sunpy/tests/tests/test_self_test.py::test_main_stdlib_module"
+    "-W"
+    "ignore::DeprecationWarning"
   ];
 
+  # Wants a configuration file
+  # pythonImportsCheck = [
+  #   "sunpy"
+  # ];
+
   meta = with lib; {
-    description = "SunPy: Python for Solar Physics";
+    description = "Python for Solar Physics";
     homepage = "https://sunpy.org";
     license = licenses.bsd2;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/pkgs/development/python-modules/superqt/default.nix b/pkgs/development/python-modules/superqt/default.nix
new file mode 100644
index 0000000000000..9890a7000a9af
--- /dev/null
+++ b/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/pkgs/development/python-modules/sure/default.nix b/pkgs/development/python-modules/sure/default.nix
index b8bb9a36586a3..84cc78e8a4a8d 100644
--- a/pkgs/development/python-modules/sure/default.nix
+++ b/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/pkgs/development/python-modules/surepy/default.nix b/pkgs/development/python-modules/surepy/default.nix
index 9759443228d05..13c8107c9aef4 100644
--- a/pkgs/development/python-modules/surepy/default.nix
+++ b/pkgs/development/python-modules/surepy/default.nix
@@ -33,7 +33,8 @@ buildPythonPackage rec {
   postPatch = ''
     substituteInPlace pyproject.toml \
       --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"'
+      --replace 'async-timeout = "^3.0.1"' 'async-timeout = ">=3.0.1"' \
+      --replace 'rich = "^10.1.0"' 'rich = ">=10.1.0"'
   '';
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/svdtools/default.nix b/pkgs/development/python-modules/svdtools/default.nix
index b02058b8d3014..03db4b6356e22 100644
--- a/pkgs/development/python-modules/svdtools/default.nix
+++ b/pkgs/development/python-modules/svdtools/default.nix
@@ -11,15 +11,22 @@
 
 buildPythonPackage rec {
   pname = "svdtools";
-  version = "0.1.20";
+  version = "0.1.21";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit version pname;
-    sha256 = "028s1bn50mfpaygf1wc2mvf06s50wqfplqrkhrjz6kx8vzrmwj72";
+    sha256 = "0qc94haqkj4dbhify1l3x0ji1dx34m79nfnsk1c7l1kl2zjvz6bz";
   };
 
+  # remove upon next release
+  # see: https://github.com/stm32-rs/svdtools/pull/96
+  prePatch = ''
+    substituteInPlace setup.py \
+      --replace 'PyYAML ~= 5.3' 'PyYAML >= 5.3'
+  '';
+
   propagatedBuildInputs = [
     braceexpand
     click
@@ -34,7 +41,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python package to handle vendor-supplied, often buggy SVD files";
     homepage = "https://github.com/stm32-rs/svdtools";
-    changelog = "https://github.com/stm32-rs/svdtools/blob/v${version}/CHANGELOG.md";
+    changelog = "https://github.com/stm32-rs/svdtools/blob/v${version}/CHANGELOG-python.md";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ newam ];
   };
diff --git a/pkgs/development/python-modules/svglib/default.nix b/pkgs/development/python-modules/svglib/default.nix
index 1bc1e58f1ae7c..145b24e55787e 100644
--- a/pkgs/development/python-modules/svglib/default.nix
+++ b/pkgs/development/python-modules/svglib/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "svglib";
-  version = "1.1.0";
+  version = "1.2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "520ee5290ee2ebeebd20ca0d7d995c08c903b364fcf515826bab43a1288d422e";
+    sha256 = "c77a0702fafd367c0fdca08ca1b7e1ee10058bde3bae252f49a3836e51e54519";
   };
 
   disabled = !isPy3k;
diff --git a/pkgs/development/python-modules/swagger-spec-validator/default.nix b/pkgs/development/python-modules/swagger-spec-validator/default.nix
index 71c9cf16780ea..ce67e6689ace8 100644
--- a/pkgs/development/python-modules/swagger-spec-validator/default.nix
+++ b/pkgs/development/python-modules/swagger-spec-validator/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "swagger-spec-validator";
-  version = "2.5.0";
+  version = "2.7.4";
 
   src = fetchFromGitHub {
     owner = "Yelp";
     repo = "swagger_spec_validator";
     rev = "v" + version;
-    sha256 = "0qlkiyncdh7cdyjvnwjpv9i7y75ghwnpyqkkpfaa8hg698na13pw";
+    sha256 = "sha256-7+kFmtzeze0QlGf6z/M4J4F7z771a5NWewB1S3+bxn4=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/swift/default.nix b/pkgs/development/python-modules/swift/default.nix
index 592e083567a27..b61e998c3c9f3 100644
--- a/pkgs/development/python-modules/swift/default.nix
+++ b/pkgs/development/python-modules/swift/default.nix
@@ -23,11 +23,11 @@
 
 buildPythonPackage rec {
   pname = "swift";
-  version = "2.28.0";
+  version = "2.29.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "79a216498a842226f71e9dfbbce4dba4a5718cda9b2be92b6e0aa21df977f70d";
+    sha256 = "sha256-sGHARvi1PAFajz82GAegDVpy6A98QEyMfrDHZjNtDGQ=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/sybase/default.nix b/pkgs/development/python-modules/sybase/default.nix
deleted file mode 100644
index 5a14e7e7f40ea..0000000000000
--- a/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/pkgs/development/python-modules/sybil/default.nix b/pkgs/development/python-modules/sybil/default.nix
index d46fc14cdf677..55cea70924e63 100644
--- a/pkgs/development/python-modules/sybil/default.nix
+++ b/pkgs/development/python-modules/sybil/default.nix
@@ -1,28 +1,40 @@
 { lib
 , buildPythonApplication
 , fetchPypi
-, pytest
-, nose
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonApplication rec {
   pname = "sybil";
-  version = "2.0.1";
+  version = "3.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "597d71e246690b9223c132f0ed7dcac470dcbe9ad022004a801e108a00dc3524";
+    sha256 = "sha256-dpLtZueT5eea5qcM8s+GGRftSOr/DYrfgl5k2Fgg8lE=";
   };
 
-  checkInputs = [ pytest nose ];
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # sensitive to output of other commands
+    "test_namespace"
+    "test_unittest"
+  ];
 
-  checkPhase = ''
-    py.test tests
-  '';
+  pythonImportsCheck = [
+    "sybil"
+  ];
 
   meta = with lib; {
     description = "Automated testing for the examples in your documentation";
     homepage = "https://github.com/cjw296/sybil";
     license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/sympy/1_5.nix b/pkgs/development/python-modules/sympy/1_5.nix
deleted file mode 100644
index 59c9ab878550b..0000000000000
--- a/pkgs/development/python-modules/sympy/1_5.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, 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/pkgs/development/python-modules/syslog-rfc5424-formatter/default.nix b/pkgs/development/python-modules/syslog-rfc5424-formatter/default.nix
new file mode 100644
index 0000000000000..040db8d1e0786
--- /dev/null
+++ b/pkgs/development/python-modules/syslog-rfc5424-formatter/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+  pname = "syslog-rfc5424-formatter";
+  version = "1.2.2";
+
+  src = fetchFromGitHub {
+    owner = "easypost";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "17ym5ls5r6dd9pg9frdz8myfq5fxyqlwdq1gygc9vnrxbgw2c9kb";
+  };
+
+  # Tests are not picked up, review later again
+  doCheck = false;
+
+  pythonImportsCheck = [ "syslog_rfc5424_formatter" ];
+
+  meta = with lib; {
+    description = "Python logging formatter for emitting RFC5424 Syslog messages";
+    homepage = "https://github.com/easypost/syslog-rfc5424-formatter";
+    license = with licenses; [ isc ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/systembridge/default.nix b/pkgs/development/python-modules/systembridge/default.nix
index 34403930602ca..beca0ef8147a7 100644
--- a/pkgs/development/python-modules/systembridge/default.nix
+++ b/pkgs/development/python-modules/systembridge/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "systembridge";
-  version = "2.2.3";
+  version = "2.3.1";
 
   src = fetchFromGitHub {
     owner = "timmo001";
     repo = "system-bridge-connector-py";
     rev = "v${version}";
-    sha256 = "sha256-AVMZBhf15eZM9oMUFyiHYs866P1v5z1pbTvX2Qpjzfc=";
+    sha256 = "sha256-Ts8zPRK6S5iLnl19Y/Uz0YAh6hDeVRNBY6HsvLwdUFw=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/tables/3.5.nix b/pkgs/development/python-modules/tables/3.5.nix
deleted file mode 100644
index efc47a1ad3f4a..0000000000000
--- a/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/pkgs/development/python-modules/tables/default.nix b/pkgs/development/python-modules/tables/default.nix
index 245e619e89e01..fbe99c6fa931a 100644
--- a/pkgs/development/python-modules/tables/default.nix
+++ b/pkgs/development/python-modules/tables/default.nix
@@ -10,19 +10,19 @@
 , lzo
 , numpy
 , numexpr
-, setuptools
+, packaging
   # Test inputs
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "tables";
-  version = "3.6.1";
+  version = "3.7.0";
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0j8vnxh2m5n0cyk9z3ndcj5n1zj5rdxgc1gb78bqlyn2lyw75aa9";
+    sha256 = "sha256-6SqIetbyqYPlZKaZAt5KdkXDAGn8AavTU+xdolXF4f4=";
   };
 
   nativeBuildInputs = [ cython ];
@@ -36,17 +36,9 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     numpy
     numexpr
-    setuptools  # uses pkg_resources at runtime
+    packaging  # uses packaging.version at runtime
   ];
 
-  patches = [
-    (fetchpatch {
-      # Needed for numpy >= 1.20.0
-      name = "tables-pr-862-use-lowercase-numpy-dtypes.patch";
-      url = "https://github.com/PyTables/PyTables/commit/93a3272b8fe754095637628b4d312400e24ae654.patch";
-      sha256 = "00czgxnm1dxp9763va9xw1nc7dd7kxh9hjcg9klim52519hkbhi4";
-    })
-  ];
   # When doing `make distclean`, ignore docs
   postPatch = ''
     substituteInPlace Makefile --replace "src doc" "src"
diff --git a/pkgs/development/python-modules/tablib/default.nix b/pkgs/development/python-modules/tablib/default.nix
index 4558b3afb26a3..b854e09c0506a 100644
--- a/pkgs/development/python-modules/tablib/default.nix
+++ b/pkgs/development/python-modules/tablib/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "tablib";
-  version = "3.1.0";
+  version = "3.2.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d64c9f6712918a3d90ec5d71b44b8bab1083e3609e4844ad2be80eb633e097ed";
+    sha256 = "12d8686454c721de88d8ca5adf07e1f419ef6dbcecedf65e8950d4a329daf3a0";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/tailscale/default.nix b/pkgs/development/python-modules/tailscale/default.nix
index 96016b3f0d4d5..67a384f4b22b2 100644
--- a/pkgs/development/python-modules/tailscale/default.nix
+++ b/pkgs/development/python-modules/tailscale/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "tailscale";
-  version = "0.1.6";
+  version = "0.2.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "frenck";
     repo = "python-tailscale";
     rev = "v${version}";
-    sha256 = "1dkmjc78mhgbikfz6mi6g63a36w6v29pdbb3pvgpicg0l649rsc9";
+    sha256 = "sha256-/tS9ZMUWsj42n3MYPZJYJELzX3h02AIHeRZmD2SuwWE=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/tappy/default.nix b/pkgs/development/python-modules/tappy/default.nix
index 9e0b83bc925d6..abbf70df62fb8 100644
--- a/pkgs/development/python-modules/tappy/default.nix
+++ b/pkgs/development/python-modules/tappy/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "tap.py";
-  version = "3.0";
+  version = "3.1";
 
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-9e7u6/1k5T0yZhdSu0wohYmjuru5bbPzkaTsKfE1nHA=";
+    sha256 = "3c0cd45212ad5a25b35445964e2517efa000a118a1bfc3437dae828892eaf1e1";
   };
 
   checkInputs = [ pytestCheckHook ];
diff --git a/pkgs/development/python-modules/tarman/default.nix b/pkgs/development/python-modules/tarman/default.nix
deleted file mode 100644
index c2a2c4405e287..0000000000000
--- a/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/pkgs/development/python-modules/tatsu/default.nix b/pkgs/development/python-modules/tatsu/default.nix
index 83f6d9ac0637f..18ab606afdd77 100644
--- a/pkgs/development/python-modules/tatsu/default.nix
+++ b/pkgs/development/python-modules/tatsu/default.nix
@@ -5,17 +5,17 @@
 
 buildPythonPackage rec {
   pname = "tatsu";
-  version = "5.6.1";
+  version = "5.7.3";
+  # upstream only supports 3.10+
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "neogeny";
     repo = "TatSu";
     rev = "v${version}";
-    sha256 = "149ra1lwax5m1svlv4dwjfqw00lc5vwyfj6zw2v0ammmfm1b94x9";
+    sha256 = "1d6rnlybj971b5j5glvq288hd4r204nkmssqb0k8rm6cqcwhz292";
   };
 
-  disabled = pythonOlder "3.8";
-
   nativeBuildInputs = [ pytest-runner ];
   propagatedBuildInputs = [ colorama regex ];
   checkInputs = [ pytestCheckHook pytest-mypy ];
diff --git a/pkgs/development/python-modules/teamcity-messages/default.nix b/pkgs/development/python-modules/teamcity-messages/default.nix
new file mode 100644
index 0000000000000..e378227b2f56f
--- /dev/null
+++ b/pkgs/development/python-modules/teamcity-messages/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "teamcity-messages";
+  version = "1.30";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "JetBrains";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-5C9ElCmTH+xSrFQ/x9IRJ89RfSd9cxzkETlOCzwyU8s=";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    "tests/unit-tests/"
+  ];
+
+  pythonImportsCheck = [
+    "teamcity"
+  ];
+
+  meta = with lib; {
+    description = "Python unit test reporting to TeamCity";
+    homepage = "https://github.com/JetBrains/teamcity-messages";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/temescal/default.nix b/pkgs/development/python-modules/temescal/default.nix
new file mode 100644
index 0000000000000..429b0a23d1877
--- /dev/null
+++ b/pkgs/development/python-modules/temescal/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, pycryptodome
+}:
+
+buildPythonPackage rec {
+  pname = "temescal";
+  version = "0.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-V1wsncIm4f6NPa6lwlO9pkDIFBG1K3VhmOQCwyrPGm4=";
+  };
+
+  propagatedBuildInputs = [
+    pycryptodome
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "temescal"
+  ];
+
+  meta = with lib; {
+    description = "Module for interacting with LG speaker systems";
+    homepage = "https://github.com/google/python-temescal";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/tempest/default.nix b/pkgs/development/python-modules/tempest/default.nix
index 5fa1ad4c539b0..39f7a82cd9ec8 100644
--- a/pkgs/development/python-modules/tempest/default.nix
+++ b/pkgs/development/python-modules/tempest/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonApplication
 , fetchPypi
+, fetchpatch
 , pbr
 , cliff
 , jsonschema
@@ -20,7 +21,6 @@
 , prettytable
 , urllib3
 , debtcollector
-, unittest2
 , hacking
 , oslotest
 , bash
@@ -36,6 +36,14 @@ buildPythonApplication rec {
     sha256 = "0521d3042360c0fb469b16f99174a9abddbae8a2d2a81268cfc664f1ccfdd0f9";
   };
 
+  patches = [
+    # remove need for unittest2
+    (fetchpatch {
+      url = "https://github.com/openstack/tempest/commit/cd3745c27b7d8fcdaffc72b965a3d803d9ee12c2.patch";
+      sha256 = "sha256-UwUmyFZokH66Xqfsj982MBHb0w7x6v4SAtXlqA5dpnk=";
+    })
+  ];
+
   propagatedBuildInputs = [
     pbr
     cliff
@@ -56,7 +64,6 @@ buildPythonApplication rec {
     prettytable
     urllib3
     debtcollector
-    unittest2
   ];
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/tempora/default.nix b/pkgs/development/python-modules/tempora/default.nix
index e9cd3e84fee5f..6999655c5dc5f 100644
--- a/pkgs/development/python-modules/tempora/default.nix
+++ b/pkgs/development/python-modules/tempora/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "tempora";
-  version = "4.1.2";
+  version = "5.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "fd6cafd66b01390d53a760349cf0b3123844ec6ae3d1043d7190473ea9459138";
+    sha256 = "aa21dd1956e29559ecb2f2f2e14fcdb950085222fbbf86e6c946b5e1a8c36b26";
   };
 
   disabled = pythonOlder "3.2";
diff --git a/pkgs/development/python-modules/tensorboardx/default.nix b/pkgs/development/python-modules/tensorboardx/default.nix
index 603d2a1cc2b2f..eacb5b4cdc804 100644
--- a/pkgs/development/python-modules/tensorboardx/default.nix
+++ b/pkgs/development/python-modules/tensorboardx/default.nix
@@ -1,13 +1,14 @@
 { boto3
 , buildPythonPackage
 , crc32c
+, which
 , fetchFromGitHub
 , lib
 , matplotlib
 , moto
 , numpy
 , pillow
-, protobuf
+, protobuf3_8
 , pytestCheckHook
 , pytorch
 , six
@@ -24,7 +25,7 @@ buildPythonPackage rec {
     owner = "lanpa";
     repo = "tensorboardX";
     rev = "v${version}";
-    sha256 = "1kcw062bcqvqva5kag9j7q72wk3vdqgf5cnn0lxmsvhlmq5sjdfn";
+    sha256 = "sha256-1jWpC64Ubl07Bday4h5ue0wuDj4yPTWL2nhjtoQBnM0=";
   };
 
   # apparently torch API changed a bit at 1.6
@@ -34,10 +35,16 @@ buildPythonPackage rec {
       "torch.onnx.select_model_mode_for_export(model, torch.onnx.TrainingMode.EVAL)"
   '';
 
+  # Wanted protobuf version is mentioned here:
+  # https://github.com/lanpa/tensorboardX/blob/0d08112618a2bbda4c028a15a137fed3afe77401/compile.sh#L6
+  nativeBuildInputs = [ which protobuf3_8 ];
+
+  # required to make tests deterministic
+  PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION = "python";
+
   propagatedBuildInputs = [
     crc32c
     numpy
-    protobuf
     six
     soundfile
   ];
diff --git a/pkgs/development/python-modules/tensorflow-datasets/corruptions.patch b/pkgs/development/python-modules/tensorflow-datasets/corruptions.patch
new file mode 100644
index 0000000000000..71e5da5e11bbd
--- /dev/null
+++ b/pkgs/development/python-modules/tensorflow-datasets/corruptions.patch
@@ -0,0 +1,22 @@
+diff --git a/tensorflow_datasets/image_classification/corruptions.py b/tensorflow_datasets/image_classification/corruptions.py
+index 066c4460..cb9a6667 100644
+--- a/tensorflow_datasets/image_classification/corruptions.py
++++ b/tensorflow_datasets/image_classification/corruptions.py
+@@ -35,7 +35,7 @@ FROST_FILENAMES = []
+ 
+ 
+ def _imagemagick_bin():
+-  return 'imagemagick'  # pylint: disable=unreachable
++  return 'convert'  # pylint: disable=unreachable
+ 
+ 
+ # /////////////// Corruption Helpers ///////////////
+@@ -675,7 +675,7 @@ def spatter(x, severity=1):
+     #     ker = np.array([[-1,-2,-3],[-2,0,0],[-3,0,1]], dtype=np.float32)
+     #     ker -= np.mean(ker)
+     ker = np.array([[-2, -1, 0], [-1, 1, 1], [0, 1, 2]])
+-    dist = cv2.filter2D(dist, cv2.CVX_8U, ker)
++    dist = cv2.filter2D(dist, cv2.CV_8U, ker)
+     dist = cv2.blur(dist, (3, 3)).astype(np.float32)
+ 
+     m = cv2.cvtColor(liquid_layer * dist, cv2.COLOR_GRAY2BGRA)
diff --git a/pkgs/development/python-modules/tensorflow-datasets/default.nix b/pkgs/development/python-modules/tensorflow-datasets/default.nix
new file mode 100644
index 0000000000000..98e38bba56ad9
--- /dev/null
+++ b/pkgs/development/python-modules/tensorflow-datasets/default.nix
@@ -0,0 +1,141 @@
+{ apache-beam
+, attrs
+, beautifulsoup4
+, buildPythonPackage
+, dill
+, dm-tree
+, fetchFromGitHub
+, ffmpeg
+, future
+, imagemagick
+, importlib-resources
+, jinja2
+, langdetect
+, lib
+, matplotlib
+, mwparserfromhell
+, networkx
+, nltk
+, numpy
+, opencv4
+, pandas
+, pillow
+, promise
+, protobuf
+, pycocotools
+, pydub
+, pytestCheckHook
+, requests
+, scikitimage
+, scipy
+, six
+, tensorflow
+, tensorflow-metadata
+, termcolor
+, tifffile
+, tqdm
+}:
+
+buildPythonPackage rec {
+  pname = "tensorflow-datasets";
+  version = "4.4.0";
+
+  src = fetchFromGitHub {
+    owner = "tensorflow";
+    repo = "datasets";
+    rev = "v${version}";
+    sha256 = "11kbpv54nwr0xf7z5mkj2lmrfqfmcdq8qcpapnqck1kiawr3yad6";
+  };
+
+  patches = [
+    # addresses https://github.com/tensorflow/datasets/issues/3673
+    ./corruptions.patch
+  ];
+
+  propagatedBuildInputs = [
+    attrs
+    dill
+    dm-tree
+    future
+    importlib-resources
+    numpy
+    promise
+    protobuf
+    requests
+    six
+    tensorflow-metadata
+    termcolor
+    tqdm
+  ];
+
+  pythonImportsCheck = [
+    "tensorflow_datasets"
+  ];
+
+  checkInputs = [
+    apache-beam
+    beautifulsoup4
+    ffmpeg
+    imagemagick
+    jinja2
+    langdetect
+    matplotlib
+    mwparserfromhell
+    networkx
+    nltk
+    opencv4
+    pandas
+    pillow
+    pycocotools
+    pydub
+    pytestCheckHook
+    scikitimage
+    scipy
+    tensorflow
+    tifffile
+  ];
+
+  disabledTestPaths = [
+    # Sandbox violations: network access, filesystem write attempts outside of build dir, ...
+    "tensorflow_datasets/core/dataset_builder_test.py"
+    "tensorflow_datasets/core/dataset_info_test.py"
+    "tensorflow_datasets/core/features/features_test.py"
+    "tensorflow_datasets/core/github_api/github_path_test.py"
+    "tensorflow_datasets/core/utils/gcs_utils_test.py"
+    "tensorflow_datasets/scripts/cli/build_test.py"
+
+    # Requires `pretty_midi` which is not packaged in `nixpkgs`.
+    "tensorflow_datasets/audio/groove_test.py"
+
+    # Requires `crepe` which is not packaged in `nixpkgs`.
+    "tensorflow_datasets/audio/nsynth_test.py"
+
+    # Requires `gcld3` and `pretty_midi` which are not packaged in `nixpkgs`.
+    "tensorflow_datasets/core/lazy_imports_lib_test.py"
+
+    # Requires `tensorflow_io` which is not packaged in `nixpkgs`.
+    "tensorflow_datasets/image/lsun_test.py"
+
+    # Fails with `TypeError: Constant constructor takes either 0 or 2 positional arguments`
+    # deep in TF AutoGraph. Doesn't reproduce in Docker with Ubuntu 22.04 => might be related
+    # to the differences in some of the dependencies?
+    "tensorflow_datasets/rl_unplugged/rlu_atari/rlu_atari_test.py"
+
+    # Requires `tensorflow_docs` which is not packaged in `nixpkgs` and the test is for documentation anyway.
+    "tensorflow_datasets/scripts/documentation/build_api_docs_test.py"
+
+    # Not a test, should not be executed.
+    "tensorflow_datasets/testing/test_utils.py"
+
+    # Require `gcld3` and `nltk.punkt` which are not packaged in `nixpkgs`.
+    "tensorflow_datasets/text/c4_test.py"
+    "tensorflow_datasets/text/c4_utils_test.py"
+  ];
+
+  meta = with lib; {
+    description = "Library of datasets ready to use with TensorFlow";
+    homepage = "https://www.tensorflow.org/datasets/overview";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ndl ];
+  };
+}
diff --git a/pkgs/development/python-modules/tensorflow-metadata/build.patch b/pkgs/development/python-modules/tensorflow-metadata/build.patch
new file mode 100644
index 0000000000000..ff81c5d1e86cf
--- /dev/null
+++ b/pkgs/development/python-modules/tensorflow-metadata/build.patch
@@ -0,0 +1,24 @@
+diff --git a/setup.py b/setup.py
+index 7a09b2f..94c5aa6 100644
+--- a/setup.py
++++ b/setup.py
+@@ -125,7 +125,7 @@ setup(
+     ],
+     namespace_packages=[],
+     install_requires=[
+-        'absl-py>=0.9,<0.13',
++        'absl-py>=0.9',
+         'googleapis-common-protos>=1.52.0,<2',
+         'protobuf>=3.13,<4',
+     ],
+@@ -137,8 +137,5 @@ setup(
+     long_description_content_type='text/markdown',
+     keywords='tensorflow metadata tfx',
+     download_url='https://github.com/tensorflow/metadata/tags',
+-    requires=[],
+-    cmdclass={
+-        'build': _BuildCommand,
+-        'bazel_build': _BazelBuildCommand,
+-    })
++    requires=[]
++    )
diff --git a/pkgs/development/python-modules/tensorflow-metadata/default.nix b/pkgs/development/python-modules/tensorflow-metadata/default.nix
new file mode 100644
index 0000000000000..2a80155c4cd9e
--- /dev/null
+++ b/pkgs/development/python-modules/tensorflow-metadata/default.nix
@@ -0,0 +1,46 @@
+{ absl-py
+, buildPythonPackage
+, fetchFromGitHub
+, googleapis-common-protos
+, lib
+}:
+
+buildPythonPackage rec {
+  pname = "tensorflow-metadata";
+  version = "1.5.0";
+
+  src = fetchFromGitHub {
+    owner = "tensorflow";
+    repo = "metadata";
+    rev = "v${version}";
+    sha256 = "17p74k6rwswpmj7m16cw9hdam6b4m7v5bahirmc2l1kwfvrn4w33";
+  };
+
+  patches = [
+    ./build.patch
+  ];
+
+  # Default build pulls in Bazel + extra deps, given the actual build
+  # is literally three lines (see below) - replace it with custom build.
+  preBuild = ''
+    for proto in tensorflow_metadata/proto/v0/*.proto; do
+      protoc --python_out=. $proto
+    done
+  '';
+
+  propagatedBuildInputs = [
+    absl-py
+    googleapis-common-protos
+  ];
+
+  pythonImportsCheck = [
+    "tensorflow_metadata"
+  ];
+
+  meta = with lib; {
+    description = "Standard representations for metadata that are useful when training machine learning models with TensorFlow";
+    homepage = "https://github.com/tensorflow/metadata";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ ndl ];
+  };
+}
diff --git a/pkgs/development/python-modules/tensorflow-probability/default.nix b/pkgs/development/python-modules/tensorflow-probability/default.nix
index 1daaac6ae7ebc..760e9a0e9d1c7 100644
--- a/pkgs/development/python-modules/tensorflow-probability/default.nix
+++ b/pkgs/development/python-modules/tensorflow-probability/default.nix
@@ -1,7 +1,5 @@
 { lib
 , fetchFromGitHub
-, fetchpatch
-, bazel_0_26
 , buildBazelPackage
 , buildPythonPackage
 , python
@@ -11,47 +9,33 @@
 , tensorflow
 , six
 , numpy
+, dm-tree
+, keras
 , decorator
 , cloudpickle
 , gast
 , hypothesis
 , scipy
+, pandas
+, mpmath
 , matplotlib
 , mock
 , pytest
 }:
 
 let
-  version = "0.8.0";
+  version = "0.15.0";
   pname = "tensorflow_probability";
 
   # first build all binaries and generate setup.py using bazel
   bazel-wheel = buildBazelPackage {
-    bazel = bazel_0_26;
-
     name = "${pname}-${version}-py2.py3-none-any.whl";
-
     src = fetchFromGitHub {
       owner = "tensorflow";
       repo = "probability";
-      rev = version;
-      sha256 = "07cm8zba8n0ihzdm3k4a4rsg5v62xxsfvcw4h0niz91c0parqjqy";
+      rev = "v" + version;
+      sha256 = "155fgmra90s08vjnp61qxdrpzq74xa3kdzhgdkavwgc25pvxn3mi";
     };
-
-    patches = [
-      (fetchpatch {
-        name = "gast-0.3.patch";
-        url = "https://github.com/tensorflow/probability/commit/ae7a9d9771771ec1e7755a3588b9325f050a84cc.patch";
-        sha256 = "0kfhx30gshm8f3945na9yjjik71r20qmjzifbigaj4l8dwd9dz1a";
-        excludes = ["testing/*"];
-      })
-      (fetchpatch {
-        name = "cloudpickle-1.2.patch";
-        url = "https://github.com/tensorflow/probability/commit/78ef12b5afe3f567d16c70b74015ed1ddff1b0c8.patch";
-        sha256 = "12ms2xcljvvrnig0j78s3wfv4yf3bm5ps4rgfgv5lg2a8mzpc1ga";
-      })
-    ];
-
     nativeBuildInputs = [
       # needed to create the output wheel in installPhase
       python
@@ -64,7 +48,7 @@ let
     bazelTarget = ":pip_pkg";
 
     fetchAttrs = {
-      sha256 = "1qw7vkwnxy45z4vm94isq5m96xiz35sigag7vjg1xb2sklbymxh8";
+      sha256 = "0sgxdlw5x3dydy53l10vbrj8smh78b7r1wff8jxcgp4w69mk8zfm";
     };
 
     buildAttrs = {
@@ -98,34 +82,31 @@ in buildPythonPackage {
     decorator
     cloudpickle
     gast
+    dm-tree
+    keras
   ];
 
   # Listed here:
-  # https://github.com/tensorflow/probability/blob/f01d27a6f256430f03b14beb14d37def726cb257/testing/run_tests.sh#L58
+  # https://github.com/tensorflow/probability/blob/f3777158691787d3658b5e80883fe1a933d48989/testing/dependency_install_lib.sh#L83
   checkInputs = [
     hypothesis
     pytest
     scipy
+    pandas
+    mpmath
     matplotlib
     mock
   ];
 
-  # actual checks currently fail because for some reason
-  # tf.enable_eager_execution is called too late. Probably because upstream
-  # intents these tests to be run by bazel, not plain pytest.
-  # checkPhase = ''
-  #   # tests need to import from other test files
-  #   export PYTHONPATH="$PWD/tensorflow-probability:$PYTHONPATH"
-  #   py.test
-  # '';
+  # Ideally, we run unit tests with pytest, but in checkPhase, only the Bazel-build wheel is available.
+  # But it seems not guaranteed that running the tests with pytest will even work, see
+  # https://github.com/tensorflow/probability/blob/c2a10877feb2c4c06a4dc58281e69c37a11315b9/CONTRIBUTING.md?plain=1#L69
+  # Ideally, tests would be run using Bazel. For now, lets's do a...
 
   # sanity check
-  checkPhase = ''
-    python -c 'import tensorflow_probability'
-  '';
+  pythonImportsCheck = [ "tensorflow_probability" ];
 
   meta = with lib; {
-    broken = true;  # tf-probability 0.8.0 is not compatible with tensorflow 2.3.2
     description = "Library for probabilistic reasoning and statistical analysis";
     homepage = "https://www.tensorflow.org/probability/";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/tensorflow-tensorboard/default.nix b/pkgs/development/python-modules/tensorflow-tensorboard/default.nix
index 123c339fea483..ceebad2a47694 100644
--- a/pkgs/development/python-modules/tensorflow-tensorboard/default.nix
+++ b/pkgs/development/python-modules/tensorflow-tensorboard/default.nix
@@ -2,6 +2,7 @@
 , fetchPypi
 , buildPythonPackage
 , pythonOlder
+, pythonAtLeast
 , numpy
 , wheel
 , werkzeug
@@ -24,7 +25,7 @@ buildPythonPackage rec {
   pname = "tensorflow-tensorboard";
   version = "2.6.0";
   format = "wheel";
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.6" || pythonAtLeast "3.10";
 
   src = fetchPypi {
     pname = "tensorboard";
diff --git a/pkgs/development/python-modules/tensorflow/bin.nix b/pkgs/development/python-modules/tensorflow/bin.nix
index 221c75112b9b1..2556a8039c1b7 100644
--- a/pkgs/development/python-modules/tensorflow/bin.nix
+++ b/pkgs/development/python-modules/tensorflow/bin.nix
@@ -48,6 +48,8 @@ in buildPythonPackage {
   inherit (packages) version;
   format = "wheel";
 
+  disabled = pythonAtLeast "3.10";
+
   src = let
     pyVerNoDot = lib.strings.stringAsChars (x: if x == "." then "" else x) python.pythonVersion;
     platform = if stdenv.isDarwin then "mac" else "linux";
diff --git a/pkgs/development/python-modules/tensorflow/default.nix b/pkgs/development/python-modules/tensorflow/default.nix
index 776fbaa180191..47acd1f53c756 100644
--- a/pkgs/development/python-modules/tensorflow/default.nix
+++ b/pkgs/development/python-modules/tensorflow/default.nix
@@ -413,8 +413,10 @@ let
       license = licenses.asl20;
       maintainers = with maintainers; [ jyp abbradar ];
       platforms = with platforms; linux ++ darwin;
-      timeout = 86400; # 24 hours, needed for darwin
       broken = !(xlaSupport -> cudaSupport);
+    } // lib.optionalAttrs stdenv.isDarwin {
+      timeout = 86400; # 24 hours
+      maxSilent = 14400; # 4h, double the default of 7200s
     };
   };
 
diff --git a/pkgs/development/python-modules/tensorly/default.nix b/pkgs/development/python-modules/tensorly/default.nix
index 54f32d182c0cb..e780aba228226 100644
--- a/pkgs/development/python-modules/tensorly/default.nix
+++ b/pkgs/development/python-modules/tensorly/default.nix
@@ -1,44 +1,35 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, pytest
-, nose
+, pytestCheckHook
 , isPy27
 , numpy
 , scipy
 , sparse
-, pytorch
 }:
 
 buildPythonPackage rec {
   pname = "tensorly";
-  version = "0.4.5";
+  version = "0.7.0";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "1ml91yaxwx4msisxbm92yf22qfrscvk58f3z2r1jhi96pw2k4i7x";
+    sha256 = "VcX3pCczZQUYZaD7xrrkOcj0QPJt28cYTwpZm5D/X3c=";
   };
 
-  propagatedBuildInputs = [ numpy scipy sparse ]
-    ++ lib.optionals (!doCheck) [ nose ]; # upstream added nose to install_requires
+  # nose is not actually required for anything
+  # (including testing with the minimal dependencies)
+  postPatch = ''
+    substituteInPlace setup.py --replace ", 'nose'" ""
+  '';
 
-  checkInputs = [ pytest nose pytorch ];
-  # also has a cupy backend, but the tests are currently broken
-  # (e.g. attempts to access cupy.qr instead of cupy.linalg.qr)
-  # and this backend also adds a non-optional CUDA dependence,
-  # as well as tensorflow and mxnet backends, but the tests don't
-  # seem to exercise these backend by default
+  propagatedBuildInputs = [ numpy scipy sparse ];
 
-  # uses >= 140GB of ram to test
-  doCheck = false;
-  checkPhase = ''
-    runHook preCheck
-    nosetests -e "test_cupy"
-    runHook postCheck
-  '';
+  checkInputs = [ pytestCheckHook ];
+  pytestFlagsArray = [ "tensorly" ];
 
   pythonImportsCheck = [ "tensorly" ];
 
diff --git a/pkgs/development/python-modules/terminaltables/default.nix b/pkgs/development/python-modules/terminaltables/default.nix
index 51a0b0712240b..7b548b763fdf2 100644
--- a/pkgs/development/python-modules/terminaltables/default.nix
+++ b/pkgs/development/python-modules/terminaltables/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "terminaltables";
-  version = "3.1.0";
+  version = "3.1.10";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f3eb0eb92e3833972ac36796293ca0906e998dc3be91fbe1f8615b331b853b81";
+    sha256 = "ba6eca5cb5ba02bba4c9f4f985af80c54ec3dccf94cfcd190154386255e47543";
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/tern/default.nix b/pkgs/development/python-modules/tern/default.nix
index e49ff64014543..2e7aa70862916 100644
--- a/pkgs/development/python-modules/tern/default.nix
+++ b/pkgs/development/python-modules/tern/default.nix
@@ -17,11 +17,11 @@
 
 buildPythonPackage rec {
   pname = "tern";
-  version = "2.9.0";
+  version = "2.9.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9cb509dba91718feecefd302388a89d4782454f6613e8f931ec8de87a6594de0";
+    sha256 = "c7ce55a500061e1160b040e75dc38d0eccc790a2b70fa3b7ad1b4fb715c18fc9";
   };
 
   preBuild = ''
diff --git a/pkgs/development/python-modules/teslajsonpy/default.nix b/pkgs/development/python-modules/teslajsonpy/default.nix
index 19e42e917dd31..255a7ac3a4314 100644
--- a/pkgs/development/python-modules/teslajsonpy/default.nix
+++ b/pkgs/development/python-modules/teslajsonpy/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "teslajsonpy";
-  version = "1.4.2";
+  version = "1.7.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "zabuldon";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-oablQoumBiqDk7bz1BUpUWddxExoqOofrZzX7y618Hw=";
+    sha256 = "sha256-2k1RtWQSz46vsZ4uEjjOmHAkGmwuKYNAdWgcT2Xr7Dc=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/test-tube/default.nix b/pkgs/development/python-modules/test-tube/default.nix
index f0c26292c84ba..1cc20cc2cca7f 100644
--- a/pkgs/development/python-modules/test-tube/default.nix
+++ b/pkgs/development/python-modules/test-tube/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "test-tube";
-  version = "0.7.5";
+  version = "0.628";
 
   disabled = isPy27;
 
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "williamFalcon";
     repo = pname;
     rev = version;
-    sha256 = "0zpvlp1ybp2dhgap8jsalpfdyg8ycjhlfi3xrdf5dqffqvh2yhp2";
+    sha256 = "0w60xarmcw06gc4002sy7bjfykdz34gbgniswxkl0lw8a1v0xn2m";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/testfixtures/default.nix b/pkgs/development/python-modules/testfixtures/default.nix
index 99be9957a5ef3..93fc92bd6320b 100644
--- a/pkgs/development/python-modules/testfixtures/default.nix
+++ b/pkgs/development/python-modules/testfixtures/default.nix
@@ -1,9 +1,10 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, isPy27
 , mock
 , pytestCheckHook
+, pythonAtLeast
+, pythonOlder
 , sybil
 , twisted
 , zope_component
@@ -12,36 +13,61 @@
 buildPythonPackage rec {
   pname = "testfixtures";
   version = "6.18.3";
+  format = "setuptools";
+  # DO NOT CONTACT upstream.
+  # https://github.com/simplistix/ is only concerned with internal CI process.
+  # Any attempt by non-standard pip workflows to comment on issues will
+  # be met with hostility.
+  # https://github.com/simplistix/testfixtures/issues/169
+  # https://github.com/simplistix/testfixtures/issues/168
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "sha256-JgAQCulv/QgjNLN441VVD++LSlKab6TDT0cTCQXHQm0=";
   };
 
+  # no longer compatible with sybil
+  # https://github.com/simplistix/testfixtures/issues/169
+  doCheck = false;
   checkInputs = [
-    pytestCheckHook
     mock
+    pytestCheckHook
     sybil
-    zope_component
     twisted
+    zope_component
   ];
 
-  doCheck = !isPy27;
-
   disabledTestPaths = [
     # Django is too much hasle to setup at the moment
     "testfixtures/tests/test_django"
   ];
 
+  disabledTests = lib.optionals (pythonAtLeast "3.10") [
+    # https://github.com/simplistix/testfixtures/issues/168
+    "test_invalid_communicate_call"
+    "test_invalid_kill"
+    "test_invalid_parameters"
+    "test_invalid_poll"
+    "test_invalid_send_signal"
+    "test_invalid_terminate"
+    "test_invalid_wait_call"
+    "test_replace_delattr_cant_remove"
+    "test_replace_delattr_cant_remove_not_strict"
+  ];
+
   pytestFlagsArray = [
     "testfixtures/tests"
   ];
 
-  pythonImportsCheck = [ "testfixtures" ];
+  pythonImportsCheck = [
+    "testfixtures"
+  ];
 
   meta = with lib; {
+    description = "Collection of helpers and mock objects for unit tests and doc tests";
     homepage = "https://github.com/Simplistix/testfixtures";
-    description = "A collection of helpers and mock objects for unit tests and doc tests";
     license = licenses.mit;
     maintainers = with maintainers; [ siriobalmelli ];
   };
diff --git a/pkgs/development/python-modules/testpath/default.nix b/pkgs/development/python-modules/testpath/default.nix
index be332ac791a2d..e11ddeed50a6f 100644
--- a/pkgs/development/python-modules/testpath/default.nix
+++ b/pkgs/development/python-modules/testpath/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fetchPypi
 , pytestCheckHook
@@ -17,6 +18,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  preCheck = lib.optionalString stdenv.isDarwin ''
+    # Work around https://github.com/jupyter/testpath/issues/24
+    export TMPDIR="/tmp"
+  '';
+
   meta = with lib; {
     description = "Test utilities for code working with files and commands";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/testtools/default.nix b/pkgs/development/python-modules/testtools/default.nix
index e2dfdcbe3ece4..84900ad5477e9 100644
--- a/pkgs/development/python-modules/testtools/default.nix
+++ b/pkgs/development/python-modules/testtools/default.nix
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     sha256 = "57c13433d94f9ffde3be6534177d10fb0c1507cc499319128958ca91a65cb23f";
   };
 
-  propagatedBuildInputs = [ pbr python-mimeparse extras unittest2 ];
+  propagatedBuildInputs = [ pbr python-mimeparse extras ];
   buildInputs = [ traceback2 ];
 
   # testscenarios has a circular dependency on testtools
diff --git a/pkgs/development/python-modules/textacy/default.nix b/pkgs/development/python-modules/textacy/default.nix
index 5c8928a385d46..2eae44aeeb27c 100644
--- a/pkgs/development/python-modules/textacy/default.nix
+++ b/pkgs/development/python-modules/textacy/default.nix
@@ -21,12 +21,13 @@
 
 buildPythonPackage rec {
   pname = "textacy";
-  version = "0.11.0";
+  version = "0.12.0";
   disabled = pythonOlder "3.7";
+  format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-d/tyTCewoERA15iBv4H2LORFzgco15fnnN1sneeGuF4=";
+    sha256 = "2c92bdd6b47305447b64e4cb6cc43c11675f021f910a8074bc8149dbf5325e5b";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/textfsm/default.nix b/pkgs/development/python-modules/textfsm/default.nix
index ae9bda2b8b845..e1bfdb5909df1 100644
--- a/pkgs/development/python-modules/textfsm/default.nix
+++ b/pkgs/development/python-modules/textfsm/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "textfsm";
-  version = "1.1.2";
+  version = "1.1.3";
   format = "setuptools";
 
 
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "google";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1cbczg3h2841v1xk2s2xg540c69vsrkwxljm758fyr65kshrzlhm";
+    sha256 = "sha256-IHgKG8v0X+LSK6purWBdwDnI/BCs5XA12ZJixuqqXWg=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/textile/default.nix b/pkgs/development/python-modules/textile/default.nix
new file mode 100644
index 0000000000000..a8acf346cd607
--- /dev/null
+++ b/pkgs/development/python-modules/textile/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, html5lib
+, pytestCheckHook
+, pythonOlder
+, regex
+}:
+
+buildPythonPackage rec {
+  pname = "textile";
+  version = "4.0.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = "python-textile";
+    rev = version;
+    hash = "sha256-WwX7h07Bq8sNsViHwmfhrrqleXacmrIY4ZBBaP2kKnI=";
+  };
+
+  propagatedBuildInputs = [
+    html5lib
+    regex
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace pytest.ini \
+      --replace " --cov=textile --cov-report=html --cov-append --cov-report=term-missing" ""
+  '';
+
+  pythonImportsCheck = [
+    "textile"
+  ];
+
+  meta = with lib; {
+    description = "MOdule for generating web text";
+    homepage = "https://github.com/textile/python-textile";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/tgcrypto/default.nix b/pkgs/development/python-modules/tgcrypto/default.nix
index 7fd62d7bcbe3c..728676b53b384 100644
--- a/pkgs/development/python-modules/tgcrypto/default.nix
+++ b/pkgs/development/python-modules/tgcrypto/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "tgcrypto";
-  version = "1.2.2";
+  version = "1.2.3";
 
   disabled = pythonOlder "3.6";
 
@@ -15,7 +15,7 @@ buildPythonPackage rec {
     owner = "pyrogram";
     repo = "tgcrypto";
     rev = "v${version}";
-    sha256 = "1vyjycjb2n790371kf47qc0mkvd4bxmhh65cfxjsrcjpiri7shjf";
+    sha256 = "06g1kv3skq2948h0sjf64s1cr2p1rhxnx5pf9nmvhxkmri1xmfzs";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/thespian/default.nix b/pkgs/development/python-modules/thespian/default.nix
index 7f353a19207d9..7a4f0e5ee855b 100644
--- a/pkgs/development/python-modules/thespian/default.nix
+++ b/pkgs/development/python-modules/thespian/default.nix
@@ -1,13 +1,13 @@
 { fetchPypi, buildPythonPackage, lib }:
 
 buildPythonPackage rec {
-  version = "3.10.5";
+  version = "3.10.6";
   pname = "thespian";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "17adad8afbc4779a01f34a6595c63fceccfd21f10556b85a261338eb99b5d306";
+    sha256 = "c987a8042ba2303e22371f38a67354593dd81c4c11ba1eba7f6657409288d5ed";
   };
 
   # Do not run the test suite: it takes a long time and uses
diff --git a/pkgs/development/python-modules/thinc/default.nix b/pkgs/development/python-modules/thinc/default.nix
index 9524f7e44970a..55bf72aec7697 100644
--- a/pkgs/development/python-modules/thinc/default.nix
+++ b/pkgs/development/python-modules/thinc/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , buildPythonPackage
+, python
 , fetchPypi
 , pytestCheckHook
 , blis
@@ -39,6 +40,11 @@ buildPythonPackage rec {
     sha256 = "sha256-R2YqOuM9RFp3tup7dyREgFx7uomR8SLjUNr3Le3IFxo=";
   };
 
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "pydantic>=1.7.4,!=1.8,!=1.8.1,<1.9.0" "pydantic"
+  '';
+
   buildInputs = [
     cython
   ] ++ lib.optionals stdenv.isDarwin [
@@ -73,12 +79,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  # Cannot find cython modules.
-  doCheck = false;
+  # Add native extensions.
+  preCheck = ''
+    export PYTHONPATH=$out/${python.sitePackages}:$PYTHONPATH
 
-  pytestFlagsArray = [
-    "thinc/tests"
-  ];
+    # avoid local paths, relative imports wont resolve correctly
+    mv thinc/tests tests
+    rm -r thinc
+  '';
 
   pythonImportsCheck = [
     "thinc"
diff --git a/pkgs/development/python-modules/thumbor/0001-Don-t-use-which-implementation-to-find-required-exec.patch b/pkgs/development/python-modules/thumbor/0001-Don-t-use-which-implementation-to-find-required-exec.patch
deleted file mode 100644
index 4a2d9df06181c..0000000000000
--- a/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/pkgs/development/python-modules/thumbor/default.nix b/pkgs/development/python-modules/thumbor/default.nix
deleted file mode 100644
index 86a2dd2001108..0000000000000
--- a/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/pkgs/development/python-modules/tifffile/default.nix b/pkgs/development/python-modules/tifffile/default.nix
index 2e46762672156..fdd4c2bf0b2ff 100644
--- a/pkgs/development/python-modules/tifffile/default.nix
+++ b/pkgs/development/python-modules/tifffile/default.nix
@@ -1,53 +1,55 @@
 { lib
-, fetchPypi
 , buildPythonPackage
-, isPy27
-, isPy3k
+, dask
+, fetchPypi
+, fsspec
+, lxml
 , numpy
-, imagecodecs-lite
-, enum34 ? null
-, futures ? null
-, pathlib ? null
-, pytest
+, pytestCheckHook
+, pythonOlder
+, zarr
 }:
 
 buildPythonPackage rec {
   pname = "tifffile";
   version = "2021.11.2";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "153e31fa1d892f482fabb2ae9f2561fa429ee42d01a6f67e58cee13637d9285b";
+    hash = "sha256-FT4x+h2JL0gvq7KunyVh+kKe5C0BpvZ+WM7hNjfZKFs=";
   };
 
-  patches = lib.optional isPy27 ./python2-regex-compat.patch;
-
-  # Missing dependencies: imagecodecs, czifile, cmapfile, oiffile, lfdfiles
-  # and test data missing from PyPI tarball
-  doCheck = false;
+  propagatedBuildInputs = [
+    numpy
+  ];
 
   checkInputs = [
-    pytest
+    dask
+    fsspec
+    lxml
+    pytestCheckHook
+    zarr
   ];
 
-  checkPhase = ''
-    pytest
-  '';
+  disabledTests = [
+    # Test require network access
+    "test_class_omexml"
+    "test_write_ome"
+    # Test file is missing
+    "test_write_predictor"
+  ];
 
-  propagatedBuildInputs = [
-    numpy
-  ] ++ lib.optionals isPy3k [
-    imagecodecs-lite
-  ] ++ lib.optionals isPy27 [
-    futures
-    enum34
-    pathlib
+  pythonImportsCheck = [
+    "tifffile"
   ];
 
   meta = with lib; {
-    description = "Read and write image data from and to TIFF files.";
-    homepage = "https://www.lfd.uci.edu/~gohlke/";
-    maintainers = [ maintainers.lebastr ];
+    description = "Read and write image data from and to TIFF files";
+    homepage = "https://github.com/cgohlke/tifffile/";
     license = licenses.bsd3;
+    maintainers = with maintainers; [ lebastr ];
   };
 }
diff --git a/pkgs/development/python-modules/tiledb/default.nix b/pkgs/development/python-modules/tiledb/default.nix
index bdd6ad2411581..b310defa45d19 100644
--- a/pkgs/development/python-modules/tiledb/default.nix
+++ b/pkgs/development/python-modules/tiledb/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "tiledb";
-  version = "0.6.6";
+  version = "0.12.0";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "TileDB-Inc";
     repo = "TileDB-Py";
     rev = version;
-    sha256 = "0b2kn1xyf7d994kz29dpqiaf8yzvx0axw4yqi854c54pl22ddgzl";
+    sha256 = "0iz16sgr5dpwc1jvb6brcmgvvg0npjdd98q4wgkqmvg7qif92zls";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/time-machine/default.nix b/pkgs/development/python-modules/time-machine/default.nix
index 240a8ac0c37e1..8ac7f66565b73 100644
--- a/pkgs/development/python-modules/time-machine/default.nix
+++ b/pkgs/development/python-modules/time-machine/default.nix
@@ -10,16 +10,16 @@
 
 buildPythonPackage rec {
   pname = "time-machine";
-  version = "2.5.0";
+  version = "2.6.0";
   format = "setuptools";
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "adamchainz";
     repo = pname;
     rev = version;
-    sha256 = "sha256-U/OgkwRgZMdEkMIQuN9bWXWeeMHiduy1C1xOBUl8NsQ=";
+    sha256 = "sha256-D3cbArF09b5+LkkdosNbYMfndnzCPWwNqzIww23pOtk=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/timetagger/default.nix b/pkgs/development/python-modules/timetagger/default.nix
new file mode 100644
index 0000000000000..29f2ffbc49b91
--- /dev/null
+++ b/pkgs/development/python-modules/timetagger/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, python3Packages
+, fetchFromGitHub
+, pytestCheckHook
+, requests
+, pytest
+, pythonOlder
+}:
+
+python3Packages.buildPythonPackage rec {
+  pname = "timetagger";
+  version = "22.2.2";
+
+  src = fetchFromGitHub {
+    owner = "almarklein";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-U2OvvS61t4RnWAA/mv84TWRj+/8SRRXrBR+fX3bakqw=";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    asgineer
+    itemdb
+    jinja2
+    markdown
+    pscript
+    pyjwt
+    uvicorn
+  ];
+
+  preCheck = ''
+    export HOME=$(mktemp -d)
+  '';
+
+  checkInputs = [
+    pytestCheckHook
+    requests
+    pytest
+  ];
+
+  # fails with `No module named pytest` on python version 3.10
+  doCheck = pythonOlder "3.10";
+
+  meta = with lib; {
+    homepage = "https://timetagger.app";
+    license = licenses.gpl3Only;
+    description = "Tag your time, get the insight";
+    maintainers = with maintainers; [ matthiasbeyer ];
+  };
+}
diff --git a/pkgs/development/python-modules/tinydb/default.nix b/pkgs/development/python-modules/tinydb/default.nix
index 958624f809359..0e7bcb303f30e 100644
--- a/pkgs/development/python-modules/tinydb/default.nix
+++ b/pkgs/development/python-modules/tinydb/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "tinydb";
-  version = "4.5.2";
+  version = "4.6.1";
   disabled = pythonOlder "3.5";
   format = "pyproject";
 
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "msiemens";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0gyc9rk1adw4gynwnv4kfas0hxv1cql0sm5b3fsms39088ha894l";
+    sha256 = "17m8g6xzwa0k8qb4k4p9hjcyv58gmxz1lkvr2ckc5csa0ydvv91a";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/titlecase/default.nix b/pkgs/development/python-modules/titlecase/default.nix
index 0b9e6547dee60..33fe952ad2a31 100644
--- a/pkgs/development/python-modules/titlecase/default.nix
+++ b/pkgs/development/python-modules/titlecase/default.nix
@@ -4,6 +4,7 @@
 , pytestCheckHook
 , pythonOlder
 , regex
+, setuptools-scm
 }:
 
 buildPythonPackage rec {
@@ -20,6 +21,12 @@ buildPythonPackage rec {
     sha256 = "169ywzn5wfzwyknqavspkdpwbx31nycxsxkl7iywwk71gs1lskkw";
   };
 
+  SETUPTOOLS_SCM_PRETEND_VERSION = version;
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [
     regex
   ];
diff --git a/pkgs/development/python-modules/tmb/default.nix b/pkgs/development/python-modules/tmb/default.nix
index 713cf61392857..10a6e3b00d508 100644
--- a/pkgs/development/python-modules/tmb/default.nix
+++ b/pkgs/development/python-modules/tmb/default.nix
@@ -2,28 +2,39 @@
 , buildPythonPackage
 , fetchFromGitHub
 , requests
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "tmb";
-  version = "0.1.1";
+  version = "0.1.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "alemuro";
     repo = pname;
     rev = version;
-    sha256 = "sha256-xwzaJuiQxExUA5W4kW7t1713S6NOvDNagcD3/dwA+DE=";
+    hash = "sha256-/syHSu9LKLDe3awrgSIHh0hV+raWqKd53f43WagHn9c=";
   };
 
-  propagatedBuildInputs = [ requests ];
+  VERSION = version;
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  pythonImportsCheck = [
+    "tmb"
+  ];
 
   # Project has no tests
   doCheck = false;
-  pythonImportsCheck = [ "tmb" ];
 
   meta = with lib; {
-    homepage = "https://github.com/alemuro/tmb";
     description = "Python library that interacts with TMB API";
+    homepage = "https://github.com/alemuro/tmb";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/tmdb3/default.nix b/pkgs/development/python-modules/tmdb3/default.nix
deleted file mode 100644
index 36a88ea22e49d..0000000000000
--- a/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/pkgs/development/python-modules/toggl-cli/default.nix b/pkgs/development/python-modules/toggl-cli/default.nix
index 1bbac9ce9da19..30c3f08f52e7c 100644
--- a/pkgs/development/python-modules/toggl-cli/default.nix
+++ b/pkgs/development/python-modules/toggl-cli/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "toggl-cli";
-  version = "2.4.2";
+  version = "2.4.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -28,7 +28,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "togglCli";
     inherit version;
-    sha256 = "1wgh231r16jyvaj1ch1pajvl9szflb4srs505pfdwdlqvz7rzww8";
+    sha256 = "sha256-ncMwiMwYivaFu5jrAsm1oCuXP/PZ2ALT+M+CmV6dtFo=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/tokenserver/default.nix b/pkgs/development/python-modules/tokenserver/default.nix
deleted file mode 100644
index 6d3c7e2be0548..0000000000000
--- a/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/pkgs/development/python-modules/tomli-w/default.nix b/pkgs/development/python-modules/tomli-w/default.nix
new file mode 100644
index 0000000000000..bbd928ac16c76
--- /dev/null
+++ b/pkgs/development/python-modules/tomli-w/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, callPackage
+, fetchFromGitHub
+, flit-core
+}:
+
+buildPythonPackage rec {
+  pname = "tomli-w";
+  version = "1.0.0";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "hukkin";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-wZSC5uOi1JUeKXIli1I8/Vo0wGsv9Q1I84dAMQQP95w=";
+  };
+
+  nativeBuildInputs = [ flit-core ];
+
+  pythonImportsCheck = [ "tomli_w" ];
+
+  meta = with lib; {
+    description = "A write-only counterpart to Tomli, which is a read-only TOML parser";
+    homepage = "https://github.com/hukkin/tomli-w";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lovesegfault ];
+  };
+}
diff --git a/pkgs/development/python-modules/tomli/default.nix b/pkgs/development/python-modules/tomli/default.nix
index c593e1e4cb19a..551655eebf0d0 100644
--- a/pkgs/development/python-modules/tomli/default.nix
+++ b/pkgs/development/python-modules/tomli/default.nix
@@ -3,6 +3,12 @@
 , callPackage
 , fetchFromGitHub
 , flit-core
+
+# important downstream dependencies
+, flit
+, black
+, mypy
+, setuptools-scm
 }:
 
 buildPythonPackage rec {
@@ -41,6 +47,7 @@ buildPythonPackage rec {
 
   passthru.tests = {
     pytest = callPackage ./tests.nix { };
+    inherit flit black mypy setuptools-scm;
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/tomlkit/default.nix b/pkgs/development/python-modules/tomlkit/default.nix
index fd6cec70f0601..6c8455f060ec0 100644
--- a/pkgs/development/python-modules/tomlkit/default.nix
+++ b/pkgs/development/python-modules/tomlkit/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "tomlkit";
-  version = "0.7.2";
+  version = "0.8.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d7a454f319a7e9bd2e249f239168729327e4dd2d27b17dc68be264ad1ce36754";
+    sha256 = "29e84a855712dfe0e88a48f6d05c21118dbafb283bb2eed614d46f80deb8e9a1";
   };
 
   propagatedBuildInputs =
diff --git a/pkgs/development/python-modules/toolz/2.nix b/pkgs/development/python-modules/toolz/2.nix
deleted file mode 100644
index 8c8a64db3a5ed..0000000000000
--- a/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/pkgs/development/python-modules/torchinfo/default.nix b/pkgs/development/python-modules/torchinfo/default.nix
new file mode 100644
index 0000000000000..331729e25c581
--- /dev/null
+++ b/pkgs/development/python-modules/torchinfo/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, fetchPypi
+, python
+, buildPythonPackage
+, pythonOlder
+, pytorch
+, pytestCheckHook
+, torchvision
+}:
+
+buildPythonPackage rec {
+  pname = "torchinfo";
+  version = "1.6.3";
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-g1xhtdwygzPTTswP8iZ364ynBQE7D+aAsZ3d9EpyvIA=";
+  };
+
+  propagatedBuildInputs = [
+    pytorch
+    torchvision
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # Skip as it downloads pretrained weights (require network access)
+    "test_eval_order_doesnt_matter"
+  ];
+
+  pythonImportsCheck = [ "torchvision" ];
+
+  meta = {
+    description = "API to visualize pytorch models";
+    homepage = "https://github.com/TylerYep/torchinfo";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ petterstorvik ];
+  };
+}
diff --git a/pkgs/development/python-modules/torchvision/default.nix b/pkgs/development/python-modules/torchvision/default.nix
index 4774e09f0b6ed..7b6384966ab1c 100644
--- a/pkgs/development/python-modules/torchvision/default.nix
+++ b/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.11.2";
+  version = "0.11.3";
 
   src = fetchFromGitHub {
     owner = "pytorch";
     repo = "vision";
     rev = "v${version}";
-    sha256 = "136w9pqyfdsxxc7337q3x42gsr17gs0i0af2swfhzqhz6hd5139i";
+    sha256 = "sha256-nJV0Jr6Uc+ALodAiekM6YpM6IbmIb4w+Jlc3bJRqayI=";
   };
 
   nativeBuildInputs = [ libpng ninja which ]
diff --git a/pkgs/development/python-modules/tornado/4.nix b/pkgs/development/python-modules/tornado/4.nix
index da86c7037b92b..3be82e40a2985 100644
--- a/pkgs/development/python-modules/tornado/4.nix
+++ b/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 || python.pythonAtLeast "3.10";
 
   # We specify the name of the test files to prevent
   # https://github.com/NixOS/nixpkgs/issues/14634
diff --git a/pkgs/development/python-modules/tornado/5.nix b/pkgs/development/python-modules/tornado/5.nix
index 2905f89dc0cca..2f3ba5c1c2aae 100644
--- a/pkgs/development/python-modules/tornado/5.nix
+++ b/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/pkgs/development/python-modules/total-connect-client/default.nix b/pkgs/development/python-modules/total-connect-client/default.nix
index 2c71d0a178282..efbb23fae0b48 100644
--- a/pkgs/development/python-modules/total-connect-client/default.nix
+++ b/pkgs/development/python-modules/total-connect-client/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "total-connect-client";
-  version = "2021.12";
+  version = "2022.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "craigjmidwinter";
     repo = "total-connect-client";
     rev = version;
-    hash = "sha256-cgs6wIMSO8t8CPn6aR35sNcgfDaXDyFBldNEBOr850s=";
+    hash = "sha256-k8ljkdNjYMIXMF2HFTks+kdOX9dwHSawjT8dsK706Eg=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/tox/default.nix b/pkgs/development/python-modules/tox/default.nix
index 8940a57196ac8..2307073c3225d 100644
--- a/pkgs/development/python-modules/tox/default.nix
+++ b/pkgs/development/python-modules/tox/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "tox";
-  version = "3.24.4";
+  version = "3.24.5";
 
   buildInputs = [ setuptools-scm ];
   propagatedBuildInputs = [ packaging pluggy py six virtualenv toml filelock ];
@@ -22,7 +22,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c30b57fa2477f1fb7c36aa1d83292d5c2336cd0018119e1b1c17340e2c2708ca";
+    sha256 = "67e0e32c90e278251fea45b696d0fef3879089ccbe979b0c556d35d5a70e2993";
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/tqdm/default.nix b/pkgs/development/python-modules/tqdm/default.nix
index 606308f889676..3973d68b6c381 100644
--- a/pkgs/development/python-modules/tqdm/default.nix
+++ b/pkgs/development/python-modules/tqdm/default.nix
@@ -37,6 +37,11 @@ buildPythonPackage rec {
     # pandas is not supported on i686 or risc-v
     lib.optional (!stdenv.isi686 && !stdenv.hostPlatform.isRiscV) pandas;
 
+  pytestFlagsArray = [
+    # pytest-asyncio 0.17.0 compat; https://github.com/tqdm/tqdm/issues/1289
+    "--asyncio-mode=strict"
+  ];
+
   # Remove performance testing.
   # Too sensitive for on Hydra.
   disabledTests = [
diff --git a/pkgs/development/python-modules/traitlets/4.nix b/pkgs/development/python-modules/traitlets/4.nix
deleted file mode 100644
index bffd7c790beab..0000000000000
--- a/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/pkgs/development/python-modules/traits/default.nix b/pkgs/development/python-modules/traits/default.nix
index 4e93f1369dd39..9e6b1a5056daa 100644
--- a/pkgs/development/python-modules/traits/default.nix
+++ b/pkgs/development/python-modules/traits/default.nix
@@ -1,29 +1,30 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, isPy27
-, python
+, pythonOlder
 , numpy
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "traits";
   version = "6.3.2";
-  disabled = isPy27;
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "4520ef4a675181f38be4a5bab1b1d5472691597fe2cfe4faf91023e89407e2c6";
   };
 
-  propagatedBuildInputs = [ numpy ];
-
-  # Test suite is broken for 3.x on latest release
-  # https://github.com/enthought/traits/issues/187
-  # https://github.com/enthought/traits/pull/188
-  # Furthermore, some tests fail due to being in a chroot
+  # Circular dependency
   doCheck = false;
 
+  pythonImportsCheck = [
+    "traits"
+  ];
+
   meta = with lib; {
     description = "Explicitly typed attributes for Python";
     homepage = "https://pypi.python.org/pypi/traits";
diff --git a/pkgs/development/python-modules/transformers/default.nix b/pkgs/development/python-modules/transformers/default.nix
index 5479a0b12258b..814eb1640292b 100644
--- a/pkgs/development/python-modules/transformers/default.nix
+++ b/pkgs/development/python-modules/transformers/default.nix
@@ -19,13 +19,13 @@
 
 buildPythonPackage rec {
   pname = "transformers";
-  version = "4.12.5";
+  version = "4.16.2";
 
   src = fetchFromGitHub {
     owner = "huggingface";
     repo = pname;
     rev = "v${version}";
-    sha256 = "07v72fyhm1s3bzg2kvaff15d7d8na39nlqpf5gyxaqvp3hglc3qy";
+    sha256 = "sha256-XF29JKIaOqZ/PdU+zu+wX7TAl1TKz+HcOutHDABc/PY=";
   };
 
   nativeBuildInputs = [ packaging ];
diff --git a/pkgs/development/python-modules/transip/default.nix b/pkgs/development/python-modules/transip/default.nix
index 94d3cb85be402..ff37464a0f34e 100644
--- a/pkgs/development/python-modules/transip/default.nix
+++ b/pkgs/development/python-modules/transip/default.nix
@@ -1,36 +1,46 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, isPy27
 , requests
 , cryptography
 , suds-jurko
-, pytest
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
-  pname = "transip-api";
+  pname = "transip";
   version = "2.0.0";
-  disabled = isPy27;
+  format = "setuptools";
+
+  disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "benkonrath";
-    repo = pname;
+    repo = "transip-api";
     rev = "v${version}";
-    sha256 = "153x8ph7cp432flaqiy2zgp060ddychcqcrssxkcmjvbm86xrz17";
+    hash = "sha256-J/zcDapry8pm1zozzCDzrQED7vvCR6yoE4NcduBFfZQ=";
   };
 
-  checkInputs = [ pytest ];
+  propagatedBuildInputs = [
+    requests
+    cryptography
+    suds-jurko
+  ];
 
-  # Constructor Tests require network access
-  checkPhase = ''
-    pytest --deselect=tests/service_tests/test_domain.py::TestDomainService::test_constructor \
-           --deselect tests/service_tests/test_vps.py::TestVPSService::testConstructor \
-           --deselect tests/service_tests/test_webhosting.py::TestWebhostingService::testConstructor
-  '';
+  checkInputs = [
+    pytestCheckHook
+  ];
 
+  disabledTests = [
+    # Constructor tests require network access
+    "test_constructor"
+    "testConstructor"
+  ];
 
-  propagatedBuildInputs = [ requests cryptography suds-jurko ];
+  pythonImportsCheck = [
+    "transip"
+  ];
 
   meta = with lib; {
     description = "TransIP API Connector";
diff --git a/pkgs/development/python-modules/transitions/default.nix b/pkgs/development/python-modules/transitions/default.nix
index 0dca476debf08..76a82e7c62131 100644
--- a/pkgs/development/python-modules/transitions/default.nix
+++ b/pkgs/development/python-modules/transitions/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, pythonAtLeast
 , six
 , pygraphviz
 , pytestCheckHook
@@ -13,6 +14,7 @@
 buildPythonPackage rec {
   pname = "transitions";
   version = "0.8.10";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
@@ -36,6 +38,16 @@ buildPythonPackage rec {
     export HOME=$TMPDIR
   '';
 
+  disabledTests = lib.optionals (pythonAtLeast "3.10") [
+    # https://github.com/pytransitions/transitions/issues/563
+    "test_multiple_models"
+    "test_timeout"
+  ];
+
+  pythonImportsCheck = [
+    "transitions"
+  ];
+
   meta = with lib; {
     homepage = "https://github.com/pytransitions/transitions";
     description = "A lightweight, object-oriented finite state machine implementation in Python";
diff --git a/pkgs/development/python-modules/translatepy/default.nix b/pkgs/development/python-modules/translatepy/default.nix
index 986a16db702b4..44191bcab808c 100644
--- a/pkgs/development/python-modules/translatepy/default.nix
+++ b/pkgs/development/python-modules/translatepy/default.nix
@@ -38,6 +38,6 @@ buildPythonPackage rec {
     description = "A module grouping multiple translation APIs";
     homepage = "https://github.com/Animenosekai/translate";
     license = with licenses; [ agpl3Only ];
-    maintainers = with maintainers; [ angustrau ];
+    maintainers = with maintainers; [ emilytrau ];
   };
 }
diff --git a/pkgs/development/python-modules/transmission-rpc/default.nix b/pkgs/development/python-modules/transmission-rpc/default.nix
index 3420773372f47..1e510db972217 100644
--- a/pkgs/development/python-modules/transmission-rpc/default.nix
+++ b/pkgs/development/python-modules/transmission-rpc/default.nix
@@ -6,6 +6,8 @@
 , requests
 , yarl
 , pythonOlder
+, fetchFromGitHub
+, poetry-core
 }:
 
 buildPythonPackage rec {
@@ -13,11 +15,25 @@ buildPythonPackage rec {
   version = "3.3.0";
   disabled = pythonOlder "3.6";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "ef3a931fc1f1db74edf8660e475b9295e0904ee922030ef0e45b0c73f4be65ae";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "Trim21";
+    repo = "transmission-rpc";
+    rev = "v${version}";
+    sha256 = "sha256-Ys9trQMCHqxBSaTobWt8WZwi1F8HKTUKaIxvyo6ZPP0=";
   };
 
+  # remove once upstream has tagged version with dumped typing-extensions
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'typing_extensions = ">=3.7.4.2,<4.0.0.0"' 'typing_extensions = "*"'
+  '';
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
   propagatedBuildInputs = [
     six
     typing-extensions
diff --git a/pkgs/development/python-modules/treeo/default.nix b/pkgs/development/python-modules/treeo/default.nix
new file mode 100644
index 0000000000000..f3271b9a3bb27
--- /dev/null
+++ b/pkgs/development/python-modules/treeo/default.nix
@@ -0,0 +1,46 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, jax
+, jaxlib
+, lib
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "treeo";
+  version = "0.4.0";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "cgarciae";
+    repo = pname;
+    rev = version;
+    sha256 = "176r1kgsdlylvdrxmhnzni81p8m9cfnsn4wwn6fnmsgam2qbp76j";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'typing-extensions = "^3.10.0"' 'typing-extensions = "*"'
+  '';
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  # jax is not declared in the dependencies, but is necessary.
+  propagatedBuildInputs = [
+    jax
+  ];
+
+  checkInputs = [ 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/pkgs/development/python-modules/treex/default.nix b/pkgs/development/python-modules/treex/default.nix
new file mode 100644
index 0000000000000..7ed83adc64d15
--- /dev/null
+++ b/pkgs/development/python-modules/treex/default.nix
@@ -0,0 +1,77 @@
+{ buildPythonPackage
+, cloudpickle
+, dm-haiku
+, einops
+, fetchFromGitHub
+, flax
+, hypothesis
+, jaxlib
+, keras
+, lib
+, poetry-core
+, pytestCheckHook
+, pyyaml
+, rich
+, tensorflow
+, treeo
+}:
+
+buildPythonPackage rec {
+  pname = "treex";
+  version = "0.6.9";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "cgarciae";
+    repo = pname;
+    rev = version;
+    sha256 = "1yvlldmhji12h249j14ba44hnb9x1fhrj7rh1cx2vn0vxj5wpg7x";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'rich = "^10.7.0"' 'rich = ">=10.7.0"' \
+      --replace 'PyYAML = "^5.4.1"' 'PyYAML = ">=5.4.1"' \
+      --replace 'optax = "^0.0.9"' 'optax = ">=0.0.9"'
+  '';
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  buildInputs = [ jaxlib ];
+
+  propagatedBuildInputs = [
+    einops
+    flax
+    pyyaml
+    rich
+    treeo
+  ];
+
+  checkInputs = [
+    cloudpickle
+    dm-haiku
+    hypothesis
+    keras
+    pytestCheckHook
+    tensorflow
+  ];
+
+  pythonImportsCheck = [
+    "treex"
+  ];
+
+  disabledTestPaths = [
+    # Require `torchmetrics` which is not packaged in `nixpkgs`.
+    "tests/metrics/test_mean_absolute_error.py"
+    "tests/metrics/test_mean_square_error.py"
+  ];
+
+  meta = with lib; {
+    description = "Pytree Module system for Deep Learning in JAX";
+    homepage = "https://github.com/cgarciae/treex";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ndl ];
+  };
+}
diff --git a/pkgs/development/python-modules/treq/default.nix b/pkgs/development/python-modules/treq/default.nix
index 85c5e10e8cb26..f566fda6f8ab1 100644
--- a/pkgs/development/python-modules/treq/default.nix
+++ b/pkgs/development/python-modules/treq/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "treq";
-  version = "21.5.0";
+  version = "22.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "02ea86383fc4b57539c45a965eaa1e9fd28302cdf382d21da8430050c97be9b8";
+    sha256 = "sha256-33V+PxQfx4Lt4HamBFIRlP/LQPomRc9I5aNwYDB/Uuw=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/trimesh/default.nix b/pkgs/development/python-modules/trimesh/default.nix
index e2ccb99da682b..d4da6ee6928ab 100644
--- a/pkgs/development/python-modules/trimesh/default.nix
+++ b/pkgs/development/python-modules/trimesh/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "trimesh";
-  version = "3.9.36";
+  version = "3.10.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f01e8edab14d1999700c980c21a1546f37417216ad915a53be649d263130181e";
+    sha256 = "sha256-mPsV25oD8FlPSDOGHOX+nLCN/I6RS83l3efUCgavmHY=";
   };
 
   propagatedBuildInputs = [ numpy ];
diff --git a/pkgs/development/python-modules/trio-asyncio/default.nix b/pkgs/development/python-modules/trio-asyncio/default.nix
index f6feb789690d9..25caa3e965fbe 100644
--- a/pkgs/development/python-modules/trio-asyncio/default.nix
+++ b/pkgs/development/python-modules/trio-asyncio/default.nix
@@ -6,11 +6,15 @@
 , sniffio
 , pytest-trio
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "trio-asyncio";
   version = "0.12.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "trio_asyncio";
@@ -34,10 +38,20 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  pytestFlagsArray = [
+    # https://github.com/python-trio/trio-asyncio/issues/112
+    "-W"
+    "ignore::DeprecationWarning"
+  ];
+
   disabledTestPaths = [
     "tests/python" # tries to import internal API test.test_asyncio
   ];
 
+  pythonImportsCheck = [
+    "trio_asyncio"
+  ];
+
   meta = with lib; {
     description = "Re-implementation of the asyncio mainloop on top of Trio";
     homepage = "https://github.com/python-trio/trio-asyncio";
diff --git a/pkgs/development/python-modules/trio/default.nix b/pkgs/development/python-modules/trio/default.nix
index 0e95da38eaea0..e667f146afc04 100644
--- a/pkgs/development/python-modules/trio/default.nix
+++ b/pkgs/development/python-modules/trio/default.nix
@@ -37,6 +37,10 @@ buildPythonPackage rec {
     "fallback_when_no_hook_claims_it"
   ];
 
+  pytestFlagsArray = [
+    "-W" "ignore::DeprecationWarning"
+  ];
+
   propagatedBuildInputs = [
     attrs
     sortedcontainers
diff --git a/pkgs/development/python-modules/trytond/default.nix b/pkgs/development/python-modules/trytond/default.nix
index 8ee48d938e38b..c332a067a76be 100644
--- a/pkgs/development/python-modules/trytond/default.nix
+++ b/pkgs/development/python-modules/trytond/default.nix
@@ -24,14 +24,14 @@
 
 buildPythonApplication rec {
   pname = "trytond";
-  version = "6.2.1";
+  version = "6.2.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "418f16c45b7130555447af901639b92bb188d39f46ce7fe4dfcd941c5959ed7e";
+    sha256 = "9be5d27aff9ae9b0ab73a8805145b2cc89900b9b513e6d5bfce89e9b7167f8f4";
   };
 
   # Tells the tests which database to use
diff --git a/pkgs/development/python-modules/ttls/default.nix b/pkgs/development/python-modules/ttls/default.nix
new file mode 100644
index 0000000000000..a389135bc35ed
--- /dev/null
+++ b/pkgs/development/python-modules/ttls/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, colour
+, fetchFromGitHub
+, poetry-core
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "ttls";
+  version = "1.4.2";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "jschlyter";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-zDMgH9o9obfuihX8pXj226T1eMiKx33xyYOGKjdB1wk=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    colour
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "ttls"
+  ];
+
+  meta = with lib; {
+    description = "Module to interact with Twinkly LEDs";
+    homepage = "https://github.com/jschlyter/ttls";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/ttp/default.nix b/pkgs/development/python-modules/ttp/default.nix
index 38faa10a92829..2157af318110c 100644
--- a/pkgs/development/python-modules/ttp/default.nix
+++ b/pkgs/development/python-modules/ttp/default.nix
@@ -19,14 +19,14 @@ let
 in
 buildPythonPackage rec {
   pname = "ttp";
-  version = "0.7.2";
+  version = "0.8.4";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "dmulyalin";
     repo = pname;
     rev = version;
-    sha256 = "sha256-dYjE+EMfCVHLRAqT1KM7o8VEopJ/TwAEMphYXuj38Wk=";
+    sha256 = "sha256-vuKlddqm8KirqAJyvBPfRb5Nw9zo4Fl1bwbfVMhmH9g=";
   };
 
   propagatedBuildInputs = [
@@ -57,6 +57,8 @@ buildPythonPackage rec {
   disabledTestPaths = [
     # missing package n2g
     "test/pytest/test_N2G_formatter.py"
+    # missing test file
+    "test/pytest/test_extend_tag.py"
   ];
 
   disabledTests = [
@@ -81,6 +83,10 @@ buildPythonPackage rec {
     "test_excel_formatter_update_using_result_kwargs"
     # missing package n2g
     "test_n2g_formatter"
+    # missing test files
+    "test_TTP_CACHE_FOLDER_env_variable_usage"
+    # requires additional network setup
+    "test_child_group_do_not_start_if_no_parent_started"
   ];
 
   pytestFlagsArray = [
diff --git a/pkgs/development/python-modules/ttystatus/default.nix b/pkgs/development/python-modules/ttystatus/default.nix
deleted file mode 100644
index f32045ce9cdef..0000000000000
--- a/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/pkgs/development/python-modules/tumpa/default.nix b/pkgs/development/python-modules/tumpa/default.nix
index 236cfbb7ba0cf..6309e8937a36c 100644
--- a/pkgs/development/python-modules/tumpa/default.nix
+++ b/pkgs/development/python-modules/tumpa/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "tumpa";
-  version = "0.1.1";
+  version = "0.1.2";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "kushaldas";
     repo = "tumpa";
     rev = "v${version}";
-    sha256 = "1wvs64s0jxn4p8zr643d2hcczw3a175r6ib3481gdhjx38kgxjbq";
+    sha256 = "17nhdildapgic5l05f3q1wf5jvz3qqdjv543c8gij1x9rdm8hgxi";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/tweepy/default.nix b/pkgs/development/python-modules/tweepy/default.nix
index a98911da58d5a..a3526eb707be9 100644
--- a/pkgs/development/python-modules/tweepy/default.nix
+++ b/pkgs/development/python-modules/tweepy/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "tweepy";
-  version = "4.4.0";
+  version = "4.5.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-GUo8uvShyIOWWcO5T1JvV7DMC1W70YILx/hvHIGQg0o=";
+    sha256 = "sha256-mRpYPuj2B/kEaaeZlNYYnViGxWiK1xtWfDObHNduIK8=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/twentemilieu/default.nix b/pkgs/development/python-modules/twentemilieu/default.nix
index a8a0fd0c99a63..425b7eddfe99b 100644
--- a/pkgs/development/python-modules/twentemilieu/default.nix
+++ b/pkgs/development/python-modules/twentemilieu/default.nix
@@ -26,7 +26,8 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "--cov" ""
+      --replace "--cov" "" \
+      --replace '"0.0.0"' '"${version}"'
   '';
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/twilio/default.nix b/pkgs/development/python-modules/twilio/default.nix
index 12859fae86cc9..ddc94541422c3 100644
--- a/pkgs/development/python-modules/twilio/default.nix
+++ b/pkgs/development/python-modules/twilio/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "twilio";
-  version = "7.4.0";
+  version = "7.5.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "twilio";
     repo = "twilio-python";
     rev = version;
-    sha256 = "sha256-gN9cVBhiO34uj2ZGqXrnlvOlSaGxry0tMxaTK4SYhjM=";
+    sha256 = "0h6r9nz7dcvagrjhzvnirpnjazcy9r64cwlr2bnmlrbjhwdni9rq";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/twine/default.nix b/pkgs/development/python-modules/twine/default.nix
index f5809b0a9b909..82c157722d285 100644
--- a/pkgs/development/python-modules/twine/default.nix
+++ b/pkgs/development/python-modules/twine/default.nix
@@ -14,13 +14,13 @@
 
 buildPythonPackage rec {
   pname = "twine";
-  version = "3.4.2";
+  version = "3.7.1";
   format = "pyproject";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4caec0f1ed78dc4c9b83ad537e453d03ce485725f2aea57f1bb3fdde78dae936";
+    sha256 = "28460a3db6b4532bde6a5db6755cf2dce6c5020bada8a641bb2c5c7a9b1f35b8";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/twinkly-client/default.nix b/pkgs/development/python-modules/twinkly-client/default.nix
index fc856430da955..77eb17b9fcda4 100644
--- a/pkgs/development/python-modules/twinkly-client/default.nix
+++ b/pkgs/development/python-modules/twinkly-client/default.nix
@@ -7,19 +7,26 @@
 
 buildPythonPackage rec {
   pname = "twinkly-client";
-  version = "0.0.2";
+  version = "0.0.3";
+  format = "setuptools";
+
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "16jbm4ya4yk2nfswza1kpgks70rmy5lpsv9dv3hdjdnr1j44hr3i";
+    sha256 = "sha256-F/N6yMOvLHIfXvPyR7z3P/Rlh79OvCbvEiNwClLSLl8=";
   };
 
-  propagatedBuildInputs = [ aiohttp ];
+  propagatedBuildInputs = [
+    aiohttp
+  ];
 
   # Project has no tests
   doCheck = false;
-  pythonImportsCheck = [ "twinkly_client" ];
+
+  pythonImportsCheck = [
+    "twinkly_client"
+  ];
 
   meta = with lib; {
     description = "Python module to communicate with Twinkly LED strings";
diff --git a/pkgs/development/python-modules/twitterapi/default.nix b/pkgs/development/python-modules/twitterapi/default.nix
index 31caed5ebd946..acaf3bf640e5f 100644
--- a/pkgs/development/python-modules/twitterapi/default.nix
+++ b/pkgs/development/python-modules/twitterapi/default.nix
@@ -3,18 +3,21 @@
 , fetchFromGitHub
 , requests
 , requests_oauthlib
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "twitterapi";
-  version = "2.7.10";
+  version = "2.7.12";
   format = "setuptools";
 
+  disabled = pythonOlder "3.7";
+
   src = fetchFromGitHub {
     owner = "geduldig";
     repo = "TwitterAPI";
     rev = "v${version}";
-    sha256 = "sha256-NWvoamSSyMssV4yJpMZtnCwQ5zBpqbgyUA7sJa9854U=";
+    sha256 = "sha256-WqeoIZt2OGDXKPAbjm3cHI1kgiCEJC6+ROXXx4TR4b4=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/txtorcon/default.nix b/pkgs/development/python-modules/txtorcon/default.nix
index 42568bbca1117..93c9c95a62ef6 100644
--- a/pkgs/development/python-modules/txtorcon/default.nix
+++ b/pkgs/development/python-modules/txtorcon/default.nix
@@ -1,4 +1,4 @@
-{ lib, python, buildPythonPackage, pythonOlder, fetchPypi, isPy3k, incremental, ipaddress, twisted
+{ lib, stdenv, python, buildPythonPackage, pythonOlder, fetchPypi, isPy3k, incremental, ipaddress, twisted
 , automat, zope_interface, idna, pyopenssl, service-identity, pytest, mock, lsof
 , GeoIP}:
 
@@ -22,6 +22,7 @@ buildPythonPackage rec {
   # as Python 3.5.
   disabled = pythonOlder "3.5";
 
+  doCheck = !(stdenv.isDarwin && stdenv.isAarch64);
   checkPhase = ''
     ${python.interpreter} -m twisted.trial -j $NIX_BUILD_CORES ./test
   '';
diff --git a/pkgs/development/python-modules/txzmq/default.nix b/pkgs/development/python-modules/txzmq/default.nix
new file mode 100644
index 0000000000000..6ae66dba90ca5
--- /dev/null
+++ b/pkgs/development/python-modules/txzmq/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, pyzmq
+, twisted
+}:
+
+buildPythonPackage rec {
+  pname = "txzmq";
+  version = "1.0.0";
+
+  src = fetchPypi {
+    inherit version;
+    pname = "txZMQ";
+    sha256 = "sha256-jWB9C/CcqUYAuOQvByHb5D7lOgRwGCNErHrOfljcYXc=";
+  };
+
+  propagatedBuildInputs = [
+    pyzmq
+    twisted
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "txzmq" ];
+
+  meta = with lib; {
+    description = "Twisted bindings for ZeroMQ";
+    homepage = "https://github.com/smira/txZMQ";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ wolfangaukang ];
+  };
+}
diff --git a/pkgs/development/python-modules/typeguard/default.nix b/pkgs/development/python-modules/typeguard/default.nix
index 63e1502226d92..8b2ff2de5129d 100644
--- a/pkgs/development/python-modules/typeguard/default.nix
+++ b/pkgs/development/python-modules/typeguard/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "typeguard";
-  version = "2.13.2";
+  version = "2.13.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7e50071590ab997509aa0977609eb5cf9d73d84c1f416cb4fab78b77a9d15326";
+    sha256 = "00edaa8da3a133674796cf5ea87d9f4b4c367d77476e185e80251cc13dfbb8c4";
   };
 
   buildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/types-dateutil/default.nix b/pkgs/development/python-modules/types-dateutil/default.nix
new file mode 100644
index 0000000000000..4614a92ae64f7
--- /dev/null
+++ b/pkgs/development/python-modules/types-dateutil/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "types-python-dateutil";
+  version = "2.8.9";
+  format = "setuptools";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-kPlaa21Pq6NZKH8XosrlEczJ1KvImwGWm9rBGFgVwF0=";
+  };
+
+  pythonImportsCheck = [ "dateutil-stubs" ];
+
+  meta = with lib; {
+    description = "Typing stubs for python-dateutil";
+    homepage = "https://github.com/python/typeshed";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ milibopp ];
+  };
+}
diff --git a/pkgs/development/python-modules/types-decorator/default.nix b/pkgs/development/python-modules/types-decorator/default.nix
index 5d162f1c3f7a0..f8dc74c00f982 100644
--- a/pkgs/development/python-modules/types-decorator/default.nix
+++ b/pkgs/development/python-modules/types-decorator/default.nix
@@ -5,12 +5,12 @@
 
 buildPythonPackage rec {
   pname = "types-decorator";
-  version = "5.1.1";
+  version = "5.1.4";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-WBcQj9v71OppsQcrG1fJpyakF4z9CBYMtb1PmTdptsE=";
+    sha256 = "463c04b192108e2b3f409df8a3eaaf8d44e3e98965c11e473ed2a97da591798b";
   };
 
   # Modules doesn't have tests
diff --git a/pkgs/development/python-modules/types-freezegun/default.nix b/pkgs/development/python-modules/types-freezegun/default.nix
new file mode 100644
index 0000000000000..687ddd1b17cc5
--- /dev/null
+++ b/pkgs/development/python-modules/types-freezegun/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "types-freezegun";
+  version = "1.1.6";
+  format = "setuptools";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-XHCkt0RLjH3SgA4AY9b+chqxEgk5kmT6D3evJT3YsU8=";
+  };
+
+  # Module doesn't have tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "freezegun-stubs"
+  ];
+
+  meta = with lib; {
+    description = "Typing stubs for freezegun";
+    homepage = "https://github.com/python/typeshed";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ jpetrucciani ];
+  };
+}
diff --git a/pkgs/development/python-modules/types-futures/default.nix b/pkgs/development/python-modules/types-futures/default.nix
index 845dab08d3306..afff438efef1f 100644
--- a/pkgs/development/python-modules/types-futures/default.nix
+++ b/pkgs/development/python-modules/types-futures/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "types-futures";
-  version = "3.3.1";
+  version = "3.3.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bbdad92cec642693bac10fbbecf834776009db7782d91dc293bdd123be73186d";
+    sha256 = "6fe8ccc2c2af7ef2fdd9bf73eab6d617074f09f30ad7d373510b4043d39c42de";
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/types-protobuf/default.nix b/pkgs/development/python-modules/types-protobuf/default.nix
index 382bd31117414..1055a91b675d3 100644
--- a/pkgs/development/python-modules/types-protobuf/default.nix
+++ b/pkgs/development/python-modules/types-protobuf/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "types-protobuf";
-  version = "3.18.2";
+  version = "3.19.12";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-yiHe3+d1msvrDNj1xyp0/zxAmuDAe8HZTv9RI6wPojw=";
+    sha256 = "sha256-sCIkc0dHEhmsvi/mjS82I9eIJS6Z6blzWLerkE0ming=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/types-pytz/default.nix b/pkgs/development/python-modules/types-pytz/default.nix
index b9d0abc25b111..1fc7dd5f9b611 100644
--- a/pkgs/development/python-modules/types-pytz/default.nix
+++ b/pkgs/development/python-modules/types-pytz/default.nix
@@ -5,12 +5,12 @@
 
 buildPythonPackage rec {
   pname = "types-pytz";
-  version = "2021.3.3";
+  version = "2021.3.5";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-9tIdZoeTWhYV20ZLHh34ANGVAsNrwEhvQ759/SxASUc=";
+    sha256 = "sha256-/vjeI47pUTWVIimiojv7h71j1abIWYEGpGz89I8Gnqg=";
   };
 
   # Modules doesn't have tests
diff --git a/pkgs/development/python-modules/types-requests/default.nix b/pkgs/development/python-modules/types-requests/default.nix
index 3006c2c5e99ec..06f92bdc41ee4 100644
--- a/pkgs/development/python-modules/types-requests/default.nix
+++ b/pkgs/development/python-modules/types-requests/default.nix
@@ -1,18 +1,23 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, types-urllib3
 }:
 
 buildPythonPackage rec {
   pname = "types-requests";
-  version = "2.26.3";
+  version = "2.27.9";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-1j+mF4Rtzv/1qi1Z5Hq0/9gG5LsFZxFfetu15DgwL+Q=";
+    sha256 = "sha256-c2iXRTTSl5OUku/f2rIykwRAsR4iA/bfHwxA4yQqh+o=";
   };
 
+  propagatedBuildInputs = [
+    types-urllib3
+  ];
+
   # Module doesn't have tests
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/types-setuptools/default.nix b/pkgs/development/python-modules/types-setuptools/default.nix
index b88dc5b0260b2..24ee2ce5b2945 100644
--- a/pkgs/development/python-modules/types-setuptools/default.nix
+++ b/pkgs/development/python-modules/types-setuptools/default.nix
@@ -5,12 +5,12 @@
 
 buildPythonPackage rec {
   pname = "types-setuptools";
-  version = "57.4.5";
+  version = "57.4.9";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-pGAO/cpoozIErZwIP9mWbWOu5hp9AH6RK2r8b/V9bgI=";
+    sha256 = "sha256-U273R0T44eS+T8cZiH+IbnTkzzx5K0oGmEMgvk30ULU=";
   };
 
   # Module doesn't have tests
diff --git a/pkgs/development/python-modules/types-tabulate/default.nix b/pkgs/development/python-modules/types-tabulate/default.nix
new file mode 100644
index 0000000000000..9e5c9b628b2dd
--- /dev/null
+++ b/pkgs/development/python-modules/types-tabulate/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "types-tabulate";
+  version = "0.8.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-A/KDvzhOoSG3tqWK+zj03vl/MHBPyhOg2mhpNrDzkqw=";
+  };
+
+  # Module doesn't have tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "tabulate-stubs"
+  ];
+
+  meta = with lib; {
+    description = "Typing stubs for tabulate";
+    homepage = "https://github.com/python/typeshed";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ jpetrucciani ];
+  };
+}
diff --git a/pkgs/development/python-modules/types-toml/default.nix b/pkgs/development/python-modules/types-toml/default.nix
index d87528c20324a..affdbbb2b4479 100644
--- a/pkgs/development/python-modules/types-toml/default.nix
+++ b/pkgs/development/python-modules/types-toml/default.nix
@@ -5,12 +5,12 @@
 
 buildPythonPackage rec {
   pname = "types-toml";
-  version = "0.10.1";
+  version = "0.10.4";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1jqh0vki1hccj391gnxpblim429sj56npgq2z749f8v9ay6qy7sw";
+    sha256 = "sha256-k0DnwVh3FVgbsTkFs68wt5/mivrM/KN3Zl1eY7aUEpo=";
   };
 
   # Module doesn't have tests
diff --git a/pkgs/development/python-modules/types-typed-ast/default.nix b/pkgs/development/python-modules/types-typed-ast/default.nix
index 7c2c7f66a246b..e08450c6a3e74 100644
--- a/pkgs/development/python-modules/types-typed-ast/default.nix
+++ b/pkgs/development/python-modules/types-typed-ast/default.nix
@@ -5,17 +5,20 @@
 
 buildPythonPackage rec {
   pname = "types-typed-ast";
-  version = "1.5.0";
+  version = "1.5.2";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-2Op5y/vFIL6Nm8jeSHL0SzQtvbwJFmfi8hsDu9eWkVA=";
+    hash = "sha256-bY/S6pCDbLQxEayKrnzYZOCYWTyT7M66kP5G1rewxz4=";
   };
 
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [ "typed_ast-stubs" ];
+  pythonImportsCheck = [
+    "typed_ast-stubs"
+  ];
 
   meta = with lib; {
     description = "Typing stubs for typed-ast";
diff --git a/pkgs/development/python-modules/types-urllib3/default.nix b/pkgs/development/python-modules/types-urllib3/default.nix
new file mode 100644
index 0000000000000..3e6eac4427a06
--- /dev/null
+++ b/pkgs/development/python-modules/types-urllib3/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "types-urllib3";
+  version = "1.26.9";
+  format = "setuptools";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-q9LUhXg3SCsYNLSBfwWHZ43MUx28mr5M3k2ijO8/Uiw=";
+  };
+
+  # Module doesn't have tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "urllib3-stubs"
+  ];
+
+  meta = with lib; {
+    description = "Typing stubs for urllib3";
+    homepage = "https://github.com/python/typeshed";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/typesystem/default.nix b/pkgs/development/python-modules/typesystem/default.nix
index f7dcf33ea7fd2..30d26293e5d19 100644
--- a/pkgs/development/python-modules/typesystem/default.nix
+++ b/pkgs/development/python-modules/typesystem/default.nix
@@ -1,23 +1,24 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, isPy27
-, pytestCheckHook
-, pytest-cov
 , jinja2
+, pytestCheckHook
+, pythonOlder
 , pyyaml
 }:
 
 buildPythonPackage rec {
   pname = "typesystem";
-  version = "0.2.4";
-  disabled = isPy27;
+  version = "0.4.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "encode";
     repo = pname;
     rev = version;
-    sha256 = "1k0jwcky17zwaz2vx4x2zbsnp270g4mgn7kx5bpl8jgx76qmsnba";
+    hash = "sha256-fjnheHWjIDbJY1iXCRKCpqTCwtUWK9YXbynRCZquQ7c=";
   };
 
   propagatedBuildInputs = [
@@ -27,23 +28,16 @@ buildPythonPackage rec {
 
   checkInputs = [
     pytestCheckHook
-    pytest-cov
   ];
 
-  disabledTests = [
-    # https://github.com/encode/typesystem/issues/102. cosmetic issue where python3.8 changed
-    # the default string formatting of regular expression flags which breaks test assertion
-    "test_to_json_schema_complex_regular_expression"
-  ];
-  disabledTestPaths = [
-    # for some reason jinja2 not picking up forms directory (1% of tests)
-    "tests/test_forms.py"
+  pythonImportsCheck = [
+    "typesystem"
   ];
 
   meta = with lib; {
     description = "A type system library for Python";
     homepage = "https://github.com/encode/typesystem";
     license = licenses.bsd3;
-    maintainers = [ maintainers.costrouc ];
+    maintainers =  with maintainers; [ costrouc ];
   };
 }
diff --git a/pkgs/development/python-modules/typical/default.nix b/pkgs/development/python-modules/typical/default.nix
index ee815fa15e1f7..96a07802b1c83 100644
--- a/pkgs/development/python-modules/typical/default.nix
+++ b/pkgs/development/python-modules/typical/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , fastjsonschema
 , fetchFromGitHub
+, fetchpatch
 , future-typing
 , inflection
 , mypy
@@ -18,7 +19,7 @@
 
 buildPythonPackage rec {
   pname = "typical";
-  version = "2.7.9";
+  version = "2.8.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -27,13 +28,9 @@ buildPythonPackage rec {
     owner = "seandstewart";
     repo = "typical";
     rev = "v${version}";
-    sha256 = "sha256-ITIsSM92zftnvqLiVGFl//IbBb8N3ffkkqohzOx2JO4=";
+    hash = "sha256-DRjQmoZzWw5vpwIx70wQg6EO/aHqyX7RWpWZ9uOxSTg=";
   };
 
-  patches = [
-    ./use-poetry-core.patch
-  ];
-
   nativeBuildInputs = [
     poetry-core
   ];
@@ -56,6 +53,15 @@ buildPythonPackage rec {
     pandas
   ];
 
+  patches = [
+    # Switch to poetry-core, https://github.com/seandstewart/typical/pull/193
+    (fetchpatch {
+      name = "switch-to-poetry-core.patch";
+      url = "https://github.com/seandstewart/typical/commit/66b3c34f8969b7fb1f684f0603e514405bab0dd7.patch";
+      sha256 = "sha256-c7qJOtHmJRnVEGl+OADB3HpjvMK8aYDD9+0gplOn9pQ=";
+    })
+  ];
+
   disabledTests = [
     # We use orjson
     "test_ujson"
@@ -65,6 +71,8 @@ buildPythonPackage rec {
 
   disabledTestPaths = [
     "benchmark/"
+    # Tests are failing on Hydra
+    "tests/mypy/test_mypy.py"
   ];
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/typical/use-poetry-core.patch b/pkgs/development/python-modules/typical/use-poetry-core.patch
deleted file mode 100644
index f3c32e621aeac..0000000000000
--- a/pkgs/development/python-modules/typical/use-poetry-core.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-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/pkgs/development/python-modules/typing-extensions/default.nix b/pkgs/development/python-modules/typing-extensions/default.nix
index 939ca25eb1a31..1e29bc9a6160c 100644
--- a/pkgs/development/python-modules/typing-extensions/default.nix
+++ b/pkgs/development/python-modules/typing-extensions/default.nix
@@ -1,27 +1,41 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder, isPy3k, python, typing }:
-let
-  testDir = if isPy3k then "src_py3" else "src_py2";
+{ lib
+, buildPythonPackage
+, fetchPypi
+, flit-core
+, python
+, pythonOlder
+}:
 
-in buildPythonPackage rec {
-  pname = "typing_extensions";
-  version = "3.10.0.2";
+buildPythonPackage rec {
+  pname = "typing-extensions";
+  version = "4.0.1";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e";
+    pname = "typing_extensions";
+    inherit version;
+    hash = "sha256-TKCR3qFJ+UXsVq+0ja5xTyHoaS7yKjlSI7zTKJYbag4=";
   };
 
-  checkInputs = lib.optional (pythonOlder "3.5") typing;
-
-  # Error for Python3.6: ImportError: cannot import name 'ann_module'
-  # See https://github.com/python/typing/pull/280
-  doCheck = pythonOlder "3.6";
+  nativeBuildInputs = [
+    flit-core
+  ];
 
-  checkPhase = ''
-    cd ${testDir}
-    ${python.interpreter} -m unittest discover
+  postPatch = ''
+    # Remove metadata for README which are outdated
+    sed -i -e '11,24d' pyproject.toml
   '';
 
+  # Tests are not part of PyPI releases. GitHub source can't be used
+  # as it ends with an infinite recursion
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "typing_extensions"
+  ];
+
   meta = with lib; {
     description = "Backported and Experimental Type Hints for Python 3.5+";
     homepage = "https://github.com/python/typing";
diff --git a/pkgs/development/python-modules/typing/default.nix b/pkgs/development/python-modules/typing/default.nix
deleted file mode 100644
index b3dcea203231c..0000000000000
--- a/pkgs/development/python-modules/typing/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder, isPy3k, isPyPy, python
-, pythonAtLeast }:
-
-let
-  testDir = if isPy3k then "src" else "python2";
-
-in buildPythonPackage rec {
-  pname = "typing";
-  version = "3.10.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "13b4ad211f54ddbf93e5901a9967b1e07720c1d1b78d596ac6a439641aa1b130";
-  };
-
-  disabled = pythonAtLeast "3.5";
-
-  # Error for Python3.6: ImportError: cannot import name 'ann_module'
-  # See https://github.com/python/typing/pull/280
-  # Also, don't bother on PyPy: AssertionError: TypeError not raised
-  doCheck = pythonOlder "3.6" && !isPyPy;
-
-  checkPhase = ''
-    cd ${testDir}
-    ${python.interpreter} -m unittest discover
-  '';
-
-  meta = with lib; {
-    description = "Backport of typing module to Python versions older than 3.5";
-    homepage = "https://docs.python.org/3/library/typing.html";
-    license = licenses.psfl;
-  };
-}
diff --git a/pkgs/development/python-modules/tzdata/default.nix b/pkgs/development/python-modules/tzdata/default.nix
index 7f1803d12c62e..cfc46a658d347 100644
--- a/pkgs/development/python-modules/tzdata/default.nix
+++ b/pkgs/development/python-modules/tzdata/default.nix
@@ -1,28 +1,32 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pythonOlder
-, pytestCheckHook
-, pytest-subtests
 , importlib-resources
+, pytest-subtests
+, pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "tzdata";
-  version = "2021.1";
+  version = "2021.5";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-4ZxzUfiHUioaxznSEEHlkt3ebdG3ZP3vqPeys1UdPTg=";
+    hash = "sha256-aNvkGv0BuGeJS739VPoD9GjPpPAIa/tK3NjejyTz7iE=";
   };
 
   checkInputs = [
     pytestCheckHook
     pytest-subtests
-  ] ++ lib.optional (pythonOlder "3.7") importlib-resources;
+  ] ++ lib.optional (pythonOlder "3.7") [
+    importlib-resources
+  ];
 
-  pythonImportsCheck = [ "tzdata" ];
+  pythonImportsCheck = [
+    "tzdata"
+  ];
 
   meta = with lib; {
     description = "Provider of IANA time zone data";
diff --git a/pkgs/development/python-modules/tzlocal/2.nix b/pkgs/development/python-modules/tzlocal/2.nix
deleted file mode 100644
index ba96c63af8501..0000000000000
--- a/pkgs/development/python-modules/tzlocal/2.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchPypi
-, pytz
-, mock
-}:
-
-buildPythonPackage rec {
-  pname = "tzlocal";
-  version = "2.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "643c97c5294aedc737780a49d9df30889321cbe1204eac2c2ec6134035a92e44";
-  };
-
-  propagatedBuildInputs = [
-    pytz
-  ];
-
-  checkInputs = [
-    mock
-  ];
-
-  doCheck = false;
-
-  pythonImportsCheck = [ "tzlocal" ];
-
-  meta = with lib; {
-    description = "Tzinfo object for the local timezone";
-    homepage = "https://github.com/regebro/tzlocal";
-    license = licenses.cddl;
-    maintainers = with maintainers; [ dotlambda ];
-  };
-}
diff --git a/pkgs/development/python-modules/uamqp/default.nix b/pkgs/development/python-modules/uamqp/default.nix
index 15f098d90e482..f3c8792e569cc 100644
--- a/pkgs/development/python-modules/uamqp/default.nix
+++ b/pkgs/development/python-modules/uamqp/default.nix
@@ -16,11 +16,11 @@
 
 buildPythonPackage rec {
   pname = "uamqp";
-  version = "1.4.3";
+  version = "1.5.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-L4IQWnxRRL3yopNT91Mk8KKdph9Vg2PHkGH+86uDu7c=";
+    sha256 = "sha256-VevtbXtOTKQEqVYpNKFrDhvyDBJY+uQMhld6in+EroE=";
   };
 
   nativeBuildInputs = [
@@ -41,15 +41,6 @@ buildPythonPackage rec {
     enum34
   ];
 
-  patches = [
-    (fetchpatch {
-      url = "https://github.com/Azure/azure-c-shared-utility/commit/52ab2095649b5951e6af77f68954209473296983.patch";
-      sha256 = "06pxhdpkv94pv3lhj1vy0wlsqsdznz485bvg3zafj67r55g40lhd";
-      stripLen = "2";
-      extraPrefix = "src/vendor/azure-uamqp-c/deps/azure-c-shared-utility/";
-    })
-  ];
-
   dontUseCmakeConfigure = true;
 
   # Project has no tests
diff --git a/pkgs/development/python-modules/ufo2ft/default.nix b/pkgs/development/python-modules/ufo2ft/default.nix
new file mode 100644
index 0000000000000..a3458b2f332fe
--- /dev/null
+++ b/pkgs/development/python-modules/ufo2ft/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools-scm
+, fonttools
+, defcon
+, compreffor
+, booleanoperations
+, cffsubr
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "ufo2ft";
+  version = "2.25.2";
+
+  format = "setuptools";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "ooWIHvyMtrht4WcGPiacY8dfjPSb5uitHnTRTKvf2AA=";
+  };
+
+  patches = [
+    # Use cu2qu from fonttools.
+    # https://github.com/googlefonts/ufo2ft/pull/461
+    ./fonttools-cu2qu.patch
+  ];
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    fonttools
+    defcon
+    compreffor
+    booleanoperations
+    cffsubr
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pytestFlagsArray = [
+    # Do not depend on skia.
+    "--deselect=tests/integration_test.py::IntegrationTest::test_removeOverlaps_CFF_pathops"
+    "--deselect=tests/integration_test.py::IntegrationTest::test_removeOverlaps_pathops"
+    "--deselect=tests/preProcessor_test.py::TTFPreProcessorTest::test_custom_filters_as_argument"
+    "--deselect=tests/preProcessor_test.py::TTFInterpolatablePreProcessorTest::test_custom_filters_as_argument"
+  ];
+
+  pythonImportsCheck = [ "ufo2ft" ];
+
+  meta = with lib; {
+    description = "Bridge from UFOs to FontTools objects";
+    homepage = "https://github.com/googlefonts/ufo2ft";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jtojnar ];
+  };
+}
diff --git a/pkgs/development/python-modules/ufo2ft/fonttools-cu2qu.patch b/pkgs/development/python-modules/ufo2ft/fonttools-cu2qu.patch
new file mode 100644
index 0000000000000..892cd4abeb308
--- /dev/null
+++ b/pkgs/development/python-modules/ufo2ft/fonttools-cu2qu.patch
@@ -0,0 +1,126 @@
+From 0b3631e91c93d56460929f40850f7d8a39a71bde Mon Sep 17 00:00:00 2001
+From: Simon Cozens <simon@simon-cozens.org>
+Date: Thu, 11 Feb 2021 09:43:41 +0000
+Subject: [PATCH 1/2] Rename cu2qu to fontTools.cu2qu
+
+---
+ Lib/ufo2ft/filters/cubicToQuadratic.py | 4 ++--
+ Lib/ufo2ft/preProcessor.py             | 4 ++--
+ requirements.txt                       | 1 -
+ setup.py                               | 1 -
+ tests/outlineCompiler_test.py          | 2 +-
+ tests/preProcessor_test.py             | 2 +-
+ 6 files changed, 6 insertions(+), 8 deletions(-)
+
+diff --git a/Lib/ufo2ft/filters/cubicToQuadratic.py b/Lib/ufo2ft/filters/cubicToQuadratic.py
+index 87d81b1f..4b77144f 100644
+--- a/Lib/ufo2ft/filters/cubicToQuadratic.py
++++ b/Lib/ufo2ft/filters/cubicToQuadratic.py
+@@ -1,7 +1,7 @@
+ import logging
+ 
+-from cu2qu.pens import Cu2QuPointPen
+-from cu2qu.ufo import CURVE_TYPE_LIB_KEY, DEFAULT_MAX_ERR
++from fontTools.pens.cu2quPen import Cu2QuPointPen
++from fontTools.cu2qu.ufo import CURVE_TYPE_LIB_KEY, DEFAULT_MAX_ERR
+ 
+ from ufo2ft.filters import BaseFilter
+ from ufo2ft.fontInfoData import getAttrWithFallback
+diff --git a/Lib/ufo2ft/preProcessor.py b/Lib/ufo2ft/preProcessor.py
+index 05ac47dc..c796df2e 100644
+--- a/Lib/ufo2ft/preProcessor.py
++++ b/Lib/ufo2ft/preProcessor.py
+@@ -217,7 +217,7 @@ def __init__(
+         layerNames=None,
+         skipExportGlyphs=None,
+     ):
+-        from cu2qu.ufo import DEFAULT_MAX_ERR
++        from fontTools.cu2qu.ufo import DEFAULT_MAX_ERR
+ 
+         self.ufos = ufos
+         self.inplace = inplace
+@@ -249,7 +249,7 @@ def __init__(
+             self.postFilters.append(post)
+ 
+     def process(self):
+-        from cu2qu.ufo import fonts_to_quadratic
++        from fontTools.cu2qu.ufo import fonts_to_quadratic
+ 
+         # first apply all custom pre-filters
+         for funcs, ufo, glyphSet in zip(self.preFilters, self.ufos, self.glyphSets):
+diff --git a/setup.py b/setup.py
+index 175429af..eef39ee1 100644
+--- a/setup.py
++++ b/setup.py
+@@ -30,7 +30,6 @@
+     tests_require=["pytest>=2.8"],
+     install_requires=[
+         "fonttools[ufo]>=4.28.5",
+-        "cu2qu>=1.6.7",
+         "cffsubr>=0.2.8",
+         "booleanOperations>=0.9.0",
+     ],
+diff --git a/tests/outlineCompiler_test.py b/tests/outlineCompiler_test.py
+index 74319184..e7b15a23 100644
+--- a/tests/outlineCompiler_test.py
++++ b/tests/outlineCompiler_test.py
+@@ -2,7 +2,7 @@
+ import os
+ 
+ import pytest
+-from cu2qu.ufo import font_to_quadratic
++from fontTools.cu2qu.ufo import font_to_quadratic
+ from fontTools.ttLib import TTFont
+ from fontTools.ttLib.tables._g_l_y_f import USE_MY_METRICS
+ 
+diff --git a/tests/preProcessor_test.py b/tests/preProcessor_test.py
+index 64196f92..87b23946 100644
+--- a/tests/preProcessor_test.py
++++ b/tests/preProcessor_test.py
+@@ -2,7 +2,7 @@
+ import os
+ 
+ import pytest
+-from cu2qu.ufo import CURVE_TYPE_LIB_KEY
++from fontTools.cu2qu.ufo import CURVE_TYPE_LIB_KEY
+ from fontTools import designspaceLib
+ 
+ import ufo2ft
+
+From 27c5af88ec2c3314618ecbf65104050a53508bb0 Mon Sep 17 00:00:00 2001
+From: Simon Cozens <simon@simon-cozens.org>
+Date: Thu, 11 Feb 2021 09:49:28 +0000
+Subject: [PATCH 2/2] Sort the imports
+
+---
+ Lib/ufo2ft/filters/cubicToQuadratic.py | 2 +-
+ tests/preProcessor_test.py             | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Lib/ufo2ft/filters/cubicToQuadratic.py b/Lib/ufo2ft/filters/cubicToQuadratic.py
+index 4b77144f..5f28ea42 100644
+--- a/Lib/ufo2ft/filters/cubicToQuadratic.py
++++ b/Lib/ufo2ft/filters/cubicToQuadratic.py
+@@ -1,7 +1,7 @@
+ import logging
+ 
+-from fontTools.pens.cu2quPen import Cu2QuPointPen
+ from fontTools.cu2qu.ufo import CURVE_TYPE_LIB_KEY, DEFAULT_MAX_ERR
++from fontTools.pens.cu2quPen import Cu2QuPointPen
+ 
+ from ufo2ft.filters import BaseFilter
+ from ufo2ft.fontInfoData import getAttrWithFallback
+diff --git a/tests/preProcessor_test.py b/tests/preProcessor_test.py
+index 87b23946..76ee495a 100644
+--- a/tests/preProcessor_test.py
++++ b/tests/preProcessor_test.py
+@@ -2,8 +2,8 @@
+ import os
+ 
+ import pytest
+-from fontTools.cu2qu.ufo import CURVE_TYPE_LIB_KEY
+ from fontTools import designspaceLib
++from fontTools.cu2qu.ufo import CURVE_TYPE_LIB_KEY
+ 
+ import ufo2ft
+ from ufo2ft.constants import (
diff --git a/pkgs/development/python-modules/ufoLib2/default.nix b/pkgs/development/python-modules/ufoLib2/default.nix
new file mode 100644
index 0000000000000..21894203d1ad9
--- /dev/null
+++ b/pkgs/development/python-modules/ufoLib2/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, attrs
+, fonttools
+, pytestCheckHook
+, fs
+}:
+
+buildPythonPackage rec {
+  pname = "ufoLib2";
+  version = "0.13.1";
+
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-MnWi2mI+bUt+4pyYTNs6W4a7wj8KHOlEhti7XDCKpHs=";
+  };
+
+  propagatedBuildInputs = [
+    attrs
+    fonttools
+    # required by fonttools[ufo]
+    fs
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+pythonImportsCheck = [ "ufoLib2" ];
+
+  meta = with lib; {
+    description = "Library to deal with UFO font sources";
+    homepage = "https://github.com/fonttools/ufoLib2";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jtojnar ];
+  };
+}
diff --git a/pkgs/development/python-modules/ujson/2.nix b/pkgs/development/python-modules/ujson/2.nix
deleted file mode 100644
index d9ec65c2392ee..0000000000000
--- a/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/pkgs/development/python-modules/ujson/default.nix b/pkgs/development/python-modules/ujson/default.nix
index 4d12af0689d8a..0d7faf93f9344 100644
--- a/pkgs/development/python-modules/ujson/default.nix
+++ b/pkgs/development/python-modules/ujson/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "ujson";
-  version = "4.3.0";
+  version = "5.1.0";
   disabled = isPyPy || pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "baee56eca35cb5fbe02c28bd9c0936be41a96fa5c0812d9d4b7edeb5c3d568a0";
+    sha256 = "a88944d2f99db71a3ca0c63d81f37e55b660edde0b07216fb65a3e46403ef004";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/umap-learn/default.nix b/pkgs/development/python-modules/umap-learn/default.nix
index 81d70b0afc0d9..91e8512d18d12 100644
--- a/pkgs/development/python-modules/umap-learn/default.nix
+++ b/pkgs/development/python-modules/umap-learn/default.nix
@@ -52,6 +52,9 @@ buildPythonPackage rec {
 
     # Flaky test. Fails with AssertionError sometimes.
     "test_sparse_hellinger"
+
+    # tensorflow maybe incompatible? https://github.com/lmcinnes/umap/issues/821
+    "test_save_load"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/umemcache/default.nix b/pkgs/development/python-modules/umemcache/default.nix
deleted file mode 100644
index 26f8ba02756ca..0000000000000
--- a/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/pkgs/development/python-modules/uncertainties/default.nix b/pkgs/development/python-modules/uncertainties/default.nix
index c132f50dbea0f..180baf0d4dded 100644
--- a/pkgs/development/python-modules/uncertainties/default.nix
+++ b/pkgs/development/python-modules/uncertainties/default.nix
@@ -14,7 +14,9 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ future ];
   checkInputs = [ nose numpy ];
 
-  checkPhase = "python setup.py nosetests -sv";
+  checkPhase = ''
+    nosetests -sv
+  '';
 
   meta = with lib; {
     homepage = "https://pythonhosted.org/uncertainties/";
diff --git a/pkgs/development/python-modules/unicodedata2/default.nix b/pkgs/development/python-modules/unicodedata2/default.nix
index 565f0f5572085..a14895fa7996c 100644
--- a/pkgs/development/python-modules/unicodedata2/default.nix
+++ b/pkgs/development/python-modules/unicodedata2/default.nix
@@ -1,18 +1,17 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pytest }:
+{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, isPy27 }:
 
 buildPythonPackage rec {
   pname = "unicodedata2";
-  version = "13.0.0-2";
+  version = "14.0.0";
 
-  src = fetchFromGitHub {
-    owner  = "mikekap";
-    repo   = pname;
-    rev    = version;
-    sha256 = "0p9brbiwyg98q52y0gfyps52xv57fwqfpq0mn18p1xc1imip3h2b";
+  disabled = isPy27;
+
+  src = fetchPypi {
+    inherit version pname;
+    sha256 = "110nnvh02ssp92xbmswy39aa186jrmb7m41x4220wigl8c0dzxs1";
   };
 
-  checkInputs = [ pytest ];
-  checkPhase = "pytest tests";
+  checkInputs = [ pytestCheckHook ];
 
   meta = with lib; {
     description = "Backport and updates for the unicodedata module";
diff --git a/pkgs/development/python-modules/unittest2/default.nix b/pkgs/development/python-modules/unittest2/default.nix
index ae8cab53b0c57..e044176242d55 100644
--- a/pkgs/development/python-modules/unittest2/default.nix
+++ b/pkgs/development/python-modules/unittest2/default.nix
@@ -3,6 +3,7 @@
 , fetchPypi
 , six
 , traceback2
+, pythonAtLeast
 }:
 
 buildPythonPackage rec {
@@ -16,14 +17,14 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ six traceback2 ];
 
-  # # 1.0.0 and up create a circle dependency with traceback2/pbr
+  # 1.0.0 and up create a circle dependency with traceback2/pbr
   doCheck = false;
 
   postPatch = ''
     # argparse is needed for python < 2.7, which we do not support anymore.
     substituteInPlace setup.py --replace "argparse" ""
 
-    # # fixes a transient error when collecting tests, see https://bugs.launchpad.net/python-neutronclient/+bug/1508547
+    # fixes a transient error when collecting tests, see https://bugs.launchpad.net/python-neutronclient/+bug/1508547
     sed -i '510i\        return None, False' unittest2/loader.py
     # https://github.com/pypa/packaging/pull/36
     sed -i 's/version=VERSION/version=str(VERSION)/' setup.py
@@ -31,8 +32,9 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "A backport of the new features added to the unittest testing framework";
-    homepage = "https://pypi.python.org/pypi/unittest2";
+    homepage = "https://pypi.org/project/unittest2/";
     license = licenses.bsd0;
+    # AttributeError: module 'collections' has no attribute 'MutableMapping'
+    broken = pythonAtLeast "3.10";
   };
-
 }
diff --git a/pkgs/development/python-modules/upb-lib/default.nix b/pkgs/development/python-modules/upb-lib/default.nix
index 356a290241ed4..52b422c0e1d31 100644
--- a/pkgs/development/python-modules/upb-lib/default.nix
+++ b/pkgs/development/python-modules/upb-lib/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "upb-lib";
-  version = "0.4.12";
+  version = "0.5.1";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e668055d9c389aefd09203afb96a950a320095f225ef0a1aa611e592db92a71b";
+    hash = "sha256-iXwJPe6YYG2TWiQ/dXbeIiadzGMgFzZa6Now692r+t0=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/uproot/default.nix b/pkgs/development/python-modules/uproot/default.nix
index ef262e057e245..bf523046c6166 100644
--- a/pkgs/development/python-modules/uproot/default.nix
+++ b/pkgs/development/python-modules/uproot/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "uproot";
-  version = "4.1.5";
+  version = "4.1.9";
 
   # fetch from github for tests
   src = fetchFromGitHub {
     owner = "scikit-hep";
     repo = "uproot4";
     rev = version;
-    sha256 = "sha256-zsmAdqoWvFhRRRw4fdbRhhKkDV5oP/eYsfpA0AVqAnI=";
+    sha256 = "035gljxm18hvpfvc7nsd7lhawwq3np5sg1y86pzcxc680c6rj6lx";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/uritemplate/default.nix b/pkgs/development/python-modules/uritemplate/default.nix
index 5077267528a5f..814e7fd8c19a0 100644
--- a/pkgs/development/python-modules/uritemplate/default.nix
+++ b/pkgs/development/python-modules/uritemplate/default.nix
@@ -1,25 +1,38 @@
-{ lib, buildPythonPackage, fetchPypi, simplejson, pytest, glibcLocales }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, simplejson
+, pytestCheckHook
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "uritemplate";
-  version = "3.0.1";
+  version = "4.1.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5af8ad10cec94f215e3f48112de2022e1d5a37ed427fbd88652fa908f2ab7cae";
+    sha256 = "sha256-Q0bt/Fw7efaUvM1tYJmjIrvrYo2/LNhu6lWkVs5RJPA=";
   };
 
-  propagatedBuildInputs = [ simplejson ];
+  propagatedBuildInputs = [
+    simplejson
+  ];
 
-  checkInputs = [ pytest glibcLocales ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  checkPhase = ''
-    LC_ALL=en_US.UTF-8 py.test
-  '';
+  pythonImportsCheck = [
+    "uritemplate"
+  ];
 
   meta = with lib; {
+    description = "Implementation of RFC 6570 URI templates";
     homepage = "https://github.com/python-hyper/uritemplate";
-    description = "URI template parsing for Humans";
     license = with licenses; [ asl20 bsd3 ];
     maintainers = with maintainers; [ matthiasbeyer ];
   };
diff --git a/pkgs/development/python-modules/uritools/default.nix b/pkgs/development/python-modules/uritools/default.nix
index 1d91504280844..3d1b274d06900 100644
--- a/pkgs/development/python-modules/uritools/default.nix
+++ b/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/pkgs/development/python-modules/url-normalize/default.nix b/pkgs/development/python-modules/url-normalize/default.nix
index ea7825d9ffd2b..3032f7791a704 100644
--- a/pkgs/development/python-modules/url-normalize/default.nix
+++ b/pkgs/development/python-modules/url-normalize/default.nix
@@ -1,8 +1,8 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, poetry
-, pytest-cov
+, fetchpatch
+, poetry-core
 , pytest-flakes
 , pytest-mock
 , pytest-socket
@@ -19,22 +19,41 @@ buildPythonPackage rec {
     owner = "niksite";
     repo = pname;
     rev = version;
-    sha256 = "09nac5nh94x0n4bfazjfxk96b20mfsx6r1fnvqv85gkzs0rwqkaq";
+    hash = "sha256-WE3MM9B/voI23taFbLp2FYhl0uxOfuUWsaCTBG1hyiY=";
   };
 
-  nativeBuildInputs = [ poetry ];
+  nativeBuildInputs = [
+    poetry-core
+  ];
 
-  propagatedBuildInputs = [ six ];
+  propagatedBuildInputs = [
+    six
+  ];
 
   checkInputs = [
-    pytest-cov
     pytest-flakes
     pytest-mock
     pytest-socket
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [ "url_normalize" ];
+  patches = [
+    # Switch to poetry-core, https://github.com/niksite/url-normalize/pull/28
+    (fetchpatch {
+      name = "switch-to-poetry-core.patch";
+      url = "https://github.com/niksite/url-normalize/commit/b8557b10c977b191cc9d37e6337afe874a24ad08.patch";
+      sha256 = "sha256-SVCQATV9V6HbLmjOHs7V7eBagO0PuqZLubIJghBYfQQ=";
+    })
+  ];
+
+  postPatch = ''
+    sed -i "/--cov/d" tox.ini
+    sed -i "/--flakes/d" tox.ini
+  '';
+
+  pythonImportsCheck = [
+    "url_normalize"
+  ];
 
   meta = with lib; {
     description = "URL normalization for Python";
diff --git a/pkgs/development/python-modules/urlextract/default.nix b/pkgs/development/python-modules/urlextract/default.nix
index cc5d2ae000caa..8d2c62de4e83a 100644
--- a/pkgs/development/python-modules/urlextract/default.nix
+++ b/pkgs/development/python-modules/urlextract/default.nix
@@ -1,27 +1,31 @@
 { lib
-, appdirs
 , buildPythonPackage
 , dnspython
 , fetchPypi
 , filelock
 , idna
+, platformdirs
 , pytestCheckHook
+, pythonOlder
 , uritools
 }:
 
 buildPythonPackage rec {
   pname = "urlextract";
-  version = "1.4.0";
+  version = "1.5.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "669f07192584b841b49ba8868fbd6b00e7ddc28367d36a3d8ca8c8e429420748";
+    hash = "sha256-QKXIQ9HXJTdY9W8NZ0jF6iekoUVl46kvJakW3cTB5B8=";
   };
 
   propagatedBuildInputs = [
-    appdirs
     filelock
     idna
+    platformdirs
     uritools
   ];
 
@@ -39,7 +43,9 @@ buildPythonPackage rec {
     "test_dns_cache_reuse"
   ];
 
-  pythonImportsCheck = [ "urlextract" ];
+  pythonImportsCheck = [
+    "urlextract"
+  ];
 
   meta = with lib; {
     description = "Collects and extracts URLs from given text";
diff --git a/pkgs/development/python-modules/urllib3/2.nix b/pkgs/development/python-modules/urllib3/2.nix
deleted file mode 100644
index a52e68eac5e3e..0000000000000
--- a/pkgs/development/python-modules/urllib3/2.nix
+++ /dev/null
@@ -1,81 +0,0 @@
-{ lib
-, brotli
-, buildPythonPackage
-, certifi
-, cryptography
-, python-dateutil
-, fetchpatch
-, fetchPypi
-, idna
-, mock
-, pyopenssl
-, pysocks
-, pytest-freezegun
-, pytest-timeout
-, pytestCheckHook
-, tornado
-, trustme
-}:
-
-buildPythonPackage rec {
-  pname = "urllib3";
-  version = "1.26.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08";
-  };
-
-  patches = [
-    (fetchpatch {
-      name = "CVE-2021-28363.patch";
-      url = "https://github.com/urllib3/urllib3/commit/8d65ea1ecf6e2cdc27d42124e587c1b83a3118b0.patch";
-      sha256 = "1lqhrd11p03iv14bp89rh67ynf000swmwsfvr3jpfdycdqr3ka9q";
-    })
-  ];
-
-  propagatedBuildInputs = [
-    brotli
-    certifi
-    cryptography
-    idna
-    pyopenssl
-    pysocks
-  ];
-
-  checkInputs = [
-    python-dateutil
-    mock
-    pytest-freezegun
-    pytest-timeout
-    pytestCheckHook
-    tornado
-    trustme
-  ];
-
-  # Tests in urllib3 are mostly timeout-based instead of event-based and
-  # are therefore inherently flaky. On your own machine, the tests will
-  # typically build fine, but on a loaded cluster such as Hydra random
-  # timeouts will occur.
-  #
-  # The urllib3 test suite has two different timeouts in their test suite
-  # (see `test/__init__.py`):
-  # - SHORT_TIMEOUT
-  # - LONG_TIMEOUT
-  # When CI is in the env, LONG_TIMEOUT will be significantly increased.
-  # Still, failures can occur and for that reason tests are disabled.
-  doCheck = false;
-
-  preCheck = ''
-    export CI # Increases LONG_TIMEOUT
-  '';
-
-  pythonImportsCheck = [ "urllib3" ];
-
-  meta = with lib; {
-    description = "Powerful, sanity-friendly HTTP client for Python";
-    homepage = "https://github.com/shazow/urllib3";
-    license = licenses.mit;
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/pkgs/development/python-modules/urllib3/default.nix b/pkgs/development/python-modules/urllib3/default.nix
index 91bc6e68eb365..4c1a61b09fc64 100644
--- a/pkgs/development/python-modules/urllib3/default.nix
+++ b/pkgs/development/python-modules/urllib3/default.nix
@@ -18,11 +18,12 @@
 
 buildPythonPackage rec {
   pname = "urllib3";
-  version = "1.26.7";
+  version = "1.26.8";
+  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-SYfGVVT3otvzDBj9SHeO8SSvb6t3GjdxA9oFheIzbs4=";
+    hash = "sha256-Dnwz2aY+fd/LhngKrIe+/C+930bFjbtIfghV987sKDw=";
   };
 
   propagatedBuildInputs = [
@@ -61,7 +62,9 @@ buildPythonPackage rec {
     export CI # Increases LONG_TIMEOUT
   '';
 
-  pythonImportsCheck = [ "urllib3" ];
+  pythonImportsCheck = [
+    "urllib3"
+  ];
 
   meta = with lib; {
     description = "Powerful, sanity-friendly HTTP client for Python";
diff --git a/pkgs/development/python-modules/userpath/default.nix b/pkgs/development/python-modules/userpath/default.nix
index 6ce92e9f3b47b..636409f1d9675 100644
--- a/pkgs/development/python-modules/userpath/default.nix
+++ b/pkgs/development/python-modules/userpath/default.nix
@@ -24,6 +24,6 @@ buildPythonPackage rec {
     description = "Cross-platform tool for adding locations to the user PATH";
     homepage = "https://github.com/ofek/userpath";
     license = [ licenses.asl20 licenses.mit ];
-    maintainers = with maintainers; [ yevhenshymotiuk ];
+    maintainers = with maintainers; [ yshym ];
   };
 }
diff --git a/pkgs/development/python-modules/uvicorn/default.nix b/pkgs/development/python-modules/uvicorn/default.nix
index 57c6bf9253571..4ce9228efee88 100644
--- a/pkgs/development/python-modules/uvicorn/default.nix
+++ b/pkgs/development/python-modules/uvicorn/default.nix
@@ -19,14 +19,14 @@
 
 buildPythonPackage rec {
   pname = "uvicorn";
-  version = "0.14.0";
+  version = "0.16.0";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "encode";
     repo = pname;
     rev = version;
-    sha256 = "164x92k3rs47ihkmwq5av396576dxp4rzv6557pwgc1ign2ikqy1";
+    sha256 = "14jih6j4q2qp5c9rgl798i5p51b4y6zkkj434q2l1naw0csphk4s";
   };
 
   outputs = [
diff --git a/pkgs/development/python-modules/uvloop/default.nix b/pkgs/development/python-modules/uvloop/default.nix
index c7e11ab6c2582..41a0972a3155b 100644
--- a/pkgs/development/python-modules/uvloop/default.nix
+++ b/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/pkgs/development/python-modules/variants/default.nix b/pkgs/development/python-modules/variants/default.nix
index 2055a48134472..e23407ab06b36 100644
--- a/pkgs/development/python-modules/variants/default.nix
+++ b/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/pkgs/development/python-modules/vcrpy/3.nix b/pkgs/development/python-modules/vcrpy/3.nix
deleted file mode 100644
index ddd4015aad1e7..0000000000000
--- a/pkgs/development/python-modules/vcrpy/3.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ buildPythonPackage
-, lib
-, six
-, fetchPypi
-, pyyaml
-, mock
-, contextlib2
-, wrapt
-, pytest
-, pytest-httpbin
-, yarl
-, pythonOlder
-, pythonAtLeast
-}:
-
-buildPythonPackage rec {
-  pname = "vcrpy";
-  version = "3.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "21168d5ae14263a833d4b71acfd8278d8841114f24be1b4ab4a5719d0c7f07bc";
-  };
-
-  checkInputs = [
-    pytest
-    pytest-httpbin
-  ];
-
-  propagatedBuildInputs = [
-    pyyaml
-    wrapt
-    six
-  ]
-  ++ lib.optionals (pythonOlder "3.3") [ contextlib2 mock ]
-  ++ lib.optionals (pythonAtLeast "3.4") [ yarl ];
-
-  checkPhase = ''
-    py.test --ignore=tests/integration -k "not TestVCRConnection"
-  '';
-
-  meta = with lib; {
-    description = "Automatically mock your HTTP interactions to simplify and speed up testing";
-    homepage = "https://github.com/kevin1024/vcrpy";
-    license = licenses.mit;
-  };
-}
-
diff --git a/pkgs/development/python-modules/vega/default.nix b/pkgs/development/python-modules/vega/default.nix
index 50fc4275c9be6..9bc8759631639 100644
--- a/pkgs/development/python-modules/vega/default.nix
+++ b/pkgs/development/python-modules/vega/default.nix
@@ -3,12 +3,12 @@
 
 buildPythonPackage rec {
   pname = "vega";
-  version = "3.5.0";
+  version = "3.6.0";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1c22877758cef97e81dbb665c83d31f7427bbc804a01503fa2845a35403c54ad";
+    sha256 = "sha256-cO+7Ynbv/+uoNUOPQvDNZji04llHUBlm95Cyfy+Ny80=";
   };
 
   propagatedBuildInputs = [ jupyter jupyter_core pandas ipywidgets ];
diff --git a/pkgs/development/python-modules/velbus-aio/default.nix b/pkgs/development/python-modules/velbus-aio/default.nix
index e871912adf7aa..efa5a0fc29f8f 100644
--- a/pkgs/development/python-modules/velbus-aio/default.nix
+++ b/pkgs/development/python-modules/velbus-aio/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "velbus-aio";
-  version = "2021.11.7";
+  version = "2022.2.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "Cereal2nd";
     repo = pname;
     rev = version;
-    sha256 = "0i1vfyhyvn908vz55agmfds3zwp6qpbpip055d995nx79ysxz0j9";
+    sha256 = "sha256-oWHyEw1DjMynLPAARcVaqsFccpnTk1/7gpq+8TU95d0=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/development/python-modules/versionfinder/default.nix b/pkgs/development/python-modules/versionfinder/default.nix
index 69d77551fcd34..951ae8d9874da 100644
--- a/pkgs/development/python-modules/versionfinder/default.nix
+++ b/pkgs/development/python-modules/versionfinder/default.nix
@@ -1,8 +1,19 @@
-{ lib, buildPythonPackage, fetchFromGitHub, GitPython, pytestCheckHook, backoff, requests }:
+{ lib
+, backoff
+, buildPythonPackage
+, fetchFromGitHub
+, GitPython
+, pytestCheckHook
+, pythonOlder
+, requests
+}:
 
 buildPythonPackage rec {
   pname = "versionfinder";
   version = "1.1.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "jantman";
@@ -22,11 +33,18 @@ buildPythonPackage rec {
   ];
 
   disabledTestPaths = [
-    # acceptance tests use the network
+    # Acceptance tests use the network
     "versionfinder/tests/test_acceptance.py"
   ];
 
-  pythonImportsCheck = [ "versionfinder" ];
+  disabledTests = [
+    # Tests are out-dated
+    "TestFindPipInfo"
+  ];
+
+  pythonImportsCheck = [
+    "versionfinder"
+  ];
 
   meta = with lib; {
     description = "Find the version of another package, whether installed via pip, setuptools or git";
diff --git a/pkgs/development/python-modules/versiontag/default.nix b/pkgs/development/python-modules/versiontag/default.nix
index aebf40a40f513..8c4bb49ebaff1 100644
--- a/pkgs/development/python-modules/versiontag/default.nix
+++ b/pkgs/development/python-modules/versiontag/default.nix
@@ -11,6 +11,11 @@ buildPythonPackage rec {
     sha256 = "1axv2214ykgv5adajv10v2zy5fr9v77db54rkik6ja29p66zl90n";
   };
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "get_version(pypi=True)" '"${version}"'
+  '';
+
   checkInputs = [ git ];
 
   pythonImportsCheck = [ "versiontag" ];
diff --git a/pkgs/development/python-modules/vertica-python/default.nix b/pkgs/development/python-modules/vertica-python/default.nix
index cc6655a3b6c44..a456c5232d803 100644
--- a/pkgs/development/python-modules/vertica-python/default.nix
+++ b/pkgs/development/python-modules/vertica-python/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "vertica-python";
-  version = "1.0.2";
+  version = "1.0.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ce0abfc5909d06031dc612ec321d7f75df50bcb47a31e14e882a299cea2ea7a3";
+    sha256 = "cfe1794c5ba9fdfbd470a55d82f60c2e08e129828367753bf64199a58a539bc2";
   };
 
   propagatedBuildInputs = [ future python-dateutil six ];
diff --git a/pkgs/development/python-modules/vine/default.nix b/pkgs/development/python-modules/vine/default.nix
index 8fc895cfa44c3..3f272a84b89b4 100644
--- a/pkgs/development/python-modules/vine/default.nix
+++ b/pkgs/development/python-modules/vine/default.nix
@@ -1,22 +1,36 @@
-{ lib, buildPythonPackage, fetchPypi
-, case, pytest, pythonOlder }:
+{ lib
+, buildPythonPackage
+, case
+, fetchPypi
+, pytestCheckHook
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "vine";
   version = "5.0.0";
+  format = "setuptools";
 
-  disable = pythonOlder "2.7";
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7d3b1624a953da82ef63462013bbd271d3eb75751489f9807598e8f340bd637e";
+    hash = "sha256-fTsWJKlT2oLvY0YgE7vScdPrdXUUifmAdZjo80C9Y34=";
   };
 
-  buildInputs = [ case pytest ];
+  checkInputs = [
+    case
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "vine"
+  ];
 
   meta = with lib; {
     description = "Python promises";
     homepage = "https://github.com/celery/vine";
     license = licenses.bsd3;
+    maintainers = with maintainers; [ fab ];
   };
 }
diff --git a/pkgs/development/python-modules/virtual-display/default.nix b/pkgs/development/python-modules/virtual-display/default.nix
index f2f6dd31a5040..bc7469e1d61a0 100644
--- a/pkgs/development/python-modules/virtual-display/default.nix
+++ b/pkgs/development/python-modules/virtual-display/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "PyVirtualDisplay";
-  version = "2.2";
+  version = "3.0";
 
   propagatedBuildInputs = [ EasyProcess ];
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3ecda6b183b03ba65dcfdf0019809722480d7b7e10eea6e3a40bf1ba3146bab7";
+    sha256 = "sha256-CXVbw86263JfsH7KVCX0PyNY078I4A0qm3kqGu3RYVk=";
   };
 
   # requires X server
diff --git a/pkgs/development/python-modules/virtualenv/default.nix b/pkgs/development/python-modules/virtualenv/default.nix
index d51b3d7837965..c463c37747eaa 100644
--- a/pkgs/development/python-modules/virtualenv/default.nix
+++ b/pkgs/development/python-modules/virtualenv/default.nix
@@ -23,11 +23,11 @@
 
 buildPythonPackage rec {
   pname = "virtualenv";
-  version = "20.10.0";
+  version = "20.13.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "576d05b46eace16a9c348085f7d0dc8ef28713a2cabaa1cf0aea41e8f12c9218";
+    sha256 = "d8458cf8d59d0ea495ad9b34c2599487f8a7772d796f9910858376d1600dd2dd";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/vispy/default.nix b/pkgs/development/python-modules/vispy/default.nix
index 5967b9b9abb76..47a966332548c 100644
--- a/pkgs/development/python-modules/vispy/default.nix
+++ b/pkgs/development/python-modules/vispy/default.nix
@@ -16,11 +16,11 @@
 
 buildPythonPackage rec {
   pname = "vispy";
-  version = "0.9.4";
+  version = "0.9.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8561e41bbcca5fadce4a8d974ca2f96cbe7710d835bfed6a55ed6d10900ef5d5";
+    sha256 = "sha256-ISzVtQgkSZu84+LXQaray3nAt3GsVm+THGE1WXYCi8s=";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/vivisect/default.nix b/pkgs/development/python-modules/vivisect/default.nix
index d664cf1d27fee..ddf6ce54b25ea 100644
--- a/pkgs/development/python-modules/vivisect/default.nix
+++ b/pkgs/development/python-modules/vivisect/default.nix
@@ -10,12 +10,12 @@
 }:
 buildPythonPackage rec {
   pname = "vivisect";
-  version = "1.0.5";
+  version = "1.0.7";
   disabled = isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f629dc0143656b06b64e2da1772deda67d37a3e048e74bd728de4a4f24bf877b";
+    sha256 = "727a27ac1eb95d5a41f4430f6912e79940525551314fe68a2811fc9d51eaf2e9";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/vowpalwabbit/default.nix b/pkgs/development/python-modules/vowpalwabbit/default.nix
index 2f950ecd6c44b..87c3d7fe30c3c 100644
--- a/pkgs/development/python-modules/vowpalwabbit/default.nix
+++ b/pkgs/development/python-modules/vowpalwabbit/default.nix
@@ -18,11 +18,11 @@
 
 buildPythonPackage rec {
   pname = "vowpalwabbit";
-  version = "8.11.0";
+  version = "9.0.1";
 
   src = fetchPypi{
     inherit pname version;
-    sha256 = "cfde0515a3fa4d224aad5461135372f3441ae1a64717ae6bff5e23509d70b0bd";
+    sha256 = "sha256-rDUgOjroY8S73+s+MWyBl86u+8XCH4O8KMCo9zUlqAs=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/vt-py/default.nix b/pkgs/development/python-modules/vt-py/default.nix
index 80c297fe773ca..2d0988473ddb8 100644
--- a/pkgs/development/python-modules/vt-py/default.nix
+++ b/pkgs/development/python-modules/vt-py/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "vt-py";
-  version = "0.11.0";
+  version = "0.13.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -18,8 +18,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "VirusTotal";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "sha256-PpgN9adGNZOorOUigsBVOb//ZafUaYHfo/Fv1IZf/XA=";
+    rev = version;
+    sha256 = "sha256-85ohhynXHWjuwKB18DciB48tNGZcHzafobMDaGoTkoc=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/waitress-django/default.nix b/pkgs/development/python-modules/waitress-django/default.nix
index e76d1f1102966..4e40980d917a2 100644
--- a/pkgs/development/python-modules/waitress-django/default.nix
+++ b/pkgs/development/python-modules/waitress-django/default.nix
@@ -1,11 +1,16 @@
-{ buildPythonPackage, django, waitress }:
+{ lib, buildPythonPackage, django, waitress }:
 
 buildPythonPackage {
   pname = "waitress-django";
-  version = "0.0.0";
+  version = "1.0.0";
 
   src = ./.;
   pythonPath = [ django waitress ];
   doCheck = false;
-  meta.description = "A waitress WSGI server serving django";
+
+  meta = with lib; {
+    description = "A waitress WSGI server serving django";
+    license = licenses.mit;
+    maintainers = with maintainers; [ basvandijk ];
+  };
 }
diff --git a/pkgs/development/python-modules/waitress-django/setup.py b/pkgs/development/python-modules/waitress-django/setup.py
index 07f7b326fdafb..16fde78f42a9f 100644
--- a/pkgs/development/python-modules/waitress-django/setup.py
+++ b/pkgs/development/python-modules/waitress-django/setup.py
@@ -3,7 +3,7 @@
 from distutils.core import setup
 
 setup( name         = "waitress-django"
-     , version      = "0.0.0"
+     , version      = "1.0.0"
      , description  = "A waitress WSGI server serving django"
      , author       = "Bas van Dijk"
      , author_email = "v.dijk.bas@gmail.com"
diff --git a/pkgs/development/python-modules/wandb/default.nix b/pkgs/development/python-modules/wandb/default.nix
new file mode 100644
index 0000000000000..6b10b30a1930d
--- /dev/null
+++ b/pkgs/development/python-modules/wandb/default.nix
@@ -0,0 +1,140 @@
+{ azure-core
+, bokeh
+, buildPythonPackage
+, click
+, configparser
+, docker_pycreds
+, fetchFromGitHub
+, flask
+, git
+, GitPython
+, jsonref
+, jsonschema
+, lib
+, matplotlib
+, nbformat
+, pandas
+, pathtools
+, promise
+, protobuf
+, psutil
+, pydantic
+, pytest-mock
+, pytest-xdist
+, pytestCheckHook
+, python
+, python-dateutil
+, pyyaml
+, requests
+, scikit-learn
+, sentry-sdk
+, setuptools
+, shortuuid
+, stdenv
+, tqdm
+, yaspin
+}:
+
+buildPythonPackage rec {
+  pname = "wandb";
+  version = "0.12.10";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = "client";
+    rev = "v${version}";
+    sha256 = "198c6zx7xih74cw0dwfqw7s7b7whik7wv4nfq6x6xw0kw86r6hby";
+  };
+
+  # The wandb requirements.txt does not distinguish python2/3 dependencies. We
+  # need to drop the subprocess32 dependency when building for python3.
+  patchPhase = ''
+    substituteInPlace requirements.txt --replace "subprocess32>=3.5.3" ""
+  '';
+
+  # git is not a setup.py dependency of wandb, but wandb does expect git to be
+  # in PATH. See https://gist.github.com/samuela/57aeee710e41ab2bf361b7ed8fbbeabf
+  # for the error message, and an example usage here: https://github.com/wandb/client/blob/master/wandb/sdk/internal/meta.py#L139-L141.
+  # setuptools is necessary since pkg_resources is required at runtime.
+  propagatedBuildInputs = [
+    click
+    configparser
+    docker_pycreds
+    git
+    GitPython
+    pathtools
+    promise
+    protobuf
+    psutil
+    python-dateutil
+    pyyaml
+    requests
+    sentry-sdk
+    setuptools
+    shortuuid
+    yaspin
+  ];
+
+  disabledTestPaths = [
+    # Tests that try to get chatty over sockets or spin up servers, not possible in the nix build environment.
+    "tests/test_cli.py"
+    "tests/test_data_types.py"
+    "tests/test_file_stream.py"
+    "tests/test_file_upload.py"
+    "tests/test_footer.py"
+    "tests/test_internal_api.py"
+    "tests/test_label_full.py"
+    "tests/test_login.py"
+    "tests/test_meta.py"
+    "tests/test_metric_full.py"
+    "tests/test_metric_internal.py"
+    "tests/test_mode_disabled.py"
+    "tests/test_mp_full.py"
+    "tests/test_public_api.py"
+    "tests/test_redir.py"
+    "tests/test_runtime.py"
+    "tests/test_sender.py"
+    "tests/test_start_method.py"
+    "tests/test_tb_watcher.py"
+    "tests/test_telemetry_full.py"
+    "tests/wandb_agent_test.py"
+    "tests/wandb_artifacts_test.py"
+    "tests/wandb_history_test.py"
+    "tests/wandb_integration_test.py"
+    "tests/wandb_run_test.py"
+    "tests/wandb_settings_test.py"
+    "tests/wandb_sweep_test.py"
+
+    # Fails and borks the pytest runner as well.
+    "tests/wandb_test.py"
+
+    # Tries to access /homeless-shelter
+    "tests/test_tables.py"
+  ];
+
+  checkInputs = [
+    azure-core
+    bokeh
+    flask
+    jsonref
+    jsonschema
+    matplotlib
+    nbformat
+    pandas
+    pydantic
+    pytest-mock
+    pytest-xdist
+    pytestCheckHook
+    scikit-learn
+    tqdm
+  ];
+
+  pythonImportsCheck = [ "wandb" ];
+
+  meta = with lib; {
+    description = "A CLI and library for interacting with the Weights and Biases API";
+    homepage = "https://github.com/wandb/client";
+    license = licenses.mit;
+    maintainers = with maintainers; [ samuela ];
+  };
+}
diff --git a/pkgs/development/python-modules/warcio/default.nix b/pkgs/development/python-modules/warcio/default.nix
new file mode 100644
index 0000000000000..ae870a37fe57a
--- /dev/null
+++ b/pkgs/development/python-modules/warcio/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, fetchpatch
+, six
+, setuptools
+, pytestCheckHook
+, httpbin
+, requests
+, wsgiprox
+, multidict
+}:
+
+buildPythonPackage rec {
+  pname = "warcio";
+  version = "1.7.4";
+
+  src = fetchFromGitHub {
+    owner = "webrecorder";
+    repo = "warcio";
+    rev = "aa702cb321621b233c6e5d2a4780151282a778be"; # Repo has no git tags, see https://github.com/webrecorder/warcio/issues/126
+    sha256 = "sha256-wn2rd73wRfOqHu9H0GIn76tmEsERBBCQatnk4b/JToU=";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "add-offline-option.patch";
+      url = "https://github.com/webrecorder/warcio/pull/135/commits/2546fe457c57ab0b391764a4ce419656458d9d07.patch";
+      sha256 = "sha256-3izm9LvAeOFixiIUUqmd5flZIxH92+NxL7jeu35aObQ=";
+    })
+  ];
+
+  propagatedBuildInputs = [
+    six
+    setuptools
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    httpbin
+    requests
+    wsgiprox
+    multidict # Optional. Without this, one test in test/test_utils.py is skipped.
+  ];
+
+  pytestFlagsArray = [ "--offline" ];
+
+  pythonImportsCheck = [ "warcio" ];
+
+  meta = with lib; {
+    description = "Streaming WARC/ARC library for fast web archive IO";
+    homepage = "https://github.com/webrecorder/warcio";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ Luflosi ];
+  };
+}
diff --git a/pkgs/development/python-modules/warlock/default.nix b/pkgs/development/python-modules/warlock/default.nix
index 1b62c918f3395..c20723e8d6e25 100644
--- a/pkgs/development/python-modules/warlock/default.nix
+++ b/pkgs/development/python-modules/warlock/default.nix
@@ -1,27 +1,56 @@
 { lib
 , buildPythonPackage
-, fetchPypi
-, six
+, fetchFromGitHub
+, pythonOlder
 , jsonpatch
 , jsonschema
-, jsonpointer
+, six
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "warlock";
   version = "1.3.3";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "a093c4d04b42b7907f69086e476a766b7639dca50d95edc83aef6aeab9db2090";
+  src = fetchFromGitHub {
+    owner = "bcwaldon";
+    repo = pname;
+    rev = version;
+    hash = "sha256-59V4KOwjs/vhA3F3E0j3p5L4JnKPgcExN+mgSWs0Cn0=";
   };
 
-  propagatedBuildInputs = [ six jsonpatch jsonschema jsonpointer ];
+  postPatch = ''
+    substituteInPlace requirements.txt \
+      --replace "jsonschema>=0.7,<4" "jsonschema"
+    sed -i "/--cov/d" pytest.ini
+  '';
+
+  propagatedBuildInputs = [
+    jsonpatch
+    jsonschema
+    six
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # https://github.com/bcwaldon/warlock/issues/64
+    "test_recursive_models"
+  ];
+
+  pythonImportsCheck = [
+    "warlock"
+  ];
 
   meta = with lib; {
-    homepage = "https://github.com/bcwaldon/warlock";
     description = "Python object model built on JSON schema and JSON patch";
+    homepage = "https://github.com/bcwaldon/warlock";
     license = licenses.asl20;
+    maintainers = with maintainers; [ ];
   };
-
 }
diff --git a/pkgs/development/python-modules/warrant-lite/default.nix b/pkgs/development/python-modules/warrant-lite/default.nix
new file mode 100644
index 0000000000000..4d5d77c2e84db
--- /dev/null
+++ b/pkgs/development/python-modules/warrant-lite/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, boto3
+, envs
+, python-jose
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "warrant-lite";
+  version = "1.0.4";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-FunWoslZn3o0WHet2+LtggO3bbbe2ULMXW93q07GxJ4=";
+  };
+
+  propagatedBuildInputs = [
+    boto3
+    envs
+    python-jose
+    requests
+  ];
+
+  postPatch = ''
+    # requirements.txt is not part of the source
+    substituteInPlace setup.py \
+      --replace "parse_requirements('requirements.txt')," "[],"
+  '';
+
+  # Tests require credentials
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "warrant_lite"
+  ];
+
+  meta = with lib; {
+    description = "Module for process SRP requests for AWS Cognito";
+    homepage = "https://github.com/capless/warrant-lite";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/wasmer/default.nix b/pkgs/development/python-modules/wasmer/default.nix
index dff14d15b901f..4a99f048d1a6b 100644
--- a/pkgs/development/python-modules/wasmer/default.nix
+++ b/pkgs/development/python-modules/wasmer/default.nix
@@ -5,7 +5,6 @@
 , fetchFromGitHub
 , buildPythonPackage
 , libiconv
-, llvm_11
 , libffi
 , libxml2
 , ncurses
@@ -21,7 +20,7 @@ let
     , extraBuildInputs ? [ ]
     }: buildPythonPackage rec {
       inherit pname;
-      version = "1.0.0";
+      version = "1.1.0";
       format = "pyproject";
 
       outputs = [ "out" ] ++ lib.optional (pname == "wasmer") "testsout";
@@ -30,7 +29,7 @@ let
         owner = "wasmerio";
         repo = "wasmer-python";
         rev = version;
-        hash = "sha256-I1GfjLaPYMIHKh2m/5IQepUsJNiVUEJg49wyuuzUYtY=";
+        hash = "sha256-nOeOhQ1XY+9qmLGURrI5xbgBUgWe5XRpV38f73kKX2s=";
       };
 
       cargoDeps = rustPlatform.fetchCargoTarball {
@@ -74,26 +73,26 @@ rec {
   wasmer = common {
     pname = "wasmer";
     buildAndTestSubdir = "packages/api";
-    cargoHash = "sha256-txOOia1C4W+nsXuXp4EytEn82CFfSmiOYwRLC4WPImc=";
+    cargoHash = "sha256-twoog8LjQtoli+TlDipSuB7yLFkXQJha9BqobqgZW3Y=";
   };
 
   wasmer-compiler-cranelift = common {
     pname = "wasmer-compiler-cranelift";
     buildAndTestSubdir = "packages/compiler-cranelift";
-    cargoHash = "sha256-cHgAUwqnbQV3E5nUYGYQ48ntbIFfq4JXfU5IrSFZ3zI=";
+    cargoHash = "sha256-IqeMOY6emhIC7ekH8kIOZCr3JVkjxUg/lQli+ZZpdq4=";
   };
 
   wasmer-compiler-llvm = common {
     pname = "wasmer-compiler-llvm";
     buildAndTestSubdir = "packages/compiler-llvm";
-    cargoHash = "sha256-Jm22CC5S3pN/vdVvsGZdvtoAgPzWVLto8wavSJdxY3A=";
-    extraNativeBuildInputs = [ llvm_11 ];
+    cargoHash = "sha256-xawbf5gXXV+7I2F2fDSaMvjtFvGDBtqX7wL3c28TSbA=";
+    extraNativeBuildInputs = [ rustPlatform.rust.rustc.llvm ];
     extraBuildInputs = [ libffi libxml2.out ncurses zlib ];
   };
 
   wasmer-compiler-singlepass = common {
     pname = "wasmer-compiler-singlepass";
     buildAndTestSubdir = "packages/compiler-singlepass";
-    cargoHash = "sha256-lmqEo3+jYoN+4EEYphcoE4b84jdFcvYVycjrJ956Bh8=";
+    cargoHash = "sha256-4nZHMCNumNhdGPOmHXlJ5POYP7K+VPjwhEUMgzGb/Rk=";
   };
 }
diff --git a/pkgs/development/python-modules/watermark/default.nix b/pkgs/development/python-modules/watermark/default.nix
index 2bbb281f081b2..b6403a38dfb03 100644
--- a/pkgs/development/python-modules/watermark/default.nix
+++ b/pkgs/development/python-modules/watermark/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "watermark";
-  version = "2.2.0";
+  version = "2.3.0";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "rasbt";
     repo = pname;
-    rev = "d3553b68dd30ac5b0951a6fae6083236e4c7f3bd";
-    sha256 = "0w2mzi344x1mrv8d9jca67bhig34jissr9sqrk68gpg5n10alblb";
+    rev = "v${version}";
+    sha256 = "1kl9yn1pkl84d3lcz7bvphqkydsgs0p5k0ja0msy3hrxxfzdzd16";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/wavedrom/default.nix b/pkgs/development/python-modules/wavedrom/default.nix
index 9068293631088..d8db35fbdaebc 100644
--- a/pkgs/development/python-modules/wavedrom/default.nix
+++ b/pkgs/development/python-modules/wavedrom/default.nix
@@ -1,8 +1,8 @@
 { lib
-, buildPythonPackage
-, fetchPypi
 , attrdict
+, buildPythonPackage
 , cairosvg
+, fetchPypi
 , pillow
 , pytestCheckHook
 , setuptools-scm
@@ -14,9 +14,11 @@
 buildPythonPackage rec {
   pname = "wavedrom";
   version = "2.0.3.post2";
+  format = "setuptools";
+
   src = fetchPypi {
     inherit pname version;
-    sha256 = "239b3435ff116b09007d5517eed755fc8591891b7271a1cd40db9e400c02448d";
+    hash = "sha256-I5s0Nf8RawkAfVUX7tdV/IWRiRtycaHNQNueQAwCRI0=";
   };
 
   SETUPTOOLS_SCM_PRETEND_VERSION = version;
@@ -32,22 +34,25 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
+    cairosvg
+    pillow
     pytestCheckHook
     xmldiff
-    pillow
-    cairosvg
   ];
 
   disabledTests = [
-    "test_upstream"  # requires to clone a full git repository
+    # Requires to clone a full git repository
+    "test_upstream"
   ];
 
-  pythonImportsCheck = [ "wavedrom" ];
+  pythonImportsCheck = [
+    "wavedrom"
+  ];
 
-  meta = {
+  meta = with lib; {
     description = "WaveDrom compatible Python command line";
     homepage = "https://github.com/wallento/wavedrompy";
-    license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ airwoodix ];
+    license = licenses.mit;
+    maintainers = with maintainers; [ airwoodix ];
   };
 }
diff --git a/pkgs/development/python-modules/wazeroutecalculator/default.nix b/pkgs/development/python-modules/wazeroutecalculator/default.nix
index dd84096246487..dd561d1c05683 100644
--- a/pkgs/development/python-modules/wazeroutecalculator/default.nix
+++ b/pkgs/development/python-modules/wazeroutecalculator/default.nix
@@ -2,16 +2,20 @@
 , buildPythonPackage
 , fetchPypi
 , requests
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "wazeroutecalculator";
-  version = "0.13";
+  version = "0.15";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     pname = "WazeRouteCalculator";
     inherit version;
-    sha256 = "sha256-Ex9yglaJkk0+Uo3Y+xpimb5boXz+4QdbJS2O75U6dUg=";
+    sha256 = "sha256-DB5oWthWNwamFG3kNxA/kmUBOVogoSg5LI2KrI39s4M=";
   };
 
   propagatedBuildInputs = [
@@ -21,7 +25,9 @@ buildPythonPackage rec {
   # there are no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "WazeRouteCalculator" ];
+  pythonImportsCheck = [
+    "WazeRouteCalculator"
+  ];
 
   meta = with lib; {
     description = "Calculate actual route time and distance with Waze API";
diff --git a/pkgs/development/python-modules/weasyprint/default.nix b/pkgs/development/python-modules/weasyprint/default.nix
index f43fd2d5462b6..27c7521cef861 100644
--- a/pkgs/development/python-modules/weasyprint/default.nix
+++ b/pkgs/development/python-modules/weasyprint/default.nix
@@ -4,6 +4,7 @@
 , pytestCheckHook
 , brotli
 , cairosvg
+, flit-core
 , fonttools
 , pydyf
 , pyphen
@@ -26,32 +27,33 @@
 
 buildPythonPackage rec {
   pname = "weasyprint";
-  version = "53.4";
+  version = "54.1";
   disabled = !isPy3k;
 
+  format = "pyproject";
+
   src = fetchPypi {
     inherit version;
     pname = "weasyprint";
-    sha256 = "sha256-EMyxfVXHMJa98e3T7+WMuFWwfkwwfZutTryaPxP/RYA=";
+    sha256 = "sha256-+lfbhi4GvQHF59gtrTmbO5lSo5gnAjwXvumxwGH/G70=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace "--isort --flake8 --cov --no-cov-on-fail" ""
-  '';
-
-  disabledTests = [
-    # needs the Ahem font (fails on macOS)
-    "test_font_stretch"
+  patches = [
+    (substituteAll {
+      src = ./library-paths.patch;
+      fontconfig = "${fontconfig.lib}/lib/libfontconfig${stdenv.hostPlatform.extensions.sharedLibrary}";
+      pangoft2 = "${pango.out}/lib/libpangoft2-1.0${stdenv.hostPlatform.extensions.sharedLibrary}";
+      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}";
+    })
   ];
 
-  checkInputs = [
-    pytestCheckHook
-    ghostscript
+  nativeBuildInputs = [
+    flit-core
   ];
 
-  FONTCONFIG_FILE = "${fontconfig.out}/etc/fonts/fonts.conf";
-
   propagatedBuildInputs = [
     brotli
     cairosvg
@@ -60,24 +62,38 @@ buildPythonPackage rec {
     fonttools
     html5lib
     lxml
+    flit-core
     pydyf
     pyphen
     tinycss
     zopfli
   ];
 
-  patches = [
-    (substituteAll {
-      src = ./library-paths.patch;
-      fontconfig = "${fontconfig.lib}/lib/libfontconfig${stdenv.hostPlatform.extensions.sharedLibrary}";
-      pangoft2 = "${pango.out}/lib/libpangoft2-1.0${stdenv.hostPlatform.extensions.sharedLibrary}";
-      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}";
-    })
+  checkInputs = [
+    pytestCheckHook
+    ghostscript
   ];
 
+  disabledTests = [
+    # needs the Ahem font (fails on macOS)
+    "test_font_stretch"
+    # sensitive to sandbox environments
+    "test_tab_size"
+    "test_tabulation_character"
+  ];
+
+  FONTCONFIG_FILE = "${fontconfig.out}/etc/fonts/fonts.conf";
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "--isort --flake8 --cov --no-cov-on-fail" ""
+  '';
+
+  preCheck = ''
+    # Fontconfig wants to create a cache.
+    export HOME=$TMPDIR
+  '';
+
   meta = with lib; {
     homepage = "https://weasyprint.org/";
     description = "Converts web documents to PDF";
diff --git a/pkgs/development/python-modules/weasyprint/library-paths.patch b/pkgs/development/python-modules/weasyprint/library-paths.patch
index 9a10990fd43f0..bcd1c48ff61a0 100644
--- a/pkgs/development/python-modules/weasyprint/library-paths.patch
+++ b/pkgs/development/python-modules/weasyprint/library-paths.patch
@@ -2,25 +2,26 @@ 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):
+@@ -387,22 +387,11 @@ def _dlopen(ffi, *names):
      return ffi.dlopen(names[0])  # pragma: no cover
  
  
 -gobject = _dlopen(
 -    ffi, 'gobject-2.0-0', 'gobject-2.0', 'libgobject-2.0-0',
--    'libgobject-2.0.so.0', 'libgobject-2.0.dylib')
+-    'libgobject-2.0.so.0', 'libgobject-2.0.dylib',  'libgobject-2.0-0.dll')
 -pango = _dlopen(
 -    ffi, 'pango-1.0-0', 'pango-1.0', 'libpango-1.0-0', 'libpango-1.0.so.0',
--    'libpango-1.0.dylib')
+-    'libpango-1.0.dylib', 'libpango-1.0-0.dll')
 -harfbuzz = _dlopen(
 -    ffi, 'harfbuzz', 'harfbuzz-0.0', 'libharfbuzz-0',
--    'libharfbuzz.so.0', 'libharfbuzz.so.0', 'libharfbuzz.0.dylib')
+-    'libharfbuzz.so.0', 'libharfbuzz.so.0', 'libharfbuzz.0.dylib',
+-    'libharfbuzz-0.dll')
 -fontconfig = _dlopen(
--    ffi, 'fontconfig-1', 'fontconfig', 'libfontconfig', 'libfontconfig-1.dll',
--    'libfontconfig.so.1', 'libfontconfig-1.dylib')
+-    ffi, 'fontconfig-1', 'fontconfig', 'libfontconfig', 'libfontconfig.so.1',
+-    'libfontconfig-1.dylib', 'libfontconfig-1.dll')
 -pangoft2 = _dlopen(
 -    ffi, 'pangoft2-1.0-0', 'pangoft2-1.0', 'libpangoft2-1.0-0',
--    'libpangoft2-1.0.so.0', 'libpangoft2-1.0.dylib')
+-    'libpangoft2-1.0.so.0', 'libpangoft2-1.0.dylib', 'libpangoft2-1.0-0.dll')
 +gobject = _dlopen(ffi, '@gobject@')
 +pango = _dlopen(ffi, '@pango@')
 +harfbuzz = _dlopen(ffi, '@harfbuzz@')
diff --git a/pkgs/development/python-modules/webargs/default.nix b/pkgs/development/python-modules/webargs/default.nix
index e92b47d209339..31cedc7b4032d 100644
--- a/pkgs/development/python-modules/webargs/default.nix
+++ b/pkgs/development/python-modules/webargs/default.nix
@@ -4,12 +4,12 @@
 
 buildPythonPackage rec {
   pname = "webargs";
-  version = "8.0.1";
+  version = "8.1.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bcce022250ee97cfbb0ad07b02388ac90a226ef4b479ec84317152345a565614";
+    sha256 = "f1f0b7f054a22263cf750529fc0926709ca47da9a2c417d423ad88d9fa6a5d33";
   };
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/weboob/default.nix b/pkgs/development/python-modules/weboob/default.nix
index b1afa242107ea..4d0373105ccff 100644
--- a/pkgs/development/python-modules/weboob/default.nix
+++ b/pkgs/development/python-modules/weboob/default.nix
@@ -1,9 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
+{ lib
 , Babel
+, buildPythonPackage
 , cssselect
-, python-dateutil
 , feedparser
-, futures ? null
+, fetchPypi
 , gdata
 , gnupg
 , google-api-python-client
@@ -16,6 +16,9 @@
 , pillow
 , prettytable
 , pyqt5
+, pytestCheckHook
+, python-dateutil
+, pythonOlder
 , pyyaml
 , requests
 , simplejson
@@ -26,28 +29,18 @@
 buildPythonPackage rec {
   pname = "weboob";
   version = "2.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "1c69vzf8sg8471lcaafpz9iw2q3rfj5hmcpqrs2k59fkgbvy32zw";
   };
 
-  postPatch = ''
-    # Disable doctests that require networking:
-    sed -i -n -e '/^ *def \+pagination *(.*: *$/ {
-      p; n; p; /"""\|'\'\'\'''/!b
-
-      :loop
-      n; /^ *\(>>>\|\.\.\.\)/ { h; bloop }
-      x; /^ *\(>>>\|\.\.\.\)/bloop; x
-      p; /"""\|'\'\'\'''/b
-      bloop
-    }; p' weboob/browser/browsers.py weboob/browser/pages.py
-  '';
-
-  checkInputs = [ nose ];
-
-  nativeBuildInputs = [ pyqt5 ];
+  nativeBuildInputs = [
+    pyqt5
+  ];
 
   propagatedBuildInputs = [
     Babel
@@ -70,15 +63,35 @@ buildPythonPackage rec {
     simplejson
     termcolor
     unidecode
-  ] ++ lib.optionals isPy27 [ futures ];
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "with-doctest = 1" "" \
+      --replace "with-coverage = 1" "" \
+      --replace "weboob.browser.filters.standard," "" \
+      --replace "weboob.browser.tests.filters," "" \
+      --replace "weboob.tools.application.formatters.json," "" \
+      --replace "weboob.tools.application.formatters.table," "" \
+      --replace "weboob.tools.capabilities.bank.transactions," ""
+  '';
+
+  checkInputs = [
+    nose
+  ];
 
   checkPhase = ''
     nosetests
   '';
 
-  meta = {
+  pythonImportsCheck = [
+    "weboob"
+  ];
+
+  meta = with lib; {
+    description = "Collection of applications and APIs to interact with websites";
     homepage = "http://weboob.org";
-    description = "Collection of applications and APIs to interact with websites without requiring the user to open a browser";
-    license = lib.licenses.agpl3;
+    license = licenses.agpl3Plus;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/websocket-client/default.nix b/pkgs/development/python-modules/websocket-client/default.nix
index 3a641ab2db3b0..116f45f16dd34 100644
--- a/pkgs/development/python-modules/websocket-client/default.nix
+++ b/pkgs/development/python-modules/websocket-client/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "websocket-client";
-  version = "1.2.1";
+  version = "1.2.3";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8dfb715d8a992f5712fff8c843adae94e22b22a99b2c5e6b0ec4a1a981cc4e0d";
+    sha256 = "1315816c0acc508997eb3ae03b9d3ff619c9d12d544c9a9b553704b1cc4f6af5";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/websockets/default.nix b/pkgs/development/python-modules/websockets/default.nix
index 2e13d95c3825c..7d6f78902d0a7 100644
--- a/pkgs/development/python-modules/websockets/default.nix
+++ b/pkgs/development/python-modules/websockets/default.nix
@@ -23,11 +23,25 @@ buildPythonPackage rec {
   # Tests fail on Darwin with `OSError: AF_UNIX path too long`
   doCheck = !stdenv.isDarwin;
 
-  # Disable all tests that need to terminate within a predetermined amount of
-  # time. This is nondeterministic.
   patchPhase = ''
+    # Disable all tests that need to terminate within a predetermined amount of
+    # time. This is nondeterministic.
     sed -i 's/with self.assertCompletesWithin.*:/if True:/' \
       tests/legacy/test_protocol.py
+
+    # Disables tests relying on tight timeouts to avoid failures like:
+    #   File "/build/source/tests/legacy/test_protocol.py", line 1270, in test_keepalive_ping_with_no_ping_timeout
+    #     ping_1_again, ping_2 = tuple(self.protocol.pings)
+    #   ValueError: too many values to unpack (expected 2)
+    for t in \
+             test_keepalive_ping_stops_when_connection_closing \
+             test_keepalive_ping_does_not_crash_when_connection_lost \
+             test_keepalive_ping \
+             test_keepalive_ping_not_acknowledged_closes_connection \
+             test_keepalive_ping_with_no_ping_timeout \
+      ; do
+      sed -i "s/def $t(/def skip_$t(/" tests/legacy/test_protocol.py
+    done
   '';
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/webtest/default.nix b/pkgs/development/python-modules/webtest/default.nix
index 999d2560591d5..8ec42598ee611 100644
--- a/pkgs/development/python-modules/webtest/default.nix
+++ b/pkgs/development/python-modules/webtest/default.nix
@@ -2,26 +2,25 @@
 , buildPythonPackage
 , fetchPypi
 , isPy27
-, nose
 , webob
 , six
 , beautifulsoup4
 , waitress
-, mock
 , pyquery
 , wsgiproxy2
 , pastedeploy
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
-  version = "2.0.35";
+  version = "3.0.0";
   pname = "webtest";
   disabled = isPy27; # paste.deploy is not longer a valid import
 
   src = fetchPypi {
     pname = "WebTest";
     inherit version;
-    sha256 = "sha256-qsFotbK08gCvTjWGfPMWcSIQ49XbgcHL3/OHImR7sIc=";
+    sha256 = "54bd969725838d9861a9fa27f8d971f79d275d94ae255f5c501f53bb6d9929eb";
   };
 
   postPatch = ''
@@ -36,8 +35,7 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    nose
-    mock
+    pytestCheckHook
     pastedeploy
     wsgiproxy2
     pyquery
diff --git a/pkgs/development/python-modules/weconnect-mqtt/default.nix b/pkgs/development/python-modules/weconnect-mqtt/default.nix
index 0e00a08145e66..82bf024c824c5 100644
--- a/pkgs/development/python-modules/weconnect-mqtt/default.nix
+++ b/pkgs/development/python-modules/weconnect-mqtt/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "weconnect-mqtt";
-  version = "0.21.0";
+  version = "0.29.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "tillsteinbach";
     repo = "WeConnect-mqtt";
     rev = "v${version}";
-    sha256 = "sha256-wagFjVXTjYFryaUiVeqU+T9ya+NzUFMX3uPlRZGe1v0=";
+    sha256 = "sha256-/hFlH0naE62d2dyYIJD/+TuSQDOVgS8tQsSX8JuReC0=";
   };
 
   propagatedBuildInputs = [
@@ -32,6 +32,8 @@ buildPythonPackage rec {
     substituteInPlace pytest.ini \
       --replace "--cov=weconnect_mqtt --cov-config=.coveragerc --cov-report html" "" \
       --replace "pytest-cov" ""
+    substituteInPlace requirements.txt \
+      --replace "weconnect[Images]~=0.35.1" "weconnect"
   '';
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/weconnect/default.nix b/pkgs/development/python-modules/weconnect/default.nix
index 70da78edb603e..794fde431671d 100644
--- a/pkgs/development/python-modules/weconnect/default.nix
+++ b/pkgs/development/python-modules/weconnect/default.nix
@@ -7,11 +7,12 @@
 , pytestCheckHook
 , pythonOlder
 , requests
+, oauthlib
 }:
 
 buildPythonPackage rec {
   pname = "weconnect";
-  version = "0.28.0";
+  version = "0.36.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -20,11 +21,12 @@ buildPythonPackage rec {
     owner = "tillsteinbach";
     repo = "WeConnect-python";
     rev = "v${version}";
-    sha256 = "sha256-J7T62L6wT9rkl/Ukf2y5kBbJEdzh2XnGgCgedkxVEmA=";
+    sha256 = "sha256-B4RZftGngV85Trm0iPj50WAv1M0H+sjQ9ABiGh070/M=";
   };
 
   propagatedBuildInputs = [
     ascii-magic
+    oauthlib
     pillow
     requests
   ];
@@ -40,6 +42,8 @@ buildPythonPackage rec {
     substituteInPlace setup.py \
       --replace "setup_requires=SETUP_REQUIRED," "setup_requires=[]," \
       --replace "tests_require=TEST_REQUIRED," "tests_require=[],"
+    substituteInPlace requirements.txt \
+      --replace "pillow~=9.0.0" "pillow"
     substituteInPlace pytest.ini \
       --replace "--cov=weconnect --cov-config=.coveragerc --cov-report html" "" \
       --replace "pytest-cov" ""
diff --git a/pkgs/development/python-modules/werkzeug/1.nix b/pkgs/development/python-modules/werkzeug/1.nix
index c03cc6935d2f1..ae7ce1f2b90a7 100644
--- a/pkgs/development/python-modules/werkzeug/1.nix
+++ b/pkgs/development/python-modules/werkzeug/1.nix
@@ -2,6 +2,7 @@
 , itsdangerous, hypothesis
 , pytestCheckHook, requests
 , pytest-timeout
+, isPy3k
  }:
 
 buildPythonPackage rec {
@@ -58,3 +59,4 @@ buildPythonPackage rec {
     maintainers = [ ];
   };
 }
+
diff --git a/pkgs/development/python-modules/wheel/default.nix b/pkgs/development/python-modules/wheel/default.nix
index 1b899b59897ff..62298b0d6ac4f 100644
--- a/pkgs/development/python-modules/wheel/default.nix
+++ b/pkgs/development/python-modules/wheel/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "wheel";
-  version = "0.36.2";
+  version = "0.37.1";
   format = "other";
 
   src = fetchFromGitHub {
     owner = "pypa";
     repo = pname;
     rev = version;
-    sha256 = "13bj49psan1s1fxfrq613dm2l7jvrg2dpgb36lz81z3b1h7zig6j";
+    sha256 = "sha256-JlTmUPY3yo/uROyd3nW1dJa23zbLhgQTwcmqZkPOrHs=";
     name = "${pname}-${version}-source";
     extraPostFetch = ''
       cd $out
@@ -37,7 +37,7 @@ buildPythonPackage rec {
   pipInstallFlags = [ "--ignore-installed" ];
 
   meta = with lib; {
-    homepage = "https://bitbucket.org/pypa/wheel/";
+    homepage = "https://github.com/pypa/wheel";
     description = "A built-package format for Python";
     longDescription = ''
       This library is the reference implementation of the Python wheel packaging standard,
diff --git a/pkgs/development/python-modules/whodap/default.nix b/pkgs/development/python-modules/whodap/default.nix
index c09c8d7d4d00c..d4f6913105f21 100644
--- a/pkgs/development/python-modules/whodap/default.nix
+++ b/pkgs/development/python-modules/whodap/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "whodap";
-  version = "0.1.2";
+  version = "0.1.4";
 
   disabled = pythonOlder "3.6";
 
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "pogzyb";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1map5m9i1hi4wb9mpp7hq89n8x9bgsi7gclqfixgqhpi5v5gybqc";
+    sha256 = "sha256-L8fSf9AhmWbRvLKvf0aowKoal+5dG1SJXcA7Ssrhj6o=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/whois/default.nix b/pkgs/development/python-modules/whois/default.nix
index ef69283e6dbf3..b2875819646c9 100644
--- a/pkgs/development/python-modules/whois/default.nix
+++ b/pkgs/development/python-modules/whois/default.nix
@@ -2,25 +2,34 @@
 , buildPythonPackage
 , fetchFromGitHub
 , inetutils
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "whois";
-  version = "0.9.13";
+  version = "0.9.14";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "DannyCork";
     repo = "python-whois";
     rev = version;
-    sha256 = "0y2sfs6nkr2j2crrn81wkfdzn9aphb3iaddya5zd2midlgdqq7bw";
+    sha256 = "1df4r2pr356y1c2ys6pzdl93fmx9ci4y75xphc95xn27zvqbpvix";
   };
 
-  # whois is needed
-  propagatedBuildInputs = [ inetutils ];
+  propagatedBuildInputs = [
+    # whois is needed
+    inetutils
+  ];
 
   # tests require network access
   doCheck = false;
-  pythonImportsCheck = [ "whois" ];
+
+  pythonImportsCheck = [
+    "whois"
+  ];
 
   meta = with lib; {
     description = "Python module/library for retrieving WHOIS information";
diff --git a/pkgs/development/python-modules/wled/default.nix b/pkgs/development/python-modules/wled/default.nix
index 886ffea60b79a..3b88afa7e65cd 100644
--- a/pkgs/development/python-modules/wled/default.nix
+++ b/pkgs/development/python-modules/wled/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "wled";
-  version = "0.10.2";
+  version = "0.13.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "frenck";
     repo = "python-wled";
     rev = "v${version}";
-    sha256 = "sha256-tqR/edkBFseldSXGoekfRmw//h6Z/Xcg1W0HXJvLhtk=";
+    sha256 = "sha256-n+TIzlnyPeSywTQr7wlGNezsbQ2+S/WYt1H95+Id2Rw=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/woob/default.nix b/pkgs/development/python-modules/woob/default.nix
index fc5e6e9dc65bf..3c9529c2644bd 100644
--- a/pkgs/development/python-modules/woob/default.nix
+++ b/pkgs/development/python-modules/woob/default.nix
@@ -1,12 +1,10 @@
 { lib
-, buildPythonPackage
-, fetchPypi
-, isPy27
 , Babel
+, buildPythonPackage
 , colorama
 , cssselect
-, python-dateutil
 , feedparser
+, fetchFromGitLab
 , gdata
 , gnupg
 , google-api-python-client
@@ -19,6 +17,8 @@
 , pillow
 , prettytable
 , pyqt5
+, python-dateutil
+, pythonOlder
 , pyyaml
 , requests
 , simplejson
@@ -29,22 +29,21 @@
 buildPythonPackage rec {
   pname = "woob";
   version = "3.0";
-  disabled = isPy27;
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "09hpxy5zhn2b8li0xjf3zd7s46lawb0315p5mdcsci3bj3s4v1j7";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitLab {
+    owner = "woob";
+    repo = pname;
+    rev = version;
+    hash = "sha256-XLcHNidclORbxVXgcsHY6Ja/dak+EVSKTaVQmg1f/rw=";
   };
 
-  patches = [
-    # Disable doctests that require networking:
-    ./no-test-requiring-network.patch
+  nativeBuildInputs = [
+    pyqt5
   ];
 
-  checkInputs = [ nose ];
-
-  nativeBuildInputs = [ pyqt5 ];
-
   propagatedBuildInputs = [
     Babel
     colorama
@@ -69,14 +68,28 @@ buildPythonPackage rec {
     unidecode
   ];
 
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace "with-doctest = 1" "" \
+      --replace "with-coverage = 1" ""
+  '';
+
+  checkInputs = [
+    nose
+  ];
+
   checkPhase = ''
     nosetests
   '';
 
+  pythonImportsCheck = [
+    "woob"
+  ];
+
   meta = with lib; {
+    description = "Collection of applications and APIs to interact with websites";
     homepage = "https://woob.tech";
-    description = "Collection of applications and APIs to interact with websites without requiring the user to open a browser";
     license = licenses.lgpl3Plus;
-    maintainers = [ maintainers.DamienCassou ];
- };
+    maintainers = with maintainers; [ DamienCassou ];
+  };
 }
diff --git a/pkgs/development/python-modules/woob/no-test-requiring-network.patch b/pkgs/development/python-modules/woob/no-test-requiring-network.patch
deleted file mode 100644
index 7095019d05417..0000000000000
--- a/pkgs/development/python-modules/woob/no-test-requiring-network.patch
+++ /dev/null
@@ -1,54 +0,0 @@
---- a/woob/browser/browsers.py
-+++ b/woob/browser/browsers.py
-@@ -930,23 +930,6 @@
-
-         :class:`NextPage` constructor can take an url or a Request object.
-
--        >>> from .pages import HTMLPage
--        >>> class Page(HTMLPage):
--        ...     def iter_values(self):
--        ...         for el in self.doc.xpath('//li'):
--        ...             yield el.text
--        ...         for next in self.doc.xpath('//a'):
--        ...             raise NextPage(next.attrib['href'])
--        ...
--        >>> class Browser(PagesBrowser):
--        ...     BASEURL = 'https://woob.tech'
--        ...     list = URL('/tests/list-(?P<pagenum>\d+).html', Page)
--        ...
--        >>> b = Browser()
--        >>> b.list.go(pagenum=1) # doctest: +ELLIPSIS
--        <woob.browser.browsers.Page object at 0x...>
--        >>> list(b.pagination(lambda: b.page.iter_values()))
--        ['One', 'Two', 'Three', 'Four']
-         """
-         while True:
-             try:
---- a/woob/browser/pages.py
-+++ b/woob/browser/pages.py
-@@ -49,25 +49,6 @@
-
-     :class:`NextPage` constructor can take an url or a Request object.
-
--    >>> class Page(HTMLPage):
--    ...     @pagination
--    ...     def iter_values(self):
--    ...         for el in self.doc.xpath('//li'):
--    ...             yield el.text
--    ...         for next in self.doc.xpath('//a'):
--    ...             raise NextPage(next.attrib['href'])
--    ...
--    >>> from .browsers import PagesBrowser
--    >>> from .url import URL
--    >>> class Browser(PagesBrowser):
--    ...     BASEURL = 'https://woob.tech'
--    ...     list = URL('/tests/list-(?P<pagenum>\d+).html', Page)
--    ...
--    >>> b = Browser()
--    >>> b.list.go(pagenum=1) # doctest: +ELLIPSIS
--    <woob.browser.pages.Page object at 0x...>
--    >>> list(b.page.iter_values())
--    ['One', 'Two', 'Three', 'Four']
-     """
-
-     @wraps(func)
diff --git a/pkgs/development/python-modules/wptserve/default.nix b/pkgs/development/python-modules/wptserve/default.nix
deleted file mode 100644
index 7caf36fa6b2b7..0000000000000
--- a/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/pkgs/development/python-modules/wrapt/default.nix b/pkgs/development/python-modules/wrapt/default.nix
index e567a8a672ef8..b53c52d6098a2 100644
--- a/pkgs/development/python-modules/wrapt/default.nix
+++ b/pkgs/development/python-modules/wrapt/default.nix
@@ -1,23 +1,33 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "wrapt";
   version = "1.13.3";
+  format = "setuptools";
 
-  # No tests in archive
-  doCheck = false;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1fea9cd438686e6682271d36f3481a9f3636195578bab9ca3382e2f5f01fc185";
+  src = fetchFromGitHub {
+    owner = "GrahamDumpleton";
+    repo = pname;
+    rev = version;
+    hash = "sha256-kq3Ujkn4HzonzjuQfVnPNnQV+2Rnbr3ZfYmrnY3upxU=";
   };
 
-  meta = {
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "wrapt"
+  ];
+
+  meta = with lib; {
     description = "Module for decorators, wrappers and monkey patching";
-    license = lib.licenses.bsd2;
     homepage = "https://github.com/GrahamDumpleton/wrapt";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/wrf-python/default.nix b/pkgs/development/python-modules/wrf-python/default.nix
index 29279cc1a4480..94234b2626e2b 100644
--- a/pkgs/development/python-modules/wrf-python/default.nix
+++ b/pkgs/development/python-modules/wrf-python/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "wrf-python";
-  version = "1.3.2";
+  version = "1.3.2.6";
 
   src = fetchFromGitHub {
     owner = "NCAR";
     repo = "wrf-python";
     rev = version;
-    sha256 = "1rklkki54z5392cpwwy78bnmsy2ghc187l3j7nv0rzn6jk5bvyi7";
+    sha256 = "046kflai71r7xrmdw6jn0ifn5656wj9gpnwlgxkx430dgk7zbc2y";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/wsdiscovery/default.nix b/pkgs/development/python-modules/wsdiscovery/default.nix
new file mode 100644
index 0000000000000..8ba7974494947
--- /dev/null
+++ b/pkgs/development/python-modules/wsdiscovery/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, click
+, fetchFromGitHub
+, mock
+, netifaces
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "wsdiscovery";
+  version = "2.0.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "andreikop";
+    repo = "python-ws-discovery";
+    rev = version;
+    hash = "sha256-6LGZogNRCnmCrRXvHq9jmHwqW13KQPpaGaao/52JPtk=";
+  };
+
+  propagatedBuildInputs = [
+    click
+    netifaces
+  ];
+
+  checkInputs = [
+    mock
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "wsdiscovery"
+  ];
+
+  meta = with lib; {
+    description = "WS-Discovery implementation for Python";
+    homepage = "https://github.com/andreikop/python-ws-discovery";
+    license = with licenses; [ lgpl3Plus ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/wsgi-intercept/default.nix b/pkgs/development/python-modules/wsgi-intercept/default.nix
index 7303a27f5b3e5..b59b7aaa7d72e 100644
--- a/pkgs/development/python-modules/wsgi-intercept/default.nix
+++ b/pkgs/development/python-modules/wsgi-intercept/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "wsgi-intercept";
-  version = "1.9.2";
+  version = "1.9.3";
 
   src = fetchPypi {
     pname = "wsgi_intercept";
     inherit version;
-    sha256 = "1b6251d03jnhqywr54bzj9fnc3qzp2kvz22asxpd27jy984qx21n";
+    sha256 = "0c4dc31dc7aabdd263ba45338c201b89e3096a3baaa7d8e3260c68ff18016fb4";
   };
 
   propagatedBuildInputs = [ six ];
diff --git a/pkgs/development/python-modules/wsgiproxy/default.nix b/pkgs/development/python-modules/wsgiproxy/default.nix
deleted file mode 100644
index e2cc26ff143ee..0000000000000
--- a/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/pkgs/development/python-modules/wsproto/0.14.nix b/pkgs/development/python-modules/wsproto/0.14.nix
deleted file mode 100644
index a8488d8c4ab8c..0000000000000
--- a/pkgs/development/python-modules/wsproto/0.14.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, h11, enum34, pytest }:
-
-buildPythonPackage rec {
-  pname = "wsproto";
-  version = "0.14.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "051s127qb5dladxa14n9nqajwq7xki1dz1was5r5v9df5a0jq8pd";
-  };
-
-  propagatedBuildInputs = [ h11 enum34 ];
-
-  checkInputs = [ pytest ];
-
-  checkPhase = ''
-    py.test
-  '';
-
-  meta = with lib; {
-    description = "Pure Python, pure state-machine WebSocket implementation";
-    homepage = "https://github.com/python-hyper/wsproto/";
-    license = licenses.mit;
-  };
-}
diff --git a/pkgs/development/python-modules/wtf-peewee/default.nix b/pkgs/development/python-modules/wtf-peewee/default.nix
index 6fd356e69ed60..35be8ba260c41 100644
--- a/pkgs/development/python-modules/wtf-peewee/default.nix
+++ b/pkgs/development/python-modules/wtf-peewee/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, fetchpatch
 , peewee
 , wtforms
 , python
@@ -15,6 +16,14 @@ buildPythonPackage rec {
     sha256 = "faa953fe3f705d4f2b48f3c1a81c5c5a6a38f9ed1378c9a830e6efc1b0fccb15";
   };
 
+  patches = [
+    (fetchpatch {
+      name = "fix-wtforms3.patch";
+      url = "https://github.com/coleifer/wtf-peewee/commit/b1764f4474c73a9a2b34ae6b7db61274f5252a7f.patch";
+      sha256 = "0maz3fm9bi8p80nk9sdb34xq55xq8ihm51y7k0m8ck9aaypvwbig";
+    })
+  ];
+
   propagatedBuildInputs = [
     peewee
     wtforms
diff --git a/pkgs/development/python-modules/wtforms/default.nix b/pkgs/development/python-modules/wtforms/default.nix
index 96440c438bcbd..48764d509fe85 100644
--- a/pkgs/development/python-modules/wtforms/default.nix
+++ b/pkgs/development/python-modules/wtforms/default.nix
@@ -2,21 +2,29 @@
 , buildPythonPackage
 , fetchPypi
 , markupsafe
+, Babel
+, pytestCheckHook
+, email_validator
 }:
 
 buildPythonPackage rec {
-  version = "2.3.3";
+  version = "3.0.1";
   pname = "WTForms";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "81195de0ac94fbc8368abbaf9197b88c4f3ffd6c2719b5bf5fc9da744f3d829c";
+    sha256 = "1g654ghavds387hqxmhg9s8x222x89wbq1ggzxbsyn6x2axindbb";
   };
 
-  propagatedBuildInputs = [ markupsafe ];
+  propagatedBuildInputs = [ markupsafe Babel ];
 
-  # Django tests are broken "django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet."
-  doCheck = false;
+
+  checkInputs = [
+    pytestCheckHook
+    email_validator
+  ];
+
+  pythonImportsCheck = [ "wtforms" ];
 
   meta = with lib; {
     description = "A flexible forms validation and rendering library for Python";
diff --git a/pkgs/development/python-modules/wxPython/3.0.nix b/pkgs/development/python-modules/wxPython/3.0.nix
deleted file mode 100644
index 6649c5f693154..0000000000000
--- a/pkgs/development/python-modules/wxPython/3.0.nix
+++ /dev/null
@@ -1,91 +0,0 @@
-{ fetchurl
-, lib
-, stdenv
-, darwin
-, openglSupport ? true
-, libX11
-, wxGTK
-, wxmac
-, pkg-config
-, buildPythonPackage
-, pyopengl
-, isPy3k
-, isPyPy
-, python
-, cairo
-, pango
-}:
-
-assert wxGTK.unicode;
-
-buildPythonPackage rec {
-  pname = "wxPython";
-  version = "3.0.2.0";
-
-  disabled = isPy3k || isPyPy;
-  doCheck = false;
-
-  src = fetchurl {
-    url = "mirror://sourceforge/wxpython/wxPython-src-${version}.tar.bz2";
-    sha256 = "0qfzx3sqx4mwxv99sfybhsij4b5pc03ricl73h4vhkzazgjjjhfm";
-  };
-
-  dontUseSetuptoolsBuild = true;
-  dontUsePipInstall = true;
-
-  hardeningDisable = [ "format" ];
-
-  nativeBuildInputs = [ pkg-config ]
-    ++ (lib.optionals (!stdenv.isDarwin) [ wxGTK libX11 ])
-    ++ (lib.optionals stdenv.isDarwin [ wxmac ]);
-
-  buildInputs = [ ]
-    ++ (lib.optionals (!stdenv.isDarwin) [  (wxGTK.gtk) ])
-    ++ (lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
-      ApplicationServices
-      AudioToolbox
-      CFNetwork
-      Carbon
-      Cocoa
-      CoreGraphics
-      CoreServices
-      CoreText
-      DiskArbitration
-      IOKit
-      ImageIO
-      OpenGL
-      Security
-    ]))
-    ++ (lib.optional openglSupport pyopengl);
-
-  preConfigure = ''
-    cd wxPython
-    # remove wxPython's darwin hack that interference with python-2.7-distutils-C++.patch
-    substituteInPlace config.py \
-      --replace "distutils.unixccompiler.UnixCCompiler = MyUnixCCompiler" ""
-    # set the WXPREFIX to $out instead of the storepath of wxwidgets
-    substituteInPlace config.py \
-      --replace "WXPREFIX   = getWxConfigValue('--prefix')" "WXPREFIX   = '$out'"
-    # this check is supposed to only return false on older systems running non-framework python
-    substituteInPlace src/osx_cocoa/_core_wrap.cpp \
-      --replace "return wxPyTestDisplayAvailable();" "return true;"
-  '' + lib.optionalString (!stdenv.isDarwin) ''
-    substituteInPlace wx/lib/wxcairo.py \
-      --replace 'cairoLib = None' 'cairoLib = ctypes.CDLL("${cairo}/lib/libcairo.so")'
-    substituteInPlace wx/lib/wxcairo.py \
-      --replace '_dlls = dict()' '_dlls = {k: ctypes.CDLL(v) for k, v in [
-        ("gdk",        "${wxGTK.gtk}/lib/libgtk-x11-2.0.so"),
-        ("pangocairo", "${pango.out}/lib/libpangocairo-1.0.so"),
-        ("appsvc",     None)
-      ]}'
-  '';
-
-  buildPhase = "";
-
-  installPhase = ''
-    ${python.interpreter} setup.py install WXPORT=${if stdenv.isDarwin then "osx_cocoa" else "gtk2"} NO_HEADERS=0 BUILD_GLCANVAS=${if openglSupport then "1" else "0"} UNICODE=1 --prefix=$out
-    wrapPythonPrograms
-  '';
-
-  passthru = { inherit wxGTK openglSupport; };
-}
diff --git a/pkgs/development/python-modules/xarray/default.nix b/pkgs/development/python-modules/xarray/default.nix
index 602bbac89aec8..5f780a61ffc56 100644
--- a/pkgs/development/python-modules/xarray/default.nix
+++ b/pkgs/development/python-modules/xarray/default.nix
@@ -1,34 +1,50 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, pytestCheckHook
 , numpy
 , pandas
-, setuptools
-, isPy3k
+, pytestCheckHook
+, pythonOlder
+, setuptoolsBuildHook
 , setuptools-scm
 }:
 
 buildPythonPackage rec {
   pname = "xarray";
-  version = "0.20.1";
-  disabled = !isPy3k;
+  version = "0.20.2";
+  format = "pyproject";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9c0bffd8b55fdef277f8f6c817153eb51fa4e58653a7ad92eaed9984164b7bdb";
+    sha256 = "sha256-wuvoDKgbEKAkH2h23MNKyWluXFzc30dY2nz0vXMsQfc=";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
-  propagatedBuildInputs = [ numpy pandas setuptools ];
-  checkInputs = [ pytestCheckHook ];
+  SETUPTOOLS_SCM_PRETEND_VERSION="${version}";
+
+  nativeBuildInputs = [
+    setuptoolsBuildHook
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    numpy
+    pandas
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  pythonImportsCheck = [ "xarray" ];
+  pythonImportsCheck = [
+    "xarray"
+  ];
 
-  meta = {
+  meta = with lib; {
     description = "N-D labeled arrays and datasets in Python";
     homepage = "https://github.com/pydata/xarray";
-    license = lib.licenses.asl20;
-    maintainers = with lib.maintainers; [ fridh ];
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fridh ];
   };
 }
diff --git a/pkgs/development/python-modules/xcaplib/default.nix b/pkgs/development/python-modules/xcaplib/default.nix
deleted file mode 100644
index 086eaf1e34884..0000000000000
--- a/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/pkgs/development/python-modules/xdis/default.nix b/pkgs/development/python-modules/xdis/default.nix
index c916f8d7ec2a4..ca339b7a4438b 100644
--- a/pkgs/development/python-modules/xdis/default.nix
+++ b/pkgs/development/python-modules/xdis/default.nix
@@ -6,14 +6,14 @@
 
 buildPythonPackage rec {
   pname = "xdis";
-  version = "6.0.2";
+  version = "6.0.3";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "rocky";
     repo = "python-xdis";
     rev = version;
-    sha256 = "sha256-P8mUkAO3usFCE+E9cna2x1iA2uyHVPX9FHDpX+kTFWQ=";
+    sha256 = "1qvg3bwqzqxlzlixz2di3si7siy0ismq93wd57r8cqmxl54gva6h";
   };
 
   checkInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/xknx/default.nix b/pkgs/development/python-modules/xknx/default.nix
index 781f59fa3cf74..b2bfeea8f7a93 100644
--- a/pkgs/development/python-modules/xknx/default.nix
+++ b/pkgs/development/python-modules/xknx/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "xknx";
-  version = "0.18.15";
+  version = "0.19.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "XKNX";
     repo = pname;
     rev = version;
-    sha256 = "sha256-k/fLUuBjXScTvlvoBLZIVPEqNGIPI04FBeTBadp5uiY=";
+    sha256 = "sha256-LJ7MmKCWx+n7caud0pN4+7f9H4XzwuAAn9u86X/FACo=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/xlib/default.nix b/pkgs/development/python-modules/xlib/default.nix
index cfb72680fa8b4..edb4761af3a89 100644
--- a/pkgs/development/python-modules/xlib/default.nix
+++ b/pkgs/development/python-modules/xlib/default.nix
@@ -7,30 +7,39 @@
 , python
 , mock
 , nose
+, pytestCheckHook
 , util-linux
 }:
 
 buildPythonPackage rec {
   pname = "xlib";
-  version = "0.29";
+  version = "0.31";
 
   src = fetchFromGitHub {
     owner = "python-xlib";
     repo = "python-xlib";
     rev = version;
-    sha256 = "sha256-zOG1QzRa5uN36Ngv8i5s3mq+VIoRzxFj5ltUbKdonJ0=";
+    sha256 = "155p9xhsk01z9vdml74h07svlqy6gljnx9c6qbydcr14lwghwn06";
   };
 
-  checkPhase = ''
-    ${python.interpreter} runtests.py
-  '';
-
-  checkInputs = [ mock nose util-linux /* mcookie */ xorg.xauth xorg.xorgserver /* xvfb */ ];
   nativeBuildInputs = [ setuptools-scm ];
   buildInputs = [ xorg.libX11 ];
   propagatedBuildInputs = [ six ];
 
   doCheck = !stdenv.isDarwin;
+  checkInputs = [
+    pytestCheckHook
+    mock
+    nose
+    util-linux
+    xorg.xauth
+    xorg.xorgserver
+  ];
+
+  disabledTestPaths = [
+    # requires x session
+    "test/test_xlib_display.py"
+  ];
 
   meta = with lib; {
     description = "Fully functional X client library for Python programs";
diff --git a/pkgs/development/python-modules/xml2rfc/default.nix b/pkgs/development/python-modules/xml2rfc/default.nix
index 26b51d1a4ac31..5ba54f2031718 100644
--- a/pkgs/development/python-modules/xml2rfc/default.nix
+++ b/pkgs/development/python-modules/xml2rfc/default.nix
@@ -22,13 +22,13 @@
 
 buildPythonPackage rec {
   pname = "xml2rfc";
-  version = "3.12.0";
+  version = "3.12.1";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "25deadb9ee95f0dc71376a60e9c1e34636b5016c1952ad5597a6246495e34464";
+    sha256 = "sha256-xIStWb03CygnqB92AXf0uxMLw7pLhSE3mLQ8l1J6dZM=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/yacs/default.nix b/pkgs/development/python-modules/yacs/default.nix
new file mode 100644
index 0000000000000..7abf151a08f74
--- /dev/null
+++ b/pkgs/development/python-modules/yacs/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, python
+, pyyaml
+}:
+
+buildPythonPackage rec {
+  pname = "yacs";
+  version = "0.1.8";
+
+  src = fetchFromGitHub {
+    owner = "rbgirshick";
+    repo = "yacs";
+    rev = "v${version}";
+    sha256 = "sha256-nO8FL4tTkfTthXYXxXORLieFwvn780DDxfrxC9EUUJ0=";
+  };
+
+  propagatedBuildInputs = [ pyyaml ];
+
+  pythonImportsCheck = [ "yacs" ];
+  checkPhase = ''
+    ${python.interpreter} yacs/tests.py
+  '';
+
+  meta = with lib; {
+    description = "Yet Another Configuration System";
+    homepage = "https://github.com/rbgirshick/yacs";
+    license = licenses.apsl20;
+    maintainers = with maintainers; [ lucasew ];
+  };
+}
diff --git a/pkgs/development/python-modules/yalesmartalarmclient/default.nix b/pkgs/development/python-modules/yalesmartalarmclient/default.nix
index 201a1636f1735..1a8d561d5de25 100644
--- a/pkgs/development/python-modules/yalesmartalarmclient/default.nix
+++ b/pkgs/development/python-modules/yalesmartalarmclient/default.nix
@@ -3,17 +3,21 @@
 , buildPythonPackage
 , fetchFromGitHub
 , requests
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "yalesmartalarmclient";
-  version = "0.3.5";
+  version = "0.3.8";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "domwillcode";
     repo = "yale-smart-alarm-client";
     rev = "v${version}";
-    sha256 = "11i7vh61a5xfv32zm7rkigl010wzd6snag6sf7w38256j95nnb05";
+    sha256 = "sha256-CWL1uvmUGLaa2Ho0Ka4wTWstebhe1nQr9R821mweE60=";
   };
 
   propagatedBuildInputs = [
@@ -24,7 +28,9 @@ buildPythonPackage rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "yalesmartalarmclient" ];
+  pythonImportsCheck = [
+    "yalesmartalarmclient"
+  ];
 
   meta = with lib; {
     description = "Python module to interface with Yale Smart Alarm Systems";
diff --git a/pkgs/development/python-modules/yalexs/default.nix b/pkgs/development/python-modules/yalexs/default.nix
index 9b9ef513f70d6..22440766fd03b 100644
--- a/pkgs/development/python-modules/yalexs/default.nix
+++ b/pkgs/development/python-modules/yalexs/default.nix
@@ -7,6 +7,7 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pubnub
+, pyjwt
 , pytestCheckHook
 , python-dateutil
 , pythonOlder
@@ -16,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "yalexs";
-  version = "1.1.15";
+  version = "1.1.22";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -25,13 +26,14 @@ buildPythonPackage rec {
     owner = "bdraco";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-EK9jmbU3A2rNx/H8WOsZiGA7tqzg/XJkW/DV5s+2Y3U=";
+    sha256 = "sha256-qtJSGvvYcdGYUUHnRnKe+z+twFqLGAn1Zl47F4CGnvc=";
   };
 
   propagatedBuildInputs = [
     aiofiles
     aiohttp
     pubnub
+    pyjwt
     python-dateutil
     requests
   ];
diff --git a/pkgs/development/python-modules/yamale/default.nix b/pkgs/development/python-modules/yamale/default.nix
index 670e46f980554..7444d8d24ac52 100644
--- a/pkgs/development/python-modules/yamale/default.nix
+++ b/pkgs/development/python-modules/yamale/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "yamale";
-  version = "4.0.2";
+  version = "4.0.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "23andMe";
     repo = pname;
     rev = version;
-    sha256 = "sha256-hFBU3o3HpL0Schgzcx3oYq0IAUVGKThIfEteYcFbLnk=";
+    sha256 = "sha256-EkCKUSPRrj3g2AY17tquBDxf+nWfpdnILu5AS/2SsLo=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/yangson/default.nix b/pkgs/development/python-modules/yangson/default.nix
index fec15464bd9d9..a82bf972546d1 100644
--- a/pkgs/development/python-modules/yangson/default.nix
+++ b/pkgs/development/python-modules/yangson/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "yangson";
-  version = "1.4.10";
+  version = "1.4.13";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-R7ZcG4FStESPDWnFD6WIDD8sugvil9ybVK0J2qQC+zU=";
+    sha256 = "sha256-SuKpSwIjZioyqmxlcKJ+UXP+ADfJwUwCCttmMAiEkZ4=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/yapf/default.nix b/pkgs/development/python-modules/yapf/default.nix
index 9c759f3a2b7e9..2d6fc9520ccd2 100644
--- a/pkgs/development/python-modules/yapf/default.nix
+++ b/pkgs/development/python-modules/yapf/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "yapf";
-  version = "0.31.0";
+  version = "0.32.0";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-QI+5orJUwwL0nbg8WfmqC0sP0OwlvjpcURgTJ5Iv9j0=";
+    hash = "sha256-o/UIXTfvfj4ATEup+bPkDFT/GQHNER8FFFrjE6fGfRs=";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/yaspin/default.nix b/pkgs/development/python-modules/yaspin/default.nix
new file mode 100644
index 0000000000000..012ee677ae0e0
--- /dev/null
+++ b/pkgs/development/python-modules/yaspin/default.nix
@@ -0,0 +1,32 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, lib
+, poetry-core
+, termcolor
+}:
+
+buildPythonPackage rec {
+  pname = "yaspin";
+  version = "2.1.0";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "pavdmyt";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0vhh4mp706kz5fba8nvr9jm51jsd32xj97m3law6ixw3lj91sh1a";
+  };
+
+  nativeBuildInputs = [ poetry-core ];
+
+  propagatedBuildInputs = [ termcolor ];
+
+  pythonImportsCheck = [ "yaspin" ];
+
+  meta = with lib; {
+    description = "Yet Another Terminal Spinner";
+    homepage = "https://github.com/pavdmyt/yaspin";
+    license = licenses.mit;
+    maintainers = with maintainers; [ samuela ];
+  };
+}
diff --git a/pkgs/development/python-modules/yeelight/default.nix b/pkgs/development/python-modules/yeelight/default.nix
index 6c40f266f3464..b64bd929f13f4 100644
--- a/pkgs/development/python-modules/yeelight/default.nix
+++ b/pkgs/development/python-modules/yeelight/default.nix
@@ -9,14 +9,16 @@
 
 buildPythonPackage rec {
   pname = "yeelight";
-  version = "0.7.8";
-  disabled = pythonOlder "3.4";
+  version = "0.7.9";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitLab {
     owner = "stavros";
     repo = "python-yeelight";
     rev = "v${version}";
-    sha256 = "sha256-fKtG0D256bK1hIcQiLdzCM+IdD/mmcFpcoE3DEFt7r0=";
+    sha256 = "sha256-8N+HOhUX3BXecS/kaAfLoge+NYzKLKPyoTthu+useJA=";
   };
 
   propagatedBuildInputs = [
@@ -28,9 +30,13 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [ "yeelight/tests.py" ];
+  pytestFlagsArray = [
+    "yeelight/tests.py"
+  ];
 
-  pythonImportsCheck = [ "yeelight" ];
+  pythonImportsCheck = [
+    "yeelight"
+  ];
 
   meta = with lib; {
     description = "Python library for controlling YeeLight RGB bulbs";
diff --git a/pkgs/development/python-modules/yenc/default.nix b/pkgs/development/python-modules/yenc/default.nix
deleted file mode 100644
index 453f3113853be..0000000000000
--- a/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/pkgs/development/python-modules/yfinance/default.nix b/pkgs/development/python-modules/yfinance/default.nix
index 059316f7a99ce..26ddf9354df9f 100644
--- a/pkgs/development/python-modules/yfinance/default.nix
+++ b/pkgs/development/python-modules/yfinance/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "yfinance";
-  version = "0.1.67";
+  version = "0.1.70";
 
   src = fetchFromGitHub {
     owner = "ranaroussi";
     repo = pname;
     rev = version;
-    sha256 = "sha256-QwWShXelEBgLUvCwPqB7z5DjS1JsW/krPrsS3VkyaJg=";
+    sha256 = "sha256-Anvt+ag0PysGynQv4q+2IrQmCPZViGqWI4dgfLQWGds=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/youtube-search-python/default.nix b/pkgs/development/python-modules/youtube-search-python/default.nix
index ad23a6cc169d2..f7298f4b8c95e 100644
--- a/pkgs/development/python-modules/youtube-search-python/default.nix
+++ b/pkgs/development/python-modules/youtube-search-python/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "youtube-search-python";
-  version = "1.5.2";
+  version = "1.6.2";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "33f0d58f4803b0b2badf860cd31fb83d3f7edecdd2c01dd09cd6511abbf0e6b9";
+    sha256 = "sha256-PeWi1eygUSgUXZ68bUJ44IoffNDme06JNR9ns6njqMU=";
   };
 
   propagatedBuildInputs = [ httpx ];
diff --git a/pkgs/development/python-modules/yowsup/default.nix b/pkgs/development/python-modules/yowsup/default.nix
index 0ff3212f48caf..91c58192b8a2e 100644
--- a/pkgs/development/python-modules/yowsup/default.nix
+++ b/pkgs/development/python-modules/yowsup/default.nix
@@ -4,7 +4,7 @@
 
 buildPythonPackage rec {
   pname = "yowsup";
-  version = "3.2.3";
+  version = "3.3.0";
 
   # The Python 2.x support of this package is incompatible with `six==1.11`:
   # https://github.com/tgalal/yowsup/issues/2416#issuecomment-365113486
@@ -14,7 +14,7 @@ buildPythonPackage rec {
     owner = "tgalal";
     repo = "yowsup";
     rev = "v${version}";
-    sha256 = "0wb8yl685nr1i3vx89hwan5m6a482x8g48f5ksvdlph538p720pm";
+    sha256 = "1pz0r1gif15lhzdsam8gg3jm6zsskiv2yiwlhaif5rl7lv3p0v7q";
   };
 
   checkInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/yt/default.nix b/pkgs/development/python-modules/yt/default.nix
deleted file mode 100644
index 9611b27222956..0000000000000
--- a/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/pkgs/development/python-modules/ytmusicapi/default.nix b/pkgs/development/python-modules/ytmusicapi/default.nix
index b19aed0c6fdcf..218c2edd0ac5e 100644
--- a/pkgs/development/python-modules/ytmusicapi/default.nix
+++ b/pkgs/development/python-modules/ytmusicapi/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "ytmusicapi";
-  version = "0.19.5";
+  version = "0.20.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-haZe5afwkU8wD8s2lrmHJuVo6TO3CcQ/0TuJbHPmqvU=";
+    hash = "sha256-DvLrytLp28TVFVdkmWg19cC2VRetFcSx7dmsO4HQqVo=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/zbase32/default.nix b/pkgs/development/python-modules/zbase32/default.nix
deleted file mode 100644
index 715da719bbbc8..0000000000000
--- a/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/pkgs/development/python-modules/zcs/default.nix b/pkgs/development/python-modules/zcs/default.nix
new file mode 100644
index 0000000000000..9f22cd1dfc866
--- /dev/null
+++ b/pkgs/development/python-modules/zcs/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python
+, yacs
+, boxx
+}:
+
+buildPythonPackage rec {
+  pname = "zcs";
+  version = "0.1.17";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-ZoQgAaJy3kKHLljyKA0Oo/D1kefE8X9FlsGDSNt1nPw=";
+  };
+
+  propagatedBuildInputs = [ yacs ];
+
+  pythonImportsCheck = [ "zcs" ];
+
+  checkInputs = [ boxx ];
+  checkPhase = ''
+    ${python.interpreter} test/test_zcs.py
+  '';
+
+  meta = with lib; {
+    description = "A flexible powerful configuration system which takes advantage of both argparse and yacs";
+    homepage = "https://github.com/DIYer22/zcs";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lucasew ];
+  };
+}
diff --git a/pkgs/development/python-modules/zeep/default.nix b/pkgs/development/python-modules/zeep/default.nix
index f88e8bc474202..1b3e0c5fcdf0c 100644
--- a/pkgs/development/python-modules/zeep/default.nix
+++ b/pkgs/development/python-modules/zeep/default.nix
@@ -28,6 +28,7 @@
 buildPythonPackage rec {
   pname = "zeep";
   version = "4.1.0";
+
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
@@ -71,9 +72,15 @@ buildPythonPackage rec {
   disabledTests = [
     # lxml.etree.XMLSyntaxError: Extra content at the end of the document, line 2, column 64
     "test_mime_content_serialize_text_xml"
+    # Tests are outdated
+    "test_load"
+    "test_load_cache"
+    "test_post"
   ];
 
-  pythonImportsCheck = [ "zeep" ];
+  pythonImportsCheck = [
+    "zeep"
+  ];
 
   meta = with lib; {
     description = "Python SOAP client";
diff --git a/pkgs/development/python-modules/zeroc-ice/default.nix b/pkgs/development/python-modules/zeroc-ice/default.nix
index 92d9a4a84873b..54ebc888f1f4b 100644
--- a/pkgs/development/python-modules/zeroc-ice/default.nix
+++ b/pkgs/development/python-modules/zeroc-ice/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "zeroc-ice";
-  version = "3.7.6";
+  version = "3.7.7";
 
   src = fetchPypi {
     inherit version pname;
-    sha256 = "e8d8a7828e4994545bf57059bd0a0d431d387d31cc4af2eb5eeb93ef28c2d827";
+    sha256 = "415f4a673009fe9a5ef67b61c4469ddf14b73857b6d40f02d6b74f02ad935147";
   };
 
   buildInputs = [ openssl bzip2 ];
diff --git a/pkgs/development/python-modules/zeroconf/default.nix b/pkgs/development/python-modules/zeroconf/default.nix
index 12e0279eb3de6..319cd7cce0f1a 100644
--- a/pkgs/development/python-modules/zeroconf/default.nix
+++ b/pkgs/development/python-modules/zeroconf/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "zeroconf";
-  version = "0.38.1";
+  version = "0.38.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "jstasiak";
     repo = "python-zeroconf";
     rev = version;
-    sha256 = "sha256-8bJEH+m+83rkKdN5GjD4THs1CUy/wstoBFiXR7kHKtw=";
+    sha256 = "sha256-pLTqnIbe7rTZrQFe//0/h5Tyx0GzJW+q9mUuDNifo/0=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/zetup/default.nix b/pkgs/development/python-modules/zetup/default.nix
index 3862a8e757d1c..c2e707347b330 100644
--- a/pkgs/development/python-modules/zetup/default.nix
+++ b/pkgs/development/python-modules/zetup/default.nix
@@ -5,12 +5,16 @@
 , pathpy
 , pytestCheckHook
 , setuptools-scm
+, pythonAtLeast
 }:
 
 buildPythonPackage rec {
   pname = "zetup";
   version = "0.2.64";
 
+  # https://github.com/zimmermanncode/zetup/issues/4
+  disabled = pythonAtLeast "3.10";
+
   src = fetchPypi {
     inherit pname version;
     sha256 = "b8a9bdcfa4b705d72b55b218658bc9403c157db7b57a14158253c98d03ab713d";
diff --git a/pkgs/development/python-modules/zha-quirks/default.nix b/pkgs/development/python-modules/zha-quirks/default.nix
index c1d4328106aef..d8398ac40235b 100644
--- a/pkgs/development/python-modules/zha-quirks/default.nix
+++ b/pkgs/development/python-modules/zha-quirks/default.nix
@@ -9,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "zha-quirks";
-  version = "0.0.65";
+  version = "0.0.66";
 
   src = fetchFromGitHub {
     owner = "zigpy";
     repo = "zha-device-handlers";
     rev = version;
-    sha256 = "sha256-3Lcmc95KotFMlL44zDugIQkHtplMMlyWjSb+SLehaqs=";
+    sha256 = "18g0i6b60ndfmbvdsx5pniq56fyc5k39ylp3sjhrfjcj434wvbvc";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/zigpy-zigate/default.nix b/pkgs/development/python-modules/zigpy-zigate/default.nix
index 5ebb17dd498b9..b44a385fd933e 100644
--- a/pkgs/development/python-modules/zigpy-zigate/default.nix
+++ b/pkgs/development/python-modules/zigpy-zigate/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "zigpy-zigate";
-  version = "0.7.4";
+  version = "0.8.0";
   # https://github.com/Martiusweb/asynctest/issues/152
   # broken by upstream python bug with asynctest and
   # is used exclusively by home-assistant with python 3.8
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "zigpy";
     repo = "zigpy-zigate";
     rev = version;
-    sha256 = "0xl8qgljvmypi602f52m89iv9pcrzsdal3jw619vrcavp40rc04d";
+    sha256 = "sha256-rFmcgfn87XS1fvbSdJG6pItXRMkeogp4faKMe7pCxkM=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/zigpy-znp/default.nix b/pkgs/development/python-modules/zigpy-znp/default.nix
index 8a3bd0e41fd2f..31a45ab644774 100644
--- a/pkgs/development/python-modules/zigpy-znp/default.nix
+++ b/pkgs/development/python-modules/zigpy-znp/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "zigpy-znp";
-  version = "0.6.4";
+  version = "0.7.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "zigpy";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0hz483wqzpdaap96gbjasisxd4wy8f4lslnspcvzqcf4dy1mxln6";
+    sha256 = "0h6dclz4q4lvmapzpslh8kb0aihdjddbkxc4zc981glbip89li5w";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/zigpy/default.nix b/pkgs/development/python-modules/zigpy/default.nix
index 01751219d4009..20d5237f76e8b 100644
--- a/pkgs/development/python-modules/zigpy/default.nix
+++ b/pkgs/development/python-modules/zigpy/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "zigpy";
-  version = "0.42.0";
+  version = "0.43.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "zigpy";
     repo = "zigpy";
     rev = version;
-    sha256 = "sha256-kSUFcN3QOZWFBgDrOopkYuUyBE9asO6MXf0H9CMjFlc=";
+    sha256 = "1740cv99ny6xy7wfpz754h4wj2cm874b8vnddvff90ajk07qgdia";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/zimports/default.nix b/pkgs/development/python-modules/zimports/default.nix
index 338dd93150b32..d350e2040891b 100644
--- a/pkgs/development/python-modules/zimports/default.nix
+++ b/pkgs/development/python-modules/zimports/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "zimports";
-  version = "0.2.0";
+  version = "0.4.1";
 
   src = fetchFromGitHub {
     owner = "sqlalchemyorg";
     repo = "zimports";
-    rev = version;
-    sha256 = "0a5axflkk0wv0rdnrh8l2rgj8gh2pfkg5lrvr8x4yxxiifawrafc";
+    rev = "v${version}";
+    sha256 = "11mg7j7xiypv9hki4qbnp9jsgwgfdrgdzfqyrzk5x0s4hycgi4q0";
   };
 
   disabled = !isPy3k;
diff --git a/pkgs/development/python-modules/zipp/1.nix b/pkgs/development/python-modules/zipp/1.nix
deleted file mode 100644
index 82f100aaa0d10..0000000000000
--- a/pkgs/development/python-modules/zipp/1.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools-scm
-, pytest
-, pytest-flake8
-, more-itertools
-}:
-
-buildPythonPackage rec {
-  pname = "zipp";
-  version = "1.0.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0v3qayhqv7vyzydpydwcp51bqciw8p2ajddw68x5k8zppc0vx3yk";
-  };
-
-  nativeBuildInputs = [ setuptools-scm ];
-
-  propagatedBuildInputs = [ more-itertools ];
-
-  checkInputs = [ pytest pytest-flake8 ];
-
-  checkPhase = ''
-    pytest
-  '';
-
-  # Prevent infinite recursion with pytest
-  doCheck = false;
-
-  meta = with lib; {
-    description = "Pathlib-compatible object wrapper for zip files";
-    homepage = "https://github.com/jaraco/zipp";
-    license = licenses.mit;
-  };
-}
diff --git a/pkgs/development/python-modules/zipp/default.nix b/pkgs/development/python-modules/zipp/default.nix
index dc30128c9ead4..0f64df2a56acb 100644
--- a/pkgs/development/python-modules/zipp/default.nix
+++ b/pkgs/development/python-modules/zipp/default.nix
@@ -1,26 +1,38 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, setuptools-scm
 , more-itertools
+, pythonOlder
+, setuptools-scm
 }:
 
 buildPythonPackage rec {
   pname = "zipp";
-  version = "3.6.0";
+  version = "3.7.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832";
+    sha256 = "9f50f446828eb9d45b267433fd3e9da8d801f614129124863f9c51ebceafb87d";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
 
-  propagatedBuildInputs = [ more-itertools ];
+  propagatedBuildInputs = [
+    more-itertools
+  ];
 
   # Prevent infinite recursion with pytest
   doCheck = false;
 
+  pythonImportsCheck = [
+    "zipp"
+  ];
+
   meta = with lib; {
     description = "Pathlib-compatible object wrapper for zip files";
     homepage = "https://github.com/jaraco/zipp";
diff --git a/pkgs/development/python-modules/zope-deferredimport/default.nix b/pkgs/development/python-modules/zope-deferredimport/default.nix
index 2998376b67268..e1cba0ebc02ba 100644
--- a/pkgs/development/python-modules/zope-deferredimport/default.nix
+++ b/pkgs/development/python-modules/zope-deferredimport/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "zope-deferredimport";
-  version = "4.3";
+  version = "4.4";
 
   src = fetchPypi {
     pname = "zope.deferredimport";
     inherit version;
-    sha256 = "2ddef5a7ecfff132a2dd796253366ecf9748a446e30f1a0b3a636aec9d9c05c5";
+    sha256 = "2ae3257256802787e52ad840032f39c1496d3ce0b7e11117f663420e4a4c9add";
   };
 
   propagatedBuildInputs = [ zope_proxy ];
diff --git a/pkgs/development/python-modules/zope-hookable/default.nix b/pkgs/development/python-modules/zope-hookable/default.nix
index 6c19ffbec0292..993568f6ffd9c 100644
--- a/pkgs/development/python-modules/zope-hookable/default.nix
+++ b/pkgs/development/python-modules/zope-hookable/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "zope-hookable";
-  version = "5.0.1";
+  version = "5.1.0";
 
   src = fetchPypi {
     pname = "zope.hookable";
     inherit version;
-    sha256 = "0hc82lfr7bk53nvbxvjkibkarngyrzgfk2i6bg8wshl0ly0pdl19";
+    sha256 = "8fc3e6cd0486c6af48e3317c299def719b57538332a194e0b3bc6a772f4faa0e";
   };
 
   checkInputs = [ zope_testing ];
diff --git a/pkgs/development/python-modules/zstandard/default.nix b/pkgs/development/python-modules/zstandard/default.nix
index 5d2066f45f21f..856ca0ee02499 100755
--- a/pkgs/development/python-modules/zstandard/default.nix
+++ b/pkgs/development/python-modules/zstandard/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "zstandard";
-  version = "0.16.0";
+  version = "0.17.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "eaae2d3e8fdf8bfe269628385087e4b648beef85bb0c187644e7df4fb0fe9046";
+    sha256 = "fa9194cb91441df7242aa3ddc4cb184be38876cb10dd973674887f334bafbfb6";
   };
 
   propagatedNativeBuildInputs = [ cffi ];
diff --git a/pkgs/development/python-modules/zstd/default.nix b/pkgs/development/python-modules/zstd/default.nix
index e7ee8dd68cb9d..468b5b5315ab1 100644
--- a/pkgs/development/python-modules/zstd/default.nix
+++ b/pkgs/development/python-modules/zstd/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "zstd";
-  version = "1.5.0.2";
+  version = "1.5.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8d3388a15135c481b28ca67d079cb5fd79a9691626fd9979e6b4ec00eabb9e79";
+    sha256 = "9519bb0cd91c4498cd8cf66ef88fb22e5d6a442317704e6afd00b12726d17d0a";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/zwave-js-server-python/default.nix b/pkgs/development/python-modules/zwave-js-server-python/default.nix
index 5b18c09f15a86..5430569727231 100644
--- a/pkgs/development/python-modules/zwave-js-server-python/default.nix
+++ b/pkgs/development/python-modules/zwave-js-server-python/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "zwave-js-server-python";
-  version = "0.33.0";
+  version = "0.34.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "home-assistant-libs";
     repo = pname;
     rev = version;
-    sha256 = "sha256-0hAksizQSIOg+hbSq/OZqFqlBBdpa0bSf+puWfD9TSg=";
+    sha256 = "sha256-hqq/CYlM9ZahDiH3iFLFzfE22CB19WQnFIDt+gCrEXU=";
   };
 
   propagatedBuildInputs = [